Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Paginar os resultados de consultas à tabela no DynamoDB

Modo de foco
Paginar os resultados de consultas à tabela no DynamoDB - Amazon DynamoDB

O DynamoDB pagina os resultados das operações Query. Com a paginação, os resultados de Query são divididos em "páginas" de dados com 1 MB de tamanho (ou menos). Uma aplicação pode processar a primeira página de resultados e, em seguida, a segunda página, e assim por diante.

Uma única operação Query retorna apenas um conjunto de resultados que estão dentro do limite de tamanho de 1 MB. Para determinar se há mais resultados e para recuperá-los em uma página por vez, os aplicativos devem fazer o seguinte:

  1. Examine o resultado de Query de baixo nível:

    • Se o resultado contiver um elemento LastEvaluatedKey e ele não for nulo, prossiga para a etapa 2.

    • Se não houver um LastEvaluatedKey no resultado, não haverá mais itens a serem recuperados.

  2. Construa a nova solicitação de Query com os mesmos parâmetros da anterior. No entanto, desta vez, use o valor de LastEvaluatedKey da etapa 1 como o parâmetro ExclusiveStartKey na nova solicitação de Query.

  3. Execute a nova solicitação de Query.

  4. Vá para a etapa 1.

Em outras palavras, o valor LastEvaluatedKey de uma resposta de Query deve ser usado como ExclusiveStartKey da próxima solicitação de Query. Se não houver um elemento LastEvaluatedKey em uma resposta de Query, então, você recuperou a página de resultados final. Se LastEvaluatedKey não está vazio, isso não necessariamente significa que há mais dados no conjunto de resultados. A única maneira de saber quando você atingiu o final do conjunto de resultados é quando LastEvaluatedKey estiver vazio.

Você pode usar a AWS CLI para visualizar esse comportamento. A AWS CLI envia repetidamente solicitações Query de baixo nível ao DynamoDB até que LastEvaluatedKey não esteja mais presente nos resultados. Considere o seguinte exemplo da AWS CLI que recupera títulos de filmes de um determinado ano.

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

Normalmente, a AWS CLI lida com a paginação automaticamente. No entanto, neste exemplo, o parâmetro --page-size da AWS CLI limita o número de itens por página. O parâmetro de --debug imprime as informações de baixo nível sobre solicitações e respostas.

Se você executar o exemplo, a primeira resposta do DynamoDB será semelhante a esta.

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}'

O LastEvaluatedKey na resposta indica que nem todos os itens foram recuperados. A AWS CLI emite outra solicitação de Query para o DynamoDB. Essa solicitação e o padrão de resposta continuam, até a resposta final.

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}'

A ausência de LastEvaluatedKey indica que não há mais itens a serem recuperados.

nota

Os AWS SDKs lidam com as respostas de baixo nível do DynamoDB (incluindo a presença ou a ausência de LastEvaluatedKey) e fornecem várias abstrações para paginar os resultados de Query Por exemplo, a interface do documento SDK para Java fornece o suporte a java.util.Iterator para que você possa abordar um resultado de cada vez.

Para obter exemplos de código em várias linguagens de programação, consulte o Guia de conceitos básicos do Amazon DynamoDB e a documentação do AWS SDK para sua linguagem.

Você também pode reduzir o tamanho da página limitando o número de itens no conjunto de resultados, com o parâmetro Limit da operação Query.

Para obter mais informações sobre como realizar consultas com o DynamoDB, veja Consultar tabelas no DynamoDB.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.