[AWS/DynamoDB] Overview

올리브수
|2024. 1. 17. 02:00
728x90
  • 완전관리형 NoSQL DB서비스
  • 하드웨어 프로비저닝, 구성 및 설정, 복제, 패치, 클러스터 스케일링 등을 신경쓸 필요가 없다.
  • KMS를 이용한 Key관리 지원을 통한 보안 강화도 도모함
  • DB 테이블

 

  • DynamoDB
    • 자동으로 AWS 리전별로 데이터를 AZ 3곳에 복제하여 저장
    • 하나 장애가 발생하여 정지해도 DB 정상 사용 가능 → ⭐ 고가용성
  • 높은 가용성 및 지속성 제공
    • 따로 데이터 백업 필요 ❌
  • AWS S3와 같이 저장 용량은 무제한

 

  • 데이터 형식
    • Scalar Data types : Number, String, Binary
    • Multi-valued types : Number Set, String Set, Binary Set

 

  • Primary Key
    • 해시키 : 고유값
    • 해키키 + 범위키 :정렬 / 범위 값 / 모델 복합

 

  • 인덱스
    • 로컬 보조 인덱스(LSI)
    • 글로벌 보조 인덱스(GSI)

 

No-SQL

  • SQL과 반대
  • 정형화되지 않은 구조
  • 대규모, 대용량 동시 서비스가 필요한 곳에서 사용
  • MongoDB, DynamoDB

 

  • environment
    • public subnet 1
    • private subnet 3
    • deploy cloud9 to public subnet

 

  • dynamo 테이블 생성
    aws dynamodb create-table \
        --table-name ProductCatalog \
        --attribute-definitions \
            AttributeName=Id,AttributeType=N \
        --key-schema \
            AttributeName=Id,KeyType=HASH \
        --provisioned-throughput \
            ReadCapacityUnits=10,WriteCapacityUnits=5

    aws dynamodb create-table \
        --table-name Forum \
        --attribute-definitions \
            AttributeName=Name,AttributeType=S \
        --key-schema \
            AttributeName=Name,KeyType=HASH \
        --provisioned-throughput \
            ReadCapacityUnits=10,WriteCapacityUnits=5

    aws dynamodb create-table \
        --table-name Thread \
        --attribute-definitions \
            AttributeName=ForumName,AttributeType=S \
            AttributeName=Subject,AttributeType=S \
        --key-schema \
            AttributeName=ForumName,KeyType=HASH \
            AttributeName=Subject,KeyType=RANGE \
        --provisioned-throughput \
            ReadCapacityUnits=10,WriteCapacityUnits=5

    aws dynamodb create-table \
        --table-name Reply \
        --attribute-definitions \
            AttributeName=Id,AttributeType=S \
            AttributeName=ReplyDateTime,AttributeType=S \
        --key-schema \
            AttributeName=Id,KeyType=HASH \
            AttributeName=ReplyDateTime,KeyType=RANGE \
        --provisioned-throughput \
            ReadCapacityUnits=10,WriteCapacityUnits=5

    aws dynamodb wait table-exists --table-name ProductCatalog && \
    aws dynamodb wait table-exists --table-name Reply && \
    aws dynamodb wait table-exists --table-name Forum && \
    aws dynamodb wait table-exists --table-name Thread
  • 테이블 목록
    • ProductCatalog
    • Forum
    • Thread
    • Reply

 

Explore DynamoDB with the CLI

  • 높은 수준의 추상화 : Table (내부에 다른 테이블 구성을 가지고 있는 데이터베이스의 개념 ❌)

 

  • 테이블 내부
    • items: 타 DB의 row와 유사
    • Attributes: column과 유사
    • Items: Attributes의 모음

 

  • 테이블 생성시의 반드시 하나의 속성을 Partition Key(Hash Key라고도 함)로 지정해야한다.
    • 모든 아이템은 해당 행을 고유하게 식별하는 기본키(Primary Key)가 존재해야함
    • 선택적으로 다른 키를 정렬 키로 지정할 수도 있다.

 

  • Partition Key하나만 존재하면 해당 키는 Primary Key가 된다.
  • 만약, Partition Key와 Primary Key가 둘 다 존재하면 Partition Key - Sort Key 조합이 기본키가 된다.
    • 즉, Sort Key는 다르고 Partition Key는 같은 Item 쌍이 존재할 수 있다.
    • 동일한 Partition Key → 동일한 Attributes Collections에 속한다고 할 수 있음

 

  • Read/Write Capacity Modes
    • 온디맨드 용량 사용
      • → 쓰기 작업시, WRU
      • → 읽기 작업시, RRU
    • 프로비저닝된 용량 사용
      • → 쓰기 작업시,WCU
      • → 읽기 작업시, RCU

 

🔗 Reference

728x90