O DynamoDB suporta junções?
Não no próprio banco de dados. Como um banco de dados não relacional, o DynamoDB não tem operação JOIN e o PartiQL não adiciona uma, portanto, para leituras de produção, você modela dados relacionados: desnormaliza (duplica ou incorpora para que cada padrão de acesso seja uma consulta) ou usa design de tabela única para co-localizar itens relacionados em uma chave de partição. Mas você ainda pode executar uma junção real em suas tabelas DynamoDB a partir de um cliente: o SQL Workbench do DynoTable executa JOIN, GROUP BY reais e consultas agregadas em seus dados ativos.
Por que o banco de dados não tem join
O DynamoDB foi desenvolvido para leituras previsíveis de milissegundos de um dígito em qualquer escala. A adesão em tempo de leitura faria com que a latência dependesse da quantidade de dados relacionados existentes, o que quebra essa garantia. Portanto, para seus padrões de acesso modelados, a junção é feita por você no momento da gravação.
O que acontece se você tentar
PartiQL rejeita a instrução no analisador, antes de ler qualquer coisa. Tanto a junção explícita quanto a junção cruzada por vírgula falham da mesma maneira:
SELECT o."total", c."name" FROM "Orders" o JOIN "Customers" c ON o."pk" = c."id"
SELECT * FROM "Orders", "Customers"ValidationException: Only select from a single table or index is supported.
HTTP 400Portanto, não há nenhuma alternativa lenta, mas funcional, a ser descoberta na produção. Uma instrução nomeando duas tabelas é um erro de sintaxe, e o trabalho precisa ser movido para outro lugar: para o seu modelo de dados ou para um cliente que faz a parte relacional sozinho.
O que você faz para padrões de acesso modelados
- Desnormalização — copie ou incorpore os dados relacionados que você lê juntos.
- Design de tabela única — armazena vários tipos de entidade em uma tabela com chaves sobrecarregadas, para que uma coleção de itens os leia juntos em uma consulta.
- Listas de adjacência — modele relacionamentos muitos para muitos como itens que você consulta por chave.
Eles mantêm a produção lendo uma única solicitação. Passo a passo completo em junções de DynamoDB.
Execute um JOIN real com DynoTable
Para a pergunta ad-hoc entre tabelas que você não modelou - "quais clientes da UE gastaram mais de US$ 500 no mês passado?" em uma tabela Orders e Customers — DynoTable executa essa junção para você. É um cliente DynamoDB de desktop e seu SQL Workbench executa JOIN, GROUP BY reais e consultas agregadas: ele lê os itens por meio do DynamoDB API normal e, em seguida, executa a parte relacional da consulta no cliente. Portanto, isso funciona em tabelas que não possuem relacionamento definido e em um mecanismo de consulta sem palavra-chave JOIN:
SELECT c.name, SUM(o.total) AS spend
FROM Customers c
JOIN Orders o ON o.customerId = c.id
WHERE c.region = 'EU'
GROUP BY c.namePrefere não escrever SQL? Tabelas Inteligentes são a via visual para o mesmo mecanismo de junção: desenhe uma linha de relacionamento entre duas tabelas em uma tela e navegue pelas linhas unidas.
A advertência honesta, "dentro das regras de padrão de acesso do DynamoDB": o Workbench ainda lê o DynamoDB, portanto, as junções mais rápidas são aquelas cujo atributo ON ou cláusula WHERE atinge uma chave de partição ou GSI em pelo menos um lado, permitindo que o DynamoDB execute uma consulta em vez de uma varredura completa. Consulte /docs/dynamodb-sql-workbench para o comportamento do Workbench e /docs/smart-tables para a tela de junção visual. O DynoTable permite que você faça a pergunta de junção em vez de costurar os resultados à mão no código; não revoga as restrições acima. Entre os clientes GUI do DynamoDB, é o único "sim, você pode ingressar" que é realmente verdade: o PartiQL e o próprio NoSQL Workbench do AWS param na parede de tabela única.
Para leituras de tabela única que evitam totalmente junções, esboce chaves sobrecarregadas no ferramenta de design de tabela única antes de modelar cópias desnormalizadas de dados relacionados.
A compensação
Para caminhos de leitura de produção, você faz um trabalho mais cuidadoso nas escritas para tornar as leituras baratas e em tempo constante.
Aprofunde-se
Leia junções DynamoDB, design de tabela única e relacionamentos um-para-muitos. Baixe DynoTable para executar um JOIN real em suas tabelas, no SQL ou visualmente com Smart Tables.
Referências
- Consultar dados no DynamoDB (SQL a NoSQL) — Guia do desenvolvedor do Amazon DynamoDB
- Instruções de seleção do PartiQL para DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Práticas recomendadas para design do NoSQL — Guia do desenvolvedor do Amazon DynamoDB
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.
O ValidationException acima foi reproduzido em 28/07/2026 em relação ao DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 e é citado literalmente.