Proposed by Eric Brewer. States that it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees:
Availability – a guarantee that every request receives a response about whether it was successful or failed
Partition tolerance – the system continues to operate despite arbitrary message loss when network is partitioned.
CA = If network is partitioned, the nodes continue to be available by themselves and data continues to be consistent on the same node even when there is no partition tolerance.
AP = Nodes may still be available even when we ensure partition tolerance by disallowing further writes but data will not remain consistent between the nodes anymore as nodes cannot exchange message due to network partitioning.
PC = Nodes may be consistent but in order to ensure partition tolerance they may not be available to write.