Quando você não deve usar o DynamoDB?
Pule o DynamoDB quando a sua carga de trabalho for analítica ou os seus padrões de acesso forem desconhecidos. O DynamoDB é feito sob medida para cargas operacionais (OLTP) com padrões de acesso conhecidos e baseados em chave — ele não tem joins nem funções de agregação, e consultas ad-hoc caem em scans de tabela inteira, que são caros. Para relatórios OLAP ou necessidades relacionais em evolução, escolha outro motor.
Encaixes ruins
- Análises e relatórios ad-hoc (OLAP) — não existe
GROUP BY,SUMouAVG; todo consolidado é um scan ou um agregado pré-computado que você mantém por conta própria. Veja o guia de agregação para os contornos. - Schemas relacionais normalizados — o DynamoDB omite deliberadamente o operador JOIN; a própria orientação da AWS é desnormalizar.
- Padrões de acesso desconhecidos ou em rápida evolução — você projeta as chaves em torno das consultas. Quando você ainda não consegue nomear as consultas, cada nova arrisca um redesenho de tabela ou um scan completo.
- Busca full-text e consultas ricas — veja o DynamoDB suporta busca full-text?; busca pertence a um índice de busca.
- Objetos grandes — itens têm teto de 400 KB; mídia e documentos pertencem ao S3, com um ponteiro na tabela.
O consolidado, recusado e depois precificado
O desencaixe analítico não é questão de gosto. Peça ao DynamoDB uma contagem agrupada em PartiQL e a instrução é rejeitada antes de ler qualquer coisa:
SELECT status, COUNT(*) FROM "orders" GROUP BY statusValidationException: Unsupported clause: GROUP BY
HTTP 400Tire o agrupamento e peça só o total, e ela falha um passo antes, no parser:
SELECT COUNT(*) FROM "orders"ValidationException: Unexpected path component at 1:8:5
HTTP 400COUNT não é sequer uma função neste dialeto, então o parser o lê como um caminho de atributo e desiste no parêntese.
Sobra o Scan que você mesmo escreve, e ele tem um preço. Ler uma tabela de 50 GB de ponta a ponta custa 6.553.600 unidades de leitura eventualmente consistentes, que é o tamanho agregado escaneado em unidades de 4 KB, dividido pela metade. Em us-east-1 no on-demand isso dá US$0,82.
Atualize esse único número de hora em hora e são US$598 por mês. Manter o contador conforme você escreve, ou exportar para um armazenamento analítico, é a resposta mais barata — e ambas são trabalho que o DynamoDB não está fazendo por você.
Onde ele brilha
A lista inversa é exatamente o ponto forte do DynamoDB: cargas operacionais de alto volume com leituras e escritas previsíveis baseadas em chave que precisam se manter em milissegundos de um dígito em qualquer escala — carrinhos, sessões, perfis, estado de jogo, eventos de IoT. O guia sobre quando usar o DynamoDB monta o argumento a favor.
Aprofunde-se
Se você está em cima do muro, leia quando usar o DynamoDB em seguida. Já está no DynamoDB e sente falta de SQL? O DynoTable roda JOIN e GROUP BY contra tabelas ao vivo a partir do desktop — e a calculadora de preços te diz quanto a sua carga custaria antes de você se comprometer.
Referências
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima. O valor de 400 KB foi reconfirmado em 2026-07-28; a AWS o moveu da página de service quotas para Constraints.html.
Reproduzido em 2026-07-28 no DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 no Node v24.18.0; ambas as mensagens de ValidationException são literais. O custo do Scan é calculado a partir das tarifas de us-east-1 da nossa tabela de preços sincronizada da AWS.