samedi 20 juin 2009

Cubes MONDRIAN et ses clients

Dans l'informatique décisionnelle, les cubes sont des composants importants. Ils permettent de visualiser les données suivant des dimensions prédéfinies et de réaliser des transformations. Il est possible de 'creuser' les données jusqu'au niveau de détail , de les faire pivoter autour d'axes temporels ou géographiques.
Dans le domaine du logiciel libre MONDRIAN est le projet phare pour l'agrégation des données en cube. Si MONDRIAN fournit cette structure en cube, il faut lui adjoindre un programme qui lance des requêtes sur ces cubes et qui en restitue les résultats.

Exemple de cube :


Les requetes
Le SQL n'est pas aussi puissant ni adapté pour une structure multi-dimensionnelle, Le langage MDX (Multidimensional Expression) est utilisé comme interface d'interrogation.
Exemple de requête MDX :

SELECT { [Measures].[Store Sales] } ON COLUMNS, { [Date].[2002], [Date].[2003] } ON ROWS FROM Sales WHERE ( [Store].[USA].[CA] ) (source wikipedia)

Il est à noter que le langage MDX a été spécifié par un employé de Microsoft.
Le langage MDX peut etre encapsulé dans du XML devenant ainsi du XML/A (A pour Analyse)

Mondrian est donc un serveur de requete MDX et XML/A. Il transforme une requetes MDX en une série d'instruction SQL pour fournir un cube en réponse.
Mondrian est donc un moteur R-OLAP (R pour relationnel).

Les moteurs OLAP.

On distingue 3 familles de moteur OLAP: les R-OLAP , les M-OLAP et les H-OLAP

  • Les R-OLAP : Relational Online Analytical Processing , ils s'appuient sur des bases de données relationnelles pour produire les cubes. Pour obtenir des temps de traitement corrects,il est nécessaire de recourir à des tables dites 'pivots' (en étoile ou en flocon) . Un pivot représentant un axe du cube (exemples: l'axes temporel , l'axe géographique )
Une table pivot contient une série de clé étrangère et des données agrégées.

Mondrian qui est de type R-OLAP propose d'utiliser en plus des "tables d'agrégation" contenant des données déja pré-calculeés. Le but étant toujours d'obtenir des temps de réponse corrects.

  • Les M-OLAP : Multidimensional Online Analytical Processing. Dans ces moteurs, les cubes ne sont pas issus d'une base de données relationnelle mais directement d'un système capable de stocker et de restituer des données multidimensionnelles. Une requete MDX ne générera pas de SQL.

  • Les H-OLAP : Hybrid Online Analytical Processing. C'est une combinaison de deux modes précédent. Le cube, issu d'une agrégation de table relationnelle est stocké pour restitution dans un format plus adapté à l'analyse multidimensionnelle.
Les clients OLAP.
Le rôle du client est de générer de requêtes MDX ou XML/A , d'afficher le cube résultat et d'offrir des outils de manipulation des cubes.

JPIVOT
Il existe plusieurs projets open-source de client OLAP dont le plus connu est jpivot (suivre ce lien vers le projet).

Voici une copie d'écran de jpivot:


Une description des modifications du cube est donnée sur le blog de cedric Carbone (suivre le lien ici).

(extrait de l'article)



1e : Ajouter ou enlever des champs
2e : Editer la requete MDX
3e : Trier
4e : sauvegarde (dans spago BI uniquement)
5e et 6e :fusion de colonne
7e : a completer
8e : Supprimer des lignes blanches
9e : Intervertir les lignes et les colonnes
10e 11e 12e 13e: Drill (zoomer ,agreger,detailler)
14e 15e : Générer des graphismes
Les 3 derniers icônes permettent de définir les options d’impression PDF et d’exporter en PDF ou en XLS (MS Excel ou openoffice).

JPIVOT est avant tout une librairie de TAG JSP et c'est à l'administrateur de développer son interface graphique.

JPALO



Jpalo est une surcouche à jpivot. Il est moins puissant que ce dernier.

Il est aussi disponible en plugin Eclipse



Pentaho Analysis Tool (PAT)

Outil proposé dans la suite BI Pentaho, il est possible de le faire fonctionner sans Pentaho.


Le projet n'est pas très actif (suivre ce lien).

Jrubik

(site du projet)

Basé aussi sur les librairie de jpivot, son architecture est la suivante:




Quelques exemples







Le client à construire: rpivot
.

Il serait possible de faire une synthèse des projets suivants en proposant l'architecture suivante:

La partie restitution: Rails (exemple rpivot) : Cette interface permettrait de generer des requete XML/A vers un serveur Mondrian. Avec une bonne dose d'AJAX pour les fonctions de mise en forme et de navigation.


La partie protocole : XML/A

La partie cache: L'utilisation de couchDB comme système de cache aurait deux objectifs: Transformer MONDRIAN en modèle Hybride sans toucher au coeur du produit. Pour cela c'est la partie cliente qui serait responsable de la gestion du cache. En plus couchDB par le biais de ses procédures embarquées pourrait servir à faire des calculs locaux (moyenne) . CouchDB propose des fonctions comme MAP et REDUCE.

Aucun commentaire: