[데이터베이스 목차]

 

 

샤딩(Sharding)

 

I. DB Scale out을 통한 성능 개선, 가용성 향상 샤딩의 개요

-. 물리적으로 다른 데이터베이스에 데이터를 수평 분할 방식으로 분산 저장하고 조회하는 방법

-. 샤드라고 부르는 각각의 파티션이 있는 하나의 데이터베이스의 수평적인 파티셔닝

-. 과거의 샤딩은 어플리케이션 레벨에서 구현하는 경우가 많았는데 최근에는 샤딩 플랫폼에서도 처리 가능

-. 성능향상을 위해 샤딩, 파티셔닝 기법이 사용되고, 가용성을 위해 리플리케이션, 쿼리 오프로딩 기법을 사용

 

-특징: 데이터분할, 성능개선, 높은 신뢰성, 위치 추상화

 

-샤딩의 장점:

  1) 성능개선: 큰 데이터를 압축, 개별 테이블은 각 샤드에서 더 빠른 작업을 지원

  2) 신뢰성 개선: 한 샤드가 실패하더라도 다른 샤드는 데이터서비스를 제공

  3) 위치 추상화: 어플리케이션 서버에서 어떤 데이터가 어떤 데이터베이스에 위치해 있는지 알 필요가 없음

 

 

II. 샤딩의 개념도 및 구성요소

가. 샤딩의 개념도

 

나. 샤딩의 구성요소

구분 요소 설명
시스템 구성요소 Shard DB 분할 데이터 저장, 사용자 요청 처리 물리 DB
Proxy Shard metadata 활용 실제 질의 처리를 Shard DB로 전달하는 역할을 하는 미들웨어 프로세스
데이터 구성요소 Shard metadata Shard 동작을 위한 설정정보, 요청된 질의 기반, Shard 선택을 위한 정보 및 세션 생성 정보 포함
Shard Key Sharding 된 테이블에서 Shard를 선택하기 위한 식별자로 사용되는 칼럼
Shard ID Shard Database 식별자

 

 

III. 샤딩 방법

방법 설명 특징
Vertical
Partitioning
  • 블별로 서를 분할하는 방식
  •  버 데터 거대화시 추가 샤딩 필요
구현 단, 시스템 구조 변경 최소화
Range Based Partitioning
  • 의 Feature  Table 대화 시 샤딩
터 분할방법 예측 가능시 구현 가능 
Key or Hash Based Partitioning
  • 티티를 해함수에 어 나오는 값 이용 서 정하는 방식
결과값이 균등분포 되게  함수 설계 필요
Directory Based Partitioning
  • 파티셔닝 커니 제공 추상화 서비스 생성
 드 키 Look-up 기능 구현

데이터의 성격과 특징에 따라 Table 단위를 작게 유지할 수 있는 Shard 분할 방법을 결정해야 하며 적용시 정지없이 데이터 재분배 수행 필요

 

IV. 쿼리 오프로딩 vs. 샤딩

구분 쿼리 오프로딩 샤딩
개념 업데이트 트랜잭션, 트랜잭션 분리 분리된 DB 인스턴스에 데이터 분할
목적 DB 성능 향상 용량 한계 극복
구성요소 Master, Salve, Staging DB 샤드(Shard)
분할기준 트랜잭션 종류 및 역할 샤드 키
도메인 도메인 동일 혹은 상이 도메인 동일
복제 솔루션 오라클 골든 게이트, 쉐어 플렉스 자체 샤드 오픈 솔루션 이용
구현방법 어플리케이션 활용 구현 DBMS 자체, 어플리케이션
분할원리 트랜잭션의 분할 DB의 분할

 

 

V. 샤딩 파티셔닝 비교

구분 샤딩 파티셔닝
개념 여러 인스턴스에 여러 서브셋을 저장하는 기법
물리적으로 다른 데이터베이스에 데이터를 수평 분할 방식으로 분산 저장하는 방법
하나의 인스턴스내에서 여러 테이블로 나누어 저장하는 기법
큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법
장점 쿼리(read, write)를 여러 인스턴스로 분산하여 처리 -> 성능, 확장성 향상 데이터를 여러 테이블에 나누어 저장 -> 인덱스의 크기가 작아짐 -> 인덱스를 통한 조회 시간이 줄어들어 성능 향상 
이력 데이터의 효울적인 관리 (불필요한 데이터 삭제 작업을 파티션을 추가하거나 삭제하는 방식으로 간단하고 빠르게 해결 가능)
단점 다른 샤드끼리 join 할 수 없다
auto increment가 샤드 별로 달라질 수 있다
하나의 트랜잭션에서 두개 이상의 샤드에 접근할 수 없다
테이블 간 join 비용 증가
물리망 다수의 분산 DB 서버 하나의 DB 서버
제어 마스터(Proxy) Master 없음
Shared Key 저장 별도 키 없음

 

+ Recent posts