나의 잡다한 노트 및 메모

파티셔닝(partitioning)과 샤딩(sharding)의 차이점 본문

DB

파티셔닝(partitioning)과 샤딩(sharding)의 차이점

peanutwalnut 2025. 4. 29. 13:53

구분                   파티셔닝 (partitioning)                                              샤딩 (sharding)

물리적 위치 DB 인스턴스(서버) 안 여러 DB 인스턴스(서버/클러스터)로 분산
목표 I/O·캐시 효율, 관리 편의 수평 확장(용량·CPU·I/O 한계 돌파)
관리 주체 DB 엔진이 자동·투명하게 애플리케이션·미들웨어·분산 DB가 라우팅
조인/트랜잭션 파티션 간 조인·ACID가 완전 지원 노드 간 조인·ACID는 추가 계층(2-PC 등)이 필요
장애 영향 범위 서버가 다운되면 모든 파티션 영향 샤드 단위 격리, 일부만 장애 가능
대표 기술 PostgreSQL Declarative Partitioning, Oracle Partitioning Citus, MongoDB Shards, MySQL InnoDB Cluster, Cassandra

 

 

표를 봤듯이 어디에 저장하는지가 둘의 차이점을 나타내는 것 같다.

파티셔닝은 하나의 db에서 모든 파티션 메타데이터를 알고 있는거고, 샤딩은 서버 자체를 여러 대 두고 파편(shard)마다 별도 DB 인스턴스-스토리지를 둔다.

어느 샤드를 조회할지는 라우터(샤딩 미들웨어)나 애플리케이션 코드가 결정한다.

 

또한, 확장(Scale-out) vs 성능 최적화(Scale-up)의 목적 차이도 존재한다.

  • 파티셔닝은 한 서버의 CPU·RAM·디스크가 남아있다는 가정 위에서 “쿼리 범위를 줄여 빨리 읽고 쓰자”는 전략.
  • 샤딩은 한 서버로는 더 버틸 수 없을 때 새로운 서버를 추가해 수평 확장하려는 전략.

 

 

 

'DB' 카테고리의 다른 글

MOLAP와 ROLAP  (0) 2025.03.10
비정규화(denormalization)  (0) 2025.03.07
Nested Data 란?  (0) 2025.03.02
DB Connection  (0) 2025.02.17
DB 관련 직업들과 역할  (0) 2025.02.13