CAP theorem states that there are three basic requirements which exist in a special relation when designing applications for a distributed architecture.
Consistency – This means that the data in the database remains consistent after the execution of an operation. For example after an update operation all clients see the same data.
Availability – This means that the system is always on (service guarantee availability), no downtime.
Partition Tolerance – This means that the system continues to function even the communication among the servers is unreliable, i.e. the servers may be partitioned into multiple groups that cannot communicate with one another.
In theoretically it is impossible to fulfill all 3 requirements. CAP provides the basic requirements for a distributed system to follow 2 of the 3 requirements. Therefore all the current NoSQL database follow the different combinations of the C, A, P from the CAP theorem. Here is the brief description of three combinations CA, CP, AP :
CA – Single site cluster, therefore all nodes are always in contact. When a partition occurs, the system blocks.
CP – Some data may not be accessible, but the rest is still consistent/accurate.
AP – System is still available under partitioning, but some of the data returned may be inaccurate.