데이터베이스 샤딩 (Sharding)

1. 데이터베이스 수평 분할, 샤딩(Sharding)의 개념

개념도개념
물리적으로 다른 데이터베이스에 동일한 테이블 스키마를 가진 데이터를 수평 분할하여 분산 저장 및 조회하는 데이터베이스 수평 분할 기법
  • 샤딩 기법은 RDBMS 뿐 아니라 MongoDB 등 NoSQL, 블록체인 등에서도 활용하는 Scale-out 방식의 신뢰성 확보 및 성능 개선 기법

 

2. 샤드(Shard) 분할 기법 및 분할 시 고려사항

(1) 샤드 분할 기법

분할 기법분할 원리적용 시 고려사항
Range based Partitioning데이터 범위 분할데이터 분할 방법 예측 필요
Vertical Partitioning테이블 별로 분할전체 시스템에 큰 변화 없음
Directory based Partitioning추상화 서비스 생성샤드키 Look-up, DB/Cache 조합
Hash based Partitioning해시 함수 적용 결과 분할균등분포위해 해시함수구성
  • 샤딩 적용 전 Data Rebalancing 및 Join, Global Unique Key에 대한 고려 필요

(2) 샤드 분할 시 고려사항

구분고려사항설명
APP 연계 측면Global Transaction 사용– Shard DB 간 Global Transaction 통한 트랜잭션 가능
Sharding DB 간 Join– Shard DB 간 Join 불가능하므로 역정규화 고려
Global Unique Key– Auto-Increment 사용 시 Key 중복, APP 레벨 Guide
DB 구성 측면서비스 영향도 고려– 무정지 DB Scale-up/out 작업 등 서비스 영향도 고려
Shard 해시 함수 설계– 성능 향상 및 데이터 균등 분포를 위한 해시 함수 설
작은 Table 단위 구성– Table 단위를 가능한 작게 구
  • 샤딩 적용 시 관리 도구도 필요, 다른 방안으로 데이터 분할 가능 여부 확인 필요하며 샤딩 키는 신중하게 선택

 

3. 샤딩(Sharding)과 파티셔닝(Partitioning) 비교

비교 항목샤딩(Sharding)파티셔닝(Partitioning)
분할방식수평 분할수평/수직 분할
Key 여부샤드 키 저장키 없음
분할 데이터 위치별도 서버에 분리동일 서버에 저장
  • 최근 H/W 및 DB 성능 향상에 따라 샤딩이나 파티셔닝 필요성을 충분히 검토 후 적용 권장

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^