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
?
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$W
. $\endgroup$