In dynamo paper, it says that in production most of the users set N = 3, R = 2 and W = 2.

The common (N,R,W) configuration used by several instances of Dynamo is (3,2,2). These values are chosen to meet the necessary levels of performance, durability, consistency, and availability SLAs.

In most production system, N = 3 is good enough as more replicas of data will waste storage. Keeping W and R = 2 will mean that reads will always see the last write mostly.

Strongly consistent (SC) stores also can have N = 3 and R, W = 2 with writes going to one primary for ACID transactions and replicate to (W - 1) active secondary for committing.

Eventual Consistent (EC) stores gives multiple masters for scaling writes rather than one primary in strongly consistent db. However, read which is local in case of SC primary now require network hop to another Replica in EC case.

How is EC better than SC when N = 3, R=W=2 ?

I think that EC stores don't take any locks and wait for others replica confirmation to commit. Hence, they are simpler and faster.

Is this true ? What are the other factors that make EC better than SC when N = 3, R=W=2 ?

What are other production configuration of N, R, W for EC stores when they become better than SC in read world production systems ?

  • $\begingroup$ This q without a definition of "better" is only going to invite personal opinions. Do you mean 'reliably consistent' or 'minimum-conflict'. THe dynamo quote says "necessary levels". Same vagueness: necessary for what? I'm bemused what "levels of ... durability" might be: it's OK if we lose 2% of transactions? It's OK if we keep them for at least 30 minutes? $\endgroup$
    – AntC
    Jul 9, 2018 at 10:56
  • $\begingroup$ My question is that to me it seems, EC when N=3,W=R=2, is taking all hits of SC in performance and availability and giving lesser availability. Otherwise, everyone should use SC as that is what gives better guarantees. Still EC with that configuration is being used in production. There must be other reasons that only practitioners know. Hence this question. It is like asking how is A better than B when condition is C even though B is generally better than A. $\endgroup$ Jul 9, 2018 at 11:49
  • $\begingroup$ @AntC for "level of .. durability" , paper describes it well. It means how many nodes should durably write the commit so that i don't lose the write, essentially W. $\endgroup$ Jul 9, 2018 at 11:52
  • $\begingroup$ please close in favour of softwareengineering.stackexchange.com/questions/374096/… $\endgroup$ Jul 13, 2018 at 6:51


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.