CAP 이론 개요
CAP는 Consistency(일관성), Availability(가용성), Partition Tolerance(분할 허용성)의 약자이다. CAP 이론은 “적절한 응답 시간 내 세 가지 속성을 모두 만족시키는 분산 시스템을 구성할 수 없다”는 이론

C, A, P
C - Consistency (일관성)
- 사용자가 분산 데이터베이스의 어떤 노드와 통신하든지 상관 없이 같은 데이터를 조회할 수 있음.
A - Availability (가용성)
P - Partition Tolerance (분할 허용성)
- 노드 간 통신이 끊어지더라도 시스템이 여전히 작동함
CP, AP, CA
CP
- Consistency를 유지하기 때문에 어떤 노드에 조회해도 같은 값을 내주지만, Availablity를 포기했기 때문에 에러가 발생했을 때는 답을 받을 수 없음
- ex: MongoDB
AP
- Availability를 유지하기 때문에 하나의 노드에 문제가 생겨 에러로 응답하더라도 다른 노드에서 조회가 가능
- 한 시점에 어느 노드에서 조회했는지에 따라 결과가 다를 수 있음
- ex: Cassandra
CA
- 항상 일관된 데이터를 조회할 수 있지만, 노드 간 통신이 안될 경우 사용할 수 없음
- ex: RDBMS

MongoDB의 구성

- Router는 적당한 Shard에 연산을 요청하기 위한 Interface
- Config server는 클러스터의 메타데이터를 저장. 어느 데이터가 어느 Shard에서 와야하는지
- 각 Shard 안에 실제 데이터들이 저장 됨.
- 각 Shard는 Primary, Secondary, Arbiter 서버로 구성되어 데이터 손실을 예방
- Shard 들은 병렬로 더 많이 추가될 수 있음
- 하나의 Collection이 여러 Shard들에 나눠져서 저장될 수도 있음.

참고: