DynamoDB può memorizzare array?

Sì. DynamoDB memorizza gli array usando il tipo List (L) — una collezione ordinata che può contenere tipi misti, tra cui stringhe, numeri, booleani, null, mappe e liste annidate. Per collezioni non ordinate di valori unici offre anche i Set di stringhe, numeri e binari. Non c'è un limite al numero di elementi, purché l'Item resti sotto i 400 KB.

Liste (array ordinati)

Una List preserva l'ordine e ammette duplicati e tipi misti. Corrisponde direttamente a un array JSON e può annidarsi (liste di mappe, liste di liste) fino a 32 livelli di profondità.

Quel limite documentato conta anche il valore in fondo. Avvolgere una stringa in 31 contenitori L annidati si scrive senza problemi; un 32° contenitore fallisce, e lo stesso confine vale per le M annidate:

ValidationException: Nesting Levels have exceeded supported limits:
Attributes in the item have nested levels beyond supported limit

Set (valori unici)

  • String Set (SS), Number Set (NS), Binary Set (BS) contengono valori unici di un solo tipo, non ordinati.
  • Un set non può essere vuoto (solleva una ValidationException).

Usa un Set quando contano l'appartenenza e l'unicità; usa una List quando contano l'ordine o i tipi misti.

I Set riordinano e rifiutano i duplicati

Memorizza ["zulu", "alpha", "mike"] come String Set e viene riletto come ["alpha", "mike", "zulu"]. Un Number Set ordina numericamente: ["30", "4", "100"] torna come ["4", "30", "100"]. Gli stessi valori in una List tornano nell'ordine in cui li hai scritti.

Un membro ripetuto è un errore netto invece che una de-duplicazione silenziosa:

ValidationException: Input collection contains duplicates

E dato che un set non può mai essere vuoto, fare DELETE del suo ultimo membro rimuove l'attributo. Il codice che si aspetta di ritrovare un set vuoto trova invece un attributo mancante, quindi verifica con attribute_exists e non con la lunghezza zero.

Quanti elementi ci stanno davvero

"Nessun limite al numero di elementi" è accurato e difficile da usare. La risposta utile è 400 KB diviso quello che costa un elemento: una lista porta 3 byte di overhead, poi la dimensione di ciascun elemento più 1 byte.

Per stringhe UUID da 36 caratteri sotto una chiave di partizione da un carattere, il risultato è 11.070 elementi. Aggiungere l'11.071° viene rifiutato:

ValidationException: Item size has exceeded the maximum allowed size

Il calcolatore della dimensione degli Item dimensiona quei due Item a 409.599 e 409.636 byte, quindi traccia la linea dei 409.600 byte esattamente dove la traccia il motore. Scrivere il più grande dei due costa 400 unità di scrittura.

Approfondisci

Vedi tipi di dati DynamoDB e converti strutture annidate con il convertitore JSON. Scarica DynoTable per modificare attributi di tipo lista e set.

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Misurato e riprodotto il 2026-07-28 su DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0 — il conteggio degli elementi, il confine di annidamento, i round trip sui set e le stringhe di errore qui sopra sono output del motore, non stime. La formulazione delle stringhe di errore può differire sul servizio live.

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.