Viste materializzate continue

Questo documento fornisce una panoramica delle viste materializzate continue e dei relativi casi d'uso comuni. Prima di leggere questa pagina, dovresti acquisire familiarità con la panoramica di Bigtable.

In Bigtable, una vista materializzata continua è il risultato di un processo in background continuo e completamente gestito. Questo processo utilizza una query SQL che fornisci per creare e gestire una tabella precalcolata che Bigtable aggiorna in modo incrementale man mano che i dati di origine cambiano. La query SQL può includere aggregazioni e trasformazioni nella tabella Bigtable sottostante.

I dati in una vista materializzata continua includono:

  • Valori aggregati o trasformati derivati dai dati nella tabella di origine
  • Valori non aggregati che definiscono la chiave di raggruppamento

Le viste materializzate continue consentono di pre-aggregare i dati durante l'importazione. Inoltre, una vista materializzata continua ha uno schema diverso rispetto alla tabella di origine. Presenta i dati della tabella di origine in una struttura ottimizzata per le query con pattern di ricerca diversi rispetto alle query utilizzate nella tabella di origine.

Di seguito sono riportate le caratteristiche principali delle viste materializzate continue in Bigtable:

  • Nessuna manutenzione: una vista materializzata continua viene precalcolata in background. Le modifiche ai dati nella tabella di origine, inclusi aggiornamenti ed eliminazioni, vengono propagate automaticamente in background alla vista materializzata continua, senza che sia necessaria alcuna azione da parte dell'utente.
  • Pattern di sviluppo SQL: le viste materializzate continue si basano su GoogleSQL per le query Bigtable, incluse funzioni, filtri e aggregazioni SQL.
  • Sincronizzazione con la garbage collection: una vista materializzata continua rimane sincronizzata con le policy di garbage collection della tabella di origine, aggiornandosi automaticamente quando i dati della tabella scadono o vengono eliminati.
  • La latenza di lettura e scrittura non è interessata: una vista materializzata continua ha un impatto minimo sul rendimento della tabella di origine quando i cluster dell'istanza sono sottoposti a provisioning adeguato o utilizzano la scalabilità automatica.
  • Coerenza finale: le viste materializzate continue vengono calcolate in background. Gli aggiornamenti a una vista materializzata continua potrebbero essere ritardati, ma i risultati della vista materializzata continua sono sempre coerenti nel tempo.

La chiave di riga, il qualificatore di colonna e i valori delle colonne utilizzati per definire una vista materializzata continua vengono trattati come dati di servizio. Per questo motivo, non creare una vista materializzata continua utilizzando la chiave di riga, il qualificatore di colonna o i valori delle colonne che contengono informazioni sensibili. Per informazioni su come vengono gestiti i dati di servizio, consulta l'Google Cloud Informativa sulla privacy.

Puoi creare una vista materializzata continua utilizzando Google Cloud CLI, l' editor di query di Bigtable Studio nella Google Cloud console o le librerie client Bigtable per Java e Go.

Puoi leggere da una vista materializzata continua utilizzando:

Per saperne di più, consulta Leggere da una vista materializzata continua.

Quando utilizzare le viste materializzate continue

Le viste materializzate continue consentono di definire una nuova rappresentazione dei dati Bigtable utilizzando SQL. Una volta creata, una vista materializzata continua ristruttura continuamente e automaticamente i dati della tabella di origine nel formato definito dalla query SQL. Poi, anziché eseguire query sulla tabella e trasformare o aggregare i dati dopo averli letti, puoi eseguire query sulla vista materializzata continua.

Le viste materializzate continue possono migliorare il rendimento delle query per i seguenti casi d'uso:

  • Pre-aggregazione dei dati: puoi utilizzare una vista materializzata continua per aggregare i dati in entrata tra le righe. In questo modo puoi recuperare rapidamente i dati riepilogati e aggregati, ad esempio le metriche per le dashboard.
  • Automazione delle architetture lambda e kappa: se la tua applicazione richiede una combinazione di dati della pipeline di streaming in tempo reale e dati della pipeline batch che contengono dati storici, utilizza le viste materializzate continue. Queste viste forniscono una visualizzazione di tutte le origini dati che viene aggiornata nel tempo per riflettere le modifiche ai dati sottostanti, senza la necessità di strumenti di elaborazione dei flussi aggiuntivi o job ETL personalizzati.
  • Pattern di accesso secondari: le viste materializzate continue creano un rappresentazione alternativa dei dati. Questa rappresentazione può essere ottimizzata per le query con pattern di ricerca diversi da quelli utilizzati nelle query sulla tabella di origine. Ciò rende le viste materializzate continue uno strumento potente per creare quello che è effettivamente un indice secondario asincrono sui dati. Per saperne di più su questi pattern, consulta Creare un indice secondario asincrono.

Per confrontare le viste materializzate continue con altri tipi di viste Bigtable, consulta Tabelle e viste.

Quando utilizzare i contatori

Un altro modo per pre-aggregare i dati consiste nel creare contatori distribuiti utilizzando celle aggregate.

Le scritture nelle celle aggregate sono immediatamente leggibili dal cluster in cui vengono scritte. Le viste materializzate continue vengono elaborate dopo la scrittura dei dati e alla fine diventano coerenti con la tabella di origine.

Utilizza i contatori anziché le viste materializzate continue per:

  • Aggregazioni che non richiedono filtri e non devono essere tra le righe
  • Se devi leggere immediatamente le scritture dal cluster in cui vengono scritte

Utilizza le viste materializzate continue quando vuoi:

  • Generare una chiave diversa per le query sulle aggregazioni
  • Visualizzare le modifiche alla tabella di base riflesse nelle aggregazioni
  • Combinare automaticamente i dati su più righe

Utilizza una combinazione di contatori e viste materializzate continue per casi d'uso come quando vuoi:

  • Acquisire metriche recenti in una cella aggregata, ma conservare i rollup storici di queste metriche
  • Combinare le metriche in una vista materializzata continua

Provisioning delle risorse e rendimento

L'elaborazione continua delle viste materializzate continue avviene come job in background a bassa priorità. Di conseguenza, ha un impatto minimo sul rendimento dell'applicazione e sulla latenza di lettura e scrittura nella tabella di origine, a condizione che i cluster siano dimensionati in modo adeguato.

Come best practice per assicurarti che i dati nella vista materializzata continua rimangano aggiornati, attiva la scalabilità automatica per i cluster nell'istanza che contiene la vista materializzata continua. La scalabilità automatica aggiunge automaticamente un numero sufficiente di nodi per gestire il sovraccarico di elaborazione e li rimuove quando non sono più necessari. In questo modo, durante l'esecuzione della query SQL in esecuzione continua è disponibile una capacità di calcolo sufficiente. La scalabilità automatica può anche garantire di avere nodi sufficienti per gestire le esigenze di archiviazione delle viste materializzate continue.

Le viste materializzate continue vengono conteggiate nel limite di 1000 tabelle per istanza.

Creazione di viste materializzate continue nelle tabelle esistenti

Quando crei una vista materializzata continua per una tabella esistente, Bigtable avvia un processo una tantum che popola la vista con i dati della tabella esistente. Il tempo necessario per il popolamento iniziale dipende dalle dimensioni della tabella e dalla complessità della query. Durante questo periodo, la vista non è disponibile per le query. Questo popolamento iniziale dei dati viene eseguito come job in background a bassa priorità per ridurre al minimo l'effetto sul rendimento del cluster. Per le tabelle di grandi dimensioni, puoi aggiungere temporaneamente altri nodi al cluster per accelerare la creazione della vista.

Il seguente diagramma mostra la procedura di creazione delle viste materializzate continue:

Il processo di creazione di viste materializzate continue in Bigtable.
Figura 1. La procedura di creazione delle viste materializzate continue in Bigtable (fai clic per ingrandire).

Ad esempio, supponiamo che la tabella di origine contenga righe con chiavi che seguono il pattern advertiser_id#region#ad_id e una famiglia di colonne, data, che include un qualificatore di colonna spend_usd con dati numerici che rappresentano la spesa pubblicitaria:

Chiave di riga data:spend_usd
adv1#us-east#ad1 100
adv1#us-west#ad2 150
adv2#us-east#ad3 200

Se utilizzi la seguente query per definire una vista materializzata continua di questa tabella, il popolamento iniziale di 1 TB di dati viene completato in circa tre ore su un cluster di 175 nodi.

SELECT
          SPLIT(_key, "#")[SAFE_OFFSET(0)] AS advertiser_id,
          count(*) AS count,
          sum(cast(cast(data['spend_usd'] as string) as int64)) as sum_spend
        FROM `$0`
        GROUP BY advertiser_id

Poiché Bigtable scala in modo lineare, un cluster di 175 nodi elabora 2 TB di dati in circa sei ore e 10 TB in circa 30 ore, supponendo che i dati abbiano una forma simile. Per ridurre il tempo necessario per il popolamento iniziale, puoi temporaneamente aggiungere altri nodi al cluster o, se utilizzi la scalabilità automatica, temporaneamente aumentare il numero massimo di nodi.

Archiviazione

Per ogni vista materializzata continua, Bigtable archivia:

  • I dati nella vista materializzata continua
  • Spazio di archiviazione intermedio

Come qualsiasi tabella Bigtable, una vista materializzata continua esiste in tutti i cluster dell'istanza che la contiene. I cluster nell'istanza devono avere nodi sufficienti per archiviare la tabella di origine e le eventuali viste materializzate continue basate sulla tabella. La scalabilità automatica consente ai cluster di fare lo scale up o lo scale down in base alle variazioni dei requisiti di archiviazione.

Una vista materializzata continua deve essere creata nella stessa istanza della tabella di origine, anche se lo spazio di archiviazione per la vista materializzata continua è distinto dalla tabella di origine.

Spazio di archiviazione della vista materializzata continua

Una vista materializzata continua contiene i dati risultanti dalla query SQL su cui si basa la vista materializzata continua. Ciò significa che contiene i valori aggregati definiti dalle clausole di aggregazione nella query SQL e i valori non aggregati che definiscono la chiave di raggruppamento.

Spazio di archiviazione intermedio

Per supportare la sincronizzazione di una vista materializzata continua con la tabella di origine, Bigtable utilizza lo spazio di archiviazione intermedio per archiviare le copie dei dati di cui ha bisogno per aggiornare in modo incrementale la vista materializzata continua.

La quantità di dati nello spazio di archiviazione intermedio è approssimativamente equivalente alla quantità di dati scansionati nella tabella di origine per generare il risultato della query SQL che definisce la vista materializzata continua. Ad esempio, se la query aggrega i dati in tutta la tabella, Bigtable mantiene l'equivalente dell'intera tabella nello spazio di archiviazione intermedio. Una vista materializzata continua basata su una query di intervalli di chiave di riga o colonne specifici mantiene solo queste righe o colonne nello spazio di archiviazione intermedio.

Lo spazio di archiviazione intermedio persiste per la durata della vista materializzata continua per supportare in modo efficiente gli aggiornamenti incrementali alla vista e propagare le eliminazioni dalla tabella di origine alla vista materializzata continua. Non puoi leggere i dati nello spazio di archiviazione intermedio. Per informazioni dettagliate sull'utilizzo dello spazio di archiviazione intermedio, consulta Metriche delle vista materializzata continue.

Replica

Nelle istanze che utilizzano la replica, le viste materializzate continue non vengono replicate nello stesso modo delle tabelle. Ogni cluster in un'istanza elabora la vista materializzata continua in modo indipendente, utilizzando la propria copia della tabella di origine. Ciò significa, ad esempio, che i dati scritti in una tabella di origine sul cluster A vengono replicati nella tabella sul cluster B e poi nella vista materializzata continua sul cluster B.

Costi

Non sono previsti costi per risorsa per l'utilizzo delle viste materializzate continue. Tuttavia, la creazione e la sincronizzazione delle viste materializzate continue richiedono elaborazione e spazio di archiviazione e ti vengono addebitati i costi alle tariffe standard. Quando crei una vista materializzata continua, puoi prevedere un aumento di quanto segue:

  • Spazio di archiviazione : ti vengono addebitati i costi per l'archiviazione dei dati nella vista materializzata continua e per lo spazio di archiviazione intermedio. Per saperne di più, consulta Spazio di archiviazione.
  • Calcolo : la sincronizzazione continua della tabella di origine e della vista materializzata continua richiede l'elaborazione della CPU e i cluster potrebbero aver bisogno di più nodi per gestire il lavoro in background aggiuntivo.

Allo stesso tempo, potresti notare una diminuzione dell'elaborazione nella tabella di origine, ad esempio quando non esegui più scansioni di intervalli dei dati per eseguire calcoli ripetuti e altre query meno efficienti. Potresti anche eliminare la necessità di eseguire job della pipeline, come Dataflow o Spark, per aggregare i dati di origine e scriverli di nuovo in Bigtable.

Per saperne di più sui prezzi, consulta Prezzi di Bigtable. Per le metriche che possono aiutarti a monitorare l'utilizzo della vista materializzata continua, consulta Metriche.

Metriche

Una vista materializzata continua segnala a Cloud Logging diverse metriche chiave che puoi utilizzare per monitorare le viste materializzate continue.

Metrica Descrizione
materialized_view/max_delay Limite superiore del ritardo di elaborazione per la vista materializzata continua
materialized_view/storage Quantità di dati utilizzati per lo spazio di archiviazione della vista materializzata continua in byte
materialized_view/intermediate_storage Quantità di dati utilizzati dall'elaborazione intermedia per la vista materializzata continua in byte
table/materialized_view_intermediate_storage Quantità di dati utilizzati dall'elaborazione intermedia per le viste materializzate continue definite in questa tabella
materialized_view/user_errors Numero di errori dai dati utente per la vista materializzata continua. Gli errori utente impediscono la propagazione dei dati alla vista.
materialized_view/system_errors Numero di errori del sistema per la vista materializzata continua

Puoi anche utilizzare molte metriche delle tabelle Bigtable per monitorare una vista materializzata continua, utilizzando l'ID della vista materializzata continua al posto dell'ID della tabella. In particolare, le viste materializzate continue sono incluse in la suddivisione delle metriche della CPU, il che può aiutarti a comprenderne l'impatto. Le metriche Bigtable per le richieste al secondo, la latenza e la velocità effettiva vengono generate quando leggi una vista materializzata continua utilizzando il metodo ReadRows dell'API Data. Per saperne di più, consulta Metriche.

Per iniziare a utilizzare Cloud Logging, consulta Panoramica delle query e della visualizzazione dei log.

Limitazioni

  • Puoi creare fino a cinque viste materializzate continue per tabella. Se necessario, puoi richiedere un aumento di questo limite contattando l'assistenza clienti Google Cloud.
  • Quando crei una vista senza un _key specificato, le colonne selezionate nella tabella di origine non devono essere NULL. Per saperne di più, consulta Chiavi di riga definite dalla GROUP BY clausola.
  • Non puoi modificare la query SQL che definisce una vista materializzata continua. Devi eliminare la vista materializzata continua e crearne una nuova con le modifiche.
  • Non puoi creare una vista materializzata continua di un'altra vista materializzata continua o di una vista logica.
  • Non puoi configurare le policy di garbage collection per una vista materializzata continua. Tutta la conservazione dei dati è regolata dalle policy di garbage collection per la tabella di origine e la garbage collection dell'origine si riflette automaticamente nella vista materializzata continua.

Passaggi successivi