Skip to main content 파티셔닝 (Partitioning)
- 단일 데이터베이스 내에서 데이터를 테이블로 분할하는 행위 혹은 방법.
- 같은 데이터베이스 내에서 데이터가 관리된다.
- 분할된 데이터는 하나의 서버에 저장된다.
수평 파티셔닝

- 테이블의 행(row)을 기준으로 데이터를 나누어, 여러 테이블로 분산한다.
- 주로 데이터베이스의 용량이 커지면서 성능 저하가 예상될때, 이를 막기 위해 사용됩니다.
수직 파티셔닝

- 테이블의 열을 기준으로 데이터를 나누어, 여러 테이블로 분산한다.
- 자주 사용하는 열과 그렇지 않은 열을 나누어 저장할수 있기에, 쿼리 성능을 향상시킬 수 있다.
- 민감한 정보에 제한을 걸어서 접근을 방지할 수 있다.
샤딩 (Sharding)
- 동일한 스키마를 가지고 있는 데이터를 여러 데이터베이스(및 서버) 에 분산한다.
- 데이터와 트래픽이 많이 쌓이고 몰리는, 규모가 큰 애플리케이션에서 사용.
수평 파티셔닝과 샤딩
- 데이터를 행으로 나눈다는 점에서 수평 파티셔닝의 일종으로 볼 수 있다.
- 수평 파티셔닝과 샤딩은 모두 단순히 행을 기준으로 나누는 것 뿐아니라, 다양한 기준으로 데이터를 나눌 수 있다.
- 특정 키를 해싱한 결과에 따라
- 범위에 따라 (e.g. 사용자 ID 1 ~ 999 까지)
- 데이터 값이 특정 목록에 포함된 유무에 따라 (e.g. 한국1, 한국2, 미국 1, 미국2)
- 하나의 서버에서 관리하는 수평 파티셔닝과 달리, 여러 서버로 분산된 환경에서 관리하는 점에서 주요한 차이점을 가진다.
비교
특징 | 파티셔닝(Partitioning) | 샤딩(Sharding) |
데이터 저장 위치 | 단일 서버 내에서 논리적으로 분리된 파티션 | 여러 서버에 물리적으로 분산된 샤드 |
확장성 | 주로 단일 서버 내 성능 최적화 | 물리적 확장을 통해 시스템 부하 분산 |
관리 복잡도 | 비교적 간단 | 높은 관리 및 라우팅 복잡도 |
사용 목적 | 데이터 접근성과 성능 최적화 | 대규모 트래픽 처리와 확장성 개선 |
출처
- http://theeye.pe.kr/archives/1917
- https://aiday.tistory.com/123
- https://www.digitalocean.com/community/tutorials/understanding-database-sharding
- https://data-mozart.com/partitioning-why-you-need-to-consider-it/