Filtres et modèles de requête

Chaque onglet de table porte un filtre : l'état de prédicat que DynoTable transforme en une requête DynamoDB. Comprendre comment les pièces se traduisent en query ou scan est l'essentiel de ce qui rend l'app rapide et ta facture légère.

Cette page couvre le mode d'onglet Visuel. Pour écrire des requêtes de style SQL directement, passe à PartiQL ; pour les jointures et les agrégations, ouvre un Workbench.

La ligne de filtre

Le mode visuel affiche une seule ligne horizontale de pills :

[Index] [hashKey = value] [rangeKey op value] [+ filter] | [Clear] [Query/Scan]
  • Pill d'index — le modèle de requête que tu lis à travers.
  • Pills de clé — la clé de partition (hash) et, lorsqu'elle est présente, la clé de tri (range) de ce modèle.
  • Pills de filtre — des conditions supplémentaires hors clé (filtres de Scan).
  • Le bouton d'action affiche Query ou Scan selon ce que tu as défini, et devient Charger plus une fois que les résultats sont en streaming.

Définis une valeur et DynoTable s'exécute automatiquement ; effacer ou éditer une pill relance dès que le filtre est de nouveau valide.

La ligne de filtre visuel : sélecteur d'index, pills de clé, un filtre de Scan ajouté, et le bouton d'exécution.
La ligne de filtre visuel : sélecteur d'index, pills de clé, un filtre de Scan ajouté, et le bouton d'exécution.

Modèles de requête

Un modèle de requête est l'index que tu lis à travers :

  • PRIMARY — la / propre à la table.
  • Un ou nommé — son propre schéma de clé.

Le modèle choisi décide des clés sur lesquelles tu peux filtrer. Change de modèle depuis la pill d'index ; les pills de clé se mettent à jour selon la clé de partition et la clé de tri de ce modèle.

Query ou Scan

C'est la distinction qui compte pour le coût et la vitesse :

  • Définis un filtre de et DynoTable émet une ciblée — elle ne lit que la partition correspondante. Peu coûteuse et rapide.
  • Sans cela, elle se rabat sur un , qui lit toute la table (ou l'index) page par page. Le bouton d'action affiche Scan pour le rendre explicite.

Filtres de clé

La pill de clé de partition prend une valeur ; l'action devient Query dès qu'elle est définie. La pill de clé de tri ajoute une comparaison par-dessus :

  • =, <, <=, >, >= — comparaisons ordonnées (nombres, et lexicographiques sur les chaînes).
  • begins_with — correspondance de préfixe sur les chaînes ou le binaire.
  • between — une plage inclusive ; la pill fait apparaître un second champ de valeur.

Les clés typées comme chaînes proposent l'autocomplétion : à mesure que DynoTable indexe une table en arrière-plan, il suggère des valeurs réelles que tu as déjà vues. Les clés sans suggestions utiles (des UUID aléatoires, par exemple) se rabattent sur une saisie simple.

Filtres de Scan

La pill + filter ajoute une condition hors clé — n'importe quel attribut, pas seulement les clés. Chaque filtre est une colonne, un opérateur et une valeur :

  • Comparaisons : =, , <, <=, >, >=, between.
  • Appartenance : in — correspond à n'importe quelle valeur d'une liste (chaînes ou nombres).
  • Chaîne / binaire : begins_with, contains.
  • Existence : exists, not exists.
  • Type : type equals / type not equals (par rapport au code de type DynamoDB — S, N, BOOL, …), plus une famille size pour les types collection.

Les opérateurs proposés s'adaptent au type de l'attribut — les comparaisons d'ordre apparaissent pour les nombres, begins_with pour les chaînes. Les filtres de Scan s'appliquent après que la Query ou le Scan a lu les items, donc ils restreignent le résultat mais ne rendent pas un Scan moins coûteux. Utilise un filtre de clé pour réduire la lecture ; utilise les filtres de Scan pour affiner ce qui revient.

Single-table design : clés composites

Les single-table designs regroupent plusieurs types d'entité dans une seule table derrière un préfixe de clé — USER#123, ORDER#456, TENANT#acme. DynoTable les reconnaît tout seul, sans rien à configurer :

  • Les clés se décodent sur place. Une valeur composite — un préfixe en majuscules joint au reste par #, | ou ~ — s'affiche sous forme de ses parties étiquetées dans chaque grille : la table, les résultats PartiQL et le Workbench. Les valeurs ordinaires qui contiennent simplement l'un de ces caractères (une couleur hexadécimale comme #FF5733, une liste séparée par des barres verticales) sont laissées exactement telles quelles.
  • Filtre vers une entité en un clic. Clique droit sur une ligne et choisis Filtrer vers USER# — le préfixe est lu directement depuis la clé de cette ligne. DynoTable applique un véritable begins_with sur la clé sous forme d'une pill de filtre ordinaire, que tu effaces de la manière habituelle (son , ou Clear). Quand la clé de partition et la clé de tri d'une ligne sont toutes deux préfixées, tu obtiens un choix pour chacune.

Il n'y a pas de dialogue, pas de configuration et rien d'enregistré — c'est dérivé en direct à partir des clés que tu as sous les yeux.

Le menu contextuel par clic droit sur une table surchargée — Filtrer sur USER# et Filtrer sur POST# en facettes au-dessus de clés décodées en segments étiquetés.
Le menu contextuel par clic droit sur une table surchargée — Filtrer sur USER# et Filtrer sur POST# en facettes au-dessus de clés décodées en segments étiquetés.

Tri et pagination

La pill de clé de tri porte un bouton de sens de tri (ascendant / descendant) qui correspond au ScanIndexForward de DynamoDB. Les résultats arrivent en streaming page par page — Charger plus récupère la page suivante, et changer la taille de page recharge depuis la première page.

Exécuter jusqu'au bout

Par défaut, une Query ou un Scan se met en pause après quelques pages afin qu'une grande table ne se charge pas d'un coup — le bouton d'action affiche Charger plus pour récupérer la page suivante. Lorsque tu préfères tout tirer d'un seul coup, change le mode d'exécution :

  • Clique sur le chevron à côté du bouton d'action et choisis Exécuter jusqu'au bout. Le bouton principal se réintitule Tout scanner / Tout interroger / Tout exécuter — y compris lorsque tu es en pause au budget de pages, où cliquer dessus draine jusqu'à la fin.
  • Clique sur ce bouton réintitulé et DynoTable continue de récupérer des pages jusqu'à ce que toute la table (ou l'index) soit lue. Le choix est mémorisé par onglet pour la session ; choisis Paginé pour revenir en arrière. Choisir un mode ne lance jamais une exécution par lui-même — cela ne fait que réintituler le bouton, donc c'est toi qui décides quand déclencher.

Sur une grande table, armer Exécuter jusqu'au bout affiche d'abord une invite de confirmation avec la taille approximative et le nombre d'items de la table, pour qu'un Scan complet soit toujours un choix délibéré plutôt qu'un accident. Confirme pour continuer, ou annule pour rester en mode paginé.

Le bouton scindé de mode d'exécution — le menu chevron avec Paginé et Exécuter jusqu'au bout, à côté du bouton Charger plus.
Le bouton scindé de mode d'exécution — le menu chevron avec Paginé et Exécuter jusqu'au bout, à côté du bouton Charger plus.

Au clavier :

  • ⌘↩ exécute la requête en cours — et lorsque les résultats sont en pause au budget de pages, elle continue vers la page suivante au lieu de tout recommencer.
  • ⌘⇧↩ exécute toujours jusqu'au bout en un seul coup.
  • ⌘. ou Esc arrête une exécution en cours à tout moment.

Mis à jour