imhamburger 님의 블로그

DynamoDB - LastEvaluatedKey 이해하기 본문

끄적끄적

DynamoDB - LastEvaluatedKey 이해하기

imhamburger 2025. 11. 23. 20:47

기본개념

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