Iniciante2 min de leitura

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/DELETE precisa atingir um item pela sua chave primária completa — não existe UPDATE … WHERE status = 'x' em massa (faça um laço com um batch).
  • Sem JOIN, sem GROUP BY, sem agregações (COUNT/SUM/AVG). Veja PartiQL vs SQL.
  • Omitir a chave de partição transforma qualquer SELECT em 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.

Atualizado