Filtri e query pattern

Ogni tab tabella porta con sé un filtro: lo stato dei predicati che DynoTable trasforma in una richiesta DynamoDB. Capire come i pezzi si mappano su query o scan è gran parte di ciò che rende l'app veloce e la tua bolletta piccola.

Questa pagina riguarda la modalità tab Visual. Per scrivere query in stile SQL direttamente, passa a PartiQL; per join e aggregazioni, apri un Workbench.

La riga dei filtri

La modalità Visual mostra una singola riga orizzontale di pillole:

[Index] [hashKey = value] [rangeKey op value] [+ filter] | [Clear] [Query/Scan]
  • Pillola indice — il query pattern attraverso cui leggi.
  • Pillole chiave — la chiave di partizione (hash) e, dove c'è, la chiave di ordinamento (range) di quel pattern.
  • Pillole filtro — condizioni aggiuntive non di chiave (filtri di scan).
  • Il pulsante d'azione mostra Query o Scan a seconda di cosa hai impostato, e diventa Carica altro quando i risultati sono in streaming.

Imposta un valore e DynoTable esegue automaticamente; svuotare o modificare una pillola riesegue non appena il filtro torna valido.

La riga dei filtri visuali: selettore dell'indice, pillole chiave, un filtro di scan aggiunto e il pulsante di esecuzione.
La riga dei filtri visuali: selettore dell'indice, pillole chiave, un filtro di scan aggiunto e il pulsante di esecuzione.

Query patterns

Un query pattern è l'indice attraverso cui leggi:

  • PRIMARY — la / della tabella stessa.
  • Un o con nome — con il proprio schema delle chiavi.

Il pattern scelto decide su quali chiavi puoi filtrare. Cambia pattern dalla pillola dell'indice; le pillole chiave si aggiornano alla chiave di partizione e di ordinamento di quel pattern.

Query vs scan

È la distinzione che conta per costo e velocità:

  • Imposta un filtro sulla e DynoTable emette una mirata: legge solo la partizione corrispondente. Economica e veloce.
  • Senza, ripiega su uno , che legge l'intera tabella (o l'indice) pagina per pagina. Il pulsante d'azione mostra Scan per renderlo esplicito.

Filtri di chiave

La pillola della chiave di partizione accetta un valore; l'azione diventa Query nel momento in cui lo imposti. La pillola della chiave di ordinamento aggiunge un confronto:

  • =, <, <=, >, >= — confronti ordinati (numeri, e lessicografici sulle stringhe).
  • begins_with — corrispondenza per prefisso su stringhe o binari.
  • between — un intervallo inclusivo; la pillola fa crescere un secondo campo valore.

Le chiavi di tipo stringa offrono il completamento automatico dai valori presenti nell'indice locale. Vedi Statistiche della tabella per come viene costruito l'indice e cosa copre. Le chiavi senza suggerimenti utili (UUID casuali, per dire) ripiegano su un input semplice.

Filtri di scan

La pillola + filter aggiunge una condizione non di chiave: qualsiasi attributo, non solo le chiavi. Ogni filtro è una colonna, un operatore e un valore:

  • Confronti: =, , <, <=, >, >=, between.
  • Appartenenza: in — corrisponde a un qualsiasi valore di una lista (stringhe o numeri).
  • Stringa / binario: begins_with, contains.
  • Esistenza: exists, not exists.
  • Tipo: type equals / type not equals (rispetto al codice di tipo DynamoDB — S, N, BOOL, …), più una famiglia size per i tipi collezione.

Gli operatori offerti si adattano al tipo dell'attributo: i confronti d'ordine compaiono per i numeri, begins_with per le stringhe. I filtri di scan si applicano dopo che la query o lo scan hanno letto gli item, quindi restringono il risultato ma non rendono uno scan più economico. Usa un filtro di chiave per tagliare la lettura; usa i filtri di scan per raffinare ciò che torna indietro.

Single-table design: chiavi composite

I single-table design impacchettano diversi tipi di entità in un'unica tabella dietro un prefisso di chiave — USER#123, ORDER#456, TENANT#acme. DynoTable li riconosce da solo, senza niente da configurare:

  • Le chiavi vengono decodificate sul posto. Un valore composito — un prefisso maiuscolo unito al resto da #, | o ~ — viene reso come le sue parti etichettate in ogni griglia: la tabella, i risultati PartiQL e il Workbench. I valori ordinari che semplicemente contengono uno di quei caratteri (un colore esadecimale come #FF5733, una lista separata da pipe) restano esattamente come sono.
  • Filtra su un'entità in un clic. Fai clic destro su una riga e scegli Filtra su USER#: il prefisso viene letto direttamente dalla chiave di quella riga. DynoTable applica un vero begins_with sulla chiave come una normale pillola di filtro, che togli nel modo consueto (la sua , oppure Clear). Quando la chiave di partizione e quella di ordinamento di una riga hanno entrambe un prefisso, ottieni una scelta per ciascuna.

Non c'è alcuna finestra di dialogo, nessuna configurazione e niente da salvare: è derivato in tempo reale dalle chiavi che hai davanti.

Il menu contestuale della riga su una tabella sovraccarica — Filtra su USER# e Filtra su POST# sopra le chiavi decodificate in segmenti etichettati.
Il menu contestuale della riga su una tabella sovraccarica — Filtra su USER# e Filtra su POST# sopra le chiavi decodificate in segmenti etichettati.

Ordinamento e paginazione

La pillola della chiave di ordinamento porta un selettore di ordine (ascendente / discendente) che si mappa su ScanIndexForward di DynamoDB. I risultati arrivano una pagina alla volta: Carica altro recupera la pagina successiva, e cambiare la dimensione della pagina ricarica dalla prima.

Run to end

Per impostazione predefinita una query o uno scan si mettono in pausa dopo qualche pagina, così una tabella grande non si carica tutta insieme: il pulsante d'azione mostra Carica altro per recuperare la pagina successiva. Quando preferisci tirare giù tutto in una passata, cambia la modalità di esecuzione:

  • Fai clic sul chevron accanto al pulsante d'azione e scegli Run to end. Il pulsante principale si rietichetta in Scan all / Query all / Run all, anche quando sei in pausa sul budget di pagine, dove premerlo scarica tutto fino alla fine.
  • Premi quel pulsante rietichettato e DynoTable continua a recuperare pagine finché l'intera tabella (o indice) non è letta. La scelta viene ricordata per tab per la sessione; scegli Paged per tornare indietro. Scegliere una modalità non avvia mai un'esecuzione da sola: rietichetta solo il pulsante, quindi decidi tu quando partire.

Su una tabella grande, armare Run to end mostra prima una richiesta di conferma con la dimensione approssimativa della tabella e il numero di item, così uno scan completo è sempre una scelta deliberata e non un incidente. Conferma per procedere, o annulla per restare in modalità paginata.

Lo split-button della modalità di esecuzione — il menu chevron con Paged e Run to end, accanto al pulsante Carica altro.
Lo split-button della modalità di esecuzione — il menu chevron con Paged e Run to end, accanto al pulsante Carica altro.

Da tastiera:

  • ⌘↩ esegue la query corrente — e quando i risultati sono in pausa sul budget di pagine continua alla pagina successiva invece di ricominciare.
  • ⌘⇧↩ esegue fino alla fine in un colpo solo.
  • ⌘. o Esc fermano in qualsiasi momento un'esecuzione in corso.

Aggiornato