5

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 ?

1

EC wins in the case of a network partition, there are cases where you might lose a node or communications between 2 nodes where the only way to have strong consistency is to stop all writes.

This is the basis of the CAP theorem. That you can not be available, partition-tolerant and strongly consistent all at the same time.

  • in N=3, W=R=2, EC can also only tolerate 1 node failure which SC can also tolerate. – Ashish Negi Nov 19 '18 at 10:10
0

SC will indeed be slower, since an update will only be visible to clients, when all relevant nodes have processed the update. With a single master server it will be the single bottleneck of all written transactions. A client on a local replica will have to wait until the master-server has processed his update, before clients on the same server will see his update.

EC will ease the process, since updates will be visible to local clients, even before they are processed by the master-server.

  • No, updates will not be available to local clients before it's written durabily to W writers. – Ashish Negi Jul 20 '18 at 14:14
  • SC also only wait for the write quorum of nodes. And not all nodes. I admit that there are 3 writers in EC. But it comes at a cost of conflicts. What about reads in EC ? One more network hop as R = 2.. – Ashish Negi Jul 20 '18 at 14:28
  • @AshishNegi Updates will be visible after they are written to two nodes - in EC these are any two nodes, so if one server is slow, the other two can still confirm writes fast. – Falco Jul 20 '18 at 14:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.