Problem
CAP describes only failure scenarios, yet systems spend almost all of their time healthy. Replication still forces a choice between fast responses and strongly consistent ones.
Also known as: pacelc-theorem
Extend CAP by also modeling the latency versus consistency tradeoff that exists when there is no partition.
CAP describes only failure scenarios, yet systems spend almost all of their time healthy. Replication still forces a choice between fast responses and strongly consistent ones.
Daniel Abadi proposed PACELC to fix a blind spot in CAP. The acronym reads: if there is a Partition, trade Availability against Consistency; Else, trade Latency against Consistency. The second half matters most day to day, because replicating synchronously across regions costs round trips that no engineering can remove.
A write must reach replicas before it is acknowledged. The more replicas you wait for, the stronger the guarantee and the slower the response.
Write acknowledged after:
1 replica (local) ~2 ms EL - reads elsewhere may be stale
majority quorum ~40 ms balanced
all regions ~150 ms EC - every read sees the write
Typical classifications: Dynamo-style stores configured for speed are PA/EL; consensus-based stores such as Spanner are PC/EC; some systems are PA/EC or PC/EL depending on configuration. Use the classification to pick defaults, then override per operation, for example strong reads for balances and local reads for catalogs.
None: conceptual
Low: configuration and documentation
Low: builds on CAP
Choosing EC globally and discovering cross-region write latency is unacceptable
Choosing EL and serving stale data to workflows that require fresh reads
Labeling a product once and ignoring its per-request settings