샤딩, 파티셔닝, 레플리케이션

W·2024년 1월 17일
0

BackEnd & Devops

목록 보기
7/13

샤딩, 파티셔닝, 레플리케이션

Ref.
[DB] 파티셔닝? 샤딩? 레플리케이션? (partitioning? sharding? replication?)

Partitioning (파티셔닝)

데이터베이스의 테이블을 더 작은 테이블단위로 나누는 것.

대용량데이터를 가진 테이블의 경우에는 해당 테이블을 조회하거나 변경할 경우 시간비용이 많이 소요되게 됩니다.

따라서 각 컬럼단위, 행단위 별로 테이블을 나누어(파티셔닝) 처리를 하게 하여 성능 향상에 그 목적이 있습니다.

파티션 종류

  1. 레인지 파티션
    • 범위를 기준으로 나누는 파티션
    • 범위에 벗어난 기준의 파티션만 추가할 수 있다.
      • 기존에 해당 기준으로 나뉜 파티션이 있다면 재분리가 어렵다.
  2. 리스트 파티션
    • 기준 키값을 직접 리스트로 나열해줘야 한다.
    • 그 외에는 레인지 파티션과 비슷하다.
  3. 해시 파티션
    • 해시함수를 통해 나온 결과로 나누는 파티션
  • Vertical (컬럼(column) 단위로 나눔)

    • 정규화도 Vertical파티셔닝에 속
  • Horizontal (행(row) 단위로 나눔)

    • hash
    • range
    • key

Sharding (샤딩)

Horizontal파티셔닝처럼 동작한다.

각 파티션이 독립된 DB서버에 저장된다.

서버의 부하를 분산시키는 목적을 가진다.

파티션키를 shared key라고 부른다.

각 파티션을 shard라고 부른다.

종류

  1. Directory Based Sharding
    1. 장점 : 샤드 결정 로직이 Look Up Table로 분리되어 있기 때문에 동적으로 샤드를 추가하는데 유리하다.
    2. 단덤 : Look Up Table이 단일 장애 포인트가 될 수 있다.
  2. Range Based Sharding
    1. 장점 : 특정 값의 범위 기반으로 샤드를 결정하면 되기 때문에 구현이 간단하다.
    2. 단점 : 데이터가 균등하게 배분되지 않아 특정 샤드에 데이터가 몰리면 HostSpot이 되어 성능 저하가 발생할 수 있다.
  3. Key Based Sharding( Hash Based Sharding )
    1. 장점 : 구현이 간단하며, 샤드 클러스터 내 샤드들에 데이터를 골고루 분배할 수 있다.
    2. 단점 : 장비를 동적으로 추가, 제거할 때 데이터 재배치가 필요하다.

Sharding : Partition을 다른 DB서버로 분배하는 것
Partitioning : 같은 DB서버 내에서 분배하는 것

Replication(레플리케이션)

DB를 복제해서 여러대의 DB서버에 저장하는 방식.

메인DB: master/primary/leader

서브DB: slave/secondary/replica

  • 특징
    • 서버 부하를 낮춘다.
    • slave서버에서 master 서버로 부터 데이터를 copy한다.
    • failover를 빠르게 대응 가능.
profile
타협하는 순간 발전이 없어

0개의 댓글