OLAP IED 2006-2007
Sommaire Introduction Opérations typiques Langages Architectures
Introduction Contexte un entrepôt de données offre des données - nombreuses - homogènes - exploitables - multidimensionnelles - consolidées comment exploiter ces données à des fins d analyse?
Entrepôts de Données et OLAP Traditionnellement : - les requêtes OLTP sont exécutées sur les données sources - l entrepôt est mis à jour chaque nuit - les requêtes OLAP sont exécutées sur les données de l entrepôt
Exemple ventes(pièce, date, vendeur, montant) produits(pièce, modèle, couleur) vendeurs(nom, ville, département, état, pays) temps(jour, semaine, mois, trimestre, année)
Hiérarchies Total Total Trimestr e 4 200 6 Semaine 40 Octob re 03/10/20 06 Crucifor me Total Vi s Ble u Franc e 9 5 Cerg y Kat e Etatsunis C A San- Jose Bo b
Modèle conceptuel notation de Golfarelli (1998)
Requête typique simple - Dicing et Slicing SELECT département, mois, AVG(montant) as moyenne FROM ventes, vendeurs, produits WHERE ventes.vendeur = vendeurs.nom AND ventes.codeproduit = produits.codeproduit AND couleur = ' noir ' GROUP BY département, mois HAVING moyenne > 5000; Where : Slicing Group by : Dicing
Exemple de traitement typique (1)
Exemple de traitement typique (2) Les ventes de vis sont plus faibles que prévu... Quelles couleurs sont responsables? SELECT couleur, SUM(montant) FROM ventes, produits WHERE ventes.codeproduit = produits.codeproduit AND modèle = 'vis' GROUP BY couleur ;
Exemple de traitement typique (2)
Exemple de traitement typique (3) Quelles années sont responsables? SELECT couleur, années, SUM(montant) FROM ventes, produits, temps WHERE ventes.codeproduit = produits.codeproduit AND ventes.date = temps.jour AND modèle = 'vis' GROUP BY couleur, années ;
Exemple de traitement typique (3)
Exemple de traitement typique (4) Quels trimestres sont responsables? SELECT couleur, trimestre, SUM(montant) FROM ventes, produits, temps WHERE ventes.codeproduit = produits.codeproduit AND ventes.date = temps.jour AND modèle = 'vis' GROUP BY couleur, trimestre ;
Exemple de traitement typique (4)
Exemple de traitement typique (5) Quels vendeurs sont responsables? SELECT vendeur, somme FROM( SELECT vendeur, SUM(montant) as somme FROM ventes, produits, temps WHERE ventes.codeproduit = produits.codeproduit AND ventes.date = temps.jour AND ventes.vendeur = vendeurs.nom AND modèle = 'vis' GROUP BY trimestre, vendeur) WHERE trimestre = jui-sep ;
Exemple de traitement typique (5)
Modèle de stockage de données table de données ventes pièces régions années quantités.................. écrous est 1999 50 clous est 1997 100 vis ouest 1998 50 écrous est total 220 écrous total total 390 pièce, région, année -> quantité total total total 1200
Modèle de stockage de données cube de données
Granularité
Terminologie cube ventes cellule écrous, est, 1997, 100 référence écrous, est, 1997 mesure 100 dimension lieu niveau régions membre/paramètre est
Exemple d implémentation Projet T3 de Microsoft, Unisys, EMC, Knosys (2001) DW 7.7 milliards de lignes 8 tables de faits 1.2 To construction d une architecture MOLAP récupération, agrégations, indexations,compression un cube de 471 Go 53 heures (40000 lignes/seconde)
Quelques solutions nom éditeur Express-server/OLAP DB2 OLAP Server Metacube SQL Server Crystal Business Information Warehouse PowerPlay MicroStrategy Essbase SAP Oracle IBM Informix Microsoft Business Object Cognos MicroStrategy Hyperion
Opérations typiques 3 catégories d opérations, élémentaires catégorie restructuration granularité ensembliste concerne représentation niveau de détail extraction
Reconstruction Rotation Pivot Switch Split Nest Push Présentations ne sont pas gérées par SQL
Rotation anné e régio pièce n écrou s clou s vi s 199 9199 199 8 es 7 oue t su nor st d d
Rotation nord 1999 1998 1997 vis 60 30 20 clous 40 20 écrous 10 vis 1999 1998 1997 est 10 10 ouest 50 50 50 sud 50 60 60 nord 60 30 20
Pivot anné e régio n pièce oue esst t su d nor d écrou s clou s vi s199 9199 8199 7
Pivot nord 1999 1998 1997 vis 60 30 20 clous 40 20 écrous 10 vis 1999 1998 1997 nord 60 30 20 sud 50 60 60 ouest 50 50 50 est 10 10
Switch
Switch nord 1999 1998 1997 vis 60 30 20 clous 40 20 écrous 10 sud 1999 1998 1997 vis 50 60 60 clous 10 écrous 40 20
Split, nest, push Split (régions) Nest (pièces, régions) Push(années)
Split (Régions) ventes est 1999 1998 1997 écrous 50 70 100 vis 10 10 clous 70 70 100 ventes ouest 1999 1998 1997 écrous 10 30 vis 50 50 50 clous 10 40 ventes sud 1999 1998 1997 écrous 40 20 vis 50 60 60 clous 10 ventes nord 1999 1998 1997 écrous 10 vis 60 30 20 clous 40 20
Nest ventes nest 1999 1998 1997 est 50 70 100 ouest 10 30 écrous nord 10 sud 40 20 est 10 10 ouest 50 50 50 vis nord 60 30 20 sud 50 60 60 est 70 70 100 ouest 10 40 clous nord 40 20 sud 10
Push ventes push est ouest nord sud 1999 50 1999 40 écrous 1998 70 1998 10 1998 20 1997 100 1997 30 1997 10 1999 50 1999 60 1999 50 vis 1998 10 1998 50 1998 30 1998 60 1997 10 1997 50 1997 20 1997 60 1999 70 1999 40 clous 1998 70 1998 10 1998 20 1998 10 1997 100 1997 40
Visualisation (1)
Visualisation (2)
Granularité Groupements Agrégation Roll-up Drill-down
Granularité
Roll-up et Drill-down Drilldown Rollup
Opérations ensemblistes Manipulations classiques Extraction des informations Dicing Slicing Cube Sélection Projection
Dicing et Slicing Slici ng Dicing : partition
Cube CUBE pièce, année, région BY SUM montant SELECT SUM (montant) FROM Ventes GROUP BY grouping-list
Sélection ventes >=50 (régions = nord ou régions = sud) et (pièces = clous ou pièces = écrous) et (années = 1998 ou années = 1999)
Projection
Tables et Cube de données ROLAP : Tables de données/agrégations MOLAP : Cubes de données/agrégations HOLAP : Tables + Cubes
Extensions de SQL MDX de Microsoft ANSI SQL 99
MDX de Microsoft (1) clause paramètres valeur SELECT FROM WHERE dimensions avec 1 relation par axe plusieurs membres cube de données 1 nom de cube dimensions avec 1 tuple 1 seul membre
MDX de Microsoft (2) navigation PARENT le parent d un membre CHILDREN les enfants d un membre MEMBERS les membres d un niveau ou d une dimension structuration CROSSJOIN imbrication ranking TOPCOUNT les premiers membres
Exemple MDX (1) SalesCube à cinq dimensions : - SalesPerson - Geography (Countries > Regions > States > Cities) - Quarters (Quarters > Months > Days) - Years - Products - Measures (Sales, PercentChange, BudgetedSales)
Exemple MDX (2) SELECT FROM WHERE CROSSJOIN({Venkatrao, Netz}, {USA North.CHILDREN, USA South, Japan}) ON COLUMNS, {Qtr1.CHILDREN, Qtr2, Qtr3, Qtr4.CHILDREN} ON ROWS SalesCube (Sales, [1991], Products.All)
ANSI SQL-99 Ajouts OLAP par rapport à SQL-92 : - GROUPING SETS : extension de GROUP BY - CUBE, ROLLUP : cas particulier de GROUPING SETS - ranking : extension pour ORDER BY - windowing : cumuls ou moyenne glissante Supporté notamment par DB2
Exemple SQL99 SELECT jour, ville, SUM(ventes) FROM c1 GROUP BY jour,ville C1 jour ville ventes Jour_1 ville_1 v_11 Jour_1 ville_2 v_12 Jour_2 ville_1 v_21......... Jour_q ville_p v_qp
Cube SQL99 (1) calcul de l UNION de GROUP BY de chaque sous-ensemble des attributs en paramétre SELECT jour, ville, SUM(ventes) FROM c1 GROUP BY CUBE(jour,ville) génère l union des groupements suivants {(jour,ville),(jour),(ville),vide }
Cube SQL99 (2) jour ville ventes Jour_1 ville_1 v_11 Jour_1 ville_2 v_12 Jour_1 NULL v_1_all Jour_2 ville_1 v_21...... Jour_q NULL v_q_all NULL ville_1 v_all_1......... NULL ville_p v_all_p NULL NULL v_all_all
Roll_up - SQL99 (1) Calcul de l UNION de GROUP BY de chaque préfixe des attributs en paramètre SELECT jour, ville, SUM(ventes) FROM c1 GROUP BY ROLLUP(jour,ville) génère l union des groupements suivants {(jour,ville),(jour),vide }
Roll_up - SQL99 (2) jour ville ventes Jour_1 ville_1 v_1_1 Jour_1 ville_2 v_1_2 Jour_1 NULL v_1_all Jour_2 ville_1 v_2_1......... NULL NULL v_all_all
Roll_up - SQL99 (3) SELECT jour, ville, SUM(ventes) FROM c1 GROUP BY ROLLUP(jour), ROLLUP(ville) génération des agrégats pour les groupements : {(jour ),vide} {(ville),vide} = {(jour,ville),(jour),(ville),vide}
Grouping Sets - SQL99 (1) soient les faits : c1 jour ville pièce ventes Jour_1 ville_1 pièce_1 v_111 Jour_1 ville_2 pièce_1 v_121 Jour_2 ville_1 pièce_2 v_212............ Jour_q ville_p pièce_r v_qpr
Grouping Sets - SQL99 (2) GROUP BY multiples en précisant quelles UNION sont souhaitées l imbrication d attributs permet de séparer les GROUP BY simples de l UNION de GROUP BY CUBE et ROLLUP sont des cas particulier de GROUPING SETS
Grouping Sets - SQL99 (3) GROUP BY GROUPING SETS ((jour, ville, pièce)) GROUP BY jour, ville, pièce GROUP BY GROUPING SETS (jour, ville, pièce) GROUP BY GROUPING SETS (jour,(ville,pièce)) GROUP BY jour UNION GROUP BY ville UNION GROUP BY pièce GROUP BY jour UNION GROUP BY ville, pièce
Architectures ROLAP MOLAP HOLAP
ROLAP - technologie de stockage relationnelle - star schéma ou snowflake schéma - middleware de traduction dynamique maturité de la technologie relationnelle génération de SQL encore peu efficace
Cuboïdes Cube = Treillis de cuboïdes
Précalcul des agrégats (1) Cube de données = faits = tous les cuboïdes 3 possibilités - ne pas stocker d agrégat coûteux en temps - stocker tous les agrégats coûteux en espace - ne stocker qu une partie des agrégats... mais lesquels?
Précalcul des agrégats (2) matérialiser des cuboïdes choisis en fonction - du grain (niveau d agrégation) - des requêtes utilisateurs le grain doit être suffisamment fin pour pouvoir répondre aux requêtes
Précalcul des agrégats (3) Exemple ventes(produit, vendeur, année, prix) 3 dimensions : produit, vendeur, année 8 possibilités de groupement SELECT SUM(prix) FROM ventes GROUP BY...
Précalcul des agrégats (4) GROUP BY nombre de tuples nom de la vue produit, vendeur, année 6 M pva produit, vendeur 6 M pv produit, année 0.8 M pa vendeur, année 6 M va produit 0.2 M p vendeur 0.1 M v année 0.01 M a Null 1 vide
Précalcul des agrégats (5) matérialiser tous les agrégats coûte 19 M matérialiser - vue pva - vue pa - vues p, v et a - vue vide coûte 7,11 M
Notations Q1 < Q2 ssi Q1 peut être traitée via Q2 - ancêtre(x) = {y x < y} - descendant(x) = {y y < x} - suivant(x) = {y x < y, pas de z tel que x < z, z < y} p < pv, ancêtre(pva) = {pva}, descendant(pv) = {pv,p,v,vide}, suivant(p) = {pv,pa}
Stratégie répondre à une requête Q 1. choisir un ancêtre QA matérialisé de Q 2. adapter Q à QA 3. évaluer la requête adaptée sur QA coût de la réponse à Q = nombre de tuples de QA
Techniques d indexation (ROLAP) listes inversées index de vecteurs de bits (bitmap indexing) index de jointure (join indexing)
MOLAP technologie des bases de données multidimensionnelles - structure de stockage = tableaux - correspondance directe avec la vue multidimensionnelle gestion de la faible densité (sparsity) - techniques de compression spécifiques - structure d index spécifiques problème d extensibilité
Stockage MOLAP 87 73 25 95 89 62 implantation row major A[0][0] 87 73 25 95 89 62 A[2][2]
Stockage MOLAP d dimensions, N k membres dans la dimension k la fonction p donne la position dans le tableau en fonction de chaque indice i d Exemple : a[2][3][4] avec 3 dimensions de 10 membres p(2,3,4) = 234