DynamoDB supporta le transazioni?

Sì. DynamoDB supporta transazioni ACID tramite TransactWriteItems e TransactGetItems. Ogni transazione raggruppa fino a 100 azioni su una o più tabelle nello stesso account e nella stessa regione in un'unica operazione tutto-o-niente, con un limite di dimensione complessivo di 4 MB. Se una qualsiasi azione fallisce, non ne viene applicata nessuna.

Le due API di transazione

  • TransactWriteItems — raggruppa in modo atomico azioni Put, Update, Delete e ConditionCheck. Sincrona e idempotente.
  • TransactGetItems — legge più Item in un'unica istantanea atomica e coerente.

Regole e limiti

  • Fino a 100 Item per transazione, su una o più tabelle.
  • Tutte le tabelle devono essere nello stesso account e nella stessa regione.
  • La dimensione complessiva degli Item non può superare i 4 MB.
  • Non puoi puntare due volte allo stesso Item nella stessa transazione.
  • Sulle tabelle globali, le garanzie ACID valgono solo all'interno della regione in cui la transazione è stata eseguita — le modifiche si replicano nelle altre regioni dopo il commit, e le tabelle globali in modalità multi-Region strong consistency (MRSC) non supportano affatto le API di transazione.

Quanto costa l'atomicità

Stesso Item, due percorsi, con ReturnConsumedCapacity attivo:

PutItem, one 920-byte item                 ConsumedCapacity 1
TransactWriteItems, the same single Put    ConsumedCapacity 2

Una scrittura transazionale vale due scritture in termini di capacità, e una lettura transazionale vale due letture. Sul lungo periodo, quel raddoppio è tutto il compromesso: 100 scritture al secondo di Item da 1 KB costano 164,25 $ al mese in us-east-1 on-demand, oppure 328,50 $ se ognuna di esse passa da una transazione. Il calcolatore dei prezzi ha un'impostazione di coerenza transazionale proprio per questo confronto.

Il retry che non si applica due volte

Una transazione che va in timeout potrebbe comunque aver fatto commit, quindi la parte pericolosa è il retry, non la transazione. ClientRequestToken è ciò che rende sicuro il retry. Inviando due volte la stessa transazione ADD counter :one con un solo token:

TransactWriteItems  (token order-4711)     200
TransactWriteItems  (token order-4711)     200
GetItem counter                            {"N": "1"}

Entrambe le chiamate sono andate a buon fine e il contatore si è mosso una volta sola. Il token resta valido per 10 minuti dopo che la prima richiesta è terminata; riusalo più tardi e la seconda chiamata è una nuova transazione, quindi il contatore si muove di nuovo. Riusalo dentro la finestra con un qualsiasi altro parametro cambiato e DynamoDB restituisce IdempotentParameterMismatch.

Transazione vs batch

A differenza di BatchWriteItem, che applica ogni Item per conto proprio (alcune scritture possono andare a buon fine mentre altre falliscono), una transazione è tutto-o-niente — usala quando un'applicazione parziale corromperebbe i tuoi dati.

Approfondisci

Impara i pattern in transazioni DynamoDB, e costruisci le condition expression su cui si basano con l'Expression Builder. Scarica DynoTable per mettere in staging le tue modifiche agli Item come diff revisionabili e fare commit di tutte insieme come batch transazionale.

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra; il limite di 100 azioni e la finestra di idempotenza di 10 minuti sono stati riverificati il 2026-07-28.

I valori di ConsumedCapacity e la riesecuzione idempotente sono stati riprodotti il 2026-07-28 su DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0; i costi mensili sono calcolati dal prezzo on-demand per unità di richiesta di scrittura in us-east-1 presente nella nostra tabella prezzi AWS sincronizzata.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.