domenica 7 giugno 2009

Il ruolo delle Materialized-Views

Una vista materializzata (Materialized-View) non è altro che una tabella (solitamente temporanea) che memorizza il risultato di una particolare query su dati di dimensioni evelate. L'idea è quella di anticipare le richieste di risorse di una query estraendo i dati prima che il client effettui la query.
Supponendo di avere una tabella molto vasta (qualche milione di righe), e sapendo in anticipo su quali proiezioni di dati i client vogliono lavorare, è possibile estrarre questi dati in una elaborazione batch, e far si che i client accedano a questo sotto-insieme dei dati già estratti.
Quali sono i vantaggi?
Anzitutto sulla tabella così costruita è possibile costruire indici ad-hoc, e siccome questa tabella non deve essere aggiornata (poiché rappresenta una porzione dei dati sorgenti, e andranno aggiornati solo questi ultimi), anche gli indici non devono essere aggiornati. Ne consegue che in questo caso gli indici rappresentano un caso di puro catalizzatore di accesso.
In secondo luogo la tabella così costruita può contenere il risultato di diverse computazioni che altrimenti andrebbero eseguite al volo, con conseguente richiesta di tempo e risorse.
Ma le viste materializzate hanno anche degli svantaggi: il primo fra tutti è che si opera su dei dati non aggiornati, e questo richiede infatti una buona progettazione per stabilire ogni quanto la vista deve essere annullata e ricreata (o quantomeno aggiornata). Il secondo svantaggio è la richiesta di spazio. ai dati originali si aggiunge la copia costruita ad-hoc.
Non esiste una regola fissa per l'uso delle viste materializzate: occorre analizzare attentamente il carico di lavoro sul database, le query effettuate dal client e le eventuali richieste OLAP (assieme alla loro frequenza). Solo così si sarà in grado di realizzare un sistema con viste materializzate che funzioni.

Nessun commento: