Qual è la dimensione massima di un Item in DynamoDB?
400 KB. La dimensione massima di un Item in DynamoDB è 400 KB. Quel totale conta sia i nomi degli attributi (lunghezza in byte UTF-8) sia tutti i valori degli attributi (lunghezza binaria), incluse list e map annidate. I valori binari sono misurati per lunghezza in byte grezzi. Non c'è modo di alzare questo limite — gli oggetti più grandi appartengono ad Amazon S3.
Cosa conta verso i 400 KB
La dimensione dell'item è la somma di:
- ogni nome di attributo, misurato in byte UTF-8, e
- ogni valore di attributo, misurato in lunghezza binaria (le stringhe come UTF-8, i numeri in forma compatta, il binario come byte grezzi).
Anche la struttura di map e list annidate aggiunge un piccolo overhead per elemento. I nomi lunghi degli attributi costano spazio vero — accorciali per guadagnare margine.
400 KB sono 409.600 byte, e il nome ne fa parte
AWS misura in unità binarie: "DynamoDB denotes 1 KB = 1024 bytes." Quindi il tetto è 409.600 byte, non 400.000. Puoi trovare il bordo esatto con una ricerca binaria su PutItem con un solo attributo di tipo stringa:
await client.send(
new PutItemCommand({
TableName: 'sizes',
Item: {pk: {S: 'A'}, a: {S: 'x'.repeat(n)}}
})
);Il più grande n che riesce è 409.596. Aggiungi il nome della chiave (pk, 2 byte), il valore della chiave (A, 1 byte) e il nome dell'attributo (a, 1 byte) e arrivi esattamente a 409.600. Un byte in più ti dà:
ValidationException: Item size has exceeded the maximum allowed size
HTTP 400Ora rinomina quell'attributo da a a attributeName e non cambiare nient'altro. Il valore più grande che ci sta scende a 409.584, esattamente 12 byte in meno, e 12 byte è la lunghezza aggiuntiva del nome.
La raccomandazione di AWS discende da quell'aritmetica. "We recommend that you choose shorter attribute names rather than long ones."
Ed è anche il motivo per cui un budget di 400 KB è più stretto di quanto sembri su un item con molti attributi. Ogni nome si paga a ogni scrittura, e a ogni lettura, per tutta la vita dell'item.
Perché conta
La dimensione dell'item guida il costo in capacità: ogni lettura è fatturata a scatti di 4 KB e ogni scrittura a scatti di 1 KB (vedi unità di capacità). Un item più grande costa di più per operazione oltre a rischiare il limite rigido.
Quando lo raggiungi
Dividi i dati su più Item, oppure sposta i blob grandi su Amazon S3 e memorizza un riferimento in DynamoDB.
Approfondisci
Misura qualsiasi item con il calcolatore della dimensione degli Item e leggi la guida sul limite di dimensione dell'item. Scarica DynoTable per vedere le dimensioni degli Item mentre li modifichi.
Riferimenti
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB item sizes and formats — Amazon DynamoDB Developer Guide
- Local secondary indexes — Amazon DynamoDB Developer Guide
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra. Il vincolo dei 400 KB è stato ricontrollato il 2026-07-28: ora vive in Constraints.html, non nella pagina delle quote.
Misurato il 2026-07-28 contro DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0 su Node v24.18.0. Le cifre in byte vengono da una ricerca binaria su PutItem; la ValidationException è output del motore riportato alla lettera.