Kann DynamoDB Arrays speichern?
Ja. DynamoDB speichert Arrays über den List-Typ (L) — eine geordnete Sammlung, die gemischte Typen aufnehmen kann, darunter Strings, Zahlen, Booleans, Nulls, Maps und verschachtelte Listen. Für ungeordnete Sammlungen eindeutiger Werte gibt es außerdem String-, Number- und Binary-Sets. Es gibt keine Obergrenze für die Anzahl der Elemente, solange das Item unter 400 KB bleibt.
Listen (geordnete Arrays)
Eine Liste bewahrt die Reihenfolge und erlaubt Duplikate und gemischte Typen. Sie bildet direkt auf ein JSON-Array ab und lässt sich bis zu 32 Ebenen tief verschachteln (Listen von Maps, Listen von Listen).
Dieses dokumentierte Limit zählt den Wert ganz unten mit. Einen String in 31 verschachtelte L-Container zu packen schreibt sauber; ein 32. Container scheitert, und dieselbe Grenze gilt für verschachtelte M:
ValidationException: Nesting Levels have exceeded supported limits:
Attributes in the item have nested levels beyond supported limitSets (eindeutige Werte)
- String Set (SS), Number Set (NS), Binary Set (BS) halten eindeutige Werte eines Typs, ungeordnet.
- Ein Set darf nicht leer sein (das löst eine
ValidationExceptionaus).
Nimm ein Set, wenn Mitgliedschaft und Eindeutigkeit zählen; nimm eine Liste, wenn Reihenfolge oder gemischte Typen zählen.
Sets sortieren um und lehnen Duplikate ab
Speicherst du ["zulu", "alpha", "mike"] als String Set, liest es sich als ["alpha", "mike", "zulu"] zurück. Ein Number Set sortiert numerisch: ["30", "4", "100"] kommt als ["4", "30", "100"] zurück. Dieselben Werte in einer Liste kommen in der Reihenfolge zurück, in der du sie geschrieben hast.
Ein wiederholtes Element ist ein harter Fehler und keine stille Entdopplung:
ValidationException: Input collection contains duplicatesUnd da ein Set nie leer sein kann, entfernt ein DELETE seines letzten Elements das Attribut. Code, der ein leeres Set zurückerwartet, bekommt stattdessen ein fehlendes Attribut — prüfe also mit attribute_exists statt auf Länge null.
Wie viele Elemente tatsächlich hineinpassen
„Keine Obergrenze für die Anzahl der Elemente" stimmt und hilft wenig. Die nutzbare Antwort ist 400 KB geteilt durch das, was ein Element kostet: Eine Liste trägt 3 Bytes Overhead, dann kommt die Größe jedes Elements plus 1 Byte.
Für 36 Zeichen lange UUID-Strings unter einem einzeichigen Partition Key landet das bei 11.070 Elementen. Ein 11.071. wird abgelehnt:
ValidationException: Item size has exceeded the maximum allowed sizeDer Item-Size-Rechner beziffert diese beiden Items mit 409.599 und 409.636 Bytes — er zieht die 409.600-Byte-Grenze also genau dort, wo die Engine sie zieht. Das größere zu schreiben kostet 400 Schreibeinheiten.
Tiefer einsteigen
Siehe DynamoDB-Datentypen und konvertiere verschachtelte Strukturen mit dem JSON-Konverter. Lade DynoTable herunter, um List- und Set-Attribute zu bearbeiten.
Referenzen
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.
Am 2026-07-28 gegen DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 gemessen und reproduziert — die Elementanzahl, die Verschachtelungsgrenze, die Set-Roundtrips und die Fehler-Strings oben sind Engine-Ausgabe, keine Schätzungen. Die Formulierung der Fehler-Strings kann auf dem Live-Dienst abweichen.