DynamoDB 인덱스, 스트림, 최적화
AWS 데이터 스토어 활용
Dunieski Otano
AWS Solutions Architect
불가능했던 쿼리
- 테이블: userId (파티션 키), orderDate (정렬 키)
- 필요: 이메일 주소로 주문 조회
- 문제: 키가 아닌 속성은 쿼리 불가
- 해결책: Global Secondary Index
Global Secondary Index (GSI)
- 기본 테이블과 다른 파티션 키
- 테이블 생성 후 언제든지 추가 가능
- 최종적 일관성 읽기만 지원
- 활용: 기본 키가 아닌 속성으로 쿼리
Local Secondary Index (LSI)
- 동일한 파티션 키, 다른 정렬 키
- 테이블 생성 시에만 추가 가능
- 강력한 일관성 읽기 지원
- 활용: 파티션 내 대체 정렬 순서

GSI vs LSI - 언제 사용할까요
- GSI: 다른 파티션 키, 언제든 추가, 최종적 일관성
- LSI: 동일한 파티션 키, 테이블 생성 시 추가, 강력한 일관성
- 가장 일반적: 유연한 액세스 패턴에는 GSI 사용
DynamoDB 데이터 직렬화
- 문제: DynamoDB는 Python 객체를 직접 저장하지 않음
- 해결책: JSON 또는 바이너리로 직렬화
- JSON: 단순 데이터(딕셔너리, 리스트) - json.dumps()
- Base64: 바이너리 데이터(이미지, 토큰)
변경 데이터 캡처를 위한 DynamoDB Streams
- 스트림: 테이블 변경 사항의 순서 있는 로그
- 캡처 대상: 삽입, 수정, 삭제
- 활용: 감사 로그, 복제, 트리거
- Lambda로 처리해 실시간 반응 구현
자동 만료를 위한 Time-to-Live
- TTL: 만료 후 항목 자동 삭제
- TTL 속성에 Unix 타임스탬프 설정
- 적합한 용도: 세션, 임시 토큰, 캐시
- TTL 삭제는 비용 없음
인덱스 프로젝션 유형과 쿼리 성능
- KEYS_ONLY: 키 속성만 포함, 가장 작은 크기
- INCLUDE: 키 + 지정 속성 포함
- ALL: 모든 속성 포함, 가장 큰 크기, 추가 조회 불필요
- 트레이드오프: 스토리지 비용 vs 쿼리 성능
배치 작업과 트랜잭션
- BatchGetItem: 최대 100개 항목 읽기, 최대 16MB
- BatchWriteItem: 최대 25개 항목 쓰기
- TransactWriteItems: 최대 100개 항목에 ACID 적용
- 활용: 효율성(배치) 또는 일관성(트랜잭션)
Preparing Video For Download...