Viste materializzate
Che cos'è una vista materializzata?
Una vista materializzata è un oggetto di database che memorizza i risultati di una query sotto forma di tabella fisica. A differenza delle normali viste di database, che sono virtuali e ricavano i dati da tabelle sottostanti, le viste materializzate contengono dati pre-elaborati che vengono aggiornati progressivamente in base a un calendario o su richiesta. La pre-elaborazione dei dati consente di accorciare i tempi di risposta alle query e migliorare le prestazioni in alcuni scenari.
Le viste materializzate sono particolarmente utili nelle situazioni in cui vengono eseguite frequentemente query o aggregazioni complesse, mentre i dati sottostanti cambiano con poca frequenza. Memorizzando i risultati pre-calcolati, il database evita di eseguire ripetutamente query complesse, assicurando così tempi di risposta più rapidi.
Viste materializzate in Databricks SQL
Le viste materializzate in Databricks SQL vengono gestite tramite Unity Catalog. Le viste memorizzano risultati pre-elaborati basati sui dati più recenti delle tabelle sorgente. Diversamente dalle implementazioni tradizionali, le viste materializzate di Databricks mantengono lo stato dei dati al momento dell'ultimo aggiornamento, invece di aggiornarlo ogni volta che viene effettuata una query. L'utente ha la possibilità di aggiornare manualmente le viste materializzate o impostare aggiornamenti periodici automatici.
Le viste materializzate di Databricks SQL sono particolarmente utili per processi ETL (Extract, Transform, Load). Offrono un approccio semplice e dichiarativo per gestire conformità, correzioni, aggregazioni e acquisizione dei dati modificati (CDC). Le viste materializzate migliorano sensibilmente la latenza delle query e riducono i costi, pre-elaborando le query lente e i calcoli eseguiti con maggiore frequenza. Inoltre, consentono di effettuare trasformazioni senza intoppi, pulendo, arricchendo e denormalizzando le tabelle base. In alcuni casi, le viste materializzate possono elaborare in modo incrementale le modifiche apportate alle tabelle base, con conseguente riduzione dei costi e miglioramento dell'esperienza dell'utente.
Databricks ha introdotto le viste materializzate per la prima volta nell'architettura lakehouse con il lancio di Delta Live Tables. Creando una vista materializzata in un warehouse DB SQL, automaticamente si crea una pipeline Live Tables per gestire gli aggiornamenti della vista. Lo stato delle operazioni di aggiornamento (refresh) può essere monitorato facilmente con IU, API o CLI di Delta Live Tables.
Creazione di una vista materializzata
L'esempio seguente crea la vista materializzata customer_orders dalle tabelle base orders e customers:
CREATE MATERIALIZED VIEW customer_orders
AS
SELECT
customers.name,
sum(orders.amount),
orders.orderdate
FROM orders
LEFT JOIN customers ON
orders.custkey = customers.c_custkey
GROUP BY
name,
orderdate;
Aggiornamento di una vista materializzata
Databricks SQL offre la possibilità di impostare aggiornamenti automatici di una vista materializzata secondo un calendario predefinito. La pianificazione può essere configurata durante la creazione della vista materializzata usando la funzione SCHEDULE oppure aggiunta in un secondo tempo con l'istruzione ALTER VIEW. Una volta definito il calendario, viene creato automaticamente un lavoro di Databricks per gestire gli aggiornamenti.
Per modificare in qualsiasi momento i dettagli del calendario, si può utilizzare l'istruzione DESCRIBE EXTENDED che dà visibilità sulla programmazione della vista materializzata. Questo consente di monitorare e gestire facilmente il calendario di aggiornamenti automatici per la vista materializzata in Databricks SQL.
Per maggiori informazioni sulle viste materializzate, consultare la documentazione di prodotto di Databricks o leggere il blog introduttivo.