정보보안 자격증/AWS

AWS16. Dynamo DB

rinaisme 2024. 7. 20. 13:21

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)에 중복하여 저장

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 소비함
  • 용량 모드
    • Provisioned : RCU, WCU로 용량을 미리 할당, Auto Scaling 설정 가능
      • 예측가능한 워크로드에 사용
    • On-demand: 애플리케이션이 수행하는 실제 읽기, 쓰기에 대해 요금을 지불
      • 예측불가능한 워크로드에 사용, 스파이크성 워크로드

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