O DynamoDB suporta SQL?
Parcialmente. DynamoDB suporta PartiQL, uma linguagem de consulta compatível com SQL para instruções SELECT, INSERT, UPDATE e DELETE. Não é SQL completo: não há JOINs, nem GROUP BY, nem agregações arbitrárias, e consultas eficientes ainda exigem o direcionamento da chave primária ou de um índice. Se você quiser essas peças que faltam, o SQL Workbench do DynoTable executa JOIN, GROUP BY reais e consultas agregadas em suas tabelas DynamoDB a partir do desktop.
O que o PartiQL oferece
Uma sintaxe SQL familiar para as quatro operações de dados. Você pode escrever SELECT * FROM "Orders" WHERE ... em vez de construir chamadas API de baixo nível, o que é conveniente e legível.
O que isso não te dá
- Sem JOINs — DynamoDB não é relacional; você desnormaliza em vez disso.
- Sem GROUP BY / agregados — o agrupamento e a soma acontecem em seu aplicativo.
- Não há varreduras de formato livre baratas — um
SELECTsem uma condição chave ainda executa uma varredura e custa de acordo.
Onde o analisador para
Esses não são recursos que você pode alcançar com sintaxe diferente. Execute-os e a instrução nunca chegará ao ponto de ler um item:
SELECT "region", SUM("total") FROM "Orders" GROUP BY "region"
ValidationException: Unsupported clause: GROUP BY
SELECT COUNT(*) FROM "Orders"
ValidationException: Unexpected path component at 1:8:5
SELECT SUM("total") FROM "Orders"
ValidationException: Unexpected path component at 1:8:3
SELECT DISTINCT "region" FROM "Orders"
ValidationException: Unsupported token in expression: DISTINCTVeja o que dizem os erros agregados. Não há nenhuma função agregada para o analisador desativar, então COUNT(*) é lido como um caminho de atributo e cai no *, na coluna 8. Isso mostra o quão fina é a superfície do SQL.
ORDER BY é quem deve conhecer, porque parece que funciona:
SELECT * FROM "Orders" WHERE "pk" = 'U#1' ORDER BY "total"
ValidationException: Variable reference total in ORDER BY clause must be part of the primary keyVocê pode classificar pela chave de classificação, crescente ou decrescente, e nada mais. Classificar por qualquer outro atributo é tarefa do seu aplicativo, após a leitura.
O modelo mental
Pense no PartiQL como uma camada de sintaxe sobre as operações existentes de consulta, varredura e gravação do DynamoDB; as mesmas regras de padrão de acesso se aplicam abaixo.
Real SQL (JOIN, GROUP BY, agregados) com DynoTable
PartiQL para em SELECT de tabela única. O SQL Workbench do DynoTable vai além: ele executa JOIN, GROUP BY reais e funções agregadas (COUNT, SUM, AVG, MIN, MAX) em suas tabelas DynamoDB. Ele lê os itens através do DynamoDB API normal e, em seguida, executa a parte relacional da consulta no cliente: SQL dentro das regras de padrão de acesso do DynamoDB, já que cada junção ainda lê uma chave ou índice real. Portanto, as três coisas que o PartiQL não pode fazer, você escreve como uma declaração:
SELECT c.region, COUNT(*) AS orders, SUM(o.total) AS revenue
FROM Orders o
JOIN Customers c ON o.customerId = c.id
GROUP BY c.regionEle permanece honesto sobre as restrições subjacentes (uma junção ilimitada é uma leitura ilimitada), portanto, as consultas mais rápidas são aquelas cuja junção ou WHERE atinge uma chave ou índice de partição. Detalhes completos em SQL para DynamoDB e no manual do produto em /docs/dynamodb-sql-workbench.
Prototipe o lado PartiQL do mesmo modelo de dados com o
Construtor de consultas DynamoDB — emite
Programas Query que permanecem no caminho eficiente que PartiQL SELECT usa quando uma chave
condição está presente.
Aprofunde-se
Compare os dois em PartiQL vs SQL, consulte Exemplos de PartiQL e leia SQL para DynamoDB. Baixe DynoTable para gravar PartiQL e JOIN, GROUP BY e agregados reais em suas tabelas.
Referências
- PartiQL - uma linguagem de consulta compatível com SQL para Amazon DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Instruções de seleção do PartiQL para DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Consultar dados no DynamoDB (SQL a NoSQL) — Guia do desenvolvedor do Amazon DynamoDB
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.
Cada 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, deslocamentos de coluna incluídos.