OLAP

75
OLAP IED 2006-2007

description

IED 2006-2007. OLAP. 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 - PowerPoint PPT Presentation

Transcript of OLAP

Page 1: OLAP

OLAP

IED 2006-2007

Page 2: OLAP

Sommaire

Introduction

Opérations typiques

Langages

Architectures

Page 3: OLAP

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?

Page 4: OLAP

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

Page 5: OLAP

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)

Page 6: OLAP

Hiérarchies

2006

Semaine 40

Trimestre 4

Octobre

03/10/2006

Vis

Cruciforme

Bleu

Etats-unis

CA

San-Jose

Bob

France

95Cerg

yKate

Total Total

Total

Page 7: OLAP

Modèle conceptuel

notation de Golfarelli (1998)

Page 8: OLAP

Requête typique simple- Dicing et Slicing

SELECT département, mois, AVG(montant) as moyenne

FROM ventes, vendeurs, produitsWHERE ventes.vendeur = vendeurs.nom AND ventes.codeProduit = produits.codeProduit AND couleur = ' noir 'GROUP BY département, moisHAVING moyenne > 5000;

Group by : Dicing

Where : Slicing

Page 9: OLAP

Exemple de traitement typique (1)

Page 10: OLAP

Exemple de traitement typique (2)

SELECT couleur, SUM(montant)FROM ventes, produitsWHERE ventes.codeProduit = produits.codeProduit AND modèle = 'vis'GROUP BY couleur ;

Les ventes de vis sont plus faibles que prévu...Quelles couleurs sont responsables?

Page 11: OLAP

Exemple de traitement typique (2)

Page 12: OLAP

Exemple de traitement typique (3)

SELECT couleur, années, SUM(montant)FROM ventes, produits, tempsWHERE ventes.codeProduit = produits.codeProduit AND ventes.date = temps.jour AND modèle = 'vis'GROUP BY couleur, années ;

Quelles années sont responsables?

Page 13: OLAP

Exemple de traitement typique (3)

Page 14: OLAP

Exemple de traitement typique (4)

SELECT couleur, trimestre, SUM(montant)FROM ventes, produits, tempsWHERE ventes.codeProduit = produits.codeProduit AND ventes.date = temps.jour AND modèle = 'vis'GROUP BY couleur, trimestre ;

Quels trimestres sont responsables?

Page 15: OLAP

Exemple de traitement typique (4)

Page 16: OLAP

Exemple de traitement typique (5)

SELECT vendeur, somme FROM(

SELECT vendeur, SUM(montant) as sommeFROM ventes, produits, tempsWHERE ventes.codeProduit = produits.codeProduitAND ventes.date = temps.jourAND ventes.vendeur = vendeurs.nomAND modèle = 'vis'GROUP BY trimestre, vendeur)

WHERE trimestre = “jui-sep”;

Quels vendeurs sont responsables?

Page 17: OLAP

Exemple de traitement typique (5)

Page 18: OLAP

Modèle de stockage de donnéestable de données

écrous est 1999 50clous est 1997 100vis ouest 1998 50

...

...écrous est total 220

...

...écrous total total 390

...

...total total total 1200

ventes pièces régions années quantités

pièce, région, année -> quantité

Page 19: OLAP

Modèle de stockage de donnéescube de données

Page 20: OLAP

Granularité

Page 21: OLAP

Terminologie

cube ventescellule écrous, est, 1997, 100référence écrous, est, 1997mesure 100

dimension lieuniveau régionsmembre/paramètre est

Page 22: OLAP

Exemple d’implémentation

Projet T3 de Microsoft, Unisys, EMC, Knosys (2001)

DW7.7 milliards de lignes8 tables de faits1.2 To

construction d’une architecture MOLAP récupération, agrégations, indexations,compression

un cube de 471 Go53 heures (40000 lignes/seconde)

Page 23: OLAP

Quelques solutions

Express-server/OLAP OracleDB2 OLAP Server IBMMetacube InformixSQL Server MicrosoftCrystal Business ObjectBusiness Information Warehouse SAPPowerPlay CognosMicroStrategy MicroStrategyEssbase Hyperion

nom éditeur

Page 24: OLAP

Opérations typiques

restructuration représentationgranularité niveau de détailensembliste extraction

3 catégories d’opérations, élémentaires

catégorie concerne

Page 25: OLAP

Reconstruction

RotationPivotSwitchSplitNestPush

Présentations ne sont pas gérées par SQL

Page 26: OLAP

Rotationannée

piècerégion

estoue

stsud

nord

1997

19991998

vis

clous

écrous

Page 27: OLAP

Rotation

est 10 10ouest 50 50 50sud 50 60 60nord 60 30 20

vis 60 30 20clous 40 20écrous 10

nord 1999 1998 1997

vis 1999 1998 1997

Page 28: OLAP

Pivot

année

pièce

région

est

ouest

sud

nord

1997

19991998

vis

clous

écrous

Page 29: OLAP

Pivot

nord 60 30 20sud 50 60 60ouest 50 50 50est 10 10

vis 60 30 20clous 40 20écrous 10

nord 1999 1998 1997

vis 1999 1998 1997

Page 30: OLAP

Switch

Page 31: OLAP

Switch

vis 50 60 60clous 10écrous 40 20

nord 1999 1998 1997

vis 60 30 20clous 40 20écrous 10

sud 1999 1998 1997

Page 32: OLAP

Split, nest, push

Split (régions)Nest (pièces, régions)Push(années)

Page 33: OLAP

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

Page 34: OLAP

Nest

ventes nest 1999 1998 1997

est 50 70 100ouest 10 30

écrous nord 10sud 40 20

est 10 10ouest 50 50 50

vis nord 60 30 20sud 50 60 60

est 70 70 100ouest 10 40

clous nord 40 20sud 10

Page 35: OLAP

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

Page 36: OLAP

Visualisation (1)

Page 37: OLAP

Visualisation (2)

Page 38: OLAP

Granularité

Roll-up

Drill-down

Groupements

Agrégation

Page 39: OLAP

Granularité

Page 40: OLAP

Roll-up et Drill-down

Drill-down

Roll-up

Page 41: OLAP

Opérations ensemblistes

DicingSlicingCubeSélectionProjection

Manipulations classiques

Extraction des informations

Page 42: OLAP

Dicing et SlicingSlicing

Dicing : partition

Page 43: OLAP

Cube

CUBE pièce, année, région BY SUM montant

SELECT SUM (montant)FROM VentesGROUP BY grouping-list

Page 44: OLAP

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)

Page 45: OLAP

Projection

Page 46: OLAP

Tables et Cube de données

ROLAP : Tables de données/agrégations

MOLAP : Cubes de données/agrégations

HOLAP : Tables + Cubes

Page 47: OLAP

Extensions de SQL

MDX de Microsoft

ANSI SQL 99

Page 48: OLAP

MDX de Microsoft (1)

SELECT dimensions avec 1 relation par axe plusieurs membres

FROM cube de données 1 nom de cube

WHERE dimensions avec 1 tuple 1 seul membre

clause paramètres valeur

Page 49: OLAP

MDX de Microsoft (2)

navigation PARENT le parent d’un membreCHILDREN les enfants d’un membreMEMBERS les membres d’un

niveauou d’une dimension

structuration CROSSJOIN imbrication

ranking TOPCOUNT les premiers membres

Page 50: OLAP

Exemple MDX (1)

SalesCube à cinq dimensions :

- SalesPerson- Geography (Countries > Regions > States > Cities)- Quarters (Quarters > Months > Days)- Years- Products

- Measures (Sales, PercentChange, BudgetedSales)

Page 51: OLAP

Exemple MDX (2)

SELECT CROSSJOIN({Venkatrao, Netz},{USA North.CHILDREN, USA South, Japan})ON COLUMNS,{Qtr1.CHILDREN, Qtr2, Qtr3,

Qtr4.CHILDREN} ON ROWS

FROM SalesCube

WHERE (Sales, [1991], Products.All)

Page 52: OLAP

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

Page 53: OLAP

Exemple –SQL99

SELECT jour, ville, SUM(ventes)FROM c1GROUP BY jour,ville

Jour_1 ville_1 v_11Jour_1 ville_2 v_12Jour_2 ville_1 v_21.........Jour_q ville_p v_qp

C1 jour ville ventes

Page 54: OLAP

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 c1GROUP BY CUBE(jour,ville)

génère l’union des groupements suivants{(jour,ville),(jour),(ville),vide }

Page 55: OLAP

Cube –SQL99 (2)

Jour_1 ville_1 v_11Jour_1 ville_2 v_12Jour_1 NULL v_1_AllJour_2 ville_1 v_21......Jour_q NULL v_q_ALLNULL ville_1 v_ALL_1.........NULL ville_p v_ALL_pNULL NULL v_ALL_ALL

jour ville ventes

Page 56: OLAP

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 c1GROUP BY ROLLUP(jour,ville)

génère l’union des groupements suivants{(jour,ville),(jour),vide }

Page 57: OLAP

Roll_up - SQL99 (2)

Jour_1 ville_1 v_1_1Jour_1 ville_2 v_1_2Jour_1 NULL v_1_ALLJour_2 ville_1 v_2_1.........NULL NULL v_ALL_ALL

jour ville ventes

Page 58: OLAP

Roll_up - SQL99 (3)

SELECT jour, ville, SUM(ventes)FROM c1GROUP BY ROLLUP(jour), ROLLUP(ville)

génération des agrégats pour les groupements :{(jour ),vide} × {(ville),vide} = {(jour ,ville),(jour),(ville),vide}

Page 59: OLAP

Grouping Sets - SQL99 (1)

Jour_1 ville_1 pièce_1 v_111Jour_1 ville_2 pièce_1 v_121Jour_2 ville_1 pièce_2 v_212............Jour_q ville_p pièce_r v_qpr

soient les faits :

c1 jour ville pièce ventes

Page 60: OLAP

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

Page 61: OLAP

Grouping Sets - SQL99 (3)

GROUP BY GROUP BY jour, ville, pièceGROUPING SETS((jour, ville, pièce))

GROUP BY GROUP BY jourGROUPING SETS UNION(jour, ville, pièce) GROUP BY ville

UNIONGROUP BY pièce

GROUP BY GROUP BY jourGROUPING SETS UNION(jour,(ville,pièce)) GROUP BY ville, pièce

Page 62: OLAP

Architectures

ROLAP

MOLAP

HOLAP

Page 63: OLAP

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

Page 64: OLAP

Cuboïdes

Cube = Treillis de cuboïdes

Page 65: OLAP

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?

Page 66: OLAP

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

Page 67: OLAP

Précalcul des agrégats (3)

Exempleventes(produit, vendeur, année, prix)

3 dimensions : produit, vendeur, année8 possibilités de groupement

SELECT SUM(prix)FROM ventesGROUP BY ...

Page 68: OLAP

Précalcul des agrégats (4)

GROUP BY nombre de tuples nom de la vueproduit, vendeur, année 6 M pvaproduit, vendeur 6 M pvproduit, année 0.8 M pavendeur, année 6 M vaproduit 0.2 M pvendeur 0.1 M vannée 0.01 M aNull 1 vide

Page 69: OLAP

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 videcoûte 7,11 M

Page 70: OLAP

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}

Page 71: OLAP

Stratégie

répondre à une requête Q1. choisir un ancêtre QA matérialisé de Q2. adapter Q à QA3. évaluer la requête adaptée sur QA

coût de la réponse à Q = nombre de tuples de QA

Page 72: OLAP

Techniques d’indexation (ROLAP)

listes inversées

index de vecteurs de bits (bitmap indexing)

index de jointure (join indexing)

Page 73: OLAP

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é

Page 74: OLAP

Stockage MOLAP

73

25 95

89 62

87

implantation “row major”

A[2][2]

73 25 95 89 6287

A[0][0]

Page 75: OLAP

Stockage MOLAP

d dimensions, Nk membres dans la dimension kla fonction p donne la position dans le tableau en fonction dechaque indice id

Exemple : a[2][3][4] avec 3 dimensions de 10 membresp(2,3,4) = 234