Amazon Dynamo DB
특징
- 완전관리형 NoSQL
-
key-value 저장소
- scaling 가능 → 워크로드에 맞게 확장
- IAM 방식의 접근 제어
-
이벤트 기반의 프로그래밍 → DynamoDB 스트림에서 키네시스 큐를 람다로 처리후 ElasticSearch로 시각화
→ Range DB보다는 개별 Insert 처리에 최적화
- 인프라 관점 - 세개의 가용영역에서 replica →. 99.9999% SLA
읽기/쓰기 용량 모드
- 프로비저닝 모드 -예측가능, 비용 할인
- 온디맨드 모드 - 주로 사용, 1.5배~2배 트래픽이 생기면 문제가 생김
확장 방식
- 수직확장X, 다수의 샤드로 수평 확장
- 1000 쓰기(WCU) 또는 3000 읽기(RCU) 도는 용량 10GB 이상이면 파티션 확장
KEY 설계
- Partition key(필수) 와 Sort key(선택) → 테이블에서는 이 두가지만 검색 가능, 두가지 함께는 primary key가 됨 ( attributes에서는 쿼리불가능)
-
Partition key - 고유 값
-
Sort key - 소트 값
- Simple primary key (Partition Key)
-
Composite primary key (Partition Key + Sort Key)
-
Eventualley Consistancy - 쓰기가 일어났을 때, 읽기시 데이터 불일치가 일어날 수 있음
- 글로벌 보조 인덱스 (GSI) - Foreign key를 가지는 테이블( Primary key이외의 key도 검색 가능 하도록)
Basic NoSQL 디자인 패턴
데이터 모델링
- Tool - NoSQL Workbench
- 기본요소 - Table, Item, Primary key , Attributes
- 조인이 불가능→ 단일 테이블 + ‘일반적인’ Primary Key → GSI구성
1:다 관계 모델링 전략
- 비정규화 + 복잡한 속성 값
- 비정규화 + 속성 값 중복 저장 - 중복되는 값이 변하지 않을 경우, 자주 바뀌는 경우
- 복합 primary key를 활용한 쿼리 -아이템을 컬렉션화 가능