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 |