나의 잡다한 노트 및 메모
파티셔닝(partitioning)과 샤딩(sharding)의 차이점 본문
구분 파티셔닝 (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 |