데이터베이스 샤딩은 데이터를 여러 서버에 분산 저장하는 scale out 기법이다.
관계형데이터베이스와 키-값 데이터베이스는 각각의 특성에 맞는 샤딩 방식을 사용하고 있다.
이 글에서는 RDB와 키-값 DB의 샤딩 방식, 데이터 분산 및 동기화, 안정해시 사용 여부를 비교한다.
수많은 데이터베이스가 있고, 각각의 특성이 전부 다르니 가장 널리 사용되는 데이터베이스의 샤딩 방식을 비교할 것이다.
RDB는 Oracle, MySQL / 키-값 DB는 Redis, Cassandra, DynamoDB 를 기준으로 한다.
✔ 데이터 분산 저장:
두 시스템 모두 데이터를 여러 노드에 분산하여 저장함으로써 확장성과 성능을 향상시킨다.
| 항목 | RDB | 키-값 DB |
|---|---|---|
| 샤딩 방식 | - 범위 기반 샤딩: 데이터를 특정 범위로 나누어 각 샤드에 저장 | - 안정 해시 (Cassandra, DynamoDB) |
| - 해시 기반 샤딩: 해시 함수를 사용하여 데이터를 분산 | - Redis: 안정 해시를 사용하지 않고 키를 해시 슬롯으로 매핑하여 분산 (클러스터 모드) | |
| 데이터 일관성 | - 강한 일관성: ACID 트랜잭션을 지원 | - 결과적 일관성: 성능과 가용성을 위해 일부 키-값 DB는 최종적 일관성을 선택 |
| Join 지원 | - 지원 | - 미지원 |
| 안정 해시 사용 여부 | - x | - Cassandra, DynamoDB는 사용 / Redis는 사용하지 않음 |
| 데이터베이스 | 안정 해시 사용 여부 | 설명 |
|---|---|---|
| Oracle (RDB) | x | 범위 기반 또는 해시 기반 샤딩을 사용하며, 안정 해시 없이도 데이터 이동 가능 |
| MySQL (RDB) | x | 샤드 추가 시 데이터 재분배 필요, 안정 해시 사용 X |
| Redis (키-값 DB) | x | 해시 슬롯 방식을 사용 |
| Cassandra (키-값 DB) | o | 노드 추가/제거 시 최소한의 데이터 이동을 위해 안정 해시 적용 |
| DynamoDB (키-값 DB) | o | 데이터 자동 분산 및 샤딩을 위해 안정 해시 적용 |
데이터 분할 방식의 차이
데이터 일관성 및 트랜잭션 관리
노드 추가/제거의 빈도