샤딩, 파티셔닝, 레플리케이션
Ref.
[DB] 파티셔닝? 샤딩? 레플리케이션? (partitioning? sharding? replication?)
Partitioning (파티셔닝)
데이터베이스의 테이블을 더 작은 테이블단위로 나누는 것.
대용량데이터를 가진 테이블의 경우에는 해당 테이블을 조회하거나 변경할 경우 시간비용이 많이 소요되게 됩니다.
따라서 각 컬럼단위, 행단위 별로 테이블을 나누어(파티셔닝) 처리를 하게 하여 성능 향상에 그 목적이 있습니다.
파티션 종류
- 레인지 파티션
- 범위를 기준으로 나누는 파티션
- 범위에 벗어난 기준의 파티션만 추가할 수 있다.
- 기존에 해당 기준으로 나뉜 파티션이 있다면 재분리가 어렵다.
- 리스트 파티션
- 기준 키값을 직접 리스트로 나열해줘야 한다.
- 그 외에는 레인지 파티션과 비슷하다.
- 해시 파티션
Sharding (샤딩)
Horizontal파티셔닝처럼 동작한다.
각 파티션이 독립된 DB서버에 저장된다.
서버의 부하를 분산시키는 목적을 가진다.
파티션키를 shared key라고 부른다.
각 파티션을 shard라고 부른다.
종류
- Directory Based Sharding
- 장점 : 샤드 결정 로직이 Look Up Table로 분리되어 있기 때문에 동적으로 샤드를 추가하는데 유리하다.
- 단덤 : Look Up Table이 단일 장애 포인트가 될 수 있다.
- Range Based Sharding
- 장점 : 특정 값의 범위 기반으로 샤드를 결정하면 되기 때문에 구현이 간단하다.
- 단점 : 데이터가 균등하게 배분되지 않아 특정 샤드에 데이터가 몰리면 HostSpot이 되어 성능 저하가 발생할 수 있다.
- Key Based Sharding( Hash Based Sharding )
- 장점 : 구현이 간단하며, 샤드 클러스터 내 샤드들에 데이터를 골고루 분배할 수 있다.
- 단점 : 장비를 동적으로 추가, 제거할 때 데이터 재배치가 필요하다.
Sharding : Partition을 다른 DB서버로 분배하는 것
Partitioning : 같은 DB서버 내에서 분배하는 것
DB를 복제해서 여러대의 DB서버에 저장하는 방식.
메인DB: master/primary/leader
서브DB: slave/secondary/replica
- 특징
- 서버 부하를 낮춘다.
- slave서버에서 master 서버로 부터 데이터를 copy한다.
- failover를 빠르게 대응 가능.