테이블 쿼리 결과 페이지 매김 - Amazon DynamoDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

테이블 쿼리 결과 페이지 매김

DynamoDB페이지 매김의 결과Query작업을 수행합니다. 페이지 매김을 사용하면Query결과는 크기가 1MB 이하인 데이터 “페이지”로 분리됩니다. 응용 프로그램은 결과의 첫 번째 페이지를 처리한 다음, 두 번째 페이지를 처리하고 이런 식으로 계속할 수 있습니다.

단일Query는 1MB 크기 한도 내에 맞는 결과 집합만 반환합니다. 추가 결과가 있는지 확인하고 이러한 결과를 한번에 한 페이지에 가져오려면 애플리케이션에서 다음을 수행해야 합니다.

  1. 하위 수준 Query 결과를 확인합니다.

    • 결과에 포함 된 경우LastEvaluatedKey요소를 사용하고 null이 아닌 경우 2 단계로 계속합니다.

    • 있는 경우하지aLastEvaluatedKey를 입력하면 가져올 항목이 더 이상 없습니다.

  2. 이전과 동일한 파라미터를 이용해 새로운 Query 요청을 구성합니다. 그러나 이번에는 1단계에서 LastEvaluatedKey 값을 가져와서 새로운 Query 요청의 ExclusiveStartKey 파라미터로 사용합니다.

  3. 새로운 Query 요청을 실행합니다.

  4. 1단계로 이동합니다.

다시 말해서, Query 응답의 LastEvaluatedKey를 다음 Query 요청에 대한 ExclusiveStartKey로 사용해야 합니다. Query 응답에 LastEvaluatedKey 요소가 없는 경우 결과의 최종 페이지를 검색한 것입니다. LastEvaluatedKey가 비어 있지 않는 경우 결과 집합에 데이터가 더 있음을 의미하는 것은 아닙니다. 결과 집합의 마지막 페이지를 알 수 있는 유일한 방법은 LastEvaluatedKey가 비어 있을 때입니다.

AWS CLI를 사용하여 이 동작을 볼 수 있습니다. 이AWS CLI가 하위 수준Query요청을 반복해서 DynamoDB 에 전송해야 합니다.LastEvaluatedKey가 결과에 더 이상 나타나지 않습니다. 특정 연도의 영화 제목을 검색하는 다음 AWS CLI 예제를 살펴보십시오.

aws dynamodb query --table-name Movies \ --projection-expression "title" \ --key-condition-expression "#y = :yyyy" \ --expression-attribute-names '{"#y":"year"}' \ --expression-attribute-values '{":yyyy":{"N":"1993"}}' \ --page-size 5 \ --debug

일반적으로 AWS CLI에서는 페이지 매김이 자동으로 처리됩니다. 그러나 이 예제에서는 AWS CLI --page-size 파라미터가 페이지당 항목 수를 제한합니다. --debug 파라미터는 요청 및 응답에 대한 하위 수준 정보를 출력합니다.

예제를 실행하면 DynamoDB 의 첫 응답이 다음과 유사합니다.

2017-07-07 11:13:15,603 - MainThread - botocore.parsers - DEBUG - Response body: b'{"Count":5,"Items":[{"title":{"S":"A Bronx Tale"}}, {"title":{"S":"A Perfect World"}},{"title":{"S":"Addams Family Values"}}, {"title":{"S":"Alive"}},{"title":{"S":"Benny & Joon"}}], "LastEvaluatedKey":{"year":{"N":"1993"},"title":{"S":"Benny & Joon"}}, "ScannedCount":5}'

응답의 LastEvaluatedKey는 가져온 항목이 전부가 아님을 나타냅니다. 이AWS CLI다른 발행Query요청을 DynamoDB 로 보냅니다. 이 요청과 응답 패턴은 마지막 응답이 반환될 때까지 계속됩니다.

2017-07-07 11:13:16,291 - MainThread - botocore.parsers - DEBUG - Response body: b'{"Count":1,"Items":[{"title":{"S":"What\'s Eating Gilbert Grape"}}],"ScannedCount":1}'

LastEvaluatedKey가 없으면 가져올 항목이 더 이상 없음을 나타냅니다.

참고

이AWSSDK는 하위 수준 DynamoDB 응답 (LastEvaluatedKey) 를 호출하고 페이지 매김을위한 다양한 추상화를 제공합니다.Query결과를 확인합니다. 예를 들어, 자바 문서 인터페이스를위한 SDKjava.util.Iterator지원을 제공하므로 한 번에 하나씩 결과를 볼 수 있습니다.

다양한 프로그래밍 언어의 코드 예제는 단원을 참조하십시오Amazon DynamoDB 시작 안내서및AWS해당 언어에 대한 SDK 설명서를 참조하십시오.

DynamoDB 를 사용한 쿼리에 대한 자세한 내용은 단원을 참조하십시오.DynamoDB 에서 쿼리 작업.