imhamburger 님의 블로그
DynamoDB - LastEvaluatedKey 이해하기 본문
기본개념
DynamoDB에서 `scan`이나 `query`를 하면, 한 번에 모든 데이터를 반환하지 않을 수 있다.
- 테이블이 크거나 반환되는 데이터가 많으면 페이지 단위로 나눠서 반환한다.
- 이때 마지막으로 읽은 아이템을 기준으로 다음 페이지를 읽을 수 있게 해주는 것이 `LastEvaluatedKey`.
즉:
- 한 번 scan → 일부 데이터 + `LastEvaluatedKey` 반환
- `LastEvaluatedKey`를 `ExclusiveStartKey`로 지정해서 다음 페이지 scan 수행
- 마지막 페이지에는 `LastEvaluatedKey`가 없음 → 데이터 끝
response = table.scan()
items = response['Items']
while 'LastEvaluatedKey' in response:
response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
items.extend(response['Items'])
- 첫 번째 scan에서 `LastEvaluatedKey`가 있으면 데이터가 더 있다는 의미
- 다음 scan에서 `ExclusiveStartKey=response['LastEvaluatedKey']`를 지정하면 이어서 가져올 수 있음
- 마지막에는 `LastEvaluatedKey`가 없으면 끝
책을 한 번에 다 읽을 수 없어서 페이지별로 읽는 것과 비슷한 개념이다.
1. `scan()` → 한 페이지 읽기
2. `LastEvaluatedKey` → 다음 페이지 시작 위치 표시
3. 반복 → 끝까지 모든 페이지 읽기
참고문서
DynamoDB의 테이블 쿼리 결과 페이지 매김 - Amazon DynamoDB
DynamoDB는 Query 작업 결과의 페이지를 매깁니다. 페이지를 매기면 Query 결과는 크기가 1MB 이하인 데이터 ‘페이지’로 분리됩니다. 애플리케이션은 결과의 첫 번째 페이지를 처리한 다음 두 번째
docs.aws.amazon.com
'끄적끄적' 카테고리의 다른 글
| 2025년 회고: 잘하고 있는지는 모르겠지만, 계속하고는 있다 (0) | 2026.01.02 |
|---|---|
| DynamoDB: The provided key element does not match the schema (0) | 2025.12.19 |
| RDS to DynamoDB 마이그레이션, 람다 실행시간 초과해결 (0) | 2025.11.02 |
| RDS to DynamoDB 마이그레이션 리서치 (0) | 2025.10.26 |
| PostgreSQL WITH ORDINALITY 사용 (0) | 2025.10.10 |