RDB Sharding vs Key-Value DB Sharding 비교

최혜미·2025년 2월 3일
1

cs

목록 보기
33/34
post-thumbnail

데이터베이스 샤딩은 데이터를 여러 서버에 분산 저장하는 scale out 기법이다.
관계형데이터베이스와 키-값 데이터베이스는 각각의 특성에 맞는 샤딩 방식을 사용하고 있다.
이 글에서는 RDB와 키-값 DB의 샤딩 방식, 데이터 분산 및 동기화, 안정해시 사용 여부를 비교한다.

수많은 데이터베이스가 있고, 각각의 특성이 전부 다르니 가장 널리 사용되는 데이터베이스의 샤딩 방식을 비교할 것이다.
RDB는 Oracle, MySQL / 키-값 DB는 Redis, Cassandra, DynamoDB 를 기준으로 한다.


1. RDB와 키-값 데이터베이스의 공통점

데이터 분산 저장:
두 시스템 모두 데이터를 여러 노드에 분산하여 저장함으로써 확장성과 성능을 향상시킨다.


2. RDB vs 키-값 데이터베이스 샤딩 방식 비교

항목RDB키-값 DB
샤딩 방식- 범위 기반 샤딩: 데이터를 특정 범위로 나누어 각 샤드에 저장- 안정 해시 (Cassandra, DynamoDB)
- 해시 기반 샤딩: 해시 함수를 사용하여 데이터를 분산- Redis: 안정 해시를 사용하지 않고 키를 해시 슬롯으로 매핑하여 분산 (클러스터 모드)
데이터 일관성- 강한 일관성: ACID 트랜잭션을 지원- 결과적 일관성: 성능과 가용성을 위해 일부 키-값 DB는 최종적 일관성을 선택
Join 지원- 지원- 미지원
안정 해시 사용 여부- x- Cassandra, DynamoDB는 사용 / Redis는 사용하지 않음

3. 데이터 분산 및 동기화 방식

📌 Oracle (RDB)

  • 데이터 분산: 샤딩을 통해 데이터를 여러 독립적인 데이터베이스에 분산 저장
  • 동기화: 각 샤드는 독립적으로 운영되며, 필요에 따라 글로벌 트랜잭션 을 통해 데이터 일관성을 유지
    🔗 참고: Oracle 공식 문서

📌 MySQL (RDB)

  • 데이터 분산: 파티셔닝 을 통해 테이블을 여러 파티션으로 나누어 저장
  • 동기화: 각 파티션은 동일한 스키마를 가지며, 필요에 따라 데이터 일관성을 유지
    🔗 참고: MySQL 공식 문서

📌 Redis (키-값 DB)

  • 데이터 분산: 키를 16,384개의 해시 슬롯(Hash Slot) 으로 매핑하여 각 노드에 분산 저장
  • 동기화: Redis 클러스터 모드에서 데이터의 가용성과 일관성을 유지
    🔗 참고: Redis 공식 문서

📌 Cassandra (키-값 DB)

  • 데이터 분산: 안정 해시 를 사용하여 데이터를 자동 분산 저장
  • 동기화: 가십 프로토콜 을 통해 노드 간의 상태 정보를 공유하고, 데이터 일관성을 유지
    🔗 참고: Apache Cassandra 공식 문서

📌 DynamoDB (키-값 DB)

  • 데이터 분산: 안정 해시 를 사용하여 데이터를 자동 분산 저장
  • 동기화: 내부 메커니즘을 통해 데이터 일관성과 가용성 유지
    🔗 참고: DynamoDB 공식 문서

4. 안정 해시 사용 여부

데이터베이스안정 해시 사용 여부설명
Oracle (RDB)x범위 기반 또는 해시 기반 샤딩을 사용하며, 안정 해시 없이도 데이터 이동 가능
MySQL (RDB)x샤드 추가 시 데이터 재분배 필요, 안정 해시 사용 X
Redis (키-값 DB)x해시 슬롯 방식을 사용
Cassandra (키-값 DB)o노드 추가/제거 시 최소한의 데이터 이동을 위해 안정 해시 적용
DynamoDB (키-값 DB)o데이터 자동 분산 및 샤딩을 위해 안정 해시 적용

5. RDB에서 안정 해시를 사용하지 않는 이유 & 대체 기술

📌 RDB에서 안정 해시를 사용하지 않는 이유

  1. 데이터 분할 방식의 차이

    • RDB는 데이터를 범위 기반 샤딩 이나 해시 기반 샤딩 으로 분할.
    • 이러한 방식은 데이터의 분포와 접근 패턴을 고려하여 설계되므로, 안정 해시의 필요성이 적음.
  2. 데이터 일관성 및 트랜잭션 관리

    • RDB는 ACID 트랜잭션을 준수하여 강한 일관성을 보장.
    • 안정 해시는 주로 노드 추가/제거 시 데이터 이동을 최소화하는 데 집중하는 반면, RDB에서는 데이터 일관성이 더 중요.
  3. 노드 추가/제거의 빈도

    • RDB 시스템에서는 노드의 추가나 제거가 자주 발생하지 않음.
    • 일반적으로 계획적으로 확장되므로, 노드 변경 시 데이터 재분배를 위한 안정 해시 필요성이 낮음.

📌 참고자료

0개의 댓글