DynamoDB CRUD 작업과 Query vs Scan
AWS 데이터 스토어 활용
Dunieski Otano
AWS Solutions Architect
비용이 큰 실수
- 개발자가 Scan으로 사용자 한 명을 조회
- 아이템 100만 개의 테이블 전체를 읽음
- 청구 금액: 단 한 번의 조회에 $500
- Query를 사용했다면 $0.01
DynamoDB CRUD 작업
- PutItem: 아이템 생성 또는 교체
- GetItem: 기본 키로 아이템 읽기
- UpdateItem: 특정 속성 수정
- DeleteItem: 아이템 삭제
- Query: 파티션 키로 아이템 조회 (효율적)
- Scan: 테이블 전체 읽기 (비용 높음)
Query vs Scan: 핵심 차이점
- Query: 파티션 키 필요, 특정 아이템 읽기
- Scan: 테이블 전체 읽기 후 필터링
- 원칙: 키를 알고 있다면 Query를 사용하세요. 그렇지 않다면 설계를 재검토하세요.
조건부 표현식으로 경쟁 조건 방지
- 문제: 두 사용자가 동시에 같은 아이템을 업데이트
- 해결책: 조건부 표현식 사용
- 예시: 현재 값이 예상 값과 일치할 때만 업데이트
UpdateItem 표현식: 속성 수정
- SET: 속성 값 설정 또는 새 속성 생성
- ADD: 숫자 증가/감소, 집합에 추가
- REMOVE: 아이템에서 속성 삭제
- DELETE: 집합에서 요소 제거
Query와 Scan의 페이지네이션
- 문제: 대용량 결과 집합이 1MB 한도 초과
- 해결책:
LastEvaluatedKey를 이용한 페이지네이션
- Limit: 페이지당 아이템 수 제어
LastEvaluatedKey가 null이 될 때까지 반복
Preparing Video For Download...