Skip to main content

CAP Theorem

  • Fundamental principle in distributed systems.
  • Tradeoff between desirable properties: Consistency, Availability, Partition Tolerance.

Consistency (C)

  • Every read receives the most recent write (or an error).
  • This ensures that all nodes in the system have the same data at any given time.

Availability (A)

  • Every request (read or write) receives a response, regardless of whether it is successful or not.
  • The system remains operational even in the presence of some node failures.

Partition Tolerance (P)

  • The system continues to function even when there is a network partition (a situation where communication between nodes is disrupted).

The Theorem

  • The CAP theorem states that a distributed system cannot guarantee all three properties simultaneously.

  • Can only provide at most two out of the three.

  • Consistency and Availability (CA):

    • Works well if there are no network partitions.
    • Examples: Traditional relational databases (if deployed without replication).
  • Consistency and Partition Tolerance (CP):

    • Guarantees consistency even during network partitions but may sacrifice availability (e.g., by rejecting requests during a partition).
    • Examples: Distributed databases like MongoDB (in some configurations).
  • Availability and Partition Tolerance (AP):

    • Guarantees availability even during network partitions but may sacrifice consistency (e.g., by allowing nodes to return stale or divergent data).
    • Examples: Systems like DynamoDB, Cassandra.

Practical Implications

  • Distributed systems designers must choose which two properties to prioritize based on the application's needs.
  • Real-world systems often make trade-offs to provide "good enough" versions of all three, but strict guarantees are subject to CAP's limitations.

Example

  • Consider a banking system:
    • If consistency is prioritized (e.g., accurate account balances), availability might be sacrificed during network partitions.
    • If availability is prioritized (e.g., ensuring that ATMs are always operational), consistency might be relaxed during partition events.