PACELC Theorem

An extension of the CAP Theorem that adds the latency-consistency trade-off that occurs during normal operation (no partition), addressing CAP’s limitation of only describing behavior during network partitions.

Problem

The CAP Theorem only describes what happens when a network partition occurs. But distributed systems spend the vast majority of their time in normal operation — no partition, everything connected. Even then, a fundamental trade-off exists: a system can respond faster with potentially stale data, or respond slower with guaranteed-current data. CAP is silent on this.

Solution / Explanation

PACELC was formalized by Daniel Abadi (2012). The theorem states:

If there is a Partition, choose between Availability and Consistency;
Else (normal operation), choose between Latency and Consistency.

This gives four quadrants for real system classification:

ClassificationPartition behaviorNormal behaviorExamples
PA/ELPrioritize AvailabilityPrioritize LatencyCassandra, DynamoDB (default), Riak
PC/ECPrioritize ConsistencyPrioritize Consistencyetcd, Zookeeper, HBase, MySQL
PA/ECPrioritize AvailabilityPrioritize ConsistencyMongoDB (tunable), CockroachDB (some modes)
PC/ELPrioritize ConsistencyPrioritize LatencyRare; specialized systems

Why This Matters More Than CAP

For most production systems, network partitions are rare. The more pressing daily trade-off is: should reads return immediately with potentially cached/stale data (low latency) or should they wait for linearizable confirmation (consistent but slower)?

  • PA/EL systems (Cassandra, DynamoDB): serve reads from local replica, don’t wait for quorum → fast, possibly stale
  • PC/EC systems (etcd, Zookeeper): wait for quorum on reads and writes → slower, always current

Real-World Examples

SystemCAPPACELCWhy
CassandraAPPA/ELLocal replica reads, eventual consistency
DynamoDBAP (default)PA/ELReads from single replica by default
etcdCPPC/ECRaft quorum for all operations
ZookeeperCPPC/ECZAB protocol requires quorum
MySQLCA*PC/ECSingle-leader; wait for durable write
CockroachDBCPPC/ECRaft-based; serializable isolation

Trade-offs

PACELC ChoiceBenefitCost
PA/ELLow latency reads; high availabilityStale reads possible; conflict resolution needed
PC/ECAlways current data; no conflictsHigher latency; lower availability during partitions

When to Use PACELC as a Decision Framework

  • Use PACELC over CAP when choosing databases for latency-sensitive applications
  • Financial systems where stale reads cause incorrect balances → PC/EC
  • User-facing read-heavy systems where 50ms matters → PA/EL
  • Configuration stores and coordination services → PC/EC (correctness > speed)