CAP Theorem

Loading concept...

CAP Theorem: The Three Wishes of Databases

The Story of the Magic Lamp

Imagine you found a magic lamp. The genie inside says:

“I can grant you three amazing powers for your database. But here’s the catch — you can only use TWO at a time. Choose wisely!”

The three powers are:

  • C = Consistency (Everyone sees the same thing)
  • A = Availability (Always get an answer)
  • P = Partition Tolerance (Works even when parts can’t talk)

This is the CAP Theorem. Let’s explore each power!


What is CAP Theorem?

Think of a pizza shop with three locations across town. They all share the same menu.

graph TD A[Pizza Shop 1] <--> B[Pizza Shop 2] B <--> C[Pizza Shop 3] A <--> C style A fill:#FF6B6B style B fill:#4ECDC4 style C fill:#45B7D1

The CAP Theorem says: When something goes wrong with communication between shops, you must choose what to sacrifice.

Real Life Example

  • Google Docs: Multiple people editing the same document
  • Bank ATMs: Checking your balance from different machines
  • Social Media: Seeing likes count from different devices

C = Consistency in CAP

What Does It Mean?

Everyone sees the EXACT same data at the EXACT same time.

The Cookie Jar Story

You have a cookie jar. Your mom counts the cookies and says “10 cookies!”

At the same moment, your dad counts and he should ALSO say “10 cookies!”

If mom says 10 but dad says 8, that’s inconsistent. Someone ate cookies and we don’t agree!

graph TD A[Cookie Jar: 10 cookies] --> B[Mom checks] A --> C[Dad checks] B --> D[Mom sees: 10] C --> E[Dad sees: 10] D --> F[✅ CONSISTENT!] E --> F style F fill:#4CAF50,color:#fff

Real Example: Bank Account

You have $100 in your bank.

  • You check balance on your phone: $100
  • Your spouse checks on computer: $100
  • Both see the same amount = Consistent!

The Trade-off

To stay consistent, sometimes the system must:

  • Wait until all copies agree
  • Lock data while updating
  • Say “please wait” more often

A = Availability in CAP

What Does It Mean?

The system ALWAYS gives you an answer. No “sorry, try later.”

The Helpful Store Story

Imagine a store that NEVER closes and NEVER says “we can’t help you.”

Even if they’re not 100% sure about the price, they’ll give you their best answer rather than saying “come back tomorrow.”

graph TD A[You Ask Question] --> B{Is System Available?} B -->|YES| C[You Get Answer!] B -->|NO| D[❌ Error: Try Later] style C fill:#4CAF50,color:#fff style D fill:#FF6B6B,color:#fff

Real Example: Google Search

When you search on Google:

  • You ALWAYS get results
  • Maybe not perfect results
  • But you NEVER see “Google is busy, try tomorrow”

The Trade-off

To stay available, sometimes the system must:

  • Give you slightly old information
  • Show data that might be updating
  • Risk showing different answers to different people

P = Partition Tolerance in CAP

What Does It Mean?

The system keeps working even when some parts can’t talk to each other.

The Broken Phone Story

Imagine three friends playing a game:

  • Alice is in the kitchen
  • Bob is in the bedroom
  • Charlie is in the garden

Suddenly, the house phone breaks! Alice can’t call Bob.

Partition Tolerance means: The game continues! Alice and Charlie can still play. Bob can still play alone. Nobody stops completely.

graph TD A[Server A] -.->|❌ Connection Lost| B[Server B] A --> C[Server C] B --> C style A fill:#FF6B6B style B fill:#FF6B6B A --> D[Still Working!] B --> E[Still Working!] style D fill:#4CAF50,color:#fff style E fill:#4CAF50,color:#fff

Real Example: ATMs During Internet Outage

When internet breaks between ATM and bank:

  • ATM in your city still works
  • ATM in another city still works
  • They might not agree on your balance temporarily
  • But neither ATM says “go away!”

Why This Matters

In real networks:

  • Cables break
  • Servers crash
  • Internet has hiccups

Partition Tolerance is almost always required because networks WILL fail sometimes.


CAP Trade-offs: Pick Two!

The Impossible Triangle

You cannot have all three at 100% when things go wrong.

graph TD A[CAP Triangle] --> B[C + A = No Partition Tolerance] A --> C[C + P = Sometimes Unavailable] A --> D[A + P = Sometimes Inconsistent] style B fill:#FFE66D style C fill:#4ECDC4 style D fill:#FF6B6B

Choice 1: CP System (Consistency + Partition Tolerance)

Sacrifice: Availability

  • System waits for all servers to agree
  • Might say “try again later”
  • But data is ALWAYS correct

Example: Bank transfers

  • Better to wait than show wrong balance
  • “Processing…” is okay
  • Wrong money amount is NOT okay

Choice 2: AP System (Availability + Partition Tolerance)

Sacrifice: Consistency

  • Always gives an answer
  • Might show slightly old data
  • Updates eventually catch up

Example: Social media likes

  • Shows “102 likes” on your phone
  • Shows “101 likes” on friend’s phone
  • Eventually they match up
  • Nobody minds waiting for exact count

Choice 3: CA System (Consistency + Availability)

Sacrifice: Partition Tolerance

  • Only works if network is perfect
  • Rarely used in real distributed systems
  • Basically: “single server” mode

Example: Traditional single database

  • One computer, no network issues
  • But… what if that one computer breaks?

Quick Reference Table

System Type Always Correct? Always Answers? Handles Network Fail?
CP ✅ Yes ❌ Sometimes waits ✅ Yes
AP ❌ Eventually ✅ Yes ✅ Yes
CA ✅ Yes ✅ Yes ❌ No

PACELC Theorem: The Extended Story

CAP Wasn’t the Full Picture

CAP only talks about what happens during a network partition. But what about normal times?

PACELC (say: “pass-elk”) adds more:

If Partition happens, choose A or C. ELSE (normal times), choose Latency or Consistency.

Breaking It Down

P - A - C - E - L - C
│   │   │   │   │   └── Consistency (normal times)
│   │   │   │   └────── Latency (speed, normal times)
│   │   │   └────────── Else (when network is fine)
│   │   └────────────── Consistency (during partition)
│   └────────────────── Availability (during partition)
└────────────────────── Partition (if it happens)

The Restaurant Story

Your favorite restaurant has two locations:

During a storm (Network Partition):

  • Phones between locations are down
  • Each restaurant must decide: Take orders anyway (A) or Wait for connection ©?

On a sunny day (No Partition):

  • Phones work fine!
  • Now choose: Fast service with possibly outdated menu (L) or Slower but accurate menu ©?
graph TD A{Network Partition?} -->|YES| B{Choose A or C} A -->|NO - Normal| C{Choose L or C} B -->|A| D[Stay Available] B -->|C| E[Stay Consistent] C -->|L| F[Fast but maybe stale] C -->|C| G[Slow but accurate] style D fill:#4ECDC4 style E fill:#FF6B6B style F fill:#FFE66D style G fill:#45B7D1

Real Examples of PACELC

Database During Partition Normal Times
DynamoDB Availability Latency (fast!)
MongoDB Consistency Consistency
Cassandra Availability Latency

PA/EL System (DynamoDB style)

  • During problems: Keep answering (A)
  • Normal times: Be super fast (L)
  • Best for: Shopping carts, user sessions

PC/EC System (MongoDB style)

  • During problems: Stay accurate ©
  • Normal times: Stay accurate ©
  • Best for: Financial data, inventory

Summary: Your CAP Cheat Sheet

The Big Picture

  1. CAP Theorem = Three wishes, pick only two during trouble
  2. C (Consistency) = Everyone sees same data
  3. A (Availability) = Always get an answer
  4. P (Partition Tolerance) = Works when network breaks
  5. Trade-offs = CP, AP, or CA (rarely)
  6. PACELC = Also consider speed vs accuracy in normal times

Remember This!

🧠 CAP is like picking toppings for a small pizza — you want everything, but you can only fit two!

🎯 PACELC adds: “And what do you want when there’s NO pizza limit?”

When to Use What

Need Choose Example
Money must be correct CP Banking
Must always respond AP Social media
Speed matters most PA/EL Gaming
Accuracy matters most PC/EC Healthcare records

You Did It! 🎉

Now you understand:

  • Why databases can’t have it all
  • How to choose the right trade-off
  • What PACELC adds to the conversation

Next time someone asks “Why can’t the database just be perfect?” — you’ll know the answer!

The magic genie only grants two wishes at a time. Choose wisely! 🧞‍♂️

Loading story...

No Story Available

This concept doesn't have a story yet.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

Interactive Preview

Interactive - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Interactive Content

This concept doesn't have interactive content yet.

Cheatsheet Preview

Cheatsheet - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Cheatsheet Available

This concept doesn't have a cheatsheet yet.

Quiz Preview

Quiz - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Quiz Available

This concept doesn't have a quiz yet.