The CAP theorem, formulated by Eric Brewer in 2000, states that in a distributed system, you can achieve only two out of the following three guarantees: Consistency, Availability, or Partition Tolerance.
CP (Consistency + Partition Tolerance) sacrifices availability, while AP (Availability + Partition Tolerance) sacrifices strict consistency.
A CA (Consistency + Availability) system is not practically possible in a distributed environment.
The PACELC theorem extends CAP to capture performance considerations and indicates the tradeoff between Availability/Consistency during a partition and Latency/Consistency under normal conditions.