Quanti dati può memorizzare DynamoDB?
Di fatto illimitati. Una tabella DynamoDB non ha una dimensione massima e scala orizzontalmente fino a qualsiasi numero di Item e di byte. I limiti veri sono per Item (400 KB) e, solo sulle tabelle che hanno un indice secondario locale, 10 GB per collezione di Item (un singolo valore di partition key). Le tabelle senza un LSI non hanno alcun tetto sulla dimensione della partizione.
Dimensione della tabella: nessun tetto
DynamoDB distribuisce automaticamente i dati su molte partizioni fisiche man mano che crescono. Non c'è una dimensione massima configurata della tabella — capacità e storage scalano man mano che scrivi.
I limiti che esistono davvero
- 400 KB — dimensione massima di un singolo Item, misurata in unità binarie e conteggiando sia i nomi degli attributi sia i valori (dove cade esattamente quel confine).
- 10 GB — dimensione massima di una collezione di Item (tutti gli Item che condividono un valore di partition key) solo quando la tabella ha un indice secondario locale (LSI). Senza un LSI, questo tetto non si applica.
La dimensione che puoi misurare non è la dimensione che paghi
Il modo ovvio per rispondere a "quanto sto memorizzando?" è DescribeTable, che restituisce TableSizeBytes. Quel numero è più piccolo della tua fattura, per costruzione. Dalle indicazioni di AWS sulla fatturazione: "DynamoDB measures the size of your billable data by adding the raw byte size of your data plus a per-item storage overhead that depends on the features you have enabled", e "Storage usage values in the CUR will be higher compared with the storage values when using DescribeTable, because DescribeTable does not include the per-item storage overhead."
È ciò che riporta il motore. Una tabella che conteneva 40 Item da circa 3 KB ciascuno è tornata con TableSizeBytes: 120700, cioè il contenuto grezzo e nient'altro. L'overhead è invisibile dall'API e compare solo nel Cost and Usage Report.
Quindi il divario tra i due cresce con il numero di Item, non con la loro dimensione. Dieci milioni di Item minuscoli pagano quell'overhead dieci milioni di volte; gli stessi byte impacchettati in centomila Item più grandi lo pagano centomila volte. Se la tua fattura corre più veloce di quanto suggerisca TableSizeBytes, il motivo tipico è una tabella larga fatta di righe piccole.
Quanto costa il "nessun tetto"
Lo storage è la parte indulgente. Una tabella da 1 TB su us-east-1 sono 1.024 GB a 0,25 $ per GB-mese: 256 $ al mese, o 249,75 $ una volta applicata la franchigia gratuita di 25 GB.
La dimensione dell'Item è la parte inflessibile, perché le scritture arrotondano per eccesso ogni 1 KB. Lo stesso milione di Item costa cifre selvaggiamente diverse da scrivere, a 0,625 $ per milione di unità di richiesta di scrittura on-demand:
| Dimensione dell'Item | Unità di scrittura ciascuno | 1M di scritture (us-east-1, on-demand) |
|---|---|---|
| 1 KB | 1 | 0,63 $ |
| 100 KB | 100 | 62,50 $ |
| 400 KB | 400 | 250,00 $ |
Quindi la quantità attorno a cui progetti non è la dimensione della tabella ma quella dell'Item. Sposta i blob grandi su S3 e tieni il puntatore in DynamoDB, ed evita collezioni di Item illimitate sotto una chiave hot. Verifica le tue cifre nel calcolatore dei prezzi.
Approfondisci
Leggi collezioni di Item DynamoDB e come funzionano le partition key di DynamoDB. Scarica DynoTable per esplorare le tabelle grandi in modo efficiente.
Riferimenti
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Local secondary indexes — Amazon DynamoDB Developer Guide
- TableDescription — Amazon DynamoDB API Reference
- Best practices for understanding your AWS billing and usage reports in DynamoDB — Amazon DynamoDB Developer Guide
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra; quote e prezzi riverificati il 2026-07-28.
La cifra di TableSizeBytes è stata misurata il 2026-07-28 su DynamoDB Local 3.3.0 (amazon/dynamodb-local:latest) tramite @aws-sdk/client-dynamodb 3.1095.0. DynamoDB Local non è il servizio, e da esso non si deduce alcuna costante di overhead per Item.