CAP describes what happens during a partition — a rare event. But there’s a second dial that’s turned even when the network is perfectly healthy, and it governs every read you ever serve.
The always-on dial
Picture the system running normally, cables all intact. A write to replica A still takes some time to reach replica B. During that gap, a read at B is stale. So on every single read there’s a standing question: how long are you willing to wait to be sure the read reflects the latest write? Confirm with A on every read and reads are slow but always fresh; answer immediately from local state and reads are fast but possibly stale.
That’s the tradeoff PACELC names. Read it as:
if Partition, then Availability or Consistency; Else, Latency or Consistency.
CAP is only the “P” half. The “ELC” half is the everyday truth: with a healthy network you are always trading Latency vs Consistency. An analytics dashboard tolerates staleness to answer fast (EL — favor latency); a bank balance pays the latency to be exact (EC — favor consistency).
Eventual consistency
Eventual consistency is the promise an EL/AP system makes: if writes stop, all replicas will converge to the same value — eventually — but at any given instant a read may be stale. The word doing the work is “eventually”: there’s no bound on when, only a guarantee that it will. That’s what lets a cart or a feed answer instantly and reconcile in the background.
It’s a spectrum, not two points
Between “always fresh” (strong) and “eventually, whenever” (eventual) sit useful middle guarantees:
- Read-your-own-writes — you always see your own updates, even if others lag.
- Monotonic reads — you never see time go backwards; once you’ve read a newer value you won’t later get an older one.
These exist because strong is expensive and eventual is sometimes too weak, so
systems expose tunable knobs. Cassandra literally lets you pick consistency
per query — ONE for fast/stale, QUORUM for slower/fresher — which is PACELC’s
EL-vs-EC dial handed directly to you, the engineer.
The whole distributed-data picture at the tradeoff level: CAP for the partition case, PACELC for the everyday case, and the consistency spectrum in between — all the one instinct carried the whole way: what will you sacrifice, and when?