

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 sulle tabelle in DynamoDB
<a name="Query.Pagination"></a>

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.

1. Costruzione di una `Query` con la stessa `KeyConditionExpression`. Tuttavia, questa volta, accettare il valore `LastEvaluatedKey` della fase 1 e usarlo come parametro `ExclusiveStartKey` nella nuova richiesta di `Query`.

1. Eseguire la nuova richiesta di `Query`.

1. 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**  
 AWS SDKs Gestiscono 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 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](https://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/) 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 [Esecuzione di query in DynamoDB](Query.md).