Filtri
Quando leggi i dati da Bigtable, puoi leggere righe o intervalli di righe specifici. Tuttavia, non è sempre necessario disporre di tutti i dati in tutte le righe. Potresti avere bisogno solo di righe che contengono un valore specifico nella chiave di riga o di celle all'interno di una famiglia di colonne specifica.
Per limitare i risultati di una richiesta di lettura, includi i filtri nella richiesta. Ai dati viene applicato un filtro prima dell'invio della risposta per ridurre la quantità di dati restituiti. Di conseguenza, l'utilizzo di filtri può comportare costi di rete inferiori e un throughput più elevato. Questa pagina fornisce una panoramica del funzionamento dei filtri Bigtable e un elenco dei filtri disponibili.
Per dettagli ed esempi di codice per ogni 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 recuperata, 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 seguenti sezioni. I filtri di base rientrano in due categorie: limitanti e modificanti. Puoi combinare i filtri di base in filtri composti.
Nella maggior parte dei casi, un filtro viene applicato a tutte le righe, a meno che non specifichi la chiave di riga, l'intervallo di righe o il numero di righe a cui applicare il filtro. Un'eccezione è il filtro regex della chiave di riga, che può limitare l'intervallo di righe in alcuni casi se la regex è un prefisso fisso. In generale, per evitare la lentezza di una scansione completa della tabella, specifica sempre le righe per un filtro.
Filtri limitanti
Un filtro limitante controlla quali righe o celle sono incluse nella risposta, in base al fatto che corrispondano o meno a criteri specifici. Ad esempio, puoi dire che la risposta deve includere solo le righe in cui la chiave di riga corrisponde a un'espressione regolare o che vuoi solo le celle di una famiglia di colonne specifica.
Molti filtri limitanti possono escludere le celle da una riga di output. Se tutte le celle vengono escluse da una riga di output, la riga non è inclusa nella risposta.
Consulta la sezione Riepilogo dei filtri per un elenco completo dei filtri limitanti.
Modificare i filtri
Un filtro di modifica influisce sui dati o sui metadati delle singole celle.
Bigtable fornisce i seguenti filtri di modifica:
Il filtro per rimuovere i valori, che sostituisce il valore di ogni cella con una stringa vuota. Questo filtro è utile quando ti serve solo il numero di righe o l'elenco delle chiavi di riga che soddisfano i tuoi criteri, anziché i dati di queste righe.
apply label filter, che applica un'etichetta a ogni cella per identificare il filtro che ha prodotto ogni cella nella risposta. La tua applicazione può utilizzare queste etichette per applicare ulteriori filtri lato client.
Filtri di composizione
Un filtro di composizione ti consente di combinare più filtri di base in uno,
in modo da poter 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 all'interno della 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 a catena è come utilizzare un operatore AND logico.
- Un interlacciamento, che invia ogni riga di input a più filtri, quindi combina tutti i risultati del filtro per la riga di input in un'unica riga di output. Un filtro di interfoliazione è come utilizzare un operatore OR logico.
- Una condizione, che genera una riga di output applicando uno di due possibili filtri alla riga di input. Il filtro viene scelto applicando un filtro per predicato alla riga di input, quindi controllando se la riga di output del filtro del predicato contiene celle.
Filtri e prestazioni
I filtri ti consentono di recuperare solo i dati di cui hai effettivamente 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 universale per tutti i problemi di prestazioni. In genere, i filtri devono essere utilizzati per controllare l'efficienza del throughput, non per ridurre la latenza tra l'invio di una richiesta e la ricezione di una risposta. Se utilizzati correttamente, i filtri possono essere parte integrante di una strategia per migliorare il rendimento delle letture.
Il filtro conditions, in particolare, può aumentare la latenza, poiché 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 tabelle seguenti elencano i filtri forniti da Bigtable, inclusi i link ai dettagli e agli esempi di codice per ogni filtro.
Filtri limitanti | |
---|---|
Blocca tutto | Non emettere celle. Utile soprattutto 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 di una riga. |
Espressione regolare della famiglia di colonne | Includi solo le celle la cui famiglia di colonne corrisponde a un'espressione regolare RE2. |
Espressione regolare di qualificatore della colonna | Includi solo le celle il cui qualificatore di colonna corrisponde a un'espressione regolare. |
Intervallo di colonne | Includi solo le celle di una famiglia di colonne specifica il cui qualificatore di colonna rientra in un intervallo specifico. |
Accetta tutto | Emette tutte le celle di input. Utile soprattutto per il debug. |
Espressione regolare della 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. |
Lavandino | Includi le celle nella riga di output finale ed evita che vengano modificate o rimosse da un filtro successivo. |
Intervallo timestamp | Includi solo le celle il cui timestamp rientra in un intervallo specifico. |
Intervallo di valori | Includi solo le celle il cui valore rientra in un intervallo specifico. |
Espressione regolare del valore | Includi solo le celle il cui valore corrisponde a un'espressione regolare. |
Modificare i filtri | |
---|---|
Applicare l'etichetta | Aggiungi un'etichetta a tutte le celle. |
Valore strip | Restituisce una stringa vuota per ogni valore di cella. |
Filtri di composizione | |
---|---|
Catena | Applica più filtri in ordine. |
Condizione | Applica uno dei due possibili filtri a una riga. |
Interlaccia | Combina le righe di output di più filtri in un'unica riga di output. |