Ferramenta gratuita

Construtor de Consultas do DynamoDB

Componha a solicitação Query ou Scan completa — tabela, índice, key condition, filtro, projeção, Limit, ordem de classificação, leituras consistentes e paginação — e copie um programa executável para AWS SDK v3, CLI ou boto3, ou a instrução PartiQL.

Componha sua solicitação
Opções da solicitação
Código executável
import { DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({});

const params = {
  "TableName": "Orders",
  "KeyConditionExpression": "#hashKey = :hashKeyValue AND begins_with(#rangeKey, :rangeKeyValue)",
  "ExpressionAttributeNames": {
    "#hashKey": "pk",
    "#rangeKey": "sk"
  },
  "ExpressionAttributeValues": {
    ":hashKeyValue": {
      "S": "USER#123"
    },
    ":rangeKeyValue": {
      "S": "ORDER#"
    }
  },
  "Limit": 25
};

const items = [];
let lastEvaluatedKey;
do {
  const page = await client.send(
    new QueryCommand({ ...params, ExclusiveStartKey: lastEvaluatedKey })
  );
  items.push(...(page.Items ?? []));
  lastEvaluatedKey = page.LastEvaluatedKey;
} while (lastEvaluatedKey);

console.log(items);

Do padrão de acesso à solicitação executável

A expressão raramente é o trabalho todo. Uma Query de produção também decide qual índice ler, quantos itens avaliar por solicitação, em que direção a chave de ordenação corre, se a leitura precisa ser fortemente consistente e o que acontece quando a resposta volta com um LastEvaluatedKey. Esses parâmetros no nível da solicitação vivem fora da string da expressão — e é aí que os trechos copiados costumam dar errado.

Este construtor trata a solicitação como a unidade de trabalho. Você compõe a key condition, o filtro e a projeção sobre o mesmo modelo tipado e à prova de palavras reservadas que o nosso Construtor de Expressões usa, e define ao lado as opções da solicitação. A saída não é um fragmento: é um programa que você pode executar — imports, configuração do cliente, a própria chamada e, quando você ativa “Buscar todas as páginas”, o laço de ExclusiveStartKey que esvazia todas as páginas de resultados.

O código gerado é honesto com cada destino. A AWS CLI pagina sozinha, então o Limit dela vira --page-size e uma execução de solicitação única recebe --no-paginate; o PartiQL recusa os parâmetros que pertencem à API ExecuteStatement, e não à instrução; e uma Query descendente vira ORDER BY na sua chave de ordenação onde isso é exprimível.

Precisa só da expressão em si — uma expressão de condição, de filtro ou de atualização com seus mapas de placeholders, para qualquer uma das seis operações? O Construtor de Expressões do DynamoDB foi feito exatamente para isso. Ainda decidindo entre as duas operações de leitura? Query vs Scan mostra quando cada uma é a escolha certa.

Perguntas frequentes

Qual é a diferença em relação ao Construtor de Expressões do DynamoDB?

Eles dividem o problema de propósito. O Construtor de Expressões trata da sintaxe das expressões — key conditions, filtros, expressões de atualização e de condição com seus mapas ExpressionAttributeNames/Values — nas seis operações, e emite o comando puro. O Construtor de Consultas trata da solicitação Query ou Scan completa: tabela e índice, key condition, filtro, projeção, mais os parâmetros no nível da solicitação que a ferramenta de expressões não expõe (Limit, ordem de classificação, ConsistentRead, ExclusiveStartKey), e emite um programa executável com a configuração do cliente e um laço de paginação opcional.

O que o Limit realmente limita em uma Query ou um Scan?

O Limit define quantos itens o DynamoDB avalia por solicitação, não quantos itens correspondentes você recebe de volta. Os filtros rodam depois da leitura, então uma Query com Limit 25 e uma FilterExpression pode retornar menos de 25 itens — ou nenhum — e ainda assim consumir a capacidade de leitura de tudo o que foi avaliado, e a paginação continua a partir do LastEvaluatedKey. Na AWS CLI, que pagina automaticamente, o mesmo parâmetro é definido com --page-size.

Como funciona a paginação do DynamoDB (LastEvaluatedKey)?

Uma resposta de Query ou Scan com mais dados inclui um LastEvaluatedKey — a chave primária do último item lido. Você o devolve como ExclusiveStartKey na próxima solicitação e repete até chegar uma resposta sem ele. Ative “Buscar todas as páginas” e os programas gerados para SDK v3 e boto3 conterão exatamente esse laço; a AWS CLI percorre as páginas sozinha, a menos que você passe --no-paginate.

Quando posso usar uma leitura fortemente consistente?

ConsistentRead funciona em tabelas base e índices secundários locais, mas não em índices secundários globais — uma Query contra um GSI com ConsistentRead definido é rejeitada. Uma leitura fortemente consistente também consome o dobro da capacidade de leitura de uma eventualmente consistente. É um parâmetro da API, e não parte do texto da instrução PartiQL — por isso a aba PartiQL a recusa com honestidade.

Algo que eu digito aqui é enviado para algum lugar?

Não. Esta é uma página estática: a solicitação é composta e o código é gerado inteiramente no seu navegador, então nomes de tabela, valores de chave e filtros nunca chegam a um servidor. “Copiar link” empacota a solicitação inteira na URL — compartilhar esse link é a única forma de algo que você digitou sair da página, e isso fica nas suas mãos.

Trabalhe com o DynamoDB sem o Console

O DynoTable é um cliente desktop rápido para o DynamoDB — navegue pelas tabelas, execute consultas no estilo SQL e edite itens localmente.