파티셔닝과 샤딩

양시준·2022년 3월 15일
0

TIL

목록 보기
12/21

파티셔닝 (Partitioning)

파티셔닝(Partitioning)은 데이터베이스를 여러 부분으로 분할하는 것이다.

  • 데이터베이스의 분할은 중요한 튜닝 기법이다.
  • 데이터가 너무 커졌을 때, 조회 시간이 늦어졌을 때, 관리 용이성, 성능, 가용성 등의 향상을 이유로 행해지는 것이 일반적이다.
  • 분할된 각 부분은 파티션(Partition)이라고 부른다.
  • 수평 분할과 수직 분할 두 가지 방법이 있다.

수평/수직 분할 개념도

수평 분할 (Horizontal partitioning)

수평 분할(horizontal partitioning)은 하나의 테이블의 각 행을 다른 테이블에 분산시키는 것이다.

  • 다른말로 샤딩(sharding)이라고 한다.

샤딩 (Sharding)

샤딩(Sharding)이란 대용량의 데이터를 처리하기 위해 테이블을 수평 분할하여 데이터를 분산 저장하고 처리하는 것이다.
이때 수평 분할된 작은 테이블을 샤드(shard)라고 한다.

  • 스케일 업으로 더 이상 성능향상을 기대하기 어려울 때 사용한다.
    • 스케일 업에 비해서 성능 업그레이드와 관리가 어렵기 때문
  • 확장성 및 I/O 대역폭을 개선하는데 사용한다.

샤딩 개념도

분할 기법

Vertical Partitioning

테이블별로 서버를 나누는 방식이다.
구현이 간단하고, 전체 시스템에 큰 변화가 필요 없다는 장점이 있다.

Range Based Partitionging

하나의 feature가 점점 거대해지는 경우 서버를 분리하는 방식이다.
예시로 유저나 년도 별로 분리한다. 주의 사항으론 데이터를 나누는 방법이 예측 가능 해야 한다.

Key or Hash Based Partitioning

엔티티를 해쉬함수에 넣어서 나오는 값을 이용해서 샤드를 정하는 방식이다.
샤드의 수를 늘리기 위해 해쉬함수를 변경하는 작업이 자원소모가 크다는 단점이 있다.

Directory Based Partitioning

파티셔닝 메커니즘을 제공하는 추상화된 서비스를 만들어 사용하는 방식이다.

수직 분할 (Vertical partitioning)

수직 분할(vertical partitioning)은 테이블의 일부 열을 빼내는 형태로 분할한다.

  • 관계의 정규화는 본질적으로 수직 분할에 관련된 과정이다.
  • 별로 사용되지 않는 열이나 매우 자릿수가 많은 열을 분할하는 식으로 사용한다.

분할 기법

분할 기법은 여러가지가 있지만 자주 사용되는 건 네 가지 정도가 있다.
분할은 분할 키(partitioning key)를 사용한다.

Range Partitioning

분할 키 값의 범위를 기준으로 분할한다.

List Partitioning

값 목록에 파티션을 할당하고, 분할 키 값을 그 목록에 비추어 파티션을 선택한다.
예시로 국가 컬럼에 일본, 미국, 한국, 중국 이 있다면 미국을 빼내고 동북?? 아시아 파티션을 만들 수 있다.

Hash Partitioning

해시 함수를 사용하여 분할한다.

Composite Partitioning

위 기법을 결합하여 사용한다.

참고

profile
야크 털 깎기와 러버덕 디버깅을 좋아하는 개발자

0개의 댓글