0. 데이터 분산 모델
- Master-Slave 복제
- master node : read/write 가능
- slave node : read 만 가능, master node 의 데이터를 동기화 한다
- Peer to Peer 복제
- 모든 node 에 대한 read/write 가능
- 하나의 node 에 대한 write 요청이 실패할 경우, write 실패
- Sharding
- write 에 대한 수평확장을 제공
- 저장 node 에 대한 매커니즘(샤딩키)을 정의 하여 사용
- 샤딩 적용시 고려사항
- 샤딩키 : 성능을 좌우하는 결정적 요소,
cardinality (==분포도) 가 적절한 필드 선택해야 한다 (낮으면 한 노드에 집중될수도...)
- 샤딩키 분배방식
- range : 데이터 분포를 예측 할수 있어야 한다
- hash
- 데이터 재분배 rebalancing
- 샤드간 데이터 조인 최소화
- 한 node 로 부터 요청에 대한 데이터를 얻을 수 있도록 데이터를 분산시켜야 한다
- Sharding + Peer to Peer 복제
- column family 형 nosql 에서 주로 사용하는 전략
- Scalability 에 따른 데이터 분산 모델
1. 관계형 DB 의 한계
- 관계형 DB 의 Scalability
- MPP(massively parallel processing) 방식의 scale out 아키텍처를 통해 RDB의 DW 계열의 Scalability 를 지원하지만, OLTP 용도의 DB, OSS DB 로 적합한 제품을 찾기 어렵다
- 관계형 DB 의 Sharding 구현
- 자동으로 샤딩 기능 지원 하는 DBMS 사용
- sharding 플랫폼 도입
- application 단에서 처리하는 방법
- 다양한 용도로 사용하기 어렵다
- ex : user key 를 샤딩키로 적용하여 application 단에서 DB 를 선택적으로 이용
2. NOSQL 배경
- 새로운 데이터 타입의 등장 / 방대한 양의 데이터
- 확장성(Scalability) 에 대한 needs 의 증가 >> 관계형 DB 의 Scalability 는 기술적으로 제한된다
- 주로 DB 가 병목지점이다
- read 분산은 쉬우나 write 분산은 쉽지 않다
3. NOSQL 개념
- 정의 : 비관계형/비구조적 데이터 를 저장하기 위한 분산 저장 시스템
- 특징
- 조인 기능 없음
- 대부분 open source
- 클러스터 환경에서 구동하며 자동 샤딩을 제공한다
- 분산, 수평적 확장이 용이
- auto failover 지원
- 제품 분류