1. Amazon Dynamo DB란?
- 완전히 관리되는 AWS 상의 NOSQL 데이터베이스
- 장점
- Fully Managed SErvice
- EC2 + DB Engine ==> X
- 대용량, 뛰어난 확장성, 신뢰성
- 10ms 미만의 빠르고 일관된 성능
- Key-Value Store (Hashed Partition Key)
- 이벤트 기반의 프로그래밍 (with Lambda)
- 용량제한 없는 Storage
- 3AZ에 데이터를 복제함 (고가용성 기본 지원)
- 테이블 구성 요소
- Attributes (=columns), Partition key (PK+SK), sort key, table, items
- 3개의 가용영역에 복제본을 저장함
- 물리적인 저장 단위를 Partition이라고 함 ( Partition - 10GB)
- Range기반 - Partition Key값이 집중되면 Hot Partiton이 됨
- 따라서 키 값이 들어오면 바로 구간을 쪼개는 것이 아닌 Hash를 구하고, Hash 값을 가지고 구간을 쪼갬
- Partition Key
- 필수적, Hash 기반, 정렬이 안 돼있어 Equal key만 가능함
- 데이터 분산의 기준 (Partition 단위)
- 해시 인덱스 기반으로 구성됨 -> unordered
- 쿼리 시에 반드시 포함되어야 함 (Equal Qery)
- 충분한 Cardinality가 필요함
- Partition Key가 단독으로 사용될 경우 -> 아이템에 대한 고유 식별자
- Partition Key를 보완하기 위해 Sort Key가 제공됨
- 선택적, 다양한 쿼리 지원 (범위, 정렬)
- 1:N, M:N 관계 모델링
- Partition Key와 함께 Sort Key가 사용되면
- Partition Key + Sort Key가 아이템의 고유 식별자가 됨
- Partition Key로는 정렬이 불가능하지만 Sort Key로는 정렬됨
- 동일 Partition Key를 사용하는 아이템들 사이에서 Sort Key로 정렬
- Cassandra의 Column Key와 유사한 개념
- Partition은 3개의 가용 영역 (AZ)에 중복하여 저장
- Fully Managed SErvice
2. LSI(Local Secondary Index)
- 테이블과 동일한 Partition Key를 사용함
- Partition은 DynamoDB의 물리적인 저장소임
- 10GB 단위 Partition 내에 테이블 데이터와 함께 저장
- Sort Key이외의 Attibute로 정렬할 필요가 있는 경우 사용
- 테이블 생성 시에 LSI 생성
- 기존 테이블에 LSI를 추가하거나 삭제할 수 없음
- 테이블당 5개까지 생성할 수 있음
- Read Consistency
- Eventual Consistency 또는 Strong Consistency 선택 가능
3. GSI (Global Secondary Index)
- 별도의 Partition key, Sort key를 선택할 수 있음
- 인덱스 크기 제약 없음
- 기존 테이블에 대해서 GSI를 추가하거나 삭제할 수 있음
- 테이블당 20개까지 생성할 수 있음
- 별도의 읽기, 쓰기 용량 할당
- GSI에 충분한 쓰기 용량이 할당되지 않을 경우 쓰기 작업에 있어서 병목이 발생할 수 있음
- Eventual Read Consistency만 제공
- 주의 사항
- GSI에 충분한 쓰기 용량 (WCU)이 제공되지 않으면 테이블 쓰기에 병목이 발생
4. DynamoDB
- 처리 용량 (Capacity Unit)
- RCU (Read Capacity Unit)
- 1 RCU: 초당 4KB 처리 단위
- Eveuntual Consistent Read 일 때 비해 Strong Consistent Read는 두 배의 RCU를 소비함
- RCU 계산 시 4KB 배수로 올림 처리
- 5KB의 item을 초당 1회 읽을 때 ECR -> 1 RCU, SCR -> 2RCU
- WCU (Write Capacity Unit)
- 1 WCU: 초당 1KB 처리 단위
- 1KB 단위로 올림 처리
- 예) 3.2KB를 초당 1회 쓰기 하는 경우 4 WCU 소비함
- RCU (Read Capacity Unit)
- 용량 모드
- Provisioned : RCU, WCU로 용량을 미리 할당, Auto Scaling 설정 가능
- 예측가능한 워크로드에 사용
- On-demand: 애플리케이션이 수행하는 실제 읽기, 쓰기에 대해 요금을 지불
- 예측불가능한 워크로드에 사용, 스파이크성 워크로드
- Provisioned : RCU, WCU로 용량을 미리 할당, Auto Scaling 설정 가능
5. Dynamo DB Global Table
- 여러 리전에 걸쳐서 비동기 복제, Multi Master
- Partition Key를 잘못 설정하면?
- 잘못된 예
- 성별 (M/F), 지역코드: 서울, 부산, 광주, 제주
- 핫 파티션이 만들어짐: 쓰기, 읽기 부하가 집중되는 파티션
- Partiton Key는 충분한 Cardinality를 가져야 함
- 잘못된 예
- Dynamo DB 사용 사례
- Shopping Cart, Game Ranking & Score
- 강력한 일관성 (Strong Consistency)과 최종적 일관성 (Eventual Consistency)
6. DAX: DynamoDB Accellerator
- 1ms 미만의 응답속도를 제공할 수 있도록 설계된 DynamoDB 전용 캐싱 기능
- 탁월한 성능
- DynamoDB와 API 호환 -> 애플리케이션 코드를 변경할 필요 없음
'정보보안 자격증 > AWS' 카테고리의 다른 글
AWS 18. IAM (0) | 2024.07.20 |
---|---|
AWS17. Elasticache (0) | 2024.07.20 |
AWS15. Aurora (0) | 2024.07.20 |
AWS14. Database - 1 (0) | 2024.07.19 |
AWS13. Elasticity & Monitoring (1) | 2024.07.19 |