

Dynamo - Part I: a followup and re-rebuttals - ypavan
http://jsensarma.com/blog/2009/11/dynamo-part-i-a-followup-and-re-rebuttals/

======
jbellis
My 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. :)

