Che cos'è una vista materializzata?
Una vista materializzata è una tabella di dati duplicata creata combinando i dati di più tabelle esistenti per un recupero più rapido dei dati. Ad esempio, basti pensare a un'applicazione per la vendita al dettaglio con due tabelle di base per i dati dei clienti e dei prodotti. La tabella clienti contiene informazioni come il nome e i dettagli di contatto del cliente, mentre la tabella del prodotto contiene informazioni sui dettagli e i costi del prodotto. La tabella clienti memorizza solo gli ID prodotto degli articoli acquistati da un singolo cliente. È necessario fare un riferimento incrociato a entrambe le tabelle per ottenere i dettagli degli articoli acquistati da clienti specifici. È possibile invece creare una vista materializzata che memorizza i nomi dei clienti e i dettagli del prodotto associati in un'unica tabella temporanea. È possibile creare strutture di indice sulla vista materializzata per migliorare le prestazioni di lettura dei dati.
Quali sono i vantaggi delle viste materializzate?
Le viste materializzate sono un metodo rapido ed efficiente per accedere ai dati pertinenti. Contribuiscono all'ottimizzazione delle query nelle applicazioni a uso intensivo di dati. Di seguito esamineremo alcuni dei principali vantaggi.
Velocità
Le query di lettura scansionano diverse tabelle e righe di dati per raccogliere le informazioni necessarie. Con le viste materializzate, puoi interrogare i dati direttamente dalla nuova vista invece di dover calcolare nuove informazioni ogni volta. Più la query è complessa, più tempo risparmierai utilizzando una vista materializzata.
Semplicità di archiviazione dei dati
Le viste materializzate consentono di consolidare una logica di query complessa in un'unica tabella. Ciò semplifica la trasformazione dei dati e la manutenzione del codice per gli sviluppatori e può anche aiutare a rendere più gestibili le query complesse. È inoltre possibile utilizzare la creazione di subset di dati per ridurre la quantità di dati da replicare nella vista.
Consistenza
Le viste materializzate forniscono una vista coerente dei dati acquisiti in un momento specifico. È possibile configurare la coerenza di lettura nelle viste materializzate e rendere i dati accessibili anche in ambienti multiutente in cui il controllo della simultaneità è essenziale.
Le viste materializzate consentono di accedere ai dati anche se i dati di origine vengono modificati o eliminati. Nel tempo, ciò significa che è possibile utilizzare le viste materializzate per creare report su snapshot di dati basati sul tempo. Il livello di isolamento dalle tabelle di origine garantisce un maggior grado di coerenza tra i dati.
Controllo degli accessi migliorato
È possibile utilizzare una vista materializzata per controllare chi ha accesso a dati specifici. È possibile filtrare le informazioni per gli utenti senza consentire loro l'accesso alle tabelle di origine. Questo approccio è pratico se si desidera controllare chi ha accesso a quali dati, quale parte di essi può vedere e con quali può interagire.
Quali sono i casi d'uso delle viste materializzate?
Puoi trarre vantaggio dalle viste materializzate in molti scenari diversi.
Distribuisci dati filtrati
Se devi distribuire dati recenti in molte sedi, ad esempio per una forza lavoro remota, le viste materializzate sono utili. I dati vengono replicati e distribuiti su molti siti utilizzando viste materializzate. Le persone che hanno bisogno di accedere ai dati interagiscono con il data store replicato più vicino a loro dal punto di vista geografico.
Questo sistema consente la simultaneità e riduce il carico di rete. È un approccio efficace con database di sola lettura.
Analizza i dati delle serie temporali
Le viste materializzate forniscono snapshot dei set di dati con data e ora, in modo da poter modellare le modifiche delle informazioni nel tempo. Puoi archiviare aggregazioni di dati precalcolate, come riepiloghi mensili o settimanali. Questi usi sono utili per le piattaforme di business intelligence e reporting.
Interazione con i dati a distanza
Nei sistemi di database distribuiti, è possibile utilizzare le viste materializzate per ottimizzare le query che coinvolgono dati provenienti da server remoti. Invece di recuperare ripetutamente i dati da un'origine remota, è possibile recuperare e memorizzare i dati in una vista materializzata locale. Ciò riduce la necessità di comunicazioni di rete e migliora le prestazioni.
Ad esempio, se ricevi dati da un database esterno o tramite un'API, una vista materializzata li consolida e aiuta a elaborarli.
Elaborazione periodica in batch
Le viste materializzate sono utili per le situazioni in cui è richiesta l'elaborazione periodica in batch. Ad esempio, un istituto finanziario potrebbe utilizzare viste materializzate per archiviare i bilanci di fine giornata e i calcoli degli interessi. Oppure potrebbe archiviare riepiloghi delle prestazioni del portafoglio, che possono essere aggiornati alla fine di ogni giornata lavorativa.
Come funzionano le viste materializzate?
Le viste materializzate funzionano precalcolando e archiviando i risultati di una specifica query come tabella fisica nel database. Il database esegue il precalcolo a intervalli regolari oppure gli utenti possono attivarlo in base a eventi specifici. Gli amministratori monitorano le prestazioni e l'utilizzo delle risorse delle viste materializzate per garantire che continuino a raggiungere lo scopo previsto.
Ecco una panoramica generale del funzionamento delle viste materializzate.
Creazione di una vista materializzata
Si definisce una query che recupera i dati desiderati da una o più tabelle di origine per creare viste materializzate. Questa query può includere filtri, aggregazioni, join e altre operazioni in base alle esigenze.
Il database popola inizialmente la vista materializzata eseguendo la query definita sui dati di origine. Il risultato della query viene archiviato come tabella fisica nel database e questa tabella rappresenta la vista materializzata.
Aggiornamento della vista materializzata
I dati in una vista materializzata devono essere aggiornati periodicamente per riflettere le modifiche dei dati sottostanti nelle tabelle di origine. La frequenza di aggiornamento dei dati dipende dal caso d'uso e dai requisiti.
Successivamente, illustriamo alcuni approcci comuni per l'aggiornamento dei dati.
Aggiornamento completo
La vista materializzata viene completamente ricalcolata e sovrascritta con i risultati delle query più recenti. È l'approccio più semplice ma può richiedere molte risorse, specialmente per viste materializzate di grandi dimensioni.
Aggiornamento incrementale
Solo le modifiche nei dati sottostanti vengono applicate alla vista materializzata. Può essere più efficiente di un aggiornamento completo quando si tratta di set di dati di grandi dimensioni e aggiornamenti frequenti.
Aggiornamento su richiesta
Alcuni sistemi consentono di aggiornare le viste materializzate su richiesta, in base a eventi specifici o richieste dell'utente. Ciò offre un maggiore controllo sui tempi di aggiornamento dei dati, ma richiede una gestione attenta per garantire che la vista materializzata rimanga aggiornata.
Variazioni tecniche nei diversi sistemi
Ogni sistema di gestione del database dispone di metodi distinti per creare una vista materializzata.
Sistema di gestione del database |
Come funzionano le viste materializzate |
PostgreSQL |
Con PostgreSQL, devi aggiornare manualmente la vista materializzata, ricalcolando l'intera vista. La vista materializzata viene compilata con i dati nel momento esatto in cui la si crea. |
MySQL |
MySQL non supporta le viste materializzate. |
Oracle |
Oracle aggiorna automaticamente le viste materializzate, ma hai anche la possibilità di aggiornarle su richiesta. Puoi anche scrivere un'istruzione SQL che richieda l'aggiornamento delle viste prima di fornire risultati. |
SQL Server |
SQL Server utilizza il nome "viste indicizzate", poiché la materializzazione è una fase della creazione di un indice di una vista normale. È possibile eseguire solo query SQL di base con le relative viste indicizzate. Si aggiornano automaticamente per l'utente. |
MongoDB |
MongoDB utilizza funzioni di aggregazione per fornire una capacità simile alle viste materializzate, ma per un ambiente NoSQL. |
Qual è la differenza tra viste e viste materializzate?
Nei database relazionali, una vista è una tabella temporanea creata trasformando e combinando i dati su più tabelle di base. È una tabella virtuale che non memorizza alcun dato. È invece definita da una query su una o più tabelle di origine.
Ogni volta che un utente esegue una query sulla vista, il motore del database calcola dinamicamente i risultati eseguendo la query sottostante sulle tabelle di origine. I dati in una vista sono sempre aggiornati perché derivano direttamente dalle tabelle di origine ogni volta che vi si accede.
Una vista materializzata, invece, memorizza i risultati di una specifica query come tabella fisica nel database. I dati nella vista materializzata sono precalcolati e archiviati, il che significa che i risultati sono già disponibili senza la necessità di ricalcolare la query ogni volta che si accede alla vista.
Tuttavia, i dati nelle viste materializzate non sono sempre aggiornati. È necessario configurare la frequenza di aggiornamento per bilanciare l'aggiornamento dei dati e le prestazioni delle query.
Quali sono le sfide legate alle viste materializzate?
Poiché le viste materializzate sono un altro componente del database da considerare, si aggiunge un altro livello di complessità in termini di manutenzione. È necessario bilanciare i vantaggi in termini di query ed efficienza con i potenziali costi di archiviazione e i problemi di coerenza dei dati.
È necessario creare regole efficaci che attivino gli aggiornamenti per garantire che le viste materializzate rimangano utili. L'aggiornamento frequente delle viste materializzate può influire sulle prestazioni del sistema, soprattutto se ci si trova già in un periodo di picco. Inoltre, le viste materializzate occupano anche una notevole quantità di spazio mentre replicano i dati. Se disponi di un database di grandi dimensioni che si aggiorna costantemente, le richieste di archiviazione delle viste materializzate saranno probabilmente notevoli.
Se intendi utilizzare una vista materializzata, devi impostare regole e pianificazioni di aggiornamento chiare. È inoltre necessario comprendere come gestire le incongruenze dei dati, gli errori di aggiornamento e l'ulteriore carico di archiviazione.
In che modo AWS può aiutarti con i tuoi requisiti di vista materializzata?
Le viste materializzate sono un potente strumento per migliorare le prestazioni delle query in Amazon Redshift.
Amazon Redshift monitora continuamente il carico di lavoro utilizzando machine learning e crea nuove viste materializzate in caso di utilità. La funzionalità Vista materializzata automatica (AutoMV) di Redshift fornisce gli stessi vantaggi in termini di prestazioni delle viste materializzate create dall'utente.
La funzionalità AutoMV può essere utile in diversi modi:
- Bilancia i costi di creazione e mantenimento delle viste materializzate con i vantaggi attesi in termini di latenza delle query
- Monitora le AutoMV create in precedenza e le elimina quando non sono più utili
- Esegue aggiornamenti in modo automatico e incrementale, utilizzando gli stessi criteri e restrizioni delle viste materializzate create dall'utente
Inoltre, gli sviluppatori non devono rivedere le query per usufruire di AutoMV. La riscrittura automatica delle query per utilizzare le viste materializzate identifica le query che possono trarre vantaggio dalle AutoMV create dal sistema. Riscrive automaticamente le query per utilizzare le AutoMV, migliorando la loro efficienza.
Inizia a utilizzare le viste materializzate in AWS creando un account oggi stesso.
Passaggi successivi su AWS
Ottieni accesso istantaneo al Piano gratuito di AWS.