Brewer's Theorem
분산시스템 디자이너의 선택에 도움을 주는 정리다
세 가지 조건을 모두 만족하는 분산 컴퓨터 시스템이 존재하지 않음을 증명
- Consistency: 모든 노드가 같은 순간에 같은 데이터를 볼 수 있다.
- Availability: 모든 요청이 성공 또는 실패 결과를 반환할 수 있다.
- Partition tolerance: 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있다.

정리 자체가 제대로 이해하기 어렵게 정의되어 있어서 이해하기가 쉽지 않다
애초에 CAP Theorem이 의도했던바는 명확하다. 절대로 장애가 없는 네트워크는 존재하지 않으며, 따라서 분산시스템에서 P는 무조건 인정하고 들어가야 한다는 것이다
따라서 네트워크가 단절되었을 때 시스템이 어떻게 동작할지 결정해야 하며, 이 때 C와 A를 모두 만족시키는건 불가능하므로 둘 중에 하나를 골라야 한다
한계
- 완벽한 CP, AP 시스템은 사용할 수 없다.
- 대부분 분산 시스템은 CP와 AP의 중간 어디쯤이다.
- 모든 분산 시스템이 파티션을 사용하진 않는다.
- 분산시스템에 대한 명확한 표현이 힘들다
그래서 나온게 PACELC Theorem
math
CAP theorem
CAP theorem은 분산 스토리지는 consistency(a.k.a. C ), availability(a.k.a A ), partition tolerance(a.k.a. P )를 동시에 만족시킬 수 없다는 것이다. 여기서 C , A , P 는 각자 일반적으로 사용되는 용어와 다른 용어로 사용되기 때문에 CAP theorem을 이해하려면 각자가 정의하는 것을 이해하는 것이 중요하다. A 는 모든 operation이 에러가 아닌 데이터를 돌려주는 것이다.
https://blog.seulgi.kim/2018/03/cap-theorem.html
usage
CAP Theorem, 오해와 진실
CAP Theorem은 분산시스템에서 일관성(Consistency), 가용성(Availability), 분할 용인(Partition tolerance)이라는 세 가지 조건을 모두 만족할 수 없다는 정리로, 세 가지 중 두 가지를 택하라는 것으로 많이 알려졌다. 특히 NoSQL이 인기를 끌면서 널리 퍼졌지만, 정리 자체가 제대로 이해하기 어렵게 정의되어 있어서 이해하기가 쉽지 않다 NoSQL을 사용하면 RDBMS에서의 불편한 것들이 모두 해결되고 높은 확장성을 가진 시스템을 구축할 수 있는 것 같지만 현실은 그렇지 못하다.
http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/

Interview_Question_for_Beginner/Database at master · JaeYeopHan/Interview_Question_for_Beginner
데이터베이스가 존재하기 이전에는 파일 시스템을 이용하여 데이터를 관리하였다. (현재도 부분적으로 사용되고 있다.) 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야 한다. 이 때의 문제점은 데이터 종속성 문제와 중복성, 데이터 무결성이다. 데이터의 독립성 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database#nosql

Seonglae Cho