스물두줄

정보관리기술사 · 데이터베이스

데이터베이스 샤딩

샤딩은 대용량 데이터를 여러 독립 DB 서버에 행 단위로 나누는 기법이다. 나뉜 데이터 조각이 올라가는 독립 인스턴스를 샤드라고 한다. 애플리케이션은 질의를 라우터로 보내고, 라우터는 샤드 키로 대상을 정한다. 샤드 키가 질의에 있으면 한 샤드만 조회하고, 없으면 모…

주요 장면

  1. 0:02 샤딩이란
  2. 0:15 구성과 라우팅
  3. 0:35 샤드 분할 방식
  4. 1:06 샤딩과 파티셔닝
  5. 1:27 장점과 한계
  6. 1:47 계산 예제
  7. 2:22 정리

대본

샤딩이란

샤딩은 대용량 데이터를 여러 독립 DB 서버에 행 단위로 나누는 기법이다.

나뉜 데이터 조각이 올라가는 독립 인스턴스를 샤드라고 한다.

구성과 라우팅

애플리케이션은 질의를 라우터로 보내고, 라우터는 샤드 키로 대상을 정한다.

샤드 키가 질의에 있으면 한 샤드만 조회하고, 없으면 모든 샤드에 보낸다.

브로드캐스트 질의는 샤드 수에 따라 응답 시간을 늘린다.

샤드 분할 방식

샤드 키를 나누는 방식은 레인지, 해시, 디렉터리, 일관성 해싱으로 나뉜다.

레인지는 범위 질의에 유리하지만 핫스팟이 생길 수 있다.

해시는 데이터가 고르게 퍼지나 범위 질의는 여러 샤드를 훑어야 한다.

샤딩과 파티셔닝

샤딩과 파티셔닝은 자주 혼동되지만 목적과 배치 위치가 다르다.

샤딩은 여러 서버에 분산해 수평 확장하고, 파티셔닝은 한 인스턴스 안에서 나눈다.

샤딩은 복잡성을 크게 늘리므로 다른 최적화로 해결되지 않을 때 쓴다.

장점과 한계

샤딩의 장점은 확장성과 장애 격리다.

샤드 하나가 멈춰도 나머지 샤드의 데이터는 계속 서비스된다.

반면 크로스샤드 조인과 분산 트랜잭션은 비용이 크고 구현이 어렵다.

계산 예제

회원 데이터 1억 건을 user_id 를 4로 나눈 나머지로 4개 샤드에 나눈다.

user_id 가 1,000,000 이면 나머지는 0이므로 샤드 0에 저장된다.

그러면 샤드당 약 2,500만 건으로 균등하게 분배된다.

다만 샤드 수가 바뀌면 대부분의 키가 다른 샤드로 옮겨진다.

정리

샤딩은 데이터를 여러 독립 샤드에 나눠 수평 확장하는 기법이다.

샤드 키는 균등 분산과 질의 라우팅을 함께 고려해 고른다.

시험에서는 자동화 수준과 일관성 비용까지 함께 논한다.

같은 장의 영상