O DynamoDB pode armazenar arrays?
Sim. O DynamoDB armazena arrays usando o tipo List (L) — uma coleção ordenada que pode conter tipos mistos, incluindo strings, números, booleanos, nulos, mapas e listas aninhadas. Para coleções não ordenadas de valores únicos, ele também oferece Sets de String, Número e Binário. Não há limite de quantidade de elementos, desde que o item fique abaixo de 400 KB.
Listas (arrays ordenados)
Uma List preserva a ordem e admite duplicatas e tipos mistos. Ela mapeia diretamente para um array JSON e pode aninhar (listas de mapas, listas de listas) até 32 níveis de profundidade.
Esse limite documentado conta o valor lá no fundo. Envolver uma string em 31 contêineres L aninhados grava sem problema; um 32º contêiner falha, e o mesmo limite vale para M aninhados:
ValidationException: Nesting Levels have exceeded supported limits:
Attributes in the item have nested levels beyond supported limitSets (valores únicos)
- String Set (SS), Number Set (NS) e Binary Set (BS) guardam valores únicos de um só tipo, sem ordem.
- Um set não pode ser vazio (isso gera um
ValidationException).
Use um Set quando pertencimento e unicidade importam; use uma List quando ordem ou tipos mistos importam.
Sets reordenam e rejeitam duplicatas
Armazene ["zulu", "alpha", "mike"] como um String Set e ele volta como ["alpha", "mike", "zulu"]. Um Number Set ordena numericamente: ["30", "4", "100"] retorna ["4", "30", "100"]. Os mesmos valores em uma List voltam na ordem em que você os escreveu.
Um membro repetido é uma falha dura, e não uma remoção silenciosa de duplicatas:
ValidationException: Input collection contains duplicatesE como um set nunca pode ser vazio, aplicar DELETE no seu último membro remove o atributo. Um código que espera receber um set vazio recebe um atributo ausente, então teste com attribute_exists em vez de comprimento zero.
Quantos elementos cabem de fato
"Sem limite de quantidade de elementos" é exato e difícil de usar na prática. A resposta útil é 400 KB divididos pelo que um elemento custa: uma lista carrega 3 bytes de overhead, e depois o tamanho de cada elemento mais 1 byte.
Para strings UUID de 36 caracteres sob uma chave de partição de um caractere, isso dá 11.070 elementos. Adicionar o 11.071º é rejeitado:
ValidationException: Item size has exceeded the maximum allowed sizeA calculadora de tamanho de item mede esses dois itens em 409.599 e 409.636 bytes, ou seja, ela traça a linha dos 409.600 bytes exatamente onde o motor a traça. Gravar o maior deles custa 400 unidades de escrita.
Aprofunde-se
Veja tipos de dados do DynamoDB e converta estruturas aninhadas com o conversor de JSON. Baixe o DynoTable para editar atributos de lista e de set.
Referências
- 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
Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.
Medido e reproduzido em 2026-07-28 no DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 — a contagem de elementos, o limite de aninhamento, as idas e voltas com sets e as strings de erro acima são saída do motor, não estimativas. A redação das strings de erro pode ser diferente no serviço ao vivo.