CS/Database

[데이터베이스] 파티셔닝(Partitioning)

테리는당근을좋아해 2020. 6. 24. 14:57

파티셔닝(Partitioning)

- Scale Out 방법 중 하나

- 큰 테이블이나 인덱스를 관리하기 쉬운 Partition이라는 작은 단위로 분할

 

1) 종류

(1) Pysical Partitioning

- 서버를 여러 개 두어 부하 분산

 

(2) Logical Paritioning

- 한 테이블의 각 레코드 또는 컬럼을 여러 테이블로 분산

 

2) 장점

- Partition 단위의 백업 및 복구 가능

- Partition 단위의 삽입/삭제/갱신으로 부하를 줄임

- 데이터 가용성 향상

 

3) 단점

- Table 간 Join 비용

 

4) 파티셔닝 방법

(1) 수평 파티셔닝(Sharding)

- 테이블을 행 단위로 분할

- 하나의 테이블의 각 행을 여러 테이블에 분산 저장

- 스키마가 같은 테이블을 두 개 이상 만들어 샤드키를 기준으로 나누어 저장

 

(2) 수직 파티셔닝(Partitioning)

- 테이블을 컬럼 단위로 분할

- 하나의 엔티티를 다수의 엔티티로 분할하는 것

- 이미 정규화된 테이블을 분리

 

5) 데이터베이스 파티셔닝 분할 기준

(1) 범위 분할(Range Partitioning)

- 분할 키 값이 범위 내에 있는 지 여부로 구분

 

(2) 목록 분할(List Partitioning)

- 값 목록에 파티션을 할당 분할 키 값을 그 목록에 비추어 파티션 선택

 

(3) 해시 분할(Hash Partitioning)

- 해시 함수의 값에 따라 파티션 분할

 

(4) 합성 분할(Composite Partitioning)

- 분할 기준으로 여러 기법을 결합해 사용