[데이터베이스] DB sharding


샤딩이란?

같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법을 의미합니다.

샤딩이 필요한 이유?

하나의 데이터베이스에 데이터가 늘어나면 용량이슈도 생기고, 느려지는 CRUD는 자연스레 서비스 성능에 영향을 주게 됩니다.

그래서 DB 트래픽을 분산할 목적으로 샤딩을 고려해 볼 수 있습니다.

샤딩 방법의 종류 2가지

  • 모듈러 샤딩
  • 레인지 샤딩

모듈러 샤딩과 레인지 샤딩의 공통된 요구사항

  • 라우팅을 위해 구분할 수 있는 유일한 키 값이 있어야 한다.
  • 올바른 DB를 찾을 수 있도록 라우팅이 돼야 한다.
  • 설정으로 쉽게 증설이 가능해야 한다.

모듈러 샤딩

PK를 모듈러 연산한 결과로 DB를 특정하는 방식입니다.

  • 장점 : 레인지 샤딩에 비해 데이터가 균일하게 분산됩니다.
  • 단점 : DB를 추가 증설하는 과정에서 이미 적재된 데이터의 재정렬이 필요합니다.

Q. 언제 적용하면 좋은가 ?

데이터량이 일정 수준에서 유지될 것으로 예상되는 데이터 성격을 가진 곳에 적용할 때 어울리는 방식입니다.

레인지 샤딩

PK의 범위를 기준으로 DB를 특정하는 방식입니다.

  • 장점 : 모듈러 샤딩에 비해 기본적으로 증설에 재정렬 비용이 들지 않습니다.
  • 단점 : 일부 DB에 데이터가 몰릴 수 있습니다.

Reference

  • https://woowabros.github.io/experience/2020/07/06/db-sharding.html


on Cs, Db, Database