본문 바로가기
BE 공부/AWS

[DynamoDB] 다이나모 디비란?(1)

by 꼬질꼬질두부 2024. 9. 12.

😃NoSQL_DynamoDB

* AWS  What is Amazon DynamoDB? - Amazon DynamoDB 를 참고하여 작성했습니다*

특징

  1. Serverless
    • 프로비저닝: 자동사용자의 요구에 맞게 시스템 자체를 제공하는 것 → 인프라, 서비스, 장비
    • 온디멘드 용량 모드: '사용하는 만큼만' 가격이 나옴

 

  1. NoSQL
    • key-value 및 문서 데이터 모델 지원
    • JOIN 연산자를 지원하지 않음
    • 읽기 일관성
      • 최종적 일관성:
        • 기본값
        • 데이터를 읽을 때, 최신 데이터가 아닐 수 있습니다.
      • 강력한 일관성:
        • 데이터를 읽을 때 항상 최신 데이터를 제공
        • GetItem, Query, Scan 작업에서 사용할 수 있습니다.
    • ACID 트랜잭션atomicity, consistency, isolation, and durability (ACID)
    • 완전 관리형
  1. 이벤트 기반 아키텍처를 위한 변경 데이터 캡처

 

인덱스

  1. 기본 인덱스
    • 파티션 키:
      • 데이터를 물리적으로 분산 저장하는 데 사용됩니다.
      • 파티션 키만 사용한다면. 고유해야 하고,
      • 소트키랑 쓰면 동일한 파티션 키 값은 같은 파티션에 저장됩니다.
     
    파티션 키: UserId (고유해야 함)
    UserId Name Email
    1 Alice alice@example.com
    2 Bob bob@example.com
    3 Carol carol@example.com
    • 정렬 키:
      • 동일한 파티션 키 내에서 데이터를 정렬합니다.
      • 파티션 키와 결합하여 복합 키를 형성하며, 파티션 키가 동일한 항목을 구분하는 역할을 합니다.
     
    파티션 키: CustomerId / 정렬 키: OrderId
    CustomerId OrderId OrderDate TotalAmount
    1 101 2023-01-01 100.00
    1 102 2023-01-02 150.00
    2 201 2023-01-01 200.00
    2 202 2023-01-03 300.00
  1. 로컬 보조 인덱스
    • 기본 테이블의 파티션 키와 동일한 파티션 키 사용. But 다른 정렬키 사용 가능
    • 테이블 생성 시에만 설정 가능
    • 최대 5개의 LSI
    • 강력한 일관성
     
    로컬 보조 인덱스: OrderDateIndex
    • 파티션 키: CustomerId
    • 정렬 키: OrderDate
    CustomerId OrderId OrderDate TotalAmount
    1 101 2023-01-01 100.00
    1 102 2023-01-02 150.00
    2 201 2023-01-01 200.00
    2 202 2023-01-03 300.00

글로벌 보조 인덱스

  • 기본 테이블과는 다른 파티션 키와 정렬 키를 사용 가능
  • 테이블 생성 후에도 추가 가능
  • 테이블당 최대 20개의 GSI
  • 최종적 일관성
 
글로벌 보조 인덱스: NameIndex
  • 파티션 키: Name
  • 정렬 키: UserId

쿼리: Name이 'Alice'인 사용자를 조회
결과:

UserId Name Email
1 Alice alice@example.com

인덱스 세줄 요약

기본 키: 테이블의 주요 키로, 기본적인 데이터 정렬과 조회를 담당합니다. (파티션 키 + 정렬 키)
로컬 보조 인덱스 (LSI): 기본 테이블의 파티션 키를 사용하면서 다른 정렬 키로 데이터를 조회하고 정렬합니다. (파티션 키 + 다른 정렬 키)
글로벌 보조 인덱스 (GSI): 다른 파티션 키와 정렬 키를 사용하여 데이터를 조회하고 정렬합니다. 이는 테이블 생성 후에도 추가할 수 있습니다. (다른 파티션 키 + 다른 정렬 키)

 

 

 

댓글