샤딩(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 |
|
데이터 분할방법 예측 가능시 구현 가능 |
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 저장 | 별도 키 없음 |
'메가노트 > 토픽과제(정리)' 카테고리의 다른 글
NoSQL(유준수 사장님) (0) | 2022.10.22 |
---|---|
분산 데이터베이스(이재용 부장님) (0) | 2022.10.22 |
마스터 데이터(황선환 이사님) (0) | 2022.10.22 |
옵티마이저(홍진택 주무관님) (0) | 2022.10.22 |
데이터베이스 인덱스(이강욱 선임님) (0) | 2022.10.22 |