파티셔닝과 샤딩에 대해서 설명해 주세요.

  • 데이터베이스 볼륨이 커질수록 데이터베이스 읽기 및 쓰기 성능은 감소할 것이고, 데이터베이스가 병목 지점이 될 것이다.

  • 때문에 이를 적절히 분할할 필요가 있는데, 데이터베이스를 분할하는 방법으로 크게 파티셔닝(Partitioning)샤딩(Sharding) 이 있다.

파티셔닝

  • 파티셔닝은 매우 큰 테이블을 여러 개의 테이블로 분할하는 작업이다.

  • 큰 데이터를 여러 테이블로 나눠 저장하기 때문에 쿼리 성능이 개선될 수 있다.

  • 데이터는 물리적으로 여러 테이블로 분산하여 저장되지만, 사용자는 마치 하나의 테이블에 접근하는 것과 같이 사용할 수 있다.

파티셔닝을 이용하여 얻을 수 있는 이점

  • 성능

    • 특정 쿼리의 성능을 향상시킬 수 있다.

    • 대용량 Data Write 환경에서 효율적이다.

    • 필요한 데이터만 빠르게 조회할 수 있으므로 쿼리가 가벼워진다.

    • Full Scan에서 데이터 접근의 범위를 줄여 성능을 향상시킬 수 있다.

  • 가용성

    • 물리적인 파티셔닝으로 전체 데이터의 훼손 가능성이 줄어들고 데이터 가용성이 향상된다.

    • 파티션별로 독립적으로 백업하고 복구할 수 있다.

  • 관리용이

    • 큰 테이블들을 제거하여 관리를 쉽게 할 수 있다.

파티셔닝 단점

  • 테이블을 여러 파티션으로 쪼개기 때문에 테이블 간의 JOIN 비용이 증가한다.

  • 테이블과 인덱스를 별도로 파티셔닝 할 수 없기 때문에 테이블과 인덱스를 같이 파티셔닝 해야 한다.

파티셔닝의 종류로는 수평 파티셔닝수직 파티셔닝이 있다.

샤딩

  • 샤딩은 동일한 스키마를 가지고 있는 여러 대의 데이터베이스 서버들에 데이터들 작은 단위로 나누어 분산 저장하는 기법이다.

  • 작은 단위를 샤드(shard)라고 부른다.

  • 어떻게 보면 샤딩은 수평 파티셔닝의 일종이다.

  • 차이점은 파티셔닝은 모든 데이터를 동일한 컴퓨터에 저장하지만, 샤딩은 데이터를 서로 다른 컴퓨터에 분산한다는 점이다.

수평 파티셔닝

img_10.png

샤딩

img_11.png
  • 물리적으로 서로 다른 컴퓨터에 저장하므로, 쿼리 성능 향상과 더불어 부하가 분산되는 효과까지 얻을 수 있다.

  • 즉, 샤딩은 데이터베이스 차원의 수평 확장(scale-out)인 셈이다.

  • 하지만 샤딩은 데이터베이스 서버 간의 연결 과정이 많아져 비용이 증가할 수 있으며, 하나의 서버가 고장나면 데이터의 무결성이 깨질 수 있다는 단점이 있다.

참고

Last updated