Filtri

Quando leggi i dati da Bigtable , puoi leggere righe o intervalli di righe specifici. Tuttavia, non sempre sono necessari tutti i dati in tutte le righe. Potrebbero essere necessarie solo le righe che contengono un valore specifico nella chiave di riga o celle all'interno di una specifica famiglia di colonne.

Per limitare i risultati di una richiesta di lettura, includi filtri nella richiesta. Prima dell'invio della risposta, viene applicato un filtro ai dati, che riduce la quantità di dati restituiti. Di conseguenza, l'uso dei filtri può ridurre i costi di rete e la velocità effettiva. Questa pagina fornisce una panoramica del funzionamento dei filtri Bigtable e un elenco dei filtri disponibili.

Per dettagli ed esempi di codice per ciascun filtro, consulta Esempi di filtri.

Come funzionano i filtri

Quando la richiesta di lettura include un filtro, Bigtable recupera una riga o un intervallo di righe dalla tabella. Per ogni riga di input che recupera, Bigtable valuta la riga utilizzando il filtro, quindi genera una riga di output in base ai risultati del filtro.

Bigtable fornisce diversi tipi di filtri, come descritto nelle sezioni seguenti. I filtri di base rientrano in due categorie: limitata e modifica. Puoi combinare filtri di base per creare filtri di composizione.

Nella maggior parte dei casi, viene applicato un filtro a tutte le righe, a meno che non specifichi la chiave di riga, l'intervallo di righe o il numero di righe a cui deve essere applicato il filtro. Un'eccezione è il filtro regex chiave di riga, che può limitare l'intervallo di righe in alcuni casi se l'espressione regolare è un prefisso fisso. In generale, per evitare la lentezza di una scansione completa della tabella, specifica sempre le righe di un filtro.

Filtri per limitare i filtri

Un filtro limitato controlla quali righe o celle sono incluse nella risposta, a seconda che soddisfino criteri specifici. Ad esempio, puoi definire che la risposta debba includere solo le righe in cui la chiave di riga corrisponde a un'espressione regolare o che vuoi che vengano visualizzate solo le celle di una specifica famiglia di colonne.

Molti filtri di limitazione possono escludere le celle da una riga di output. Se tutte le celle sono escluse da una riga di output, la riga non è inclusa nella risposta.

Per un elenco completo dei filtri che limitano i filtri, consulta il riepilogo dei filtri.

Modifica dei filtri

Un filtro di modifica influisce sui dati o sui metadati delle singole celle.

Bigtable fornisce i seguenti filtri di modifica:

  • Il filtro dei valori di striscia, che sostituisce il valore di ogni cella con una stringa vuota. Questo filtro è utile quando hai bisogno solo del numero di righe o dell'elenco di chiavi di riga che soddisfano i tuoi criteri, anziché dei dati di queste righe.

  • L'opzione Applica filtro etichetta, che applica un'etichetta a ogni cella per identificare il filtro che ha generato ciascuna cella nella risposta. L'applicazione può utilizzare queste etichette per eseguire filtri aggiuntivi sul lato client.

Composizione di filtri

Un filtro di composizione consente di combinare più filtri di base in uno, il che rende possibile applicare più di un filtro a una singola richiesta di lettura. Ad esempio, per ottenere i dati sull'utilizzo della CPU per i tuoi server, puoi utilizzare un filtro per includere solo le righe in cui la chiave di riga inizia con SERVER, seguito da un secondo filtro per includere solo le celle nella famiglia di colonne CPU.

Bigtable fornisce i seguenti filtri di composizione:

  • Una catena, che applica una sequenza di filtri a ogni riga di input e restituisce una riga di output. Un filtro di catena è come utilizzare un AND logico.
  • Un'interfoglia, che invia ogni riga di input attraverso più filtri, poi combina tutti i risultati del filtro per la riga di input in un'unica riga di output. Un filtro interfoliazione è come utilizzare un operatore logico OR.
  • Una condizione, che genera una riga di output applicando uno dei due possibili filtri alla riga di input. Il filtro viene scelto applicando un filtro predicato alla riga di input, poi controllando se la riga di output del filtro predicato contiene celle.

Filtri e rendimento

I filtri ti consentono di recuperare solo i dati effettivamente di cui hai bisogno. Di conseguenza, i filtri possono migliorare le prestazioni riducendo la quantità di dati inviati alla tua applicazione.

Tuttavia, i filtri non sono una soluzione multiuso per tutti i problemi di prestazioni. In generale, dovresti usare i filtri per controllare l'efficienza della velocità effettiva, non per ridurre la latenza tra l'invio di una richiesta e la ricezione di una risposta. Se utilizzati correttamente, i filtri possono essere una parte efficace di una strategia per migliorare le prestazioni in lettura.

Il filtro conditions, in particolare, può aumentare la latenza, in quanto le condizioni sono molto più lente rispetto ad altri filtri. Se la richiesta di lettura è estremamente sensibile alle prestazioni, non utilizzare condizioni nella richiesta.

Riepilogo dei filtri

Le seguenti tabelle elencano i filtri forniti da Bigtable, inclusi i link ai dettagli e gli esempi di codice per ciascun filtro.

Filtri per limitare i filtri
Blocca tutto Non emettere alcuna cella. Utile principalmente per il debug.
Limite di celle per colonna Includi solo le N versioni più recenti di una colonna in una riga.
Limite di celle per riga Includi solo le prime N celle di una riga.
Celle per offset riga Ometti le prime N celle in una riga.
Regex famiglia di colonne Includi solo le celle la cui famiglia di colonne corrisponde a un'espressione regolare RE2.
Regex qualificatore di colonna Includi solo le celle il cui qualificatore di colonna corrisponde a un'espressione regolare.
Intervallo di colonne Include solo le celle in una famiglia di colonne specifica il cui qualificatore di colonna rientra in un intervallo specifico.
Supera tutti Emetti tutte le celle di input. Utile principalmente per il debug.
Regex chiave di riga Includi solo le celle la cui chiave di riga corrisponde a un'espressione regolare.
Esempio di riga Recupera un campione casuale di righe.
Lavello Includi le celle nella riga di output finale e impedisci che vengano modificate o rimosse da un filtro successivo.
Intervallo timestamp Include solo le celle il cui timestamp rientra in un intervallo specifico.
Intervallo di valori Include solo le celle il cui valore rientra in un intervallo specifico.
regex valore Includi solo le celle il cui valore corrisponde a un'espressione regolare.
Modifica dei filtri
Applica etichetta Aggiungi un'etichetta a tutte le celle.
Valore striscia Restituisce una stringa vuota per ogni valore di cella.
Composizione di filtri
Catena Applica più filtri in ordine.
Condizione Applica uno dei due possibili filtri a una riga.
Interleaving Combina le righe di output di più filtri in un'unica riga di output.

Passaggi successivi