CAP Theorem

A quick definition is: when a network partition occurs, either:

  • Don’t accept requests (consistent but not available)
  • Accept requests (available but not consistent)

More official definitions:

  • Consistency: Any read operation that begins after a write operation completes must return that value, or the result of a later write operation.
  • Availability: Every request received by a non-failing node in the system must result in a response.
  • Network Partitions: the network will be allowed to lose arbitrarily many messages sent from one node to another.

A system cannot be simultaneously consistent, available, and partition tolerant at once. Since we don’t really have any real control over network partitions, in the worst case, a system can either be consistent (strongly consistent) or available (eventually consistent).