The CAP Theorem is an important foundation for understanding distributed systems. Summarizing all the available literature on CAP and some modern interpretations of the theorem, we know that any distributed system must decide when dealing with latency or network failure, whether it will choose Consistency or Availability.
- Consistency – The result of a read at T1 is the same at T2 if there were no writes between T1 and T2. Basically, any read can see any previously completed write.
- Availability – The system can can respond to a request in a timely manner.
Most NoSQL database choose availability over consistency (i.e. eventual consistency), which means they cannot provide ACID transactions. Since horizontal scalability and transactions are both important, Concourse is a system that always chooses consistency over availability, but makes every effort to minimize latency and handle some network failure using a protocol called Optimistic Availability.