3 ms·
Dynamo - Part I: a followup and re-rebuttals
- jbellis 17y agoMy comment from the blog (currently "awaiting moderation") -- The core misunderstanding here is that Hinted Handoff does NOT mean “ignore W.” If it did, clearly R + W > N would mean nothing; in fact, W would be entirely superfluous. So to the degree that the Dynamo paper suggests otherwise, it should be treated as a “bug” in the paper. So, just to treat your first example, with W=3,R=1 you can’t get inconsistent reads since writes will block if any replica is unavailable. All quorum-based systems that I know of treat R + W like this. For Cassandra, see the code from StorageProxy.insertBlocking, specifically the calls to getNaturalEndpoints, getHintedEndpointMap, and getUnhintedNodes (and QuorumResponseHandler of course). Cassandra is careful to only hint N - W replicas as I’ve been discussing. Everything else you object to basically falls out of this. For example, “there is no way in Dynamo to track how many pending updates have not been reflected globally” — which doesn’t matter, since either you are waiting for R + W > N, in which case you get consistency, or you are not, in which case you can’t complain if you don’t get it. :)