'CAP theorem or Brewer's therom in plain english?

I have read the wiki, and I understand sentences explaining the Consistency Availability and Partition tolerance but grasping CAP/Brewer's theorem is like holding a fish.

I believe there exist a better intuitive way explaining and understanding CAP theorem.

Any good text ?

{ Before someone think question formed as Plain-English-Explanation are nonconstructive, here is a list of all other great Plain-English-Explanations question.

What is a plain English explanation of "Big O" notation?

Ukkonen's suffix tree algorithm in plain English?

What is SOA "in plain english"?

Can you explain what "git reset" does in plain english?

}



Solution 1:[1]

CAP theorem says that in case of Network Partition(P) in a distributed data store, one needs to sacrifice either Consistency(C) or Availability(A).

The two out of three terminology (CA/CP/AP) often used is confusing as it seems that each of C, A and P are some characteristics of a system but P actually is a situation which forces to pick only one of the characteristics out of C and A.

Solution 2:[2]

In my understanding

CAP theorem is acronym for:

  • Consistency: see the most recent data without a delay
  • availability: system should give a response to every request
  • partitioning: means distributing your data in different location.

CAP theorem says you can not achieve 3 of them. you should stick with two and sacrifice one!

Lets see why!

1- If you need consistency and availability. You should forget partitioning because as you partition there is a slight window of opportunity that nodes lag behind the recent data.

2- If availability and partitioning is the goal you have to pay the cost of consistency as explained in 1.

3- finally if you choose partitioning and consistency you should sacrifice availability to handle lags of deferent nodes to have recent data.

see the picture below for different database vendors in this theorem. enter image description here

picture from http://www.abramsimon.com

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 nkr
Solution 2 Morteza Adi