Paginazione dei risultati della query della tabella - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Paginazione dei risultati della query della tabella

DynamoDB esegue la paginazione dei risultati delle operazioni Query. Con la paginazione, i risultati della Query vengono divisi in "pagine" di dati la cui dimensione è al massimo 1 MB. Un'applicazione può elaborare la prima pagina dei risultati, quindi la seconda pagina e così via.

Una singola operazione Query restituisce solo un set di risultati che rientra nel limite di dimensione di 1 MB. Per determinare se ci sono più risultati e recuperarli una pagina alla volta, le applicazioni devono fare quanto segue:

  1. Esamina i risultati della Query di livello inferiore:

    • Se il risultato contiene un elemento LastEvaluatedKey che non è null, passa alla fase 2.

    • Se nel risultato non è presente un LastEvaluatedKey, allora non ci sono altri elementi da recuperare.

  2. Costruire una nuova richiesta Query, con gli stessi parametri della precedente. Tuttavia, questa volta, accettare il valore LastEvaluatedKey della fase 1 e usarlo come parametro ExclusiveStartKey nella nuova richiesta di Query.

  3. Eseguire la nuova richiesta di Query.

  4. Passa alla fase 1.

In altre parole, l'item LastEvaluatedKey della risposta di uno Query deve essere usato come item ExclusiveStartKey per la successiva richiesta di Query. Se non è presente un elemento LastEvaluatedKey nella risposta di uno Query, vuol dire che hai recuperato la pagina finale dei risultati. Se LastEvaluatedKey non è vuoto, non significa necessariamente che esistano più dati nel set di risultati. L'unico modo per sapere che hai raggiunto la fine del set di risultati è quando LastEvaluatedKey è vuoto.

È possibile utilizzare il AWS CLI per visualizzare questo comportamento. AWS CLI Invia ripetutamente Query richieste di basso livello a DynamoDB, LastEvaluatedKey finché non sono più presenti nei risultati. Considerate il seguente AWS CLI esempio che recupera i titoli dei film di un determinato anno.

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, AWS CLI gestisce l'impaginazione automaticamente. Tuttavia, in questo esempio, il AWS CLI --page-size parametro limita il numero di elementi per pagina. Il parametro --debug consente di stampare le informazioni di livello inferiore relative alle richieste e alle risposte.

Se si esegue l'esempio, l'aspetto della prima risposta da DynamoDB sarà simile al seguente.

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

L'item LastEvaluatedKey nella risposta indica che non tutti gli elementi sono stati recuperati. AWS CLI Quindi invia un'altra Query richiesta a DynamoDB. Questo modello di richiesta e risposta continua fino alla risposta finale.

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

L'assenza di LastEvaluatedKey indica che non ci sono più item da recuperare.

Nota

Gli AWS SDK gestiscono le risposte DynamoDB di basso livello (inclusa la presenza o l'assenza diLastEvaluatedKey) e forniscono varie astrazioni per l'impaginazione dei risultati. Query Ad esempio, l'interfaccia del documento SDK per Java fornisce il supporto java.util.Iterator per poter esaminare i risultati uno alla volta.

Per esempi di codice in vari linguaggi di programmazione, consulta la Guida alle operazioni di base di Amazon DynamoDB e la documentazione dell'SDK AWS per il linguaggio in uso.

È inoltre possibile ridurre la dimensione della pagina limitando il numero di elementi nel set di risultati, con il parametro Limit dell’operazione Query.

Per ulteriori informazioni sull'esecuzione di query con DynamoDB, consulta Operazioni di query in DynamoDB.