데이터베이스 나누기

지니🧸·2024년 6월 18일
0

데이터베이스

목록 보기
4/20

데이터베이스의 샤딩과 파티셔닝에 대하여

샤딩과 파티셔닝 모두 대용량 데이터베이스의 가용성, 성능 등을 위해 활용되는 데이터베이스 관리 기법이다.

Sharding (샤딩)

수평적 파티셔닝이라고도 알려진 샤딩은 데이터베이스의 스키마를 나눠서 샤드라 불리는 더 작은 데이터 조각들을 여러 인스턴스/서버에 걸쳐 분산 배치하는 기법이다.

샤드들은 샤드 키에 기반해 각 샤드에 배치되는데, 지리적/인구학적 요소나, 요구사항에 따라 결정하면 된다

샤딩의 장점?

  • 가용성 증가
  • 반응 시간 단축
  • 저장 공간을 쉽게 늘려 활용 가능

샤딩의 단점

  • 나뉜 테이블들의 관리가 복잡해진다
  • 샤딩으로 나눈 테이블들의 합체는 까다로울 수 있다
  • 데이터베이스 활용에 적합하지 않은 샤딩 아키텍쳐는 성능 저하 원인이 될 수 있다

Partitioning (파티셔닝)

파티셔닝은 데이터베이스를 나누는 여러 기법을 가르키는 말이지만, 주로 수직 파티셔닝이라는 의미로 쓰인다. 수직 파티셔닝은 데이터베이스 인스턴스를 더 작은 테이블 또는 파티션으로 나누는 기법이다.

파티셔닝 종류

Range Partitioning: 특정 컬럼의 값의 범위로 데이터베이스를 나눈다
(예) id 컬럼을 기준으로 범위를 나눠 파티셔닝한다

PARTITION BY RANGE (id) (
  PARTITION p_0 VALUES LESS THAN (150000),
  PARTITION p_1 VALUES LESS THAN (250000),
  PARTITION p_2 VALUES LESS THAN (MAXVALUE)
);

List Partitioning: 각 파티션에 값의 집합을 배정하여 이를 기준으로 데이터베이스를 나눈다

파티셔닝의 장점?

  • 파티셔닝으로 데이터를 여러 물리적/논리적 단위(=파티션)로 나눠 배치할 수 있다
  • 데이터를 나눠 쿼리 성능을 향상할 수 있다
    • 매번 접근되는 데이터의 양을 감소하기 때문이지!
    • 전체 데이터베이스를 다 스캔하는 경우를 방지하는 것은 성능에 도움이 된다
  • 보안적 이점이 된다
    • 유출되면 안되는 데이터에 대해 별도 관리로 보안을 강화할 수 있다

파티셔닝의 단점

파티셔닝의 단점 또한 데이터베이스 분리로 인한 복잡성 증가다

  • 여러 파티션에 대해 백업, 복구 작업 등 모두 관리가 되어야 하기 때문에 복잡할 수 있다
  • 일반적인 데이터베이스 규모에는 오히려 오버헤드가 될 수 있다

파티셔닝과 샤딩의 차이

파티셔닝과 샤딩은 대용량 데이터베이스를 작게 나누는 공통된 목적을 서로 다른 접근으로 성취한다

  • 샤딩으로 데이터는 여러 서버에 걸쳐 분산 배치된다
    • 대용량 트래픽을 여러 머신에 걸쳐 핸들링할 수 있는, 스케일링 기법이다
  • 파티셔닝으로 하나의 데이터베이스 인스턴스의 테이블들을 나누게 된다
    • 특정 컬럼의 값을 기준으로 데이터베이스를 나누기 때문에 나뉜 파티션들은 모두 같은 컬럼을 갖는다 (데이터 row만 다를 뿐)

https://planetscale.com/learn/articles/sharding-vs-partitioning-whats-the-difference
https://mariadb.com/kb/en/list-partitioning-type/

profile
우당탕탕

0개의 댓글