icon

안동민 개발노트

14장 : NoSQL과 분산 데이터베이스

분산 데이터베이스 기초

데이터를 여러 서버에 분산하는 두 가지 핵심 기법이 레플리케이션(Replication)샤딩(Sharding)입니다. 단일 서버의 한계(처리량, 가용성, 저장 용량)를 극복하기 위해 분산 아키텍처를 도입하며, 이때 발생하는 일관성·가용성·파티션 내성 사이의 트레이드오프를 이해해야 합니다.


분산 데이터베이스가 필요한 이유

분산 목적기법설명
읽기 확장레플리케이션읽기 요청을 여러 복제본에 분산
쓰기 확장샤딩데이터를 분할하여 쓰기 분산
고가용성레플리케이션한 서버 장애 시 다른 서버가 대체
지역 분산멀티 리전 복제사용자와 가까운 서버에서 응답

레플리케이션

레플리케이션은 같은 데이터를 여러 서버에 복사하여 가용성과 읽기 성능을 높이는 기법입니다.


마스터-슬레이브 (Primary-Replica)

가장 일반적인 레플리케이션 구조입니다. 쓰기는 마스터만, 읽기는 슬레이브에서 처리합니다.

장점단점
읽기 부하 분산쓰기는 Master만 가능
Master 장애 시 Slave가 승격복제 지연(Replication Lag)
구현이 비교적 단순Master가 단일 장애점(SPOF)
백업을 Slave에서 수행 가능쓰기 확장 불가

복제 방식: 동기 vs 비동기

복제의 동기화 수준에 따라 데이터 일관성과 성능 사이의 트레이드오프가 달라집니다.


복제 지연(Replication Lag) 문제

비동기 복제에서 마스터와 슬레이브의 데이터가 일시적으로 다른 현상입니다.


Failover (장애 조치)

마스터 장애 시 슬레이브를 새로운 마스터로 승격하는 과정입니다.


마스터-마스터 (Multi-Master)

양쪽에서 동시에 같은 데이터를 수정하면 충돌이 발생합니다. 충돌 해결 정책이 필요합니다.

비교Master-SlaveMulti-Master
쓰기 확장불가가능
복잡도낮음높음
충돌없음발생 가능
가용성Failover 필요즉시 전환 가능
주요 사용대부분의 시스템멀티 리전, 특수 요구

샤딩

샤딩(Sharding)은 데이터를 여러 서버에 나누어 저장하는 기법입니다. 레플리케이션이 복사라면, 샤딩은 분할입니다. 단일 서버로 감당할 수 없는 쓰기 부하나 저장량을 해결합니다.


샤드 키 선택

샤딩의 성패는 샤드 키(Shard Key) 선택에 달려 있습니다.


해시 기반 샤딩


범위 기반 샤딩


일관성 해싱

해시 기반 샤딩에서 샤드를 추가하거나 제거할 때 일관성 해싱(Consistent Hashing)은 데이터 재배치를 최소화합니다.


샤딩의 과제

샤딩은 강력하지만 여러 운영 과제를 수반합니다.


레플리케이션 + 샤딩 조합

실무에서는 레플리케이션과 샤딩을 함께 사용합니다.


합의 알고리즘

분산 시스템에서 여러 노드가 하나의 값에 합의하는 방법입니다. 노드 장애가 발생해도 시스템이 올바르게 동작하기 위해 필수적입니다.

알고리즘특징사용 제품
Raft이해하기 쉬움, 리더 기반etcd, CockroachDB, TiDB
Paxos이론적 근간, 구현 복잡Google Spanner, Chubby
ZABZookeeper 전용, Paxos 변형Apache Zookeeper
PBFT비잔틴 장애 허용블록체인 일부

CAP 정리와 분산 DB

분산 시스템에서는 CAP 3가지 속성을 동시에 모두 만족할 수 없습니다.


분산 DB 제품 비교


분산 데이터베이스 종합 정리

핵심 개념설명
레플리케이션같은 데이터 복사 → 읽기 확장, 가용성
샤딩데이터 분할 → 쓰기 확장, 저장량 확장
일관성 해싱노드 변경 시 최소 재배치
합의 알고리즘노드 장애에도 올바른 결정
CAP 정리C·A·P 중 2개만 선택 가능
Failover자동 장애 감지 후 대체 노드 승격
복제 지연비동기 복제에서 일시적 불일치
샤드 키데이터 분배 기준 → 설계 핵심

다음 절에서는 RDB와 NoSQL의 선택 기준을 다루겠습니다.