Skip to content

CAP Theorem ​

In a distributed system, you can only guarantee 2 out of 3 properties simultaneously.

The Three Properties ​

C — Consistency ​

Every read receives the most recent write or an error. All nodes see the same data at the same time. If it can't guarantee that → return error rather than stale data.

A — Availability ​

Every request receives a response — but not necessarily the most recent data. System never returns an error. Always responds, even if data might be stale.

P — Partition Tolerance ​

System continues operating even when network partition occurs (nodes can't communicate with each other).

Why You Can't Have All Three ​

During a network partition between Node 1 and Node 2: if user writes to Node 1 and reads from Node 2, you must choose:

  • Option A: return error to reader (sacrifice Availability) to maintain Consistency → CP achieved
  • Option B: return stale data (sacrifice Consistency) to maintain Availability → AP achieved

Why P is Almost Never Sacrificed ​

Network partitions WILL happen in any distributed system. Sacrificing P means system shuts down entirely during partition — unacceptable. P is mandatory. Real choice is between C and A.

CP vs AP Systems ​

DatabaseTypeWhy
ZookeeperCPConfig management needs consistency
HBaseCPStrong consistency for big data
MongoDBCP (default)Primary node writes only
RedisCPSingle source of truth
CassandraAPAvailability over consistency
CouchDBAPEventual consistency model
DynamoDBAP (tunable)Can tune consistency level
DNSAPCached (possibly stale) responses

CAP is Not Binary — It's a Spectrum ​

Modern systems can TUNE the tradeoff. Cassandra consistency levels: ONE (fastest, least consistent) → QUORUM (majority) → ALL (every node, strongly consistent).

PACELC — Extended Model ​

CAP only talks about behavior during partitions. PACELC extends this: even without partitions there's a tradeoff between Latency and Consistency.

  • PAC → during Partition → choose A or C
  • ELC → Else (normal operation) → choose Latency or Consistency