5 min read
•Question 25 of 27mediumWhat is the CAP theorem?
Understanding distributed database trade-offs.
What You'll Learn
- What CAP theorem states
- Trade-offs explained
- Database classifications
CAP Theorem
In a distributed system, you can only guarantee two of three properties:
- Consistency - Every read gets the most recent write
- Availability - Every request receives a response
- Partition Tolerance - System works despite network failures
The Trade-offs
CP (Consistency + Partition Tolerance)
code.jsJavaScript
- Sacrifices availability during partitions
- Returns error if can't ensure consistency
- Examples: MongoDB, Redis, HBaseAP (Availability + Partition Tolerance)
code.jsJavaScript
- Sacrifices consistency during partitions
- May return stale data
- Examples: Cassandra, CouchDB, DynamoDBCA (Consistency + Availability)
code.jsJavaScript
- Only possible without network partitions
- Single-node databases
- Examples: Traditional RDBMS (single node)Real-World Example
code.jsJavaScript
Scenario: Network partition between data centers
CP System (MongoDB):
- Primary in DC1 becomes unavailable
- Writes rejected until partition heals
- Reads may be blocked
AP System (Cassandra):
- Both DCs continue accepting writes
- Eventual consistency after partition heals
- May have conflicting data to resolveMongoDB's Approach
code.jsJavaScript
// Tunable consistency with read/write concerns
// Strong consistency
db.users.find().readConcern("majority");
// Available but potentially stale
db.users.find().readConcern("local");