DynamoDB è a coerenza eventuale?
Per impostazione predefinita sì. Le letture DynamoDB sono a coerenza eventuale: una lettura subito dopo una scrittura può non riflettere quella scrittura, ma ripetendola poco dopo restituisce l'Item aggiornato. Puoi scegliere letture a coerenza forte su tabelle e LSI; gli indici secondari globali sono sempre a coerenza eventuale.
Coerenza eventuale (il default)
Una lettura a coerenza eventuale può non riflettere una scrittura appena completata. Ripeti la lettura un attimo dopo e restituisce il valore corrente. Questa modalità è il default, e viene fatturata a metà tariffa rispetto a una a coerenza forte.
Letture a coerenza forte
Imposta ConsistentRead: true per ottenere i dati più recenti confermati (una lettura a coerenza forte). È supportata sulla tabella base e sugli indici secondari locali (LSI) — ma non sugli indici secondari globali (GSI) né su DynamoDB Streams, che sono sempre a coerenza eventuale.
L'esclusione dei GSI è imposta dall'API, non lasciata al tuo buonsenso: una Query su un indice secondario globale con ConsistentRead: true fa fallire l'intera richiesta invece di degradarla in silenzio (il rifiuto esatto).
Quanto costa la scelta
"Metà prezzo" è la regola documentata; ecco a quanto ammonta. Prendi 1.000 letture al secondo di Item da 4 KB in us-east-1, e nient'altro:
| Coerenza | Unità di lettura per lettura | On-demand / mese | Con provisioning / mese |
|---|---|---|---|
| Coerenza eventuale | 0,5 | 164,25 $ | 47,45 $ (500 RCU) |
| Coerenza forte | 1 | 328,50 $ | 94,90 $ (1.000 RCU) |
Gli input, così puoi verificarli: 2.628.000 secondi in un mese da 730 ore, $0.125 per milione di unità di richiesta di lettura, $0.00013 per RCU-ora. Un Item da 4 KB è un'unità di lettura, dimezzata per la coerenza eventuale.
Quindi $164 al mese è il prezzo fisso per non leggere mai un Item stantio su questo carico di lavoro. È poco per il saldo di un conto ed è uno spreco per la scheda di un prodotto, ed è per questo che il flag è per richiesta e non per tabella. Calcola i tuoi numeri nel calcolatore dei prezzi.
Perché funziona così
DynamoDB replica automaticamente i tuoi dati su tre zone di disponibilità. La coerenza eventuale permette di servire le letture senza aspettare ogni copia — più veloce ed economico; la coerenza forte restituisce i dati più aggiornati.
E in multi-regione (global table)?
La replica tra regioni ha la sua impostazione di coerenza. Le global table usano per default la coerenza eventuale multi-regione (MREC), dove le modifiche si replicano verso le altre regioni tipicamente entro un secondo o meno. Puoi invece creare una global table con coerenza forte multi-regione (MRSC): le scritture si replicano in modo sincrono su almeno un'altra regione, e le letture a coerenza forte su qualsiasi replica restituiscono sempre la versione più recente di un Item.
Approfondisci
Leggi coerenza in DynamoDB per tutti i compromessi. Scarica DynoTable per cambiare la coerenza di lettura sulle tue query.
Riferimenti
- DynamoDB read consistency — Amazon DynamoDB Developer Guide
- How DynamoDB global tables work — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra; prezzi unitari ricontrollati il 2026-07-28.
Il rifiuto sui GSI è stato riprodotto il 2026-07-28 su DynamoDB Local 3.3.0 (amazon/dynamodb-local:latest) tramite @aws-sdk/client-dynamodb 3.1095.0, e la tabella dei costi è stata calcolata dagli stessi dati di prezzo che usa il calcolatore.