. . . . . . . .
. . .
Il segreto della felicità è la libertà. Il segreto della libertà è il coraggio. "- Tucidide. Θουκυδίδης, Thūkydídēs -Atene,ca. a.C. 460 a.C.- dopo il 440 a.C. -

dal 1764 voce illuminista a Milano

§------Granularità


Per granularità si intende il livello di dettaglio dei dati salvati nel data warehouse. Più alto è il livello di dettaglio e più bassa è la granularità e viceversa. Essa è il più importante aspetto progettuale di cui bisogna tener conto, perché è direttamente legata al volume di dati salvato e, di conseguenza, alle prestazioni del sistema e alla necessità di risorse hardware. Ovviamente bisogna scegliere il giusto livello di granularità per evitare di memorizzare dettagli che non verranno mai presi in considerazione o non registrarne altri di essenziali, con questo livello si indica  la trasparenza.

In un certo senso più filosofico lo possiamo vedere in similitudine con il  granular computing , un modo di pensare che si basa sulla capacità umana di percepire il mondo reale sotto diversi livelli di granularità (cioè, astrazione) al fine di astratto e considerare solo quelle cose che servono un interesse specifico e per passare tra le diverse granularità. Concentrandosi su diversi livelli di granularità, si possono ottenere diversi livelli di conoscenza e pertanto di trasparenza, così come una maggiore comprensione della struttura della conoscenza e trasparenza inerente. L’ informatica granulare è quindi essenziale nel problem solving umano e quindi ha un impatto molto significativo sulla progettazione e realizzazione di sistemi intelligenti dando accessibilità e comprensione completa.

Spesso la soluzione sta nello scegliere più livelli di granularità come mostrato nella figura qui sotto esposta. Questo significa registrare fisicamente dati di dettaglio diverso in tabelle diverse. Così è possibile passare da una visione sintetica delle informazioni, ottenuta accedendo in un primo momento ai dati altamente riassunti (poco trasparenti), ad una visione dettagliata(più trasparenti), presa dalle tabelle a più bassa granularità , ottimizzando  il numero di accessi di base dei dati che è una raccolta organizzata di dati. I dati sono in genere organizzati per modellare aspetti rilevanti della realtà, in modo da favorire i processi che necessitano di tali informazioni (ad esempio, trovare il costo di un elemento del progetto).  Questo processo è detto anche Drill Down.


La struttura di un Data Warehouse

Un esempio della struttura tipica di un data warehouse. Si compone di diversi livelli di dettaglio (detti anche summarization level- livelli di riepilogo).
Figura: Esempio di summarization dei dati

Partendo dal basso vediamo per primo un archivio di dati dettagliati - metadati, dove sono registrati soggetti che si riferiscono ad un tempo lontano. Poi troviamo i dati attuali ad un elevato livello di dettaglio: essi tengono conto di un periodo relativamente breve. Quindi ci sono i dati ``leggermente riassunti''. Infine all'ultimo livello troviamo dei dati ``altamente riassunti'', simili ai precedenti ma relativi a periodi di aggregazione e latenza più lunghi.
Ogni livello di dettaglio viene ricavato a partire dal livello corrente. Una volta che i dati sono ``invecchiati'' passano automaticamente agli altri livelli di dettaglio.

La granularità in un Data Warehouse

Come è stato accennato prima è necessario fare una stima delle occorrenze di ciascuna entità nel progetto di un data warehouse. A tal proposito è bene pensare ad un data warehouse come ad un magazzino: ciascun dato occupa del posto, quindi costa, perciò i dati inutili vanno gettati o compattati.
Al massimo livello di dettaglio un progetto può disporre di ciascun elemento a  realizzazione avvenuta in funzione delle voci di tutti gli elementi che si devono proggettare. Un livello di summarization in questo caso è l'aggregazione dei dati nella quantità di ciascun prodotto del progetto; un livello ancora più alto di granularità lo otteniamo nelle analisi delle fonti e così via. In questo modo si possono ottenere varie tabelle interrogabili separatamente per raggiungere tempi di risposta ottimali.
La questione più importante da risolvere nel progetto del data warehouse è quanti e quali livelli di granularità deve supportare la struttura. Bisogna tener conto del tipo di informazione che si cerca più spesso, delle istanze delle entità e delle risorse a nostra disposizione. In nostro aiuto può venire la figura qui sotto esposta dove si nota come al crescere delle istanze è opportuno creare più livelli di granularità.

Figure: Soglie oltre le quali occorre attuare un progetto a più livelli di granularità a seconda delle occorrenze stimate nell'arco di un anno e di 5 anni.
\begin{figure}
\begin{center}
\hrule\vspace{5 mm} \psfig{file=granularita.ps}\vspace{5 mm} \hrule\end{center}\end{figure}
Ovviamente a partire da un solo livello di granularità è possibile ottenere on-line tutti gli altri, ma questa per operazione impegnano moltissime risorse, pertanto la posizione per l’assunzione di personale, perciò potrà  essere usato un solo livello di granularità laddove il numero di occorrenze di un'entità è limitato. Bisogna poi tener conto dell'arco di tempo che si vuole tenere on-line nel data warehouse, perché più è lungo e più è probabile che sia necessario usare più livelli di granularità.
È interessante far notare che il livello di granularità dipende dal numero dei record e non dalla loro dimensione: infatti, indipendentemente da quanto spazio un singolo record occupa, il numero di accessi agli indici ed alle tabelle è lo stesso; solo se i record sono eccezionalmente grandi si potranno avere più accessi alle risorse I/O per ottenerne uno.
Per determinare quale sia il giusto livello di granularità da applicare ad un progetto si mettono a disposizione dell'utente finale i dati con un'applicazione di prova e tramite monitoraggi ed interviste si stabilisce quale sia il livello di dettaglio da implementare.