DynamoDB

DynamoDB

Last modified on 2025-04-18 , by hjjae2

DynamoDB? #

KV 스토어, NoSQL 데이터베이스. 규모에 상관없이 10ms 미만의 성능을 제공한다.

KV 스토어이기에 Key 설계가 가장 중요하다. 이를 테면, 어떤 속성을 키(파티션 키, 정렬 키)로 설정할 지이다. 조회 시 Key 와 관련 없는 속성으로 조회하면 O(n) 이다. 요약하면, (1) 접근 패턴에 따른 키 설계 (2) 분산 배치될 수 있는 키 설계가 중요하다. 서버, 스토리지에 대해선 관리해준다. 관리자는 키 설계에 집중한다.

최대 레코드 크기는 400KB 이다. 이를 넘으면 S3 에 저장하고 DynamoDB 에는 메타데이터만 저장한다.

파티션 키 #

키에 대해 해싱 후 저장 위치(파티션)을 결정한다. 데이터가 분산되도록 설계하는 것이 중요하다.

파티션 키는 변경할 수 없다. 변경을 원한다면, 새로운 테이블을 생성 후 데이터를 이동시키는 방법을 사용한다.

REST API #

REST API 기반의 Public API(AWS Service Endpoint) 를 통해 조작 가능하다.

AWS Service Endpoint 에 대해선 https://docs.aws.amazon.com/general/latest/gr/rande.html 문서를 참고할 수 있다.

보조 인덱스 (Secondary Index) #

LSI (Local Secondary Index) #

  • 새로운 공간(스토리지)에 데이터를 복제하고 LSI 기준으로 정리해 갖고 있는 구조이다.
  • 파티션 키는 동일하고 정렬 키만 다르게 설정할 수 있다.
  • 테이블 생성 시 결정해야 한다. 테이블 생성 후 변경할 수 없다.
  • 강력 일관성, 최종 일관성이 허용된다.

GSI (Global Secondary Index) #

  • 새로운 테이블을 만드는 것과 같다. 가능한 적게 만들어야 비용이 적다.
    • 기존 테이블의 내용을 새로운 테이블에 복제한다.
    • 이때 기존 테이블의 항목과 동일할 필요는 없다.
  • 파티션 키와 정렬 키를 임의로 설정할 수 있다.
  • 최종 일관성만 허용된다.

RCU, WCU #

RCU (Read Capacity Unit) #

1 RCU 는 다음을 의미한다.

  • 최대 4KB 항목 1개에 대해 초당 1건의 강력한 일관성 읽기 요청을 처리할 수 있다. 또는 초당 2건의 최종 일관성 읽기 요청을 처리할 수 있다.
  • 항목 크기, 일관성에 따라 필요한 단위가 결정된다.
    • 강력한 일관성 : 1
    • 최종 일관성 : 0.5
    • 트랜잭션 읽기 : 2
  • 4KB 를 넘는 항목은 여러 RCU 가 필요하다.

WCU (Write Capacity Unit) #

1 WCU 는 다음을 의미한다.

  • 최대 1KB 항목 1개에 대해 초당 1건의 쓰기 요청을 처리할 수 있다.
  • 1KB 를 넘는 항목은 여러 WCU 가 필요하다.
  • 트랜잭션 쓰기는 최대 1KB 항목에 대해 2 WCU 가 필요하다.

Streams #

변경 사항을 기록한다. 스트림 처리를 위해 추가 공간(스토리지)가 필요하다.

샤드 형태로 저장된다.

Locking #

Lock 개념/기능 없다. 클라이언트에서 처리해야 한다.

결론 #

키 설계에 집중하자. (1) 접근 패턴에 따른 키 설계 (2) 분산 배치될 수 있는 키 설계 를 기억하자.