Operazioni di lettura e scrittura di DynamoDB
Le operazioni di lettura di DynamoDB consentono di recuperare uno o più elementi da una tabella specificando il valore della chiave di partizione e, facoltativamente, il valore della chiave di ordinamento. Utilizzando le operazioni di scrittura di DynamoDB è possibile inserire, aggiornare o eliminare elementi in una tabella. Questo argomento illustra l’utilizzo di unità di capacità per queste due operazioni.
Argomenti
Utilizzo di unità di capacità per le operazioni di lettura
Le richieste di lettura di DynamoDB possono essere fortemente coerenti, eventualmente coerenti o transazionali.
-
Una richiesta di operazione a elevata consistenza di lettura di un elemento fino a 4 KB richiede un’unità di lettura.
-
Una richiesta di lettura a coerenza finale di un elemento fino a 4 KB richiede mezza unità di lettura.
-
Una richiesta di lettura transazionale di un elemento fino a 4 KB richiede due unità di lettura.
Per ulteriori informazioni sui modelli di consistenza di lettura di DynamoDB, consulta Coerenza di lettura di DynamoDB.
Le dimensioni degli elementi per le letture vengono arrotondate per eccesso al multiplo di 4 KB successivo. Ad esempio, la lettura di un elemento di 3.500 byte utilizza la stessa velocità effettiva della lettura di un elemento di 4 KB.
Se è necessario leggere un elemento che è più grande di 4 KB, DynamoDB necessita di unità di lettura aggiuntive. Il numero totale di unità di lettura richieste dipende dalla dimensione dell’elemento e dal fatto che si desideri o una lettura a coerenza finale o un’operazione a elevata consistenza di lettura. Ad esempio, se la dimensione dell’elemento è 8 KB, sono necessarie 2 unità di lettura per garantire un’operazione a elevata consistenza di lettura. Sarà necessaria 1 unità di lettura in caso di scelta di letture a coerenza finale o 4 unità di lettura per una richiesta di lettura transazionale.
Nell’elenco seguente viene descritto in che modo le operazioni di lettura di DynamoDB utilizzano le unità di lettura:
-
GetItem: legge un singolo elemento da una tabella. Per determinare il numero di unità di lettura che saranno utilizzate da
GetItem, arrotonda la dimensione dell’elemento per eccesso al successivo limite di 4 KB. Se è stata specificata un’operazione a elevata consistenza di lettura, questo è il numero di unità di lettura necessario. Per una lettura a coerenza finale, che è l’impostazione predefinita, dividi questo numero per due.Ad esempio, se si legge un elemento di 3,5 KB, DynamoDB ne arrotonda la dimensione a 4 KB. Se si legge un elemento di 10 KB, DynamoDB ne arrotonda la dimensione a 12 KB.
-
BatchGetItem: legge fino a 100 elementi da una o più tabelle. DynamoDB elabora ogni elemento del batch come singola richiesta
GetItem. Per prima cosa DynamoDB arrotonda per eccesso la dimensione di ciascun elemento al successivo limite di 4 KB, quindi calcola la dimensione totale. Il risultato non coincide necessariamente con la dimensione totale di tutti gli elementi. Ad esempio, seBatchGetItemlegge due elementi di 1,5 KB e 6,5 KB, DynamoDB calcola la dimensione come 12 KB (4 KB + 8 KB). DynamoDB non calcola la dimensione in 8 KB (1,5 KB + 6,5 KB). -
Query: legge più elementi che hanno lo stesso valore della chiave di partizione. Tutti gli elementi restituiti vengono considerati come un’unica operazione di lettura in cui DynamoDB calcola la dimensione totale di tutti gli elementi. DynamoDB quindi arrotonda la dimensione al limite di 4 KB successivo. Ad esempio, supponiamo che la query restituisca 10 elementi la cui dimensione combinata sia 40,8 KB. DynamoDB arrotonda le dimensioni dell'elemento per l'operazione a 44 KB. Se una query restituisce 1.500 elementi di 64 byte ciascuno, la dimensione cumulativa è 96 KB.
-
Scan: legge tutti gli elementi in una tabella. DynamoDB considera la dimensione degli elementi che vengono valutati, non la dimensione degli elementi restituiti dalla scansione. Per ulteriori informazioni sulle operazioni Scan, consulta Scansione di tabelle in DynamoDB.
Importante
Se si esegue un’operazione di lettura su un elemento che non esiste, DynamoDB continuerà a utilizzare il throughput effettivo come descritto sopra. Per le operazioni Query/Scan, verrà comunque addebitato un throughput di lettura aggiuntivo in base alla coerenza di lettura e al numero di partizioni ricercate per soddisfare la richiesta, anche se non esistono dati.
Per qualsiasi operazione che restituisce elementi puoi richiedere un sottoinsieme di attributi da recuperare. Questo però non influisce sui calcoli delle dimensioni degli elementi. Inoltre, Query e Scan possono restituire conteggi di elementi anziché valori di attributi. Il conteggio degli elementi richiede la stessa quantità di unità di lettura ed è soggetto agli stessi calcoli delle dimensioni degli elementi. Questo perché DynamoDB deve leggere ciascun elemento per incrementare il conteggio.
Utilizzo di unità di capacità per le operazioni di scrittura
Un’unità di scrittura rappresenta una scrittura per un elemento di dimensioni fino a 1 KB. Qualora sia necessario scrivere un elemento di dimensioni superiori a 1 KB, DynamoDB deve utilizzare unità di scrittura aggiuntive. Le richieste di scrittura transazionale richiedono 2 unità di scrittura per eseguire una scrittura per elementi fino a 1 KB. Il numero totale di unità di richiesta di scrittura necessarie dipendono dalla dimensione dell'item. Ad esempio, se la dimensione dell’elemento è pari a 2 KB, sono necessarie 2 unità di scrittura per sostenere una richiesta di scrittura o 4 unità di scrittura per una richiesta di scrittura transazionale.
Le dimensioni degli elementi per le scritture vengono arrotondate per eccesso al multiplo di 1 KB successivo. Ad esempio, la scrittura di un elemento di 500 byte utilizza la stessa velocità effettiva della scrittura di un elemento di 1 KB.
Nell’elenco seguente viene descritto in che modo le operazioni di scrittura di DynamoDB utilizzano le unità di scrittura:
-
PutItem: scrive un singolo elemento in una tabella. Se nella tabella esiste già un elemento con la stessa chiave primaria, l'operazione sostituisce l'item. Per calcolare l'utilizzo del throughput assegnato, la dimensione presa in considerazione è quella dell'elemento più grande.
-
UpdateItem: modifica un singolo elemento nella tabella. DynamoDB considera la dimensione dell'elemento come appare prima e dopo l'aggiornamento. Il throughput assegnato utilizzato riflette la dimensione maggiore tra quelle degli elementi. Anche se si aggiorna un sottoinsieme di attributi dell’elemento,
UpdateItemconsuma comunque la quantità completa del throughput allocato (la dimensione maggiore tra le dimensioni dell’elemento “prima” e “dopo”). -
DeleteItem: rimuove un singolo elemento da una tabella. L'utilizzo del throughput assegnato si basa sulla dimensione dell'elemento eliminato.
-
BatchWriteItem: scrive fino a 25 elementi in una o più tabelle. DynamoDB elabora ogni elemento del batch come singola richiesta
PutItemoDeleteItem(gli aggiornamenti non sono supportati). Per prima cosa DynamoDB arrotonda per eccesso la dimensione di ciascun elemento al successivo limite di 1 KB, quindi calcola la dimensione totale. Il risultato non coincide necessariamente con la dimensione totale di tutti gli elementi. Ad esempio, seBatchWriteItemscrive due elementi di 500 byte e 3,5 KB, DynamoDB calcola la dimensione come 5 KB (1 KB + 4 KB). DynamoDB non calcola la dimensione come 4 KB (500 byte + 3,5 KB).
Per le operazioni PutItem, UpdateItem e DeleteItem, DynamoDB arrotonda la dimensione dell'elemento per eccesso al successivo KB. Ad esempio, se si inserisce o si elimina un elemento di 1,6 KB, DynamoDB ne arrotonda la dimensione a 2 KB.
Le operazioni PutItem, UpdateItem e DeleteItem consentono scritture condizionali, dove si specifica un’espressione che deve restituire true affinché l’operazione abbia esito positivo. Se l'espressione restituisce false, DynamoDB utilizza comunque le unità di capacità di scrittura della tabella. La quantità di unità di capacità di scrittura utilizzate dipende dalla dimensione dell’elemento. Questo elemento può essere un elemento esistente nella tabella o un elemento nuovo che si sta cercando di creare o aggiornare. Ad esempio, si supponga che un elemento esistente abbia una dimensione di 300 KB. Il nuovo elemento che si sta tentando di creare o aggiornare ha una dimensione di 310 KB. Le unità di capacità di scrittura utilizzate saranno 310 KB per il nuovo elemento.