Filtros e padrões de consulta

Toda aba de tabela carrega um filtro: o estado de predicado que o DynoTable transforma em uma requisição do DynamoDB. Entender como as peças se traduzem em query ou scan é a maior parte do que torna o app rápido e a sua conta baixa.

Esta página cobre o modo de aba Visual. Para escrever consultas no estilo SQL diretamente, mude para o PartiQL; para joins e agregações, abra um Workbench.

A linha de filtro

O modo visual mostra uma única linha horizontal de pílulas:

[Index] [hashKey = value] [rangeKey op value] [+ filter] | [Clear] [Query/Scan]
  • Pílula de índice — o padrão de consulta pelo qual você lê.
  • Pílulas de chave — a chave de partição (hash) e, quando presente, a chave de ordenação (range) desse padrão.
  • Pílulas de filtro — condições adicionais fora das chaves (filtros de scan).
  • O botão de ação mostra Query ou Scan dependendo do que você configurou, e vira Carregar mais assim que os resultados começam a ser transmitidos.

Defina um valor e o DynoTable executa automaticamente; limpar ou editar uma pílula roda de novo assim que o filtro voltar a ser válido.

A linha de filtro visual: o seletor de índice, as pílulas de chave, um filtro de scan adicionado e o botão de execução.
A linha de filtro visual: o seletor de índice, as pílulas de chave, um filtro de scan adicionado e o botão de execução.

Query patterns

Um padrão de consulta é o índice pelo qual você lê:

  • PRIMARY — a própria / da tabela.
  • Um ou nomeado — com seu próprio esquema de chaves.

O padrão escolhido decide em quais chaves você pode filtrar. Troque de padrão pela pílula de índice; as pílulas de chave se atualizam para a chave de partição e de ordenação daquele padrão.

Query vs scan

Esta é a distinção que importa para custo e velocidade:

  • Defina um filtro de e o DynoTable emite uma direcionada — ele lê apenas a partição correspondente. Barata e rápida.
  • Sem um filtro assim, ele recai em um , que lê a tabela (ou o índice) inteira, página por página. O botão de ação mostra Scan para deixar isso explícito.

Filtros de chave

A pílula de chave de partição recebe um valor; a ação vira Query no momento em que ela é definida. A pílula de chave de ordenação adiciona uma comparação por cima:

  • =, <, <=, >, >= — comparações ordenadas (numéricas e lexicográficas em strings).
  • begins_with — correspondência de prefixo em strings ou binários.
  • between — um intervalo inclusivo; a pílula ganha um segundo campo de valor.

Chaves do tipo string oferecem autocompletar a partir dos valores do índice local. Veja Estatísticas da tabela para saber como o índice é construído e o que ele cobre. Chaves sem sugestões úteis (UUIDs aleatórios, por exemplo) recaem em um campo de texto simples.

Filtros de scan

A pílula + filter adiciona uma condição fora das chaves — qualquer atributo, não só chaves. Cada filtro é uma coluna, um operador e um valor:

  • Comparações: =, , <, <=, >, >=, between.
  • Pertencimento: in — corresponde a qualquer valor de uma lista (strings ou números).
  • String / binário: begins_with, contains.
  • Existência: exists, not exists.
  • Tipo: type equals / type not equals (contra o código de tipo do DynamoDB — S, N, BOOL, …), além de uma família size para tipos de coleção.

Os operadores oferecidos se adaptam ao tipo do atributo — comparações de ordenação aparecem para números, begins_with para strings. Os filtros de scan se aplicam depois que a query ou o scan lê os itens, então eles restringem o resultado, mas não tornam um scan mais barato. Use um filtro de chave para cortar a leitura; use filtros de scan para refinar o que volta.

Single-table design: chaves compostas

Os single-table designs empacotam vários tipos de entidade em uma única tabela atrás de um prefixo de chave — USER#123, ORDER#456, TENANT#acme. O DynoTable reconhece isso por conta própria, sem nada para configurar:

  • As chaves são decodificadas no lugar. Um valor composto — um prefixo em maiúsculas unido ao resto por #, | ou ~ — é renderizado como suas partes rotuladas em toda grade: a tabela, os resultados do PartiQL e o Workbench. Valores comuns que apenas contêm um desses caracteres (uma cor hex como #FF5733, uma lista separada por pipe) são deixados exatamente como estão.
  • Filtre para uma entidade com um clique. Clique com o botão direito em uma linha e escolha Filter to USER# — o prefixo é lido direto da chave daquela linha. O DynoTable aplica um begins_with real na chave como uma pílula de filtro comum, que você limpa do jeito de sempre (o dela ou Clear). Quando a chave de partição e a chave de ordenação de uma linha estão ambas prefixadas, você ganha uma opção para cada.

Não há diálogo, configuração nem nada salvo — é derivado ao vivo das chaves que estão na sua frente.

O menu de clique-direito da linha sobre uma tabela sobrecarregada — as facetas Filter to USER# e Filter to POST# acima das chaves decodificadas em segmentos rotulados.
O menu de clique-direito da linha sobre uma tabela sobrecarregada — as facetas Filter to USER# e Filter to POST# acima das chaves decodificadas em segmentos rotulados.

Ordenação e paginação

A pílula de chave de ordenação carrega um toggle de ordem de ordenação (ascendente / descendente) que mapeia para o ScanIndexForward do DynamoDB. Os resultados são transmitidos uma página por vez — Carregar mais busca a próxima página, e mudar o tamanho da página recarrega a partir da primeira página.

Run to end

Por padrão, uma query ou scan pausa após algumas páginas para que uma tabela grande não carregue tudo de uma vez — o botão de ação mostra Carregar mais para buscar a próxima página. Quando você prefere puxar tudo de uma só vez, mude o modo de execução:

  • Clique no chevron ao lado do botão de ação e escolha Rodar até o fim. O botão primário muda para Escanear tudo / Consultar tudo / Rodar tudo — inclusive quando você está pausado no limite de páginas, onde clicar nele drena até o fim.
  • Clique nesse botão renomeado e o DynoTable continua buscando páginas até que a tabela (ou o índice) inteira seja lida. A escolha é lembrada por aba durante a sessão; escolha Paginado para voltar. Escolher um modo nunca inicia uma execução sozinho — ele só renomeia o botão, então você decide quando disparar.

Em uma tabela grande, armar o Rodar até o fim primeiro mostra um prompt de confirmação com o tamanho aproximado e a contagem de itens da tabela, para que um scan completo seja sempre uma escolha deliberada, não um acidente. Confirme para prosseguir ou cancele para continuar paginado.

O botão dividido de modo de execução — o menu do chevron com Paginado e Rodar até o fim, ao lado do botão Carregar mais.
O botão dividido de modo de execução — o menu do chevron com Paginado e Rodar até o fim, ao lado do botão Carregar mais.

Pelo teclado:

  • ⌘↩ roda a consulta atual — e quando os resultados estão pausados no limite de páginas, ele continua para a próxima página em vez de recomeçar.
  • ⌘⇧↩ sempre roda até o fim de uma só vez.
  • ⌘. ou Esc interrompe uma execução em andamento a qualquer momento.

Atualizado