스물두줄

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

데이터베이스 샤딩

설명 영상 데이터베이스 샤딩 · 2:22

왜 배우는가: 샤딩은 단일 DB 서버의 용량과 처리량 한계를 넘는 대표적인 수평 확장 기법이다. 대용량 시스템 설계와 분산 DB 문제에서 반복해서 출제되는 핵심 개념이다.

출제 이력: 제127회 4교시 3번, 제119회 1교시 8번, 제102회 1교시 4번

1. 한 줄 정의와 핵심 키워드

답안 첫 줄 정의: 샤딩은 대용량 데이터를 여러 독립 DB 서버(샤드)에 행 단위로 나누어 저장·처리하는 수평 확장 기법이다.

핵심 키워드

  • 샤드(Shard): 샤딩으로 나뉜 데이터 조각이 저장된 독립 DB 인스턴스 또는 그 데이터 단위.
  • 샤드 키(Shard Key): 행을 어느 샤드에 둘지 정하는 하나 이상의 열.
  • 수평 분할(Horizontal Partitioning): 테이블을 행 단위로 나누는 방식.
  • 수평 확장(Scale-out): 서버 대수를 늘려 저장 용량과 처리량을 키우는 방식.
  • 레인지 샤딩: 샤드 키의 값 범위로 샤드를 정하는 방식.
  • 해시 샤딩: 샤드 키의 해시값으로 샤드를 정하는 방식.
  • 디렉토리 샤딩: 조회 테이블로 행과 샤드를 연결하는 방식.
  • 일관성 해싱(Consistent Hashing): 노드 추가·제거 시 재배치량을 줄이는 해싱 기법.

2. 개념 풀이

쉬운 말로 하면, 두꺼운 책 한 권을 여러 권으로 나눠 여러 책장에 꽂는 것과 같다. 한 책장이 꽉 차도 다른 책장에 자리를 더하면 되므로 용량 문제를 풀 수 있다.

정식 정의는 다음과 같다. 샤딩은 동일한 스키마를 가진 테이블을 행 단위로 나누고, 각 부분을 독립된 DB 인스턴스에 배치하는 방식이다. 수평 분할이 한 인스턴스 안에서 끝나면 파티셔닝이라고 하고, 여러 인스턴스에 걸치면 샤딩이라고 한다.

핵심 용어를 풀면 다음과 같다. 샤드(Shard)는 나뉜 데이터가 올라가는 독립 단위다. 샤드마다 별도의 논리 스키마나 물리 서버, 데이터센터에 둘 수 있다. 샤드 키(Shard Key)는 행의 배치를 결정하는 기준 열이다. 샤드 키가 잘못 고르면 데이터와 질의가 한 샤드에 몰린다.

샤딩은 셰어드-낫씽(Shared-Nothing) 구조와 연결된다. 각 샤드가 다른 샤드와 자원을 공유하지 않으므로, 샤드 간 공유 접근을 계속 유지할 필요가 없다. 대신 작은 참조 테이블은 모든 샤드에 복제하는 경우가 많다. 샤딩된 DB를 사용하는 애플리케이션은 질의를 올바른 샤드로 보내는 라우팅이 필요하다.

3. 등장 배경과 필요성

첫째, 데이터 양이 단일 서버의 디스크와 메모리를 넘어서면 서버를 키우는 방식(Scale-up)에는 한계가 있다. 고사양 서버는 비용이 급격히 늘고, 한 서버에 장애가 나면 전체 서비스가 멈춘다.

둘째, 인덱스 크기가 커지면 검색 부담이 늘어난다. 샤딩은 테이블을 여러 서버에 나눠 각 서버의 인덱스를 작게 유지하고, 질의를 여러 서버에 분산한다. 그 결과 조회와 쓰기 부하를 함께 나눌 수 있다.

셋째, 가용성 측면의 이점이 있다. 샤딩되지 않은 DB에서 중단이 생기면 애플리케이션 전체를 쓸 수 없다. 샤딩된 DB에서는 누락된 데이터 조각에 의존하는 기능만 중단된다. 샤드마다 복제본을 두면 장애 영향을 더 줄일 수 있다.

넷째, 전 세계 서비스 배포에 필요하다. 샤드를 지역별 데이터센터에 두면 데이터센터 간 통신 링크가 병목이 되는 문제를 피할 수 있다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 단원 읽기