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à.
Impaginazione dei risultati delle query nelle tabelle in DynamoDB
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:
-
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.
-
-
Costruire una nuova richiesta
Query
, con gli stessi parametri della precedente. Tuttavia, questa volta, accettare il valoreLastEvaluatedKey
della fase 1 e usarlo come parametroExclusiveStartKey
nella nuova richiesta diQuery
. -
Eseguire la nuova richiesta di
Query
. -
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 per visualizzare questo comportamento AWS CLI . 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
AWS SDKsGestiscono le risposte DynamoDB di basso livello (inclusa la presenza o l'assenza di) e forniscono varie astrazioni per l'impaginazione LastEvaluatedKey
dei risultati. Query
Ad esempio, l'interfaccia documentale SDK per Java fornisce java.util.Iterator
supporto in modo da poter esaminare i risultati uno alla volta.
Per esempi di codice in vari linguaggi di programmazione, consulta la Amazon DynamoDB Getting Started Guide e AWS SDK la documentazione per il tuo linguaggio.
È 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 Interrogazione di tabelle in DynamoDB.