O DynamoDB consegue armazenar JSON?

Sim. O DynamoDB consegue armazenar JSON mapeando-o para seus tipos de documento: map (M) para objetos e list (L) para arrays, aninhados até 32 níveis de profundidade. Cada item comporta até 400 KB. O sistema de tipos do DynamoDB é um superconjunto do JSON, então qualquer documento JSON pode ser armazenado como um item e depois filtrado, atualizado e lido.

Como o JSON mapeia para os tipos do DynamoDB

  • Objeto JSON → Map (M)
  • Array JSON → List (L)
  • string / número / booleano / null → S / N / BOOL / NULL

Listas e mapas podem aninhar até 32 níveis de profundidade, então um documento JSON completo vira um único item.

O tamanho armazenado é menor que o do JSON

O formato de tráfego com marcação de tipo parece um desperdício, e as pessoas presumem que são cobradas por ele. Não são. O DynamoDB cobra pelo tamanho do item, que é a soma de cada nome de atributo mais cada valor, sem nenhuma das aspas, dois-pontos, vírgulas ou chaves do JSON.

Um documento de pedido com nove atributos, um endereço aninhado, um array de duas linhas de itens e uma lista de duas tags mede de três formas diferentes:

MediçãoBytes
DynamoDB JSON como enviado no tráfego607
O mesmo documento como JSON simples minificado447
Tamanho de item cobrado350

Ou seja, o item armazenado é 22% menor que o JSON de onde você partiu, e 42% menor que a requisição que o transportou. Os números fazem a maior parte do trabalho: 149.97 armazena em cerca de 4 bytes contra 6 caracteres de texto. Strings e nomes são contados exatamente; a AWS documenta a codificação numérica como aproximadamente um byte a cada dois dígitos significativos, então leia 350 como preciso até alguns bytes, e não até o byte.

O que custa caro é dar nomes. Nomes de atributos e chaves de mapa respondem por 148 daqueles 350 bytes, 42% do item, e você os paga em cada cópia. Encurtar shippingAddress para addr em um bilhão de itens é uma economia real. Você pode dimensionar qualquer documento na calculadora de tamanho de item, que nós conferimos contra o próprio limite de cobrança do motor: itens que ela coloca em 1.024 bytes consomem uma unidade de escrita, e 1.025 consome duas.

O que o JSON perde na ida e volta

O DynamoDB armazena números como decimais com 38 dígitos de precisão, então um número JSON é normalizado em vez de preservado. Escrito e lido de volta na sequência:

{"price": 19.90}             ->  {"price": {"N": "19.9"}}
{"qty": 1.0}                 ->  {"qty": {"N": "1"}}
{"limit": 1e5}               ->  {"limit": {"N": "100000"}}
{"id": 9007199254740993}     ->  {"id": {"N": "9007199254740993"}}

Essa última linha é a útil. O DynamoDB mantém o inteiro exatamente, e JSON.parse('{"id":9007199254740993}') no Node te dá 9007199254740992. Se os IDs importam, armazene-os como strings.

Dois documentos JSON que o DynamoDB não aceita de jeito nenhum: uma chave vazia ({"": "x"} levanta ValidationException: Empty attribute name, e o mesmo vale dentro de um mapa aninhado) e um número além do limite de precisão, que levanta ValidationException: DynamoDB only supports precision up to 38 digits.

A única ressalva

Os tipos do DynamoDB são um superconjunto dos do JSON. Atributos Binary (B) e Set (SS/NS/BS) não têm equivalente direto em JSON, então sets serializam para arrays e binário para base64 quando você converte de volta para JSON simples.

Trabalhando com isso

Você pode operar diretamente sobre atributos JSON aninhados — filtrar por um campo de mapa, atualizar um elemento de lista — sem reescrever o item inteiro.

Aprofunde-se

Veja DynamoDB JSON e marshalling, e converta entre JSON simples e DynamoDB JSON com o conversor de JSON. Baixe o DynoTable para editar itens JSON visualmente.

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. As três contagens de bytes vêm da nossa própria calculadora de tamanho de item e da requisição serializada; as idas e voltas dos números e as duas strings de ValidationException são saída literal do DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0, cuja redação das mensagens pode diferir do 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.