PartiQL para DynamoDB com Exemplos
PartiQL é uma linguagem de consulta compatível com SQL para o DynamoDB. É mais amigável que a API crua para trabalho ad-hoc — mas roda no mesmo mecanismo, então as mesmas regras de chave (e os mesmos custos) se aplicam por baixo da sintaxe familiar.
SELECT
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND begins_with("SK", 'ORDER#')Filtre pela chave de partição e isto é um Query. Omita a chave de partição e o
PartiQL silenciosamente roda um Scan de tabela inteira — a mesma armadilha,
só que escondida por trá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'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 — isso evita 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.
Batch e transações
BatchExecuteStatement— até 25 instruções em uma única ida e volta. 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-o quando várias escritas precisam ser confirmadas juntas.
A armadilha do PartiQL
O PartiQL parece SQL, mas roda no mecanismo do DynamoDB, então os hábitos de SQL se voltam contra você:
- Um único
UPDATE/DELETEprecisa atingir um item pela sua chave primária completa — não existeUPDATE … WHERE status = 'x'em massa (faça um laço com um batch). - Sem
JOIN, semGROUP BY, sem agregações (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ê realmente precisa de um JOIN, um GROUP BY ou uma agregação, o SQL Workbench
do DynoTable os roda 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 rodar instruções PartiQL com autocompletar e ver as unidades de leitura que cada uma consome.