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 성능 향상에 따라 샤딩이나 파티셔닝 필요성을 충분히 검토 후 적용 권장