1. 데이터베이스 확장을 위한 샤딩의 개요


가. 샤딩(Sharding)의 개념

  - 관계형 데이터베이스에서 대량의 데이터를 처리하기 위해서 데이터를 파티셔닝 하는 기술
  - 샤딩은 DBMS 레벨에서 데이터를 나누는 것이 아니고 데이터베이스 자체를 수평분할 방식으로 분산저장하고 조회하는 방법

나. 샤딩(Sharding)의 장점

1) 성능개선: 큰 데이터를 압축, 개별테이블은 각샤드에서 더 빠른 작업을 지원
2) 신뢰성개선: 한 샤드가 실패하더라도 다른 샤드는 데이터서비스를 제공
3) 위치추상화: 애플리케이션 서버에서 어떤 데이터가 어떤 데이터베이스에 위치해 있는지 알 필요가 없음

 

2. 샤딩의 개념도 및 데이터베이스 분할방법

(Sharding)

가. MongoDB의 샤딩 개념도

- 샤드키로 설정된 칼럼의 범위를 기반으로 각각의 값 에 맞는 Shard에 저장
- 사용하는 Application단에서는 MongoS라는 라우팅 프로세스만 연결하므로 Shard의 구조에 대해서는 알 필요도 없고, 구조 변경에 따른 수정도 필요 없음

 

나. 샤딩의 데이터베이스 분할방법

방법 설명
Vertical Partitioning - 테이블 별로 서버를 분할하는 방식
Range based Partitioning - 하나의 feature나 table이 점점 거대해지는 경우 서버를 분 리 하는 방식
Key or Hash Based Partitioning - 엔티티를 해쉬함수에 넣어서 나오는 값을 이용해서 서버를 정하는 방식
Directory Based Partitioning 파티셔닝메커니즘을 제공하는추상화된 서비스를 생성

 

3. 샤딩 적용시 가이드라인

구분 주요내용
데이터 재분배 - 서비스 정지없이 scale-up 할 수 있어야 함
조인 파티션 - Sharding-db 간에 조인이 불가능하기에 처음부터 역정규화도 고려해야함
- shard 해쉬함수 설계가 중요

트랜잭션
Global  Unique Key
데이터는 작게
- Global Transaction을 사용하면 shard DB간의 트랜잭션도 가능

- DBMS에서 제공하는 auto-increment를 사용하면 key가 중복될 수 있기 때문에, Table의 단위를 레벨에서 가능한 GUID를생성해야함 작게 만들어야 함

 

'1. IT Story > Basic Studies' 카테고리의 다른 글

CAP(Consistency, Availability, Partitioning) 이론  (0) 2020.12.24
데이터 품질관리의 Data Profiling  (0) 2020.12.24
MMDB(Main Memory Data Base)  (0) 2020.12.24
CI(Continuous Integration)  (0) 2019.11.21
테스트자동화  (0) 2019.09.22
V&V(Verification & Validation)  (0) 2019.09.20
빅데이터(Big Data)  (0) 2019.09.19
3D프린팅  (0) 2019.09.17
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,