100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

What is the PACELC Theorem and How Does It Extend CAP?

Learn the PACELC theorem, how it extends CAP with a latency-vs-consistency trade-off, and how to classify real databases.

hardQ101 of 224 in System Design Est. time: 6 minsLast updated:
Open Code Lab

Expected Interview Answer

PACELC extends the CAP theorem by pointing out that even when there is no network partition, a distributed system still has to trade off Latency against Consistency, so the full statement is: if there is a Partition, choose Availability or Consistency (PAC), Else (normal operation), choose Latency or Consistency (LC).

CAP theorem only describes behavior during a partition, but most of a system’s uptime is spent partition-free, and even then there is a real trade-off: to guarantee strong consistency, a write typically must be confirmed by multiple replicas (often across regions) before acknowledging, which adds latency; to minimize latency, a system can acknowledge a write from a single nearby replica and propagate asynchronously, accepting a window of staleness. PACELC labels systems with two letters for each branch — for example DynamoDB is PA/EL (available over consistent during a partition, latency-favoring over consistent normally), while a system like Google Spanner leans PC/EC (consistent in both cases, accepting higher latency for synchronous cross-region commits). This framing is more complete than CAP alone because it explains everyday design choices like read replicas and asynchronous replication that have nothing to do with partitions, only with the physics of network latency across distance.

  • Explains latency/consistency trade-offs that happen even without any partition
  • Gives a more complete two-axis classification (PA/AP-EL/EC-style labels) than CAP alone
  • Justifies common patterns like async replication and read replicas on latency grounds
  • Helps pick the right database by matching both partition and normal-operation behavior to requirements

AI Mentor Explanation

PACELC is like a team’s video review process, which behaves differently depending on whether communication with the third umpire is cut (a partition) or working fine. If the link drops, the on-field umpires must decide whether to wait indefinitely for confirmation or make a fast call anyway — that is the PAC half. But even when the link works perfectly, the team still chooses between waiting the full ninety seconds for a certain, cross-checked ruling, or accepting the on-field umpire’s quicker read to keep the game moving — that is the LC half, a latency-versus-certainty trade-off that exists even without any outage. PACELC says both trade-offs matter, not just the outage case.

Step-by-Step Explanation

  1. Step 1

    Split into two branches

    PAC covers behavior during a Partition (Availability vs Consistency); LC covers normal operation (Latency vs Consistency).

  2. Step 2

    Evaluate the partition branch

    Ask what the system does when nodes cannot communicate: reject requests (C) or keep serving (A).

  3. Step 3

    Evaluate the normal-operation branch

    Ask what the system does when everything is healthy: wait for cross-replica confirmation (C) or answer fast from one replica (L).

  4. Step 4

    Classify the system with a two-letter-pair label

    E.g. PA/EL (DynamoDB-style, favors availability and latency) or PC/EC (Spanner-style, favors consistency in both branches).

What Interviewer Expects

  • Explains that PACELC adds the latency/consistency trade-off during normal operation, which CAP does not cover
  • Correctly states the PAC and ELSE-LC branches
  • Classifies at least one real system with its PACELC label
  • Connects the LC trade-off to synchronous vs asynchronous replication

Common Mistakes

  • Treating PACELC as just a restatement of CAP without the latency dimension
  • Forgetting that the LC trade-off applies even with zero network partition
  • Not being able to name a real system and its PACELC classification
  • Confusing “latency” here with “availability” — they are different axes

Best Answer (HR Friendly)

PACELC builds on the CAP theorem by pointing out that even when everything is working fine, with no outage at all, a distributed database still has to choose between answering as fast as possible or waiting a bit longer to make sure the answer is fully up to date everywhere. So the full picture is: during an outage, pick availability or consistency, and during normal operation, pick speed or consistency.

Code Example

Sync (EC-leaning) vs async (EL-leaning) write during normal operation
async function writeOrder(order, mode) {
  if (mode === "EC") {
    // Consistency-favoring: wait for all region replicas to confirm
    await Promise.all(regions.map((r) => r.writeAndConfirm(order)))
    return { status: "committed", latency: "higher" }
  }

  if (mode === "EL") {
    // Latency-favoring: acknowledge from the nearest replica, replicate async
    await nearestRegion.write(order)
    replicateInBackground(order, regions)
    return { status: "acknowledged", latency: "lower" }
  }
}

Follow-up Questions

  • How would you classify Cassandra using PACELC notation?
  • Why does Google Spanner accept higher write latency, and what does it gain from it?
  • What is the difference between synchronous and asynchronous replication in this context?
  • How does PACELC change your database choice for a multi-region e-commerce cart versus a chat app?

MCQ Practice

1. What does the "ELSE" branch of PACELC describe?

PACELC's "Else" branch applies when there is no partition, describing the latency-vs-consistency trade-off present even in healthy operation.

2. A system labeled PC/EC in PACELC notation behaves how?

PC/EC systems like Spanner choose consistency both during a partition (C over A) and during normal operation (C over L), at the cost of higher latency.

3. Why is PACELC considered more complete than CAP alone?

CAP only describes partition behavior; PACELC additionally captures the everyday latency/consistency trade-off during normal, partition-free operation.

Flash Cards

What does PACELC stand for?If Partition: Availability or Consistency; Else: Latency or Consistency.

What does CAP miss that PACELC adds?The latency-vs-consistency trade-off that exists during normal, partition-free operation.

PA/EL example?DynamoDB (default): available during a partition, latency-favoring normally.

PC/EC example?Google Spanner: consistent during a partition and consistent normally, accepting higher latency.

1 / 4

Continue Learning