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.
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.