CRM | Progettazione software | centralini VoIP | siti e-commerce | IT&T software house
Thinking 2.0

Crm Software Erp

mondrian olap serverMondrian OLAP


Pentaho Mondrian Analysis è un motore per On Line Analytical Processing (OLAP) sviluppato in Java.
Implementa le funzionalità indispensabili all’analisi dati (aggregazione, drill-down drill-through, slicing, dicing) ed è in grado di eseguire espresse in queryMDX leggendo i dati da un RDBMS e presentando i risultati in forma multidimensionale per mezzo di API Java.

La connessione alla base di dati di Data Warehouse avviene via JDBC, il che rende indipendente Mondrian dal particolare RDBMS utilizzato. Lo schema multidimensionale della base dati può essere sia a stella che a fiocco di neve, e la sua descrizione viene fornita al motore sotto forma di un file XML.


I Tool di sviluppo

I Tool di sviluppo di Mondrian permettono di definire i metadata per la creazione degli schemi OLAP. Attualmente sono disponibili due strumenti, il primo proprietario della piattaforma, fornito con Mondrian e il secondo realizzato da terze parti:

  • Mondrian Cube Designer
  • Ramsetcube

Mentre il primo permette la gestione di un cubo alla volta, il secondo permette la gestione di un intero progetto.

Gli schemi

Uno schema definisce un database multidimensionale. Contiene il modello logico, costituito da cubi, gerarchie e membri, e le relazioni tra questo modello e quello fisico dei dati. Gli schemi di Mondrian sono scritti in file XML. Gli elementi principali di uno schema sono i cubi, le misure e le dimensioni.

Principali novità

Al di là di considerazioni che riguardano l’architettura in senso generale, la principale novità risiede nel fatto che le strutture ROLAP di un progetto vengono portate nella memoria RAM in modo tale che queste possano essere gestite con prestazioni paragonabili ai moderni motori MOLAP. Si parla quindi di HOLAP per indicare un sistema ibrido (HO – hibrid OLAP), sottolineato peraltro dallo stesso nome della società “Penta-ho” Pentaho che comprende Mondrian. Al giorno d’oggi questa possibilità è praticabile grazie ai più potenti elaboratori in commercio e ai sempre più ridotti costi delle memorie RAM.

Mondrian Architecture

Il sistema OLAP Mondrian consiste in quattro livelli; cominciando da quello più vicino all’utente abbiamo:

  • presentation layer
  • dimensional layer
  • star layer
  • storage layer

Il livello di presentazione determina cosa vede l’utente finale sul suo monitor e come può interagire per formulare nuove domande. Ci sono molti modi per rappresentare dati multidimensionali come ad esempio tabelle con pivoting, istogrammi, grafici a torta, ecc… e modi avanzati come mappe cliccabili e grafici dinamici.

Il secondo livello è il dimensional layer. Questo livello analizza, valida ed esegue un’interrogazione MDX. Una query viene valutata in molteplici passi. Prima vengono valutati gli assi, poi i valori delle celle all’interno degli assi. Il query transformer permette all’applicazione di manipolare query esistenti per costruire uno statement MDX invece di ripartire da zero per ogni richiesta. I metadati descrivono il modello dimensionale e come viene mappato nel modello relazionale.

Il terzo livello è lo star layer ed è responsabile del mantenimento di una cache di aggregazioni. Un’aggregazione è un insieme di valori (celle) in memoria, qualificate da un insieme di colonne con il valore delle dimensioni. Il dimensional layer manda una richiesta per un insieme di celle. Se le celle richieste non sono contenute nella cache, l’aggregation manager invia una richiesta allo storage layer.

Lo storage layer è un RDBMS. È responsabile di fornire aggregazioni di celle e i membri delle tabelle dimensionali. Questo componente può essere installato sulla stessa macchina o essere distribuito tra più macchine. Mentre i livelli 2 e 3, compongono il Mondrian server e devono risiedere sulla stessa macchina. Lo storage layer può essere installato su un’altra macchina e accessibile tramite una connessione remota JDBC.


API Mondrian

Mondrian fornisce delle API per permettere alle applicazioni lato client di eseguire le query. Visto che non ci sono API universalmente accettate per eseguire query OLAP, le API di Mondrian sono le prime realizzate propriamente per lo scopo. La differenza principale è il linguaggio per la query. Mondrian usa MDX per specificare le query dove JDBC usa SQL. Il seguente frammento di codice Java si connette a Mondrian, esegue una query e stampa i risultati:

import mondrian.olap.*;
import java.io.PrintWriter; 

Connection connection =
DriverManager.getConnection("Provider=mondrian;" +
       "Jdbc=jdbc:odbc:MondrianFoodMart;" +
        "Catalog=/WEB-INF/FoodMart.xml;",null,false);
Query query = connection.parseQuery("SELECT "+
"{[Measures].[Unit Sales],[Measures].[Store Sales]} on columns," +
"{[Product].children} on rows FROM [Sales] " +
"WHERE ([Time].[1997].[Q1], [Store].[CA].[San Francisco])");
Result result = connection.execute(query);
result.print(new PrintWriter(System.out));


Una Connection è creata via DriverManager, simile a JDBC. Una query, analogamente a uno Statement con JDBC, viene creata facendo il parsing di una stringa MDX. L’oggetto Result è analogo al ResultSet per JDBC, tranne che per il fatto che tratta dati multidimensionali. Questi consistono di assi e celle, invece di colonne e righe.

Per completare con standard emergenti, sono state aggiunte due API a Mondrian:

  • JOLAP è uno standard emergente per il processo JSR ed è diventata parte di J2EE;
  • XML for Analysis è uno standard per accedere a un OLAP server via SOAP (Simple Object

Access Protocol). Esso vuole permettere a un componente come Excel di eseguire query con Mondrian.


Tabelle degli aggregati

Al contrario di molti server OLAP, Mondrian non memorizza dati sul disco, lavora solo con i dati del database relazionale e, quando ha letto un po’ di dati, li memorizza nella cache. Questo garantisce semplificazioni nell’installazione di Mondrian, ma limita le sue prestazioni quando viene utilizzato con grandi moli di dati.

Consideriamo cosa succede quando un utente richiede il report delle vendite di quest’anno. Questo report contiene un unico dato: il totale delle vendite, di tutti i prodotti, in tutte le regioni durante l’anno 2008. Per prima cosa, per poter reperire questo numero, Mondrian genera una query come la seguente:

SELECT sum(store_sales)
FROM sales_fact, time
WHERE sales_fact.time_id = time.time_id
AND time.year = 2005

e la invia al DBMS. Il DBMS impiega alcuni minuti per eseguirla visto che deve andare a leggere milioni di record dalla fact table e aggregarli in una singola cella. Chiaramente, in questo caso e in quelli simili è necessario un preaggregato dei dati.

Una tabella degli aggregati coesiste con la fact table, e contiene misure preaggregate costruite a partire dalla fact table. Viene registrata nello schema utilizzato da Mondrian, in modo che Mondrian possa scegliere quando usare la fact table e quando la tabella degli aggregati, a seconda della particolare interrogazione da eseguire.

I.T.&T. s.r.l. I.T.&T. S.r.l. - Strada degli Angariari, 25 - 47891 Falciano (R.S.M.)
Tel. +378 (0549) 941183 Fax +378 (0549) 974280 - C.O.E. SM07562

Copyright © 2009 I.T.&T. S.r.l. All rights reserved