Passa al contenuto principale

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 precalcolati, il database evita la necessità di eseguire ripetutamente query complesse, assicurando così tempi di risposta più rapidi.

Ecco altre informazioni utili

Materializzazione dei dati e vista materializzata sono la stessa cosa?

Sebbene i termini "materializzazione dei dati" e "viste materializzate" siano correlati, si riferiscono a concetti diversi. Cosa significa quindi "materializzato" in questo contesto?

Per "materializzazione dei dati" si intende la memorizzazione dei dati calcolati su un supporto fisico, come un disco rigido. Viene tipicamente creata a partire da una vista virtuale o logica con un unico obiettivo: migliorare le prestazioni.

Sotto alcuni aspetti, la materializzazione dei dati è simile alla memorizzazione nella cache. Entrambi i processi prevedono l'archiviazione dei dati in modo da renderne più efficiente il recupero. La principale differenza tra i due è che la cache viene utilizzata per memorizzare temporaneamente i dati vicino al punto di utilizzo, mentre i dati materializzati tendono ad avere un ciclo di vita più lungo e una pianificazione degli aggiornamento più definita.

Data questa definizione di materializzazione dei dati, possiamo ora esplorare come essa sia correlata al concetto di viste materializzate.

Una vista materializzata è un tipo di materializzazione dei dati utilizzato nei database relazionali per memorizzare i risultati di una query, così da renderne più veloce il recupero.

L'uso della materializzazione in un ambiente di data warehouse è principalmente una questione di praticità. Quando i dati vengono archiviati, la scelta di come memorizzarli dipende generalmente dal loro formato iniziale. Tuttavia, quando si desidera leggere i dati, tale scelta potrebbe non favorire un recupero efficiente.

Supponiamo, ad esempio, di avere un grande set di dati dal quale sia necessario leggere regolarmente un determinato sottoinsieme di dati. Recuperarlo ex novo ogni volta potrebbe essere relativamente dispendioso in termini di tempo, perché occorrerebbe ogni volta eseguire la query sull'intero set di dati, anche se si desidera accedere solo a una piccola parte di esso.

In questa situazione, sarebbe utile creare una vista materializzata. Si potrebbe configurarla in modo che venga pre-popolata con i dati necessari e definire un programma di aggiornamento che avvenga automaticamente o quando il sistema rileva una modifica nei dati di origine sottostanti.

Confronto tra oggetti del database: viste materializzate vs. viste

A questo punto, è utile definire le "viste" e spiegare come si differenziano dalle viste materializzate. Sia le viste che le viste materializzate sono oggetti del database che presentano i dati in un formato specifico o come risultato di una specifica query. Tuttavia, differiscono notevolmente in termini di archiviazione, prestazioni e casi d'uso (che esploreremo più dettagliatamente in seguito). 

Quando si confronta una vista con una vista materializzata, un aspetto cruciale da considerare è che una vista è una tabella virtuale basata sul set di risultati di una query SQL. È importante sottolineare che essa non memorizza direttamente i dati, ma recupera dinamicamente le informazioni dalle tabelle sottostanti ogni volta che viene interrogata.

Una vista materializzata funziona in modo intrinsecamente diverso. Un elemento cruciale nella definizione di "materializzato" è quello che riguarda l'archiviazione dei dati. Più specificamente, una vista materializzata è un oggetto del database che memorizza fisicamente i risultati di una query.

Ciò significa che, a differenza di una vista normale, una vista materializzata non recupera i dati in modo dinamico. Poiché memorizza il set di risultati della query e viene aggiornata periodicamente per riflettere le modifiche nelle tabelle sottostanti, offre prestazioni di query migliori e un utilizzo più efficiente delle risorse di elaborazione.

Sebbene l'archiviazione possa essere considerata la principale differenza tra viste e viste materializzate, la tabella seguente mostra un confronto su come ciò influisce sulle diverse caratteristiche dei due oggetti del database:

Funzionalità Vista

Vista materializzata

Archiviazione dei dati

Non memorizza dati (tabella virtuale)

Memorizza fisicamente i dati (risultati precalcolati)

Recupero dei dati

Recupera dati dinamicamente dalle tabelle di base

Recupera dati dai risultati memorizzati

Prestazioni

Più lenta per query complesse

Più veloce per query complesse

Attualità dei dati

Sempre attuale

Può essere obsoleta; richiede l'aggiornamento

Spazio di archiviazione

Non richiede ulteriore spazio di archiviazione

Richiede spazio di archiviazione aggiuntivo

Caso d'uso

Semplificazione di query complesse, sicurezza

Miglioramento delle prestazioni, dati snapshot

Quali sono i vantaggi e gli svantaggi delle viste materializzate nei database?

Le viste materializzate offrono diversi vantaggi, ma anche una serie di limitazioni, nei database, inclusa la Databricks Platform. Comprenderne a fondo vantaggi e svantaggi può aiutare gli utenti a determinare quando e come utilizzarle in modo efficace.

Vantaggi della vista materializzata

  1. Miglioramento delle prestazioni delle query

    Uno dei principali motivi per creare viste materializzate è migliorare le prestazioni delle query. Esse raggiungono questo obiettivo in due modi essenziali: accelerando il recupero dei dati e riducendo il carico sulle tabelle di base.

    Poiché memorizzano risultati precomputati, le viste materializzate eliminano la necessità di ricalcolare i dati e risolvere una query (o un join in una query) ogni volta che viene eseguita. Di conseguenza, accelerano notevolmente l'esecuzione delle query, soprattutto quelle complesse e ad alto consumo di risorse o con elevata frequenza di accesso.

    Inoltre, memorizzare i dati in questo modo riduce anche il numero di query dirette alle tabelle di base, riducendo il carico su di esse e migliorando le prestazioni complessive del database.

     

  2. Uso efficiente delle risorse

    Non è sempre conveniente eseguire una query completa ogni volta che si necessita di accedere a un determinato set di dati, e questa operazione può risultare particolarmente lenta e inefficiente. Precalcolando e memorizzando i risultati, le viste materializzate ottimizzano l'uso delle risorse, riducendo la necessità di calcoli e processi di elaborazione ripetitivi e permettendo così di risparmiare tempo e denaro.

     

  3. Forniscono snapshot dei dati

    Le viste materializzate forniscono uno snapshot dei dati in un momento specifico. Questo può essere utile per monitorare le variazioni di un set di dati a fini di reportistica e analisi, oltre che per l'analisi dei dati storici.

     

  4. Consolidamento dei dati

    Se è necessario unire dati provenienti da diverse fonti, ad esempio durante un processo di ETL, le viste materializzate rappresentano un'ottima opzione. Possono essere utilizzate per aggregare e consolidare dati estratti da più tabelle e database, offrendo un modo semplice, unificato ed efficiente per accedere ai dati integrati.

     

  5. Aiuta a semplificare calcoli complessi

    Aggregazioni, join e calcoli complessi possono essere precalcolati e memorizzati in viste materializzate. Questo è un altro modo in cui le viste materializzate riducono i costi computazionali elevati e rendono più semplice e veloce l'interrogazione e l'analisi dei dati.

Limiti delle viste materializzate

  1. Costi di archiviazione aggiuntivi

    Uno degli svantaggi delle viste materializzate è che richiedono spazio di archiviazione aggiuntivo per mantenere i dati precalcolati su cui si basano. A seconda della soluzione di archiviazione dei dati, delle dimensioni della vista e della frequenza degli aggiornamenti, questo può comportare un costo non trascurabile.

     

  2. Aggiornamenti onerosi

    Le viste materializzate offrono uno snapshot statico, quindi è necessario eseguire aggiornamenti incrementali per garantire che i dati riflettano le modifiche apportate alle tabelle sottostanti. Questo aggiornamento può avvenire periodicamente o essere attivato da eventi specifici. In entrambi i casi, è necessario adottare una strategia che delinei la frequenza degli aggiornamenti e allocare risorse e logica per garantire che i dati siano sempre attuali.

     

  3. Compromessi sulle prestazioni

    Purtroppo, il processo di aggiornamento di una vista materializzata può influire sulle prestazioni complessive del database. Questo impatto può essere particolarmente evidente se l'aggiornamento richiede molte risorse o genera conflitti con altre operazioni del database.

     

  4. Applicabilità limitata

    Le viste materializzate sono estremamente vantaggiose quando una vista viene consultata frequentemente o quando le prestazioni di lettura sono essenziali, come nei data warehouse. Tuttavia, non sono adatte a tutti i tipi di query o casi d'uso. Ad esempio, attività che richiedono aggiornamenti in tempo reale o sistemi con un'elevata frequenza di modifiche nei dati sottostanti potrebbero non trarre il massimo beneficio dalle viste materializzate.

Quando conviene utilizzare le viste materializzate?

Ora che abbiamo compreso la differenza tra viste e viste materializzate, nonché i vantaggi dell'uso delle viste, vediamo quando è opportuno invece creare una vista materializzata. Ecco alcune situazioni in cui l'utilizzo delle viste materializzate può rendere il processo di accesso ai dati più efficiente.

Gestione di elaborazioni batch regolari

Se è necessario eseguire elaborazioni batch con regolarità, le viste materializzate possono facilitare questo processo precomputando e memorizzando parti di una query da elaborare in modo indipendente. Ad esempio, se gestisci il libro paga settimanale, puoi utilizzare le viste materializzate per memorizzare i dettagli delle buste paga, come stipendio, tasse e commissioni per i diversi dipendenti. I dati archiviati nella vista materializzata verrebbero poi aggiornati alla fine di ogni settimana.

Distribuzione di dati filtrati

L'uso delle viste materializzate può aiutare a rendere disponibili determinati set di dati in più sedi, in quanto esse possono essere utilizzate per replicare e memorizzare nella cache dati provenienti da fonti remote. Questo è particolarmente utile per i database di sola lettura, poiché consente di copiare e distribuire i dati in diversi siti di archiviazione, riducendo il carico complessivo sul database di origine. Chiunque necessiti di accesso ai dati potrà utilizzare il sito più vicino, migliorando così i tempi di risposta.

Ottimizzazione delle dashboard AI/BI

Le dashboard AI/BI sono uno strumento efficace per migliorare la visualizzazione dei dati e la reportistica sulla Databricks Data Intelligence Platform. Il design semplificato è ideale per la condivisione e la distribuzione delle visualizzazioni, ma è fondamentale che i dati presenti nella dashboard pubblica rispettino i requisiti di freschezza.

Utilizzando le viste materializzate, è possibile pianificare aggiornamenti periodici per garantire una visualizzazione sempre aggiornata e migliorare significativamente i tempi di risposta per gli utenti finali, precomputando e memorizzando i risultati delle query che alimentano la dashboard.

Analisi dei dati di serie temporali

Uno dei principali vantaggi delle viste materializzate è la capacità di fornire snapshot dei dati. Questo semplifica notevolmente lo studio delle variazioni nel set di dati nel tempo e fornisce istantanee di dati storici utili per la reportistica.

Pertanto, le viste materializzate rappresentano una soluzione adatta per un'ampia gamma di applicazioni di business intelligence. Se è necessario eseguire query su schemi a stella o calcolare aggregati a partire da dati grezzi, le viste materializzate possono memorizzare riepiloghi pre-aggregati, come medie mensili, somme settimanali e conteggi giornalieri. La visualizzazione di questi dati nel tempo è particolarmente vantaggiosa per l'analisi storica e la reportistica.

Prevenire la disconnessione dal database principale

Se esiste il rischio di disconnessione dal database sottostante, è possibile utilizzare una vista materializzata per mantenere disponibili i dati più importanti. Tuttavia, in questo scenario è fondamentale garantire una pianificazione degli aggiornamenti robusta. In questi casi, è possibile memorizzare la vista materializzata in locale.

Quando conviene utilizzare le viste materializzate?

Tuttavia, ci sono situazioni in cui le viste materializzate non sono l'opzione più appropriata. Ad esempio, se i dati sono già rapidi e semplici da interrogare, l'uso di una vista materializzata potrebbe non essere giustificato. Inoltre, se i dati di origine cambiano molto velocemente, ha poco senso utilizzare viste materializzate. L'overhead computazionale dovuto agli aggiornamenti frequenti potrebbe infatti annullare i vantaggi derivanti da un recupero più veloce dei dati.

Creare viste materializzate in Databricks SQL

Le viste materializzate in Databricks SQL vengono gestite tramite Unity Catalog. Le viste memorizzano risultati precomputati 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 DLT. Creando una vista materializzata in un warehouse DB SQL, automaticamente si crea una pipeline DLT per gestirne gli aggiornamenti. Lo stato delle operazioni di aggiornamento (refresh) può essere monitorato facilmente tramite IU, API o CLI di DLT.

Come funziona la creazione di una vista materializzata

L'esempio seguente crea la vista materializzata customer_orders dalle tabelle base orders e customers:

Come funziona l'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, consulta la documentazione di prodotto di Databricks o leggi il blog introduttivo.

    Torna al Glossario