## 데이터베이스 분산과 CAP 이론
### 데이터베이스 분산
데이터 규모가 커질 수록 스케일 업 방식으로 대응하는 것은 한계가 있기 때문에 데이터를 분산하여 저장한다는 생각은 쉽게 할 수 있다. 다만, 이렇게 데이터를 분산시킬 경우 단일 데이터베이스에서는 동시에 누릴 수 있던 일관성과 가용성 중 하나를 포기해야 하는데, 이를 **CAP 이론** 또는 **일관성과 가용성의 trade-off** 라고 한다.
### CAP 이론
CAP 이론은 분산 시스템에서 일관성(Consistency), 가용성(Availability), 분할 내성(Partition[^1] Tolerance) 중 하나를 포기해야 한다는 이론이다. 여기서 분할 내성을 포기하는 것은 네트워크의 불완전함으로 인해 현실적으로 힘들기 때문에, 보통 일관성과 가용성 중 하나를 선택한다. 이때 일관성을 선택한 경우를 `Cp`, 가용성을 선택한 경우를 `Ap`라고 표기한다.
> **`Cp`과 `Ap`는 실제로 어떻게 구현될까?**
> `Cp`과 `Ap`는 파티션 발생시 데이터 쓰기를 차단하는 방식으로 구현된다. 데이터 쓰기를 차단하면 일관성은 지켜지지만 가용성이 희생되어 `Cp`가 되고, 허용하면 가용성은 지켜지지만 일관성이 지켜지지 않아 `Ap`가 된다.
## Reference
- [IBM Korea - CAP 정리란?](https://www.ibm.com/kr-ko/topics/cap-theorem)
[^1] : 여기서 파티션은 그래프에서 특정 노드들 간의 연결이 되지 않아 파티션이 형성되었다는 뜻으로, 구체적으로는 인스턴스들 간에 네트워크 연결이 끊어진 상황을 생각하면 된다.