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 limit

Sets (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 duplicates

E 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 size

A 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

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.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.