ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB - 파티셔닝과 샤딩
    CS/DB 2021. 2. 12. 20:23

    파티셔닝과 샤딩


    파티셔닝과 샤딩

    • 서비스 크기 증가에 따른 DB 크기 증가하며 VLDB(Very Large DBMS)가 등장했고 여러 테이블을 관리하며 생기는 성능 이슈를 해결하기 위해 파티셔닝과 샤딩이 나왔다. 

     

    파티셔닝

    • 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법이다.

    • 장점
      1. 가용성: 물리적인 노드 분리에 따라 전체 DB내의 데이터 손상 가능성이 줄어들고, 데이터 가용성이 향상된다.
      2. 관리 용이성: 큰 테이블을 제거하여 관리를 쉽게 할 수 있다,
      3. 성능: 대용량 Data Write환경에서 효율적이며 특정 DML과 쿼리 성능을 향상시킨다.
    • 단점
      1. 테이블 간 JOIN비용 증가
      2. 테이블과 인덱스를 별도로 파티셔닝 할 수 없고 함께 파티셔닝 해야 한다.
    • 방법
      1. Horizontal Partitioning(수평 파티셔닝)
        • 스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장한다.
        • ex) 주민 데이터 -> a동 주민, b동 주민
        • 하나의 데이터베이스 안에서 이루어 진다. 
      2. Vertical Partitioning(수직 파티셔닝)
        • 테이블의 컬럼을 기준으로 데이터를 나눈다.
        • 이미 정규화된 데이터를 분리하는 과정이다. 
        • 자주 사용하는 컬럼을 분리하여 성능 향상을 시킬 수 있다.

     

    샤딩

    • 수평 파티셔닝과 동일하나, 수평 파티셔닝과 달리 물리적으로 다른 데이터베이스에 데이터를 수평 분할 방식으로 분산 저장하고 조회하는 방법을 말한다.
    •  장점
      1. 데이터의 개수가 작아지고 따라서 인덱스의 개수도 작아져 성능이 향상된다.
      2. 데이터 훼손 가능성이 줄어든다
    • 단점
      1. 데이터를 찾는 과정이 기존보다 복잡하다.

     

    reference

    velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C#%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4

    seokbeomkim.github.io/posts/partition-and-sharding/

    gmlwjd9405.github.io/2018/09/24/db-partitioning.html

     

    'CS > DB' 카테고리의 다른 글

    DB - Index  (0) 2021.02.14
    DB - KEY  (0) 2021.02.12
    DB - NOSQL  (0) 2021.02.12
    DB - 스키마  (0) 2021.02.12
    DB - ORM  (0) 2021.02.11

    댓글

Designed by Tistory.