Database Reference
In-Depth Information
While working at University of California at Berkeley, Eric Brewer posited his CAP theorem in
2000 at the ACM Symposium on the Principles of Distributed Computing. The theorem states
that within a large-scale distributed data system, there are three requirements that have a rela-
tionship of sliding dependency: Consistency, Availability, and Partition Tolerance.
Consiisttency
All database clients will read the same value for the same query, even given concurrent up-
dates.
Avaiillabiilliitty
All database clients will always be able to read and write data.
Parttiittiion T
n Tollerance
The database can be split into multiple machines; it can continue functioning in the face of
network segmentation breaks.
Brewer's theorem is that in any given system, you can strongly support only two of the three.
This is analogous to the saying you may have heard in software development: “You can have it
good, you can have it fast, you can have it cheap: pick two.”
We have to choose between them because of this sliding mutual dependency. The more consist-
ency you demand from your system, for example, the less partition-tolerant you're likely to be
able to make it, unless you make some concessions around availability.
The CAP theorem was formally proved to be true by Seth Gilbert and Nancy Lynch of MIT in
2002. In distributed systems, however, it is very likely that you will have network partitioning,
and that at some point, machines will fail and cause others to become unreachable. Packet loss,
too, is nearly inevitable. This leads us to the conclusion that a distributed system must do its best
to continue operating in the face of network partitions (to be Partition-Tolerant), leaving us with
only two real options to choose from: Availability and Consistency.
Figure 1-1 illustrates visually that there is no overlapping segment where all three are obtainable.
Search WWH ::




Custom Search