Reference · quick sheet
The Quorum Playbook
Three numbers, one inequality, and a long list of things that inequality does not mean.
The numbers
- N
- How many nodes hold a copy of each key. In Cassandra/ScyllaDB this is the replication factor.
- R
- "The minimum number of nodes that must participate in a successful read operation."
- W
- "The minimum number of nodes that must participate in a successful write operation."
- R + W > N
- Forces the read set and write set to intersect, so at least one copy you read has seen the write. "Yields a quorum-like system" — the paper's hedge is deliberate.
The dial
| N,R,W | Behaviour | Use when |
|---|---|---|
| 3,2,2 | Overlap guaranteed; tolerates one node down on each side | The sane default |
| 3,1,3 | Fast reads, slow and fragile writes | Read-dominated, writes rare and precious |
| 3,3,1 | Fast writes, slow reads | Write-dominated, e.g. always-writeable stores |
| 3,1,1 | Fastest; no overlap; stale reads expected | Data where staleness is genuinely free |
Latency rule: "the latency of a get (or put) operation is dictated by the slowest of the R (or W) replicas." Every extra node required is another chance to draw a slow one. R and W are a dial between certainty and tail latency.
What R + W > N does NOT give you
- Ordering. Two concurrent writes at W can both succeed and diverge. Overlap says nothing about which is newer.
- Overlap under a sloppy quorum. Writes may land on healthy nodes outside the intended N, so the arithmetic's assumption is deliberately broken in exchange for availability.
- The ability to pick the newest copy. That needs version metadata and a merge policy.
- Linearizability. Dynamo calls its model eventual consistency throughout. Defer to Jepsen for the precise names.
Availability machinery
- Sloppy quorum
- Operations go to the first N healthy nodes in the preference list, not necessarily the first N on the ring. Without it, a strict quorum "would be unavailable during server failures and network partitions".
- Hinted handoff
- A displaced replica carries "a hint in its metadata that suggests which node was the intended recipient", and is delivered when that node returns.
- Conflict resolution
- The store can only do blunt things like last-write-wins — a data-loss policy with a neutral name. The application knows the schema and can merge, as the shopping cart does.
Where you meet this dial
| System | Control |
|---|---|
| Cassandra / ScyllaDB | Consistency level per query: ONE, QUORUM,
ALL — literally R and W |
| PostgreSQL | synchronous_commit, from off to
remote_apply |
| The staleness ladder | Rungs 1–4 are increasing amounts of "wait for more replicas" |