Quorum reads/writes — why W + R > N matters
In a leaderless (Dynamo-style) store, each piece of data is replicated to N nodes, and there is no single leader to serialize reads and writes. Quorums are the mechanism that lets such a store provide tunable consistency without a leader: every write must be acknowledged by W replicas, and every read must collect responses from R replicas.
The overlap condition
The key inequality:
W + R > N ⟹ the write set and the read set are guaranteed to overlap in at least one node.
That overlapping node has seen the latest write, so the read is guaranteed to include the freshest value (resolved by version/timestamp). This is the whole trick: forcing the read and write quorums to intersect means a read cannot entirely miss a completed write.
Replicas: [ A ] [ B ] [ C ] (N = 3)
Write (W=2) ack from: A B <- write landed on A, B
Read (R=2) reads from: B C <- read hits B (and C)
^
overlap node B has the latest value
W + R = 4 > N = 3 -> guaranteed intersection
Tuning the trade-off
With N fixed, choosing W and R slides you along the consistency / latency / availability curve:
| Config (N=3) | Property | Trade-off |
|---|---|---|
| W=3, R=1 | Fast reads, slow durable writes | Read-optimized; write must reach all replicas |
| W=1, R=3 | Fast writes, slow reads | Write-optimized; read must contact all |
| W=2, R=2 | Balanced (W+R>N) | Common default; tolerates 1 node down on each side |
| W=1, R=1 | Fastest, W+R ≤ N | No overlap guarantee → eventual consistency only |
A standard production choice is N=3, W=2, R=2: it satisfies W+R>N, survives one node being down on either the read or write path, and keeps latency reasonable (you wait for the 2nd-fastest of 3).
Why you might violate W + R > N on purpose
Setting W+R ≤ N (e.g., W=1, R=1) gives you maximum availability and lowest latency but only eventual consistency — a read may miss a recent write. That's a legitimate choice for tolerant workloads, and it's exactly the PA/EL operating point from PACELC.
Where this shows up
Cassandra and DynamoDB expose W and R directly as per-request consistency levels (ONE, QUORUM, ALL), so you can pick strong consistency for a critical read (QUORUM/QUORUM) and cheap eventual consistency elsewhere (ONE/ONE) — on the same store. This per-request tunability is the practical payoff and connects straight back to PACELC's "E" branch. The mechanism is described in DDIA Chapter 9 alongside the original Dynamo paper.