본문 바로가기

CS

[DB] 데이터베이스 샤딩(Sharding)과 파티셔닝(Partitioning)

분산 데이터베이스 시스템


  • 분산 데이터베이스이란 네트워크를 통해 연결하여 논리적으로는 하나의 시스템인 것처럼 간주하지만 물리적으로는 여러 대의 데이터베이스로 분산되어 있는 시스템을 말합니다.
  • 이때 언급되는 샤딩과 파티셔닝의 차이를 정리해보았습니다.
  • 두 용어를 혼용하여 사용하는 경우가 있고 나누어 사용하는 경우가 있으며 이를 모두 살펴 작성하였습니다.

샤딩과 파티셔닝 공통점

  • 데이터를 여러 개로 나누어 분산시키기 위한 기술(어떤 데이터가 어디에 저장되어 있는지 알 수 있는 기술 포함)
  • 즉 테이블이 너무 크면 용량 부족이나 관리, 성능 이슈가 생겨 데이터를 쪼개는 것
  • 서비스 규모 증가에 따른 DB 공간부족 해결, 퍼포먼스 향상 목적

파티셔닝(Partitioning)


  • 파티셔닝이란 보다 일반적인 용어로 큰 데이터 요소(테이블)들을 관리하기 쉬운 크기로 쪼개는 행위를 뜻함
  • 가용성(Availability), 관리용이성(maintainability), 성능(Performance) 향상
  • 단점: 테이블 간 join 비용 증가

수직 파티셔닝(vertical partitioning)

  • 하나의 테이블에 저장된 데이터들을 열 기준(자료의 특성별)으로 분리하는것
  • 이미 정규화된 데이터를 분리하는 과정이며 사용 빈도에 따라 열을 분리하여 효율화
  • 특정 테이블의 크기가 일정 수준 이상 커지면 다른 방식으로 db를 재분할 해야할 수도 있음

수평 파티셔닝(Horizontal Partitioning)

  • 스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장하는 것
  • 샤딩과 차이점이라면 보통 수평 분할을 한다고 했을 때는 하나의 데이터베이스 안에서 이루어지는 경우가 많음

샤딩(Sharding)


  • 샤딩은 수평 파티셔닝(horizontal partitioning)과 같은 개념으로 볼 수 있음
  • 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될지를 샤드키를 기준으로 분리
  • 데이터를 물리적으로 다른 데이터베이스에 수평파티셔닝으로 저장하고 조회하는 방법을 뜻함
  • Join 연산이 어렵고 일관성(consistency)과 복제(replication) 등 문제가 있을 수 있음