개발/DB

샤딩(Sharding) vs 파티셔닝(Partitioning) 정리

choi_nyeong 2025. 6. 26. 22:24

샤딩(Sharding) vs 파티셔닝(Partitioning) 정리

✅ 개요

항목 샤딩 (Sharding) 파티셔닝 (Partitioning)
정의 **데이터를 여러 DB 서버**에 분산 저장하는 방식 **하나의 DB 내에서 테이블 데이터를 분할**하여 저장
대상 **DB 서버 단위** **테이블/스토리지 단위**
목적 수평 확장(Scale-out) 및 부하 분산 쿼리 성능 향상, 관리 효율화
처리 위치 애플리케이션 또는 DB 미들웨어에서 샤딩 전략 관리 DBMS 내부에서 자동 또는 수동 설정
대표 기술 Vitess, Citus, Mycat 등 MySQL 파티셔닝, Oracle 파티션 테이블 등
예시 고객 ID에 따라 DB1, DB2, DB3에 나눠 저장 월별 데이터 파티션: 2024년 1월, 2월, 3월 테이블 구분

🗂️ 파티셔닝 종류

🔹 Range Partitioning (범위 기반)

PARTITION BY RANGE (order\_date) (  
  PARTITION p202401 VALUES LESS THAN ('2024-02-01'),  
  PARTITION p202402 VALUES LESS THAN ('2024-03-01')  
);

🔹 List Partitioning (리스트 기반)

PARTITION BY LIST (region) (  
  PARTITION east VALUES IN ('SEOUL', 'INCHEON'),  
  PARTITION west VALUES IN ('BUSAN', 'GWANGJU')  
); 

🔹 Hash Partitioning (해시 기반)

PARTITION BY HASH(customer\_id) PARTITIONS 4;  

🧱 샤딩 구조 예시

             ┌────────────┐
             │ Application│
             └─────┬──────┘
        ┌──────────┴──────────┐
        ▼                     ▼
 ┌────────────┐       ┌────────────┐
 │   DB_001   │       │   DB_002   │
 └────────────┘       └────────────┘
        ▲                     ▲
     고객ID 1~5000       고객ID 5001~

고객 ID, 지역, 테넌트 등으로 샤딩 키를 정해 샤딩 로직을 직접 구현하거나, 미들웨어나 프레임워크에서 분산 처리

⚖️ 비교 요약

비교 항목 샤딩 파티셔닝
목적 데이터 수평 분산 (스케일 아웃) 쿼리 최적화, 유지보수 편의
운영 복잡도 높음 (샤딩 키, 라우팅 필요) 낮음 (DB 내부 관리)
쿼리 대상 샤딩된 서버 각각 단일 서버 내 여러 파티션
데이터 이동 샤드 간 이동 시 복잡 파티션 재조정 상대적으로 쉬움
JOIN/집계 샤드 간 조인 불가 (앱단 처리 필요) 파티션 간 조인 가능 (일부 제한)

📝 결론

  • 샤딩은 DB 자체를 나누는 분산 처리 전략으로, 대규모 트래픽 시스템에 적합
  • 파티셔닝은 테이블 레벨에서 성능 최적화를 위한 기능이며, 관리 편의성 중심
  • 둘 다 데이터 분산 처리 전략이지만, 적용 위치와 목적이 다르므로 대비되는 개념으로 볼 수 있음

✅ 샤딩은 "어디에 저장할 것인가", 파티셔닝은 "어떻게 나눠서 저장할 것인가"

'개발 > DB' 카테고리의 다른 글

오라클을 이해하기 위한 필수 키워드 3가지  (1) 2025.05.02
Spring Boot + JPA + MySQL 연동을 위한 DB 설정  (0) 2025.03.01
MySQL Workbench 설치  (0) 2025.01.20
Mysql 설치  (0) 2025.01.20