Consistency, Availability, Partition Tolerance – pick any two
used mostly when talking about NoSQL databases and suggesting
that a distributed system can be characterized as either CA, AP
or CP (see e.g. here). For some time I’ve been trying to
understand the different combinations and what do they mean in
practice; having some time at various airports I caught up on
reading, and here’s what I came up with. What’s C, A and P?
First let’s define how I understand the three guarantees, basing
on some of the articles I’ve read. Consistency is the easiest
one. It roughly means that the clients get the same view of
data. By saying that a system is consistent we often mean strong
consistency, but it also can come in different flavors, e.g.
casual. Availability is a property saying that every request to
a non-failing node will return a (meaningful) response. The
response may not contain all data (so the harvest will not be
100%, see the appropriate section in ), but it should be useful
for the client. Partition toler