Formulated by Eric Brewer in 2000, the CAP Theorem states that in any distributed data store, you can only provide two of the following three guarantees simultaneously:
- Consistency: Every read receives the most recent write
- Availability: Every request receives a response
- Partition Tolerance: The system continues to operate despite network partitions
Since network partitions are unavoidable in distributed systems, the real choice is between CP (consistent but may be unavailable) and AP (available but may return stale data).