Section 1: Getting Started

The CAP Theorem Explained

Master the fundamental principle of distributed systems with interactive SVG diagrams, real-world examples, and visual proofs. Understand why you can only choose 2 of 3!

Advertisement

📖 Amazon's Shopping Cart Problem

In 2004, Amazon faced a critical decision: during network failures, should their shopping cart reject items (maintaining consistency) or accept them anyway (maintaining availability)?

🛒 The Scenario

Customer adds iPhone to cart → Network partition occurs → Two datacenters can't communicate

  • Option A (Consistency): Reject the cart update. Customer can't shop. Lost sale.
  • Option B (Availability): Accept the update. Risk duplicate items when sync happens.

✅ Amazon's Choice: Always Available

Amazon chose Availability over Consistency. Better to have duplicate items in cart (easily fixed) than lose the sale!

  • ✅ Shopping cart always works, even during network issues
  • ✅ Customer never sees errors or downtime
  • ✅ Occasional duplicate items resolved during checkout
  • ✅ This decision led to creation of DynamoDB!

🎯 This is the CAP Theorem

You must choose 2 of 3: Consistency, Availability, or Partition Tolerance.
Amazon chose Availability + Partition Tolerance!

⚖️ What is the CAP Theorem?

Simple Definition

The CAP Theorem (also called Brewer's Theorem) states that a distributed database system can only guarantee TWO out of THREE properties simultaneously:

  • C - Consistency: All nodes see the same data at the same time
  • A - Availability: Every request receives a response (success or failure)
  • P - Partition Tolerance: System continues operating despite network failures
🔄

Consistency

Read gets most recent write. All nodes synchronized. Same data everywhere.

✅

Availability

Every request gets response. No errors. System always accessible.

🔌

Partition Tolerance

Works despite network failures. Handles split-brain scenarios.

Critical Insight

Network partitions WILL happen in distributed systems (cables fail, routers crash, datacenters lose connectivity). Since P (Partition Tolerance) is mandatory, you must choose between C or A:

  • CP Systems: Choose Consistency over Availability → May refuse requests during partitions
  • AP Systems: Choose Availability over Consistency → May return stale data during partitions
  • CA Systems: Theoretical only! Can't exist in real distributed systems

🔺 The CAP Triangle - Interactive Visualization

The CAP Theorem is often visualized as a triangle. You can only pick 2 vertices (but P is required, so really it's C or A).

C Consistency A Availability P Partition Tolerance Pick Any Two (But P is required!) CP: HBase, MongoDB AP: Cassandra, DynamoDB CA: Not Possible in Distributed Systems 💡 Key Insight Since network partitions WILL happen (P is mandatory), you must choose between Consistency (C) or Availability (A)
Advertisement

🔍 Deep Dive: Understanding C, A, and P

🔄 Consistency Explained

Consistency means every read receives the most recent write or an error. All nodes have the same data at the same time.

Example Scenario:

  • User updates profile picture on Instagram
  • Write goes to Node A at 10:00:00
  • Node B hasn't received update yet
  • Consistent System: Node B either returns NEW picture or ERROR (never old picture)
  • Inconsistent System: Node B might return OLD picture for a few seconds
👤 Client Node A ✅ Has Latest Data Node B ❌ Stale Data 👥 Reader 1. WRITE Syncing... 2. READ (Wrong!) Consistent READ Consistency: Readers always get latest data or error (never stale data)

✅ Availability Explained

Availability means every request receives a (non-error) response, without guarantee that it contains the most recent write.

Example Scenario:

  • User tries to view product page on Amazon
  • Some nodes are down or unreachable
  • Available System: Shows product info (might be slightly outdated price)
  • Unavailable System: Shows "Service Unavailable - Try Again Later"

Trade-off: Better to show slightly stale data than no data at all!

👤 User Request Node 1 ✅ UP Responds Node 2 ✅ UP Responds Node 3 ❌ DOWN No Response ✅ 200 OK Data Returned Availability: System always responds (even if some nodes are down)

🔌 Partition Tolerance Explained

Partition Tolerance means the system continues to operate despite network failures that prevent some nodes from communicating.

Example Scenario:

  • Cable between US and Europe datacenters is cut
  • Two sets of nodes can't communicate (network partition)
  • Partition Tolerant: Both sides continue serving requests independently
  • Not Partition Tolerant: Entire system shuts down until connection restored

Reality: Partitions are inevitable in distributed systems, so P is REQUIRED!

🇺🇸 US Datacenter Node A Node B ✅ Working Serving US Users 🇪🇺 EU Datacenter Node C Node D ✅ Working Serving EU Users ❌ PARTITION! Network Failure Partition Tolerance: System works despite network split Both datacenters continue independently (but data may diverge!)

📊 Visual Proof: Why You Can Only Have 2 of 3

Let's prove mathematically why it's impossible to have all three properties during a network partition.

📍 Step 1: Initial State (Everything Works) Node A Value = 10 Node B Value = 10 Node C Value = 10 ⚠️ Step 2: Network Partition Occurs! Node A Nodes B & C ❌ PARTITION Can't reach B & C Can't reach A ✍️ Step 3: Client Writes Value = 20 to Node A Node A 20 B & C 10 Can't sync! 🤔 Step 4: Client Reads from Node B - What to Return? Option 1: Return Old Value (10) ✅ Available ❌ NOT Consistent = AP System Option 2: Return Error ❌ NOT Available ✅ Consistent (no stale data) = CP System

The Proof Complete!

During a network partition (P is happening), you MUST choose:

  • Consistency (C): Reject requests when you can't guarantee latest data → Sacrifices Availability
  • Availability (A): Always respond even with stale data → Sacrifices Consistency

You cannot have both C and A during a partition! This is why CAP Theorem says "pick 2 of 3" (but really it's C or A, since P is required).

Advertisement

🎯 Real-World CAP Scenarios

Let's see how different applications choose between CP and AP based on their requirements.

🏦

Banking System (CP)

Choice: Consistency + Partition Tolerance

Scenario: User transfers $1000

  • Network partition occurs
  • System can't verify both accounts updated
  • Response: Reject transaction, show error
  • Why: Wrong account balance = disaster!

Better to be unavailable than inconsistent!

📱

Instagram Feed (AP)

Choice: Availability + Partition Tolerance

Scenario: User views feed

  • Network partition occurs
  • Some posts not yet synced
  • Response: Show available posts (might be 1s old)
  • Why: Users must always see something!

Better to be inconsistent than unavailable!

🛒

Shopping Cart (AP)

Choice: Availability + Partition Tolerance

Scenario: Add item to cart

  • Network partition occurs
  • Cart data split across datacenters
  • Response: Accept item, merge later
  • Why: Never prevent shopping!

Duplicate items easily fixed at checkout!

📈

Stock Trading (CP)

Choice: Consistency + Partition Tolerance

Scenario: Place stock order

  • Network partition occurs
  • Can't verify price across all nodes
  • Response: Reject order, show error
  • Why: Wrong price = financial loss!

Accuracy more important than uptime!

🌐

DNS System (AP)

Choice: Availability + Partition Tolerance

Scenario: Resolve domain name

  • Network partition occurs
  • DNS records might be slightly outdated
  • Response: Return cached/stale IP
  • Why: Internet must keep working!

Eventual consistency acceptable for DNS!

✈️

Flight Booking (CP)

Choice: Consistency + Partition Tolerance

Scenario: Book last seat

  • Network partition occurs
  • Can't verify seat availability everywhere
  • Response: Reject booking temporarily
  • Why: Can't oversell seats!

Double-booking worse than brief downtime!

Decision Framework

Choose CP (Consistency + Partition Tolerance) when:

  • Financial transactions (money, stocks, payments)
  • Inventory management (prevent overselling)
  • Critical data that must be accurate
  • Short downtime acceptable

Choose AP (Availability + Partition Tolerance) when:

  • Social media, content feeds
  • Caching, session storage
  • Shopping carts, wishlists
  • Analytics, monitoring
  • Downtime is unacceptable

🗄️ Where Databases Sit on the CAP Spectrum

Most databases don't strictly choose CP or AP - they offer tunable consistency levels. Here's where they lean by default.

Cassandra (AP)

Default Choice: Availability + Partition Tolerance

Key Features:

  • Always available, even during failures
  • Eventual consistency by default
  • Tunable consistency (can achieve CP if needed)
  • Write-optimized

Used by: Netflix, Apple, Instagram

Best for: Time-series, IoT, analytics

DynamoDB (AP)

Default Choice: Availability + Partition Tolerance

Key Features:

  • Single-digit millisecond latency
  • Eventual consistency default
  • Optional strong consistency
  • Amazon's shopping cart database

Used by: Amazon, Lyft, Samsung

Best for: Web apps, mobile backends

MongoDB (CP)

Default Choice: Consistency + Partition Tolerance

Key Features:

  • Strong consistency by default
  • Primary-secondary replication
  • May refuse writes during partition
  • Document flexibility

Used by: eBay, MetLife, Verizon

Best for: Content management, catalogs

HBase (CP)

Default Choice: Consistency + Partition Tolerance

Key Features:

  • Strong consistency always
  • Single master architecture
  • Hadoop ecosystem integration
  • Inspired by Google Bigtable

Used by: Facebook Messages, Yahoo

Best for: Large-scale analytics

PostgreSQL (CA*)

Single Node: Consistency + Availability

Key Features:

  • ACID transactions
  • Not partition tolerant (single node)
  • Distributed versions choose CP or AP
  • Relational model

Used by: Instagram, Spotify, Reddit

Best for: Traditional CRUD apps

Redis (CP/AP)

Configurable: Can be CP or AP

Key Features:

  • In-memory speed
  • Redis Sentinel (CP)
  • Redis Cluster (AP)
  • Sub-millisecond latency

Used by: Twitter, GitHub, Stack Overflow

Best for: Caching, sessions, queues

Tunable Consistency

Many modern databases let YOU choose!

Cassandra Example:

  • Consistency.ONE: Fast, eventually consistent (AP)
  • Consistency.QUORUM: Balanced
  • Consistency.ALL: Strong consistency, slower (CP)

You can choose CP or AP per query! Different parts of your app can make different trade-offs!

💼 Top 12 Interview Questions - CAP Theorem

Master these questions to demonstrate deep understanding of distributed systems!

1
What is the CAP Theorem?
+

Answer:

The CAP Theorem (Brewer's Theorem) states that a distributed database system can only guarantee TWO out of THREE properties:

  • Consistency (C): All nodes see the same data at the same time. Every read gets the most recent write or an error.
  • Availability (A): Every request receives a response (success or failure). System is always responsive.
  • Partition Tolerance (P): System continues operating despite network failures between nodes.

Key Insight: Since network partitions WILL happen in distributed systems, Partition Tolerance is mandatory. This means you must choose between Consistency or Availability during a partition.

Created by: Eric Brewer in 2000, formally proven by Seth Gilbert and Nancy Lynch in 2002.

2
Why can't you have all three: C, A, and P?
+

Answer:

During a network partition, you face an impossible choice:

Scenario:

  • Node A and Node B can't communicate (network partition)
  • Client writes value=100 to Node A
  • Node B still has old value=50
  • Another client reads from Node B

The Impossible Choice:

  • Option 1 (Choose C): Refuse to return anything until nodes sync → System unavailable (lose A)
  • Option 2 (Choose A): Return the old value=50 → System inconsistent (lose C)

Mathematical Proof: You cannot simultaneously:

  • Always respond (A)
  • Always return latest data (C)
  • While nodes can't communicate (P)

This is a logical impossibility, not a technology limitation!

3
What is a CP system? Give examples.
+

Answer:

CP System chooses Consistency + Partition Tolerance over Availability.

Behavior During Partition:

  • Refuses requests when it can't guarantee latest data
  • Returns errors rather than stale data
  • Waits for nodes to sync before responding
  • Prioritizes correctness over uptime

Examples:

  • HBase: Strong consistency, single master
  • MongoDB: Primary-secondary, strong consistency default
  • Redis (Sentinel mode): Coordinated failover
  • Zookeeper: Consensus-based coordination

Use Cases:

  • Banking and financial systems
  • Inventory management
  • Booking systems (flights, hotels)
  • Stock trading platforms

Trade-off: System may be unavailable during network issues, but data is always accurate.

4
What is an AP system? Give examples.
+

Answer:

AP System chooses Availability + Partition Tolerance over Consistency.

Behavior During Partition:

  • Always responds to requests
  • May return stale data temporarily
  • Accepts writes on both sides of partition
  • Eventually reconciles when partition heals

Examples:

  • Cassandra: Tunable consistency, AP by default
  • DynamoDB: Eventual consistency default
  • Riak: Always available
  • CouchDB: Master-master replication

Use Cases:

  • Social media feeds and likes
  • Shopping carts
  • Session storage
  • Analytics and metrics
  • DNS systems

Trade-off: Data might be temporarily inconsistent, but system never goes down.

5
Why is Partition Tolerance (P) mandatory in distributed systems?
+

Answer:

Partition Tolerance is mandatory because network failures WILL happen in any distributed system:

Real Causes of Partitions:

  • Hardware Failures: Network cables cut, switches die, routers fail
  • Software Bugs: Firewall misconfiguration, router firmware bugs
  • Overload: Network congestion drops packets
  • Geographic: Undersea cables damaged, satellite links interrupted
  • Cloud Issues: AWS availability zone failures

Why You Can't Avoid It:

  • You don't control the entire network path
  • Multiple points of failure between datacenters
  • Even Google and Amazon experience partitions
  • Can last seconds to hours

If You Don't Handle Partitions:

  • Entire system goes down
  • Data corruption possible
  • Split-brain scenarios

Therefore: P is not optional. Real choice is between C or A!

6
Can a system be CA (Consistent and Available but not Partition Tolerant)?
+

Answer:

CA systems can only exist in theory, not in practice for distributed systems.

Single-Node Databases (CA):

  • Traditional RDBMS on one server (PostgreSQL, MySQL)
  • Provides both Consistency and Availability
  • No partitions because there's no network!
  • Problem: Not a distributed system, single point of failure

Why CA Doesn't Work in Distributed Systems:

  • The moment you distribute data across multiple nodes, network partitions become possible
  • You cannot prevent network failures
  • Must choose how to handle partitions (C or A)

Attempts at CA:

  • Two-phase commit: Tries to be CA but blocks during partitions (effectively becomes CP)
  • Synchronous replication: Also blocks during partitions (CP behavior)

Conclusion: In distributed systems, CA is impossible. CAP Theorem really means "choose CP or AP"!

7
How does Cassandra handle the CAP Theorem?
+

Answer:

Cassandra is AP by default but offers tunable consistency, allowing you to choose CP or AP per query!

AP Behavior (Default):

  • Consistency Level: ONE - Reads/writes to single replica
  • Always available, even during partitions
  • May return stale data temporarily
  • Eventually consistent

CP Behavior (When Configured):

  • Consistency Level: QUORUM or ALL
  • Waits for majority/all replicas
  • Refuses requests if quorum unavailable
  • Guarantees consistency

Example Tuning:

// AP: Fast, eventually consistent
SELECT * FROM users WHERE id = 123
  USING CONSISTENCY ONE;

// CP: Strong consistency, may fail during partition
SELECT * FROM orders WHERE id = 456
  USING CONSISTENCY QUORUM;

Best of Both Worlds: Use AP for non-critical data (views, likes) and CP for critical data (orders, payments) in the same application!

8
What is eventual consistency?
+

Answer:

Eventual Consistency is a consistency model used by AP systems where, if no new updates occur, all replicas will eventually converge to the same value.

How It Works:

  • Writes accepted immediately on available nodes
  • Asynchronous replication to other nodes
  • Different nodes may have different values temporarily
  • Eventually (typically milliseconds to seconds), all nodes consistent

Example:

  • User updates status on Facebook
  • Write goes to US datacenter at 10:00:00
  • Friend in Europe reads at 10:00:01 → sees old status
  • Friend reads again at 10:00:05 → sees new status
  • System "eventually" became consistent!

Benefits:

  • High availability (always responsive)
  • Low latency (no waiting for sync)
  • Partition tolerance

When It's Acceptable:

  • Social media (likes, views, follows)
  • Shopping carts
  • Product catalogs
  • Metrics and analytics

When It's NOT Acceptable:

  • Financial transactions
  • Inventory counts
  • Booking systems
9
How would you design a banking system considering CAP Theorem?
+

Answer:

Banking system must choose CP (Consistency + Partition Tolerance) over Availability.

Architecture Decisions:

  • Database: Use CP system (PostgreSQL with sync replication, or MongoDB)
  • Transactions: ACID guarantees mandatory
  • Replication: Synchronous replication (wait for all replicas)
  • Consistency Level: QUORUM or ALL

Handling Partitions:

  • Reject transactions when partition detected
  • Show "Service Temporarily Unavailable"
  • Never show incorrect balance
  • Never allow double-spending

Hybrid Approach (Best Practice):

  • Critical Data (CP): Account balances, transactions → PostgreSQL
  • Non-Critical (AP): User preferences, notifications → Cassandra
  • Caching (AP): Recent transactions → Redis

Why CP?

  • Wrong balance = lost customer trust
  • Double-spending = financial loss
  • Regulatory compliance requires accuracy
  • Brief downtime acceptable, incorrect data is not!
10
What is the difference between strong consistency and eventual consistency?
+

Answer:

Strong Consistency (CP Systems):

  • Every read returns the most recent write
  • All replicas synchronized before response
  • No stale data ever visible
  • May block during partitions
  • Example: MongoDB with read concern "majority"

Eventual Consistency (AP Systems):

  • Reads may return stale data temporarily
  • Replicas synchronized asynchronously
  • Eventually converge to same value
  • Never blocks
  • Example: Cassandra with consistency level ONE

Comparison Example:

  • Time 10:00:00: Write value=100 to Node A
  • Time 10:00:01: Read from Node B
    • Strong: Returns 100 OR error (never old value)
    • Eventual: Might return old value, updates soon

Performance Impact:

  • Strong: Slower (sync overhead), less available
  • Eventual: Faster (no waiting), always available
11
How does Amazon's shopping cart use CAP Theorem?
+

Answer:

Amazon chose AP (Availability + Partition Tolerance) for shopping carts, prioritizing customer experience over perfect consistency.

Design Decision:

  • Shopping cart must ALWAYS work, even during network failures
  • Better to have duplicate items than lost sales
  • Created DynamoDB specifically for this!

How It Works:

  • User adds item → accepted immediately (no waiting)
  • Write replicated asynchronously
  • During partition, both sides accept writes
  • When partition heals, merge carts (might have duplicates)

Example Scenario:

  • Network splits US and EU datacenters
  • User adds iPhone in US: Cart = [iPhone]
  • Same user adds AirPods in EU: Cart = [AirPods]
  • Partition heals: Cart = [iPhone, AirPods] (merged)
  • Potential duplicate resolved at checkout

Why This Works:

  • Users expect cart to work always
  • Duplicate items easily removed
  • Lost sale worse than cart confusion
  • Checkout has strong consistency for payment!

Lesson: Different parts of app need different consistency! Cart is AP, payment is CP!

12
What are the limitations of the CAP Theorem?
+

Answer:

While CAP Theorem is fundamental, it has several limitations and nuances:

1. Binary Choice Oversimplification:

  • CAP presents C and A as binary (all or nothing)
  • Reality: Consistency and availability exist on spectrums
  • Modern databases offer tunable trade-offs

2. Doesn't Address Latency:

  • CAP ignores performance and latency
  • PACELC Theorem extends CAP to include latency
  • Real-world: Latency often more important than pure availability

3. Only Applies During Partitions:

  • CAP trade-off only matters when network partition occurs
  • Most of the time, networks work fine
  • Modern systems focus on normal operation, not just failures

4. Oversimplifies Consistency Models:

  • Many consistency levels: strong, weak, causal, eventual
  • CAP only discusses strong consistency
  • Real systems use sophisticated consistency models

5. Doesn't Cover All Requirements:

  • Doesn't address: durability, security, scalability limits
  • Real systems have many more constraints

Modern Understanding:

  • Use CAP as starting point, not absolute rule
  • Consider PACELC: if Partition (choose A or C), else (choose Latency or Consistency)
  • Design for common case (no partition) while handling failures