PartiQL para DynamoDB na Prática
é uma linguagem de consulta compatível com SQL para o DynamoDB. É mais amigável que a API bruta para trabalho ad-hoc — mas roda no mesmo motor, então as mesmas regras de chave (e os mesmos custos) se aplicam por baixo da sintaxe familiar.
Como você escreve consultas PartiQL para o DynamoDB?
O PartiQL dá ao DynamoDB quatro instruções em formato SQL — SELECT, INSERT, UPDATE
e DELETE — executadas via ExecuteStatement. Cada uma compila para uma operação nativa
por baixo, então filtrar pela continua sendo um
Query, enquanto omiti-la vira um Scan de tabela inteira. As escritas ainda miram um item
pela sua ; não existe JOIN, GROUP BY ou agregação relacional.
SELECT
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND begins_with("SK", 'ORDER#')Filtre pela e isto é um Query. Omita a chave de partição e
o PartiQL silenciosamente roda um Scan de tabela inteira — a mesma cilada,
só que escondida atrás de um SELECT *.
INSERT
INSERT INTO "AppData" VALUE {'PK': 'CUSTOMER#42', 'SK': 'PROFILE', 'plan': 'pro'}UPDATE
UPDATE "AppData" SET "plan" = 'enterprise'
WHERE "PK" = 'CUSTOMER#42' AND "SK" = 'PROFILE'DELETE
DELETE FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND "SK" = 'ORDER#2026-001'Consultando um índice
Use o nome do índice na cláusula FROM:
SELECT * FROM "AppData"."GSI1" WHERE "GSI1PK" = 'STATUS#OPEN'O WHERE também suporta IN, contains() e begins_with():
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND "SK" IN ['ORDER#1', 'ORDER#2']Instruções parametrizadas
Use placeholders ? em vez de embutir valores inline — isso contorna problemas de
aspas/injeção e deixa o SDK fazer o marshalling dos tipos para você:
SELECT * FROM "AppData" WHERE "PK" = ? AND begins_with("SK", ?)Passe Parameters: [{ S: 'CUSTOMER#42' }, { S: 'ORDER#' }] para ExecuteStatement.
Lote e transações
BatchExecuteStatement— até 25 instruções em uma ida ao servidor. Mais rápido, mas sem atomicidade entre itens (cada uma tem sucesso ou falha por conta própria).ExecuteTransaction— até 100 instruções, tudo ou nada. Use quando várias escritas precisam ser confirmadas juntas.
A cilada do PartiQL
O PartiQL parece SQL mas roda no motor do DynamoDB, então hábitos de SQL saem pela culatra:
- Um único
UPDATE/DELETEdeve mirar um item pela sua completa — não existe atualização em massaUPDATE … WHERE status = 'x'(faça um loop com um lote em vez disso). - Sem
JOIN, semGROUP BY, sem agregados (COUNT/SUM/AVG). Veja PartiQL vs SQL. - Omitir a chave de partição transforma qualquer
SELECTem um Scan de tabela inteira — limitado apenas pela sua conta.
Quando você genuinamente precisa de um JOIN, um GROUP BY ou um agregado, a SQL
Workbench do DynoTable os executa no lado do cliente sobre as linhas que você puxou — o SQL que o PartiQL
não fala, dentro das regras de padrão de acesso do DynamoDB.
O PartiQL não muda os tipos de dados subjacentes — os valores ainda vão pela rede como DynamoDB-JSON, que você pode inspecionar com o conversor.
Experimente o DynoTable para executar instruções PartiQL com autocomplete ciente do esquema e navegar pelos resultados em uma visualização de tabela ordenável.