DynamoDB 인덱스, 스트림, 최적화

AWS 데이터 스토어 활용

Dunieski Otano

AWS Solutions Architect

불가능했던 쿼리

  • 테이블: userId (파티션 키), orderDate (정렬 키)
  • 필요: 이메일 주소로 주문 조회
  • 문제: 키가 아닌 속성은 쿼리 불가
  • 해결책: Global Secondary Index
    • 인덱스로 다양한 액세스 패턴 지원

gsi

AWS 데이터 스토어 활용

Global Secondary Index (GSI)

  • 기본 테이블과 다른 파티션 키
  • 테이블 생성 후 언제든지 추가 가능
  • 최종적 일관성 읽기만 지원
  • 활용: 기본 키가 아닌 속성으로 쿼리

gsi_1

AWS 데이터 스토어 활용

Local Secondary Index (LSI)

  • 동일한 파티션 키, 다른 정렬 키
  • 테이블 생성 시에만 추가 가능
  • 강력한 일관성 읽기 지원
  • 활용: 파티션 내 대체 정렬 순서

lsi

AWS 데이터 스토어 활용

GSI vs LSI - 언제 사용할까요

  • GSI: 다른 파티션 키, 언제든 추가, 최종적 일관성
  • LSI: 동일한 파티션 키, 테이블 생성 시 추가, 강력한 일관성
  • 가장 일반적: 유연한 액세스 패턴에는 GSI 사용

gsi_or_lsi

AWS 데이터 스토어 활용

DynamoDB 데이터 직렬화

  • 문제: DynamoDB는 Python 객체를 직접 저장하지 않음
  • 해결책: JSON 또는 바이너리로 직렬화
  • JSON: 단순 데이터(딕셔너리, 리스트) - json.dumps()
  • Base64: 바이너리 데이터(이미지, 토큰)

serialization

AWS 데이터 스토어 활용

변경 데이터 캡처를 위한 DynamoDB Streams

  • 스트림: 테이블 변경 사항의 순서 있는 로그
  • 캡처 대상: 삽입, 수정, 삭제
  • 활용: 감사 로그, 복제, 트리거
  • Lambda로 처리해 실시간 반응 구현

streams

AWS 데이터 스토어 활용

자동 만료를 위한 Time-to-Live

  • TTL: 만료 후 항목 자동 삭제
  • TTL 속성에 Unix 타임스탬프 설정
  • 적합한 용도: 세션, 임시 토큰, 캐시
  • TTL 삭제는 비용 없음

ttl

AWS 데이터 스토어 활용

인덱스 프로젝션 유형과 쿼리 성능

  • KEYS_ONLY: 키 속성만 포함, 가장 작은 크기
  • INCLUDE: 키 + 지정 속성 포함
  • ALL: 모든 속성 포함, 가장 큰 크기, 추가 조회 불필요
  • 트레이드오프: 스토리지 비용 vs 쿼리 성능

index

AWS 데이터 스토어 활용

배치 작업과 트랜잭션

  • BatchGetItem: 최대 100개 항목 읽기, 최대 16MB
  • BatchWriteItem: 최대 25개 항목 쓰기
  • TransactWriteItems: 최대 100개 항목에 ACID 적용
  • 활용: 효율성(배치) 또는 일관성(트랜잭션)

batch

AWS 데이터 스토어 활용

연습해 봅시다!

AWS 데이터 스토어 활용

Preparing Video For Download...