entrepôts de données - limsi · 2019. 3. 8. · olap analyse des données exemple structure de...
Post on 02-Mar-2021
2 Views
Preview:
TRANSCRIPT
Entrepôts de donnéesDeuxième partie
Thierry Hamon
Bureau H202Institut Galilée - Université Paris 13
&LIMSI-CNRS
hamon@limsi.frhttps://perso.limsi.fr/hamon/Teaching/P13/DWH-AIR3-2018-2019/
AIR3 – DWH
1/143
OLAP
IntroductionEntrepôt de données : stockage de données volumineuses,homogènes, exploitables, multidimensionnelles, consolidéesComment exploiter et analyser ces données ?Processus standard
Exécution des requêtes OLTP sur les données sourcesMise à jour régulière de l’entrepôtExécution des requêtes OLAP pour analyser les données del’entrepôt
RésumerConsoliderObserverAppliquer des formules statistiquesSynthétiser des données selon plusieurs dimensions
2/143
OLAP
OLTP vs. OLAPRappel
OLTP (On Line Transaction Processing)Applications: Applications opérationnellesTraitements factuels sur les produits, les ressources ou lesclientsExécution sur les données sources
OLAP (On Line Analytical Processing)Applications : Applications d’aide à la décisionTraitements ensemblistes, réduction d’une population à unevaleur ou un comportementExécution sur les données consolidées, agrégées
3/143
OLAP
OLAPRemarques
OLAP : ensemble des moyens et techniques utilisés dans lessystèmes d’aide à la décision efficacesRéalisation de traitements semi-automatiques définis et mis enœuvre par les décideurs
InterrogationSynthèse des donnéesVisualisation
On-Line : la réponse doit être obtenue quasi-instantanément
4/143
OLAP
OLTP vs. OLAPCaractéristiques OLTP OLAP
Conception Orientation Transaction AnalyseConception Entité-Relation Etoile/flocon
Données Granularité Détail Résumées, agrégéesNature Relationnelle Multidimentionnelle
Actualisation Actualisées, Historisées,mises à jour recalculées
Taille 100 Mo/Go 100 Go/ToTraitements Unité de travail Transaction Requête complexe
simpleAccés Lecture/écriture Lecture
Nb de tuples accédés Dizaines MillionsMétrique Débit de Temps de réponse
transactionsUtilisateurs Utilisateur Agent Analyste/décideur
opérationnelNombre d’utilisateurs Milliers Centaines
5/143
OLAP
Analyse des donnéesExemple
Structure de l’Entrepôt :table de faits
ventes ( codeProduit , date , vendeur , montant )
tables de dimensionprodu i t s ( codeProduit , modèle , cou leur )vendeurs (nom, v i l l e , département , état , pays )temps ( jour , semaine , mois , t r imes t r e , année )
Analyse des ventes de divers produitsQuels sont les produits dont les ventes ont chuté l’an dernier ?Quelles sont les quinze meilleures ventes par magasin et par semaine durant lepremier trimestre de l’année 2001 ?Quelle est la tendance des chiffres d’affaire (CA) par magasin depuis 3 ans ?Quelles prévisions peut-on faire sur les ventes d’une catégorie de produits dansles 6 mois à venir ?
6/143
OLAP
Problématique de l’OLAPExécution de requêtes sur des BD de plusieurs GoBesoins spécifiques
Langages de manipulationOrganisation des donnéesFonctions d’agrégation...
Organiser les données de manière similaire aux abstractions del’analyste
Plusieurs dimensionsDifférents niveaux de détailVue d’ensembleLa donnée : point dans l’espace associé à des valeurs (cubeOLAP)
7/143
OLAP
Exemple de cube des ventes
Donnée : quantité de vente d’une pièces, pendant une année, dansune région donnée
8/143
Opérations élémentaires OLAP
Opérations élémentaires OLAPDifférents catégories d’opérations OLAP :
Opérations de restructuration : rotate, switch, split,nest, push, pullOpérations de granularité : roll-up, drill-downOpérations ensemblistes : slide, dice,jointure(drill-across), data cube
Manipulations OLAP :Modèles et langages pour l’OLAPLes règles de Codd pour les produits OLAPProblématique de la modélisation logique d’un ED
9/143
Opérations élémentaires OLAP
Catégories d’opérations OLAP
Opérations de restructurationManipulation de la représentation, changement de points devue (dimension)Opérations sur le cube liées :
Structure : Rotate/pivotManipulation : SwitchVisualisation : Split, nest, push,pull
10/143
Opérations élémentaires OLAP
Catégories d’opérations OLAP
Opérations de granularitéChangement de niveau de détailOpérations liées aux hiérarchies des données :
roll-up,drill-down
11/143
Opérations élémentaires OLAP
Catégories d’opérations OLAP
Opérations ensemblistes :Extraction des données et OLTP classique :
slice, diceselectionprojectionjointure(drill-across)
12/143
Opérations élémentaires OLAP
Opérations de restructurationObjectifs :
Changement de points de vueRéorientation selon différentes dimensions de la vuemultidimensionnelle
Opérations :Réorientation :
sélection graphiqueflexibilité du schémamembres complexessymétrie membres/mesures
Manipulations :bijectivesrelativesà niveau d’information constant
(Rotate/pivot, Switch, Split, nest, push,pull)
13/143
Opérations élémentaires OLAP
Opérations de restructuration
rotate/pivot : Sélection de faces (et non des membres)switch/permutation : inter-changer la position des membresd’une dimensionsplit/division : présentation de chaque tranche sous formed’une tablenest/emboîtement : imbrication des membres à partir ducubepush/enfoncement : combiner les membres d’une dimensionaux mesures du cube
14/143
Opérations élémentaires OLAP
rotate/pivotrotate/pivot : sélection de faces
Rotation du cube autour d’un de ses 3 axes passant par lecentre de 2 faces opposéesPrésentation d’un ensemble de faces différent
15/143
Opérations élémentaires OLAP
Opération de restructuration switch
switch ou permutation : interchanger la position des membresd’une dimension
16/143
Opérations élémentaires OLAP
Opération de restructuration split
Split ou division :Présentation de chaque tranche du cubePasser d’une présentation tridimensionnelle à une présentationd’un ensemble de tablesGénéralisation : découpage d’un hypercube de dimension 4 encubes (3D)
17/143
Opérations élémentaires OLAP
Opération de restructuration split
ventes est 1999 1998 1997écrous 50 70 100clous 70 70 100vis 10 10
ventes ouest 1999 1998 1997écrous 10 30clous 10 40vis 50 50 50
ventes sud 1999 1998 1997écrous 40 20clous 10vis 50 60 60
ventes nord 1999 1998 1997écrous 10clous 40 20vis 60 30 20
18/143
Opérations élémentaires OLAP
Opération de restructuration nest
nest ou l’emboîtement:Imbrication des membres à partir du cubeRegrouper sur une même représentation bi-dimensionnelle detoutes les informations (mesures et membres) d’un cubeindépendamment du nombre de ses dimensions.
19/143
Opérations élémentaires OLAP
Opération de restructuration nest
20/143
Opérations élémentaires OLAP
Opération de restructuration pushpush ou l’enfoncement :
Combiner les membres d’une dimension aux mesures du cubePassage de membres comme contenu de cellules
21/143
Opérations élémentaires OLAP
Opérations de granularitéGranularité : Hiérarchisation de l’information en différents niveauxde détail (niveaux de granularité)
Un niveau : un ensemble nommé de membresNiveau le plus bas : celui de l’entrepôtDéfinition de nouveaux points de vue
de moins en moins d’informations détaillés (niveaux supérieurs)par des opérations d’agrégation
Navigation entre les niveaux : roll-up et drill-downgroupementsagrégation
Manipulations :relativesbesoin d’informations non présentes dans le cube initial
22/143
Opérations élémentaires OLAP
Opérations de granularitéAction sur la granularité d’observation des donnéesNavigation entre les différents niveaux
roll-up/forage vers le haut :Représentation des données du cube à un niveau de granularitésupérieur dans la hiérarchie de la dimension concernéeIl faut spécifier une fonction d’agrégation pour indiquercomment calculer les valeurs du niveau supérieur à partir decelles du niveau inférieur
drill-down/forage vers le bas :Représentation les données du cube à un niveau de granularitéde niveau inférieur dans la hiérarchie de la dimension concernéeDonnées présentées sous une forme plus détaillée (en fonctionde la hiérarchie de la dimension)
23/143
Opérations élémentaires OLAP
Opération de granularité Roll-Uproll-up(annees)
24/143
Opérations élémentaires OLAP
Opération de granularité roll-Up/CubeOpération CUBE :
Représentation cubique généralisée du roll-upCalcul de tous les agrégats suivant tous les niveaux de toutesles dimensionsUnion de plusieurs group-by : nouveau cubes e l e c t ALL , ALL , ALL , Sum( quant i t e ) from VENTES
unions e l e c t p ieces , ALL , ALL , Sum( quant i t e )From VENTES group−by p i e c e s ;
unions e l e c t p ieces , annees , ALL , Sum( quant i t e )from VENTES group−by p ieces , annees ;
unions e l e c t p ieces , annees , reg ions , Sum( quant i t e )from VENTES group−by p ieces , annees , r eg i on s ;
25/143
Opérations élémentaires OLAP
Opération de granularité roll-Up/Cube
Opérateur cubeGénéralisation N-dimensionnelle de fonctions d’agrégationssimplesOpérateur relationnel :s e l e c t p ieces , annees , reg ions , Sum( quant i t e Ventes )from VENTESgroup−by cube p ieces , annees , r eg i on s ;
26/143
Opérations élémentaires OLAP
Opération de granularité Drill downDrill-down ou forage vers le bas :
Représentation des données du cube à un niveau degranularité de niveau inférieurDonnées sous une forme plus détailléeRéciproque de roll-upRécupération des détails sur un résultat en affinant ou enajoutant une dimensionOpération coûteuse si pas intégrée dans le systèmeExemple : un chiffre d’affaire suspect pour un produit donné :
Ajout de la dimension temps : impact du week-endAjout de la dimension magasin : prise en compte du lieugéographique
27/143
Opérations élémentaires OLAP
Opération de granularité Drill downdrill-down(regions)
Drill-down du niveau des régions au niveau villes :
28/143
Opérations élémentaires OLAP
Opérations ensemblistesObjectifs :
Extraction d’informationManipulations classiquesExtension à plusieurs dimensions
Opérations OLAP ensemblistes :slice : projection selon une dimension du cubedice : sélection du cubedrill-across (forage transversal - jointure)drill-through (accès aux données détaillées/source,lorsqu’on ne dispose que des données agrégées)
29/143
Opérations élémentaires OLAP
Opérations ensemblistesExemple
slide : projection selon une dimension du cube
30/143
Opérations élémentaires OLAP
Opérations ensemblistesExemples
dice : sélection du cubeVentes ≥ 50 Ventes des écrous ou des
clous, en 1998 ou 1999, dansles régions nord ou sud
31/143
Opérations élémentaires OLAP
Drill-across (jointure)
Combinaison de 2 cubes :Corrélation/divergence entre les ventes prévues et les venteseffectives
Ventes 97-99 ⋊⋉ VentesPrévues 97-99Popularité d’un produit en sommant le cube des ventes(Année, Produit, Région) et le cube des ventes (Année,Produit, ClientEnligne)On obtient : les ventes totale (par région et en ligne) desProduits par AnnéeVentes 97-99 + VentesEnligne 97-99 = VentesTotales(Année, Produits)
32/143
Opérations élémentaires OLAP
Problème des opérateurs ensemblistes
Exemple : ∪prix 1997-1999
écrous 1clous 0,7vis 0,8
∪prix 1997-1999
boulons 0,8forets 1,1
vis 0,7Quelle(s) valeur(s) utiliser ?
33/143
Opérations élémentaires OLAP
Exemples de traitement typique
Quels sont les 10 produits les plus performants ?Calculer la moyenne glissante des ventes par région et parpièces, pour une fenêtre de 2 annéesCalculer les prévisions de ventes pour les années 2000 à 2002avec comme hypothèse un accroissement annuel des ventes de10%
34/143
Manipulations/Systèmes OLAP
Règles de Codd pour les produits OLAPEdgar F. Codd (1993) : définition des bases du modèle OLAP12 règles de Codd définissant l’évaluation des produits OLAP :
1 Vue multidimensionnelle des données dans une base OLAP2 Transparence : éléments techniques invisibles pour l’utilisateur3 Accessibilité : complexité et l’hétérogénéité des données masquées par les outils
OLAP4 Stabilité : performances stables indépendamment du contexte d’analyse5 Architecture Client/Serveur : le serveur homogénéise les données, les clients se
connectent simplement au serveur6 Traitement générique des dimensions : une seule structure logique pour toutes
les dimensions. Tout calcul effectué sur une dimension peut l’être sur les autres7 Gestion dynamique des matrices creuses : gestion dynamique de la mémoire
physique nécessaire pour stocker les données non nulles8 Support multi-utilisateurs : gestion des accès concurrents aux données9 Croisement des dimensions10 Manipulation intuitive des données11 Flexibilité des restitutions12 Nombre illimité de niveaux d’agrégations et de dimensions
35/143
Manipulations/Systèmes OLAP
Caractéristiques des produits OLAPFASMI – Fast Analysis of Shared Multidimensional Information
(Pendse 2005) : 18 règles (extension de Codd 1993)
Fast : temps de réponse aux demandes des utilisateurs entre 1 et 20secondesutilisation de pré-calculs pour réduire les durées des requêtesAnalysis :
Prendre en compte à toutes les logiques d’affaire et de statistiquesfournir la possibilité aux utilisateurs de construire leurs calculs et leursanalyses sans avoir à programmer
Shared :Possibilité de préservation de la confidentialitéGestion des cas où plusieurs utilisateurs ont des droits en écritures
Multidimensional :Production de vues conceptuelles multidimensionnelles des donnéesPossibilité de hiérarchies de dimensions
Informations : ensemble des données et les informations nécessaires
36/143
Manipulations/Systèmes OLAP
3 principaux types de système OLAP1 Utilisation d’un SGBD Relationnel (systèmes ROLAP)
SGBDR : Nécessité des adaptations pour répondre aux besoins des EDStockage des données dans un SGBDRUtilisation d’un middle-ware implémentant les opérations OLAPLents et peu performants mais sans limites de taille
2 Utilisation d’un SGBD Multidimensionnel (systèmes MOLAP)SGBD capable de stocker et traiter des données multidimensionnellesBasé sur un stockage par tableaux (techniques des matrices creuses)Indexation rapide des données calculéesTrès rapides et performants mais limité au gigaoctet
3 Utilisation d’un SGBD Hybride (systèmes HOLAP)Tirer profit des avantages des technologies ROLAP et MOLAP :
un ROLAP pour stocker, gérer les données détailléesun MOLAP pour stocker, gérer les données agrégées
Autres : DOLAP, OOLAP, WOLAP, SOLAP, Mobile OLAP
37/143
Manipulations/Systèmes OLAP
Quelques solution commerciales
DB2 UDB Server : ROLAPOracle : ROLAPSQL Server 2000 : ROLAPSAS OLAP Server : MOLAPSQL Server : HOLAPOracle Express-server : MOLAP/ROLAPDB2 OLAP Server : MOLAP/ROLAP
38/143
Manipulations/Systèmes OLAP
ROLAP
39/143
Manipulations/Systèmes OLAP
Stratégie ROLAP d’implantation d’un EDSGBD relationnels : plus de 80% des SGBDStratégie la plus couramment pour implanter un EDNécessité d’adaptation des SGBDR pour répondre aux besoinsdes ED :
Extensions du langage SQL à de nouveaux opérateursUsage de vues matérialiséesIndexation binaire pour améliorer les performances
Réalisation de calculs dérivés et agrégations à différentsniveauxGénération de requêtes adaptées au schéma relationnel del’EDExploitation des vues matérialisées existantes (facteurprincipal de performance)
40/143
Manipulations/Systèmes OLAP
Modèles logiques d’un ED « ROLAP »
Modèle multidimensionnel :Chaque fait correspond à une table, appelée table de faitconstituée
d’attributs représentant les mesures d’activitédes attributs clés étrangères de chacune des tables dedimension
Chaque dimension correspond à une table, appelée table dedimension constituée :
les paramètresune clé primaire permettant de réaliser des jointures avec latable de fait
41/143
Manipulations/Systèmes OLAP
Modèles logiques d’un ED « ROLAP »Soit le schéma en étoile :
Modélisation logique ROLAP :VENTE( CleTps#, CleGeo#, CleCat#, Quantite , Montant ) − tab le des f a i t sTEMPS( CleTps , Annee , Trimestre , Saison , Mois , Jour ) ) − tab le de dimensionGEOGRAPHIE( CleGeo , Region , Departement , V i l l e ) − tab le de dimensionCATEGORIE( CleCat , TypeProd , Gamme, NomProd , Couleur ) − tab le de dimension
42/143
Manipulations/Systèmes OLAP
Introduction à la technologie ROLAPUtilisation d’un SGBR relationnel pour stocker l’ED (structureen étoile ou flocon)Moteur OLAP : élément complémentaire pourFournir une vision multidimensionnelle de l’EDRéaliser des calculs de données dérivés et des agrégations àdifférents niveauxGénèrer des requêtes SQL adaptées au schéma relationnelle del’ED (grâce aux vues matérialisées existantes)
43/143
Manipulations/Systèmes OLAP
Introduction à la technologie ROLAP
Systèmes ROLAP : technologie de stockage relationnelleExtension du modèle relationnel pour supporter les requêtesd’analyses multidimensionnelles du niveau d’application
Nouveaux opérateurs comme cubeNouvelles fonctions : rank, percentile pour complèter lesfonctions classiques de SQL (count, sum et avg)
44/143
Manipulations/Systèmes OLAP
Introduction à la technologie ROLAPRôle du moteur OLAP :
Traduction dynamique du modèle logique de donnéesmultidimensionnel M en modèle de stockage relationnel R (enétoile ou en flocon)En fait, transformation d’une requête multidimensionnelle msur M en une requête relationnelle r sur R
Efficacité de la requête : performance et passage à l’échelleglobal du système→ Importance des techniques et des stratégies d’optimisationdans les produits ROLAP :
1 Techniques d’indexation spécifiques2 Sélection et matérialisation de vues3 Fragmentation des tables de l’entrepôt
45/143
Manipulations/Systèmes OLAP
Techniques d’indexation ROLAP
Listes inversées (inverted lists)Indexation binaire (index de vecteurs de bits - bitmap) :(oracle, DB2, microsoft SQL server, sybase IQ)Index de jointure (join indexing)(oracle 9i)
46/143
Manipulations/Systèmes OLAP
Techniques d’indexation ROLAPListes inversées
Exemple d’utilisation :Requête :GET peop l e WITH age = 20 AND name = ’ ’ Fred ’ ’
Soit L1 : liste pour attribut age = 20 :{r4, r18, r34, r35}Soit L2 : liste pour attribut name = Fred : {r18, r52}
Réponse à la requête : intersection de L1 avec L2L1 ∩ L2 = {r4, r18, r34, r35} ∩ {r18, r52} = {r18} = r18
47/143
Manipulations/Systèmes OLAP
Techniques d’indexation ROLAPindexation binaire/bitmap index
Index de vecteurs de bitsPrincipe général :
Dans une table, pour un attribut donné : association de laliste des tuples dont l’attribut contient la valeuridem pour un groupe d’attributIndex binaire : Représentation de la liste à l’aide d’un vecteurde bits
1 si le tuple associé fait partie de la liste0 dans le cas contraire
Stockage en mémoire centrale car structure de taille réduiteIndexation adaptée si peu de valeurs pour un attribut
48/143
Manipulations/Systèmes OLAP
Techniques d’indexation ROLAPAvantages de l’indexation binaire :
Opérations sur les bits très rapides (AND, OR, XOR, NOT)Optimisation de requêtes de types sélection, comparaison,jointure, agrégation ...Un vecteur de bits pour chaque valeur d’attributLongueur du vecteur de bits = nombre de tuples de la tablePlus compact que les B-arbres
Inconvénients de l’indexation binaire :Coût de maintenance important : tous les index binaires d’unetable doivent être actualisés lors de l’insertion d’un nouveautuple dans la tableEspace important pour leur stockage.Utilisation de technique de compression pour réduire ce coût
49/143
Manipulations/Systèmes OLAP
Techniques d’indexation ROLAPIndexation de jointure
Pré-calcul de jointure binaireUtilisation dans les schéma en étoileObjectif : éviter de calculer la jointureMaintenance des relations entre :
une clé étrangèreles clés primaires qui la contienne
Remarque : les techniques bitmap index et join index peuvent êtrecombinées
50/143
Manipulations/Systèmes OLAP
Techniques d’indexation ROLAPIndexation de jointure
(d’après H. Garcia-Molina)
51/143
Manipulations/Systèmes OLAP
Techniques d’indexation ROLAPIndexation de jointure
(d’après H. Garcia-Molina)
52/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPrappels
Entrepôt : modèle multidimensionnel où les données sont vuescomme des cubes de données (data cubes)Exemple : cube Ventes, vision des données selon plusieursdimensions
Tables de dimensionP rodu i t ( nom_produit , marque , type )Date ( j ou r , semaine , mois , t r i m e s t r e , annee )Table de faits
des mesures (unites_vendues)clés externes : référence à chaque table de dimension
Cube de dimension n : cuboïdeTreillis des cuboïdes d’un entrepôt : data cube
53/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPCube Ventes avec tous les agrégats possibles :
54/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPCube: treillis de cuboïdes
55/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPPré-calcul d’agrégats
3 possibilités :1 pas stockage d’agrégat (coûteux en temps)2 stockage tous les agrégats (coûteux en espace)3 stockage d’une partie des agrégats : nécessite de déterminer
lesquels stockerDatacube : faits + tous les cuboïdes possibles
cube dense : taille du datacube = taille de la table de faitscube creux : chaque cuboïde = taille de la table de faits
Choix de la matérialisation des cuboïdes en fonction :du grain (niveau d’agrégation) : le grain doit êtresuffisamment fin pour pouvoir répondre aux requêtesdes requêtes utilisateurs
→ Matérialisation des cuboïdes grâce à des vues matérialisées
56/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPVues matérialisées
Résultat du calcul d’une vue stockée sur disqueReprésentation des agrégations des tables d’un schéma en étoileUtilisation de ces vues par les requêtes (données pré-agrégées) :amélioration les performancesPossibilité de construction d’une vue matérialisée à partir d’uneautreMatérialisation de toutes les vues souvent impossible→ Sélection des vues à matérialiser en fonction :
du coût d’exécution des requêtesdu coût de maintenance (rafraîchissement)du coût de calculde l’espace disque requis
Réécriture des requêtes pour utiliser les vues matérialisées→ Réécriture parfois difficile
57/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPExemple
Exemple de cubeVentes ( modele , couleur , date , vendeur , p r i x , quant i t e )
Vue matérialisée des agrégats par modèle, couleur, mois, ville :INSERT INTO ventesVue1SELECT modele , couleur , mois , v i l l e ,SUM( p r i x ) as pr ix , SUM( quant i t e ) as quant i t eFROM ventes , vendeur , tempsWHERE ventes . vendeur = vendeur .nomAND ventes . date = temps . j ou rGROUP BY modele , couleur , mois , v i l l e
58/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPExemple
Vue matérialisée des agrégats par modèle, semaine, département :INSERT INTO ventesVue2SELECT modele , semaine , departementSUM( p r i x ) as pr ix , SUM( quant i t e ) as quant i t eFROM ventes , vendeur , tempsWHERE ventes . vendeur = vendeur .nomAND ventes . date = temps . j ou rGROUP BY modele , semaine , departement
59/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPExemple
Vente par modèle :SELECT modele , SUM( p r i x ) FROM ventes GROUP BY modele
peut être traitée par :SELECT modele , SUM( p r i x ) FROM ventesVue1 GROUP BY modele
ouSELECT modele , SUM( p r i x ) FROM ventesVue2 GROUP BY modele
60/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPExemple
Vente par modèle, par année, par département :SELECT modele , annee , departement , SUM( p r i x )FROM ventes , vendeur , tempsWHERE ventes . vendeur = vendeur .nomAND ventes . date = temps . j ou rGROUP BY modele , annee , departement
peut être traitée par :SELECT modele , annee , departement , SUM( p r i x )FROM ventesVue1 , vendeur , tempsWHERE ventesVue1 . v i l l e = vendeur . v i l l eAND ventesVue1 . mois = temps . moisGROUP BY modele , annee , departement
61/143
Manipulations/Systèmes OLAP
Sélection et matérialisation des vues en ROLAPExemple
Vente par modèle, par couleur, par dateSELECT modele , couleur , date , SUM( p r i x )FROM ventesGROUP BY modele , couleur , date
ne peut être traitée grâce à ventesVue1 ou ventesVue2 :grain des vues trop grosventesVue2 ne regroupe pas par couleur
62/143
Manipulations/Systèmes OLAP
Fragmentation des tablestables schéma en étoile
Objectif : optimisation des requêtesDécoupage des tables du schéma en étoile :
fragmentation horizontale : sélectionfragmentation verticale : projection
Evaluation des requêtes sur chaque fragmentRéponse complète : besoin d’une requête de reconstruction
fragmentation horizontale : unionfragmentation verticale : jointure
63/143
Manipulations/Systèmes OLAP
Forces et faiblesses de la technologie ROLAPAvantages :
Technologie relationnelle mureStokage de très grands volumes de donnéesPossibilité de définition de données complexes etmultidimensionnelles en utilisant un modèle relativementsimpleRéduction du nombre de jointures à réaliser dans l’exécutiond’une requête
Faiblesses :Temps de réponses potentiellement élevés : manque d’efficitéde la génération de SQLPas de possibilité de réaliser des requêtes OLAP avec descalculs complexesStructure de l’entrepôt en étoile ou flocon seulement
64/143
Manipulations/Systèmes OLAP
Quelques produits de technologie ROLAP
IBM DB2 UDB:SGBD disponible sur de nombreuses plate-formespossibilité de fédération de bases de données relationnelles(shared nothing database)Ensemble de produits :
DB2 Performance Expert : création de rapports, d’analyses etrecommande des changements pour améliorer la performanceDB2 Data Joiner: optimisation des requêtes SQL.DB2 Integrated Cluster Environnement : passage à l’échelle
65/143
Manipulations/Systèmes OLAP
Quelques produits de technologie ROLAP
Oracle :SGBD disponible sur de nombreuses plate-formesPossibilité de partitions de hash, range et list, et consolidationsur une base de données centralisée (shared disk data base)Ensemble de produits :
Real Application Clusters : affectation de certains processeurscomme processeurs OLAP et d’autres comme processeurs derequêtesOptimiseur : basé sur les coûts ou sur les règles
66/143
Manipulations/Systèmes OLAP
Quelques produits de technologie ROLAPSQL Server 2000 :
Possibilité de fédération de bases de données relationnelles(shared nothing database) e la liaison entre bases de donnéesdistribuées et hétérogènesEnsemble d’outils :
Optimiseur de SQL Server : basé sur les coûts avec créationautomatique de statistiques et leur rafraîchissementQuery Processor : possibilité des requêtesmultidimensionnelles, et des index composites et semi-jointuresSQL Query Analyzer : suggestions par rapport à l’implantationdes index additionnels et des statistiques complémentairesMicrosoft DTS (Data Transformation Services) : outil ETLintégré dans Microsoft SQL Server.
Autres produits :Sybase IQ, DSS Agents de MicroStrategy, MetaCube deInformix, ...
67/143
Manipulations/Systèmes OLAP
MOLAP
68/143
Manipulations/Systèmes OLAP
Stratégie MOLAP d’implémentation d’un entrepôtUtilisation un SGBD Multidimensionnel (SGBDM)avec capacité de stockage et de traitement des données multidimensionnelles
Cadre technologique commun pour ces systèmes :Version du modèle multidimensionnel et stratégies de stockage différentes enfonction du produit
Bonnes performancescar pré-agrégation et pré-calcul des données sur tous les niveaux des hiérarchiesdu modèle de l’entrepôt
Génération de très grands volumes d’informationTechniques incrémentales de rafraîchissement encore limitéesnécessite de reconstruire périodiquement l’entrepôt
Adapter pour de petits ED (quelques Go) et lorsque le modèlemultidimensionnel ne change pas beaucoup
69/143
Manipulations/Systèmes OLAP
Introduction à la technologie MOLAP
Stockage les données de manière multidimensionnelle(+) Calcul des agrégats dans des tables : en colonne ou enlignedonc très rapide car pas de jointure à faireTaille limitée(-) Pas de langage d’interrogation des données :nécessite une redéfinition des opérations de manipulation desstructures multidimensionnelles
70/143
Manipulations/Systèmes OLAP
Introduction à la technologie MOLAPTechnologie des bases de données multidimensionnelles :
Structure de stockage : tableauxCorrespondance directe avec la vue multidimensionnelleLes membres sont implicites :
correspond à l’adresse de la cellulesont normalisés (vis = 0, clous = 1, ...)
Gestion de la faible densité (sparsity) :Techniques de compression spécifiquesStructure d’index spécifiquesSi le tableau est dense, la mémoire ne contiendra que lesmesures
71/143
Manipulations/Systèmes OLAP
Introduction à la technologie MOLAPExemple de tableau MOLAP
Données :1460 jours200 000 produits (2 × 105)300 magasins (3 × 102 )promotion : 1 valeur booléenne (2)
Nombres de cellules du cube :
1460 × 2x105 × 3 × 102 × 2 = 1, 75 × 1011 cellulesDensité du cube :
seulement 10% de produits vendu par jour :densité = 1, 75 × 1010/1, 7511 × 10 = 0, 1
72/143
Manipulations/Systèmes OLAP
Densité/compression et indexation
CompressionTypiquement, jusqu’à 90 % de cellules vides(D’après P. Marcel)Stockage des données en blocs densesutilisation de techniques de compression (similaires pourcertaines à celles utilisées en relationnel)Mais ces techniques fonctionnant bien pour 2 ou 3 dimensionséchouent en 20 dimensions
Techniques d’indexation spécifiques
73/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
Agréger : parcourt et application de la fonction d’agrégat surdes lignes du tableau
Calcul des agrégats à la demandePrécalcul et stockage des agrégats comme des lignes dutableauExemple naïf : cube c de dimension A,B,C group by A,C
for(a=0;a<a max;a++)for(b=0;b<b max;b++)
for(c=0;c<c max;c++)res[a][c] += c[a][b][c]
74/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
Calcul des agrégats en MOLAP :1 Partitionnement du tableau physique de n dimensions en
sous-cubes (chunks)de n dimensionsstockés en mémoire principalecompressés pour gérer la faible densité
2 Calcul des agrégats :visiter chaque cellule de chaque sous-cubecalculer l’agrégat partiel impliquant cette cellule
75/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
(D’après P. Marcel)
76/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
Objectif : minimiser le nombre de visite par cellule dans lecalcul d’agrégatsExploitation de l’ordre de visite pour calculer simultanémentdes agrégats partiels (réduction des accès mémoire et descoûts de stockage)
77/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
Exemple :cube à 3 dimension A, B, C
tailles :
tailleA 40B 400C 4000
BC 1600000AC 160000AB 16000
Dimensions partitionnées en 4 sous-cubes de même taillescan dans l’ordre : 1, 2, 3, ..., 64(BC,AC,AB)le calcul de b0c0 demande 4 scans (1, 2, 3, 4)
le calcul de a0c0 demande 13 scans (1, 5, 9, 13)le calcul de a0b0 demande 49 scans (1, 17, 33, 49)
78/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
(D’après P. Marcel)
79/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
(D’après P. Marcel)
80/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
Occupation mémoire minimum :AB + Une colonne de AC + un sous-cube de BC
16000 + 10 × 4000 + 100 × 1000 = 156000Scan dans l’ordre 1, 17, 33, 49, 5, 21, ...(AB,AC,BC)le calcul de b0c0 demande 49 scansle calcul de a0c0 demande 13 scansle calcul de a0b0 demande 4 scansOccupation mémoire minimum :BC + une colonne de AC + un sous-cube de AB
1600000 + 10 × 4000 + 10 × 100 = 1641000
81/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégatsCoût MOLAP de opération
Méthode (valable pour un petit nombre de dimensions) :Les cuboïdes doivent être calculés par taille croissanteOn garde le plus petit cuboïdes en mémoire principaleOn recherche et on calcule seulement un sous-cube à la foispour le plus grand cuboïde
82/143
Manipulations/Systèmes OLAP
Agrégation et calcul des agrégats
Coût MOLAP des opérations typiques :Opération coûtroll-up dépend de l’utilisation d’un cachedrill-down
rotate élévé : accès au cubeslice/dice
(D’après P. Marcel)
83/143
Manipulations/Systèmes OLAP
Forces et faiblesses de la technologie MOLAPAvantages :
Très bonnes performances grâce àLa réalisation de nombreuses pré-agrégations et de pré-calculsde données sur tous les niveaux de hiérarchies des dimensionsde l’EDUn accès rapide à une position d’un tableau (par son indice)
Inconvénients :Pré-agrégations et les pré-calculs de données : génération detrès importants volumes de donnéesDégradation rapide des performances quand la taille de l’EDdépasse quelques Go et que le modèle multidimensionnel évolueTechniques incrémentales de rafraîchissement limitées :nécessité de reconstruire périodiquement l’entrepôt
84/143
Manipulations/Systèmes OLAP
Quelques produits de technologie MOLAP
Essbase (Arbor Software) :SGBD multidimensionnel et multi-utilisateursEnsemble d’outils :
Hyperion Essbase Application Manager : outils graphiques,des modules pour la construction et le chargement desstructures OLAP, pour le chargement des données, pour ladéfinition des processus de calcul, pour la gestion despartitions de la base de données,...
Hyperion Essbase Query Designer : navigation des utilisateursfinaux facilitéeHyperion Essbase Partition Option : création logique etphysique de sous-ensembles des bases de données2 types de partitions sont supportés : transparente et liée.
85/143
Manipulations/Systèmes OLAP
Quelques produits de technologie MOLAP
Informix MetaCube (Informix) :SGBD multidimensionnelensemble d’outils :
MetaCube Analysis Engine : interface multidimensionnel etextension de la fonctionnalité d’analyse de la base de donnéesavec l’incorporation des opérations OLAP (opération rotate).MetaCube Explorer : interface graphique permettant auxutilisateurs d’exécuter des requêtes au travers du MetaCubeAnalysis EngineMetaCube Warehouse Manager : interface graphique pourcréer une description multidimensionnelle des tables et descolonnes dans l’entrepôt de donnéesMetaCube Analysis Engine : stockage de la descriptionmultidimensionnelle comme un ensemble de tables
86/143
Manipulations/Systèmes OLAP
Quelques produits de technologie MOLAP
SAS OLAP Server (SAS) :SGBD multidimensionnelensemble d’outils :
SAS OLAP Cube Studio : construction des cubes et utilisablefacilement pour la définition des mesures, des dimensions etdes agrégationsSAS Metadata Server : conteneur des métadonnées
Autres systèmes MOLAP :Pilot (Pilot Software)TMI (Applix)
87/143
Manipulations/Systèmes OLAP
Systèmes HOLAP
88/143
Manipulations/Systèmes OLAP
Stratégie HOLAP d’implémentation d’un entrepôt
Constat :dans l’approche relationnelle (ROLAP)30% du temps est consacré aux entrées/sortiesDans l’approche multidimensionnelle (MOLAP) :20% du temps est consacré aux entrées/sorties(70% calculs et 10% décompression)
Approche HOLAP (Hybride OLAP)Utilisation des tables comme structure permanente destockage des donnéesDes tableaux comme structure pour les requêtes
89/143
Manipulations/Systèmes OLAP
Introduction à la technologie HOLAP
Tentative de combiner les bons cotés des systèmes ROLAP etMOLAP :
Stockage des données détaillées (granularité fine) de l’ED dansun SGBD Relationnel - ROLAPStockage les données agrégées, souvent des magasins dedonnées (data marts) de l’ED dans un SGBDMultidimensionnel - MOLAP (granularité moins fine, index enmémoire centrale, ...)
→ Possibilité d’avoir des ED de taille importante tout enayant des temps de réponse satisfaisantsProduits : Express d’Oracle, Media/MR de Speedware, Holosde Seagate Technology, ...
90/143
Manipulations/Systèmes OLAP
Introduction à la technologie HOLAPDe nombreux systèmes commerciaux utilisent l’approcheHOLAP :
manipulation des informations de l’entrepôt de données avecun moteur ROLAPexploitation des data marts avec une approchemultidimensionnelle MOLAP
Architecture générale de ces systèmes :
91/143
Manipulations/Systèmes OLAP
Quelques produits de technologie HOLAP
DB2 OLAP Server :Calcul, de consolidation et acces à l’information à partir desbases de données multidimensionnelles, relationnelles ou lesdeuxComposants :
DB2 OLAP Integration Server : Utilisation d’outils graphiqueset des services pour l’intégration des donnéesDB2 OLAP Server Administration Services : outils pouraméliorer et faciliter des tâches d’administration
92/143
Manipulations/Systèmes OLAP
Quelques produits de technologie HOLAP
Oracle Express Server :SGBD exploitant un modèle de données multidimensionnelGestion d’un ensemble d’indicateurs à n dimensions (valeurssont stockées ou calculées dynamiquement)Stockage des données dans BD multidimensionnelle ourelationnelle
base Oracle Express Server :Stockage les agrégats multidimensionnelsStockage des données de détail dans la base relationnelle4GL Express Server : fonctions avancées pour la présentationet l’analyse des résultats
Autres produits HOLAP : Media/MR (Speedware), Hollos(Seagate), ...
93/143
Evolution de SQL pour OLAP
Evolution de la norme SQLSQL/86SQL/89 (FIPS 127-1)SQL/89 avec améliration de l’intégritéSQL/92 (Juillet 92)
Début (FIPS 127-2)PartielTotal
SQL CLI (Septembre 95)SQL PSM (Novembre 96)SQL/3 (SQL 99)
SQL Framework : Juillet 99SQL Foundation : Juillet 99SQL Call Level Interface (CLI) : Septembre 99SQL Persistent Stored Modules (PSM) : Juillet 99SQL Language Bindings : annuléSQL Gestion de données externes : Décembre 2000SQL Object Language Bindings Août 2000
94/143
Evolution de SQL pour OLAP
SQL99Sur-ensemble de SQL/92 : totalement compatible (SQL orientéobjet)Significantivement plus large que SQL/92Extensions Objet-Relationnel extensions :
Type de donnnées définis par l’utilisateurTypes RéférenceTypes Collection (e.g., arrays)Prise en compte de grands objets (Large object support - LOBs)Hiérarchies de Tables
TriggersProcédures Stokées et fonctions définies par l’utilisateurRequêtes récursivesExtensions OLAP (CUBE, ROLLUP, expressions en ORDER BY)Constructeurs de SQL proceduralExpressions en ORDER BYSavepointsMises à jour à travers les unions et les jointures
95/143
Evolution de SQL pour OLAP
Nouvelles fonction SQL d’agrégationNouvelles fonctions SQL d’agrégation:
N_tilerank, dense_rankeveryanysome
Nouvelles fonctions de la clause GROUP BY :ROLLUPCUBEGROUPINGGROUPING SETS
Fenêtre glissante :WINDOWS/OVER/PARTITION, ...
96/143
Evolution de SQL pour OLAP
Nouvelles fonctions de la clause GROUP BY
Fonctions classiques d’agrégation de SQL : count, max, min,sum, avgAjout de nouvelles fonctions pour faire des calculs commec’est possible dans les tableurs : N_tile(expression, n)
Calcul du domaine de l’expression en fonction des valeurs quiapparaissent dans la colonneDivision du domaine en n intervalles de taillesapproximativement égalesLa fonction retourne alors le numéro de l’intervalle qui contientla valeur de l’expression
97/143
Evolution de SQL pour OLAP
Nouvelles fonctions de la clause GROUP BY
Exemples d’utilisationsi le solde du compte est parmi les 10% les plus élevésN_t i l e ( compte . so l d e , 10) r e t o u r n e 10Trouver le min, le max et la moyenne des températures parmiles 10% les plus élevéesSELECT Percen t i l e , MIN(Temp) , AVG(Temp) , MAX(Temp)FROM WeatherGROUP BY N_ti le (Temp,10) as P e r c e n t i l eHAVING P e r c e n t i l e = 10;
98/143
Evolution de SQL pour OLAP
Nouvelles fonctions SQL de classementrank(expression) : rang de l’expression dans l’ensemble detoutes les valeurs du domaine (colonne)Exemples : la table population(country, number)
Trouver le classement de chaque paysSELECT country , rank ()OVER (ORDER BY number DESC) AS n_rankFROM popu lat ion
Utilisation de la clause ORDER BY pour retourner les résultatstriés :SELECT country , rank ()OVER (ORDER BY number DESC) AS n_rankFROM popu lat ion ORDER BY n_rank
99/143
Evolution de SQL pour OLAP
Nouvelles fonctions SQL de classement
Exemples (suite) : la table population(country, number)trouver les 5 premiers pays les plus peuplés (syntaxe DB2)SELECT country , rank ()OVER (ORDER BY number DESC) AS n_rankFROM popu lat ionORDER BY n_rankFETCH FIRST 5 ROWS ONLY
100/143
Evolution de SQL pour OLAP
Autres nouvelles fonctions SQL
dense_rank(expression): pas de prise en compte des doublonsdans le calcul du rang
avec la fonction rank, s’il y a 2 tuples qui ont les mêmesvaleurs et sont classés de rang n, le tuple suivant est de rangn + 2avec dense_rank, le tuple suivant a le rand n + 1
Exemple : Trouver le classement de chaque paysSELECT country , dense_rank ()OVER (ORDER BY number DESC) AS n_rankFROM popu lat ion
101/143
Evolution de SQL pour OLAP
Autres nouvelles fonctions SQLevery(expression) : vrai ssi la valeur de son argument(expression) est vraie pour tous les tuples, sinon faux (∀)Exemple : table :Film_v(titre, type_film, année, magasin, qté_stock, qté_vendus)Trouver la quantité maxi et mini de films vendus à plus de 10exemplairesSELECT COUNT(∗) , MAX( qté−vendus ) , MIN( qté−vendus ) ,SUM( qté−vendus ) , AVG( qté−vendus )FROMFilm_vGROUP BY magasin Having EVERY( qté−vendus>=10)
any(expression) / some(expression) : vrai ssi la valeurde son argument (expression) est vraie pour au moins untuple, sinon faux (∃)
102/143
Evolution de SQL pour OLAP
Nouvelles fonctions de la clause GROUP BYCUBE, ROLLUP et GROUPING SETS : production d’un ensemble detuples, équivalent à un UNION ALL de tuples groupésdifféremment
ROLLUP : calcul des agrégats (SUM, COUNT, MAX, MIN, AVG) àdifférents niveaux d’agrégationCUBE : similaire à ROLLUP mais calcul toutes les combinaisonsd’agrégationsGROUPING SETS : pas de calcul du cube, quand il n’est pasglobalement nécessaireFonctions GROUPING : désignation du groupe d’appartenancede chaque tuple pour calculer les sous-totaux et les filtres
103/143
Evolution de SQL pour OLAP
Nouvelles fonctions de la clause GROUP BYExemple
Création du cube Sales :CREATE VIEW Sa le s AS(SELECT ds .∗ , YEAR( sa les_date ) AS year , MONTH( sa les_date ) ASmonth , DAY( sa les_date ) AS dayFROM ( Sa l e s NATURAL JOIN Store NATURAL JOIN ProductNATURAL JOIN Period ) ds
104/143
Evolution de SQL pour OLAP
GROUP BY ROLLUPGROUP BY ROLLUP :
Calcul des agrégats (SUM, COUNT, MAX, MIN, AVG) à tous lesniveaux de totalisation sur une hiérarchie de dimensionscalcul le total général :
Selon l’ordre de gauche à droite dans la clause GROUP BYS’il y a n colonnes de regroupements, GROUP BY ROLLUPgénère n + 1 niveaux de totalisation
Exemples :GROUP BY ROLLUP ( year , month , day )GROUP BY ROLLUP ( country , c i t y )GROUP BY ROLLUP (month , c i t y , producer )
Simplification et accélération de la maintenance des tables desynthèse
105/143
Evolution de SQL pour OLAP
GROUP BY ROLLUPExemple
SELECT month , c i t y , producer , SUM( u n i t s ) AS sum_unitsFROM Sa le sWHERE year = 2014GROUP BY ROLLUP (month , c i t y , producer ) ;
106/143
Evolution de SQL pour OLAP
GROUP BY ROLLUPExemple
Total des ventes par pays et responsable des ventes pour chaque mois de 2014,avec sous-totaux pour chaque mois, et grand total
SELECT month , country , sales_mgr , SUM(amount) FROM Sa le sWHERE year = 2014 GROUP BY ROLLUP(month , country , sales_mgr )
Month Country Sales-mgr SUM(amount)April France Martin 25000April France Smith 15000April France - 40000 Total France/AprilApril Germany Smith 15000April Germany - 15000 Total Germany/AprilApril - - 55000 Tot. AprilMay France Martin 25000May France - 25000 Total France/MayMay Germany Smith 15000May Germany - 15000 Total France/MayMay - - 40000 Total May
- - - 95000 Grand Total
107/143
Evolution de SQL pour OLAP
GROUP BY CUBE
GROUP BY CUBE :Calcul des agrégats (SUM, COUNT, MAX, MIN, AVG) à différentsniveaux d’agrégation comme ROLLUPMais aussi calcul toutes les combinaisons d’agrégations :
Création des sous-totaux pour toutes les combinaisonspossibles d’un ensemble de colonnes de regroupementSi la clause CUBE contient n colonnes, CUBE calcule 2ncombinaisons de totauxIntérêt : lorsque les colonnes représentent des dimensionsappartenant à des hiérarchies différentes
Alternative plus performante à UNION ALL
108/143
Evolution de SQL pour OLAP
GROUP BY CUBEExemple
Tous les totaux et sous totaux des quantités de produits venduspar ville et produit pour chaque mois de 2014SELECT month , c i t y , product_id , SUM( u n i t s )FROM Sa le sWHERE year = 2014GROUP BY CUBE (month , c i t y , product . i d )
109/143
Evolution de SQL pour OLAP
GROUP BY CUBE
Tous les totaux et sous totaux des ventes par pays et responsabledes ventes pour chaque mois de 2014SELECT month , country , sales_mgr , SUM(amount)FROM Sa le sWHERE year = 2014GROUP BY CUBE(month , country , sales_mgr )
110/143
Evolution de SQL pour OLAP
GROUP BY CUBEMonth Country Sales-mgr SUM(amount)April France Martin 25000April France Smith 15000April France - 40000 Total France/AprilApril Germany Smith 15000April Germany - 15000 Total Germany/AprilApril - Martin 25000 Total Martin/AprilApril - Smith 30000 Total Smith/AprilApril - - 55000 Total AprilMay France Martin 25000May France - 25000 Total France/MayMay Germany Smith 15000May Germany - 15000 Total Germany/MayMay - Martin 25000 Total Martin/MayMay - Smith 15000 Total Smith/MayMay - - 40000 Total May
- France Martin 50000 Total Martin/France- France Smith 15000 Total Smith/France- France - 65000 Total France- Germany Smith 30000 Total Smith/Germany- Germany - 30000 Total Germany- - Martin 50000 Total Martin- - Smith 45000 Total Smith- - - 95000 Grand Total
111/143
Evolution de SQL pour OLAP
GROUP BY GROUPING SETS
Utilisation avec les agrégations usuelles (SUM, COUNT, MAX,MIN, AVG)Groupements multiples (month, country) et(month, sales_mgr)Possibilité de restreindre les résultats par une clause HAVING
112/143
Evolution de SQL pour OLAP
GROUP BY GROUPING SETSExemple
Total des ventes pour chaque mois de l’année 2014, par pays et parresponsable des ventesSELECT month , country , sales_mgr , SUM(amount)FROM Sa le sWHERE year = 2014GROUP BY GROUPING SETS((month , country ) , ( month , sales_mgr ))
Month Country Sales-mgr SUM(amount)April France - 40000 Total France/AprilApril Germany - 15000 Total Germany/AprilApril - Martin 25000 Total Martin/AprilApril - Smith 30000 Total Smith/AprilMay France - 25000 Total France/MayMay Germany - 15000 Total Germany/MayMay - Martin 25000 Total Martin/MayMay - Smith 15000 Total Smith/May
113/143
Evolution de SQL pour OLAP
GROUP BY GROUPING SETSInclusion du tuple grand total dans les résultats :
Génération implicite des grands totaux avec ROLLUP et CUBEIci, pas de génération avec un agrégat supplémentaire
Total de ventes par mois, pays, et responsable de vente, et aussi grandtotal de venteSELECT month , country , sales_mgr , SUM(amount)FROM Sa le s WHERE year = 2014GROUP BY GROUPING SETS((month , country ) , ( ) )
Month Country Sales-mgr SUM(amount)April France Martin 25000April France Smith 15000April Germany Smith 15000May France Martin 25000May Germany Smith 15000
- - - 95000
114/143
Evolution de SQL pour OLAP
Fonction GROUPINGCréation d’une nouvelle colonne avec des 0 et des 1Détection de tuples de total qui sont générés lors de l’exécution de CUBEou ROLLUP (1 pour les tuples de total et 0 pour les autres)
Tous les totaux et sous totaux des ventes par pays et responsable des ventespour chaque mois de 2014SELECT month , country , sales_mgr , SUM(amount ) , GROUPING( sales_mgr ) FROM Sa le s
WHERE year = 2014 GROUP BY ROLLUP (month , country , sales_mgr )
Month Country Sales-mgr SUM(amount) GROUPEDApril France Martin 25000 0April France Smith 15000 0April France - 40000 1April Germany Smith 15000 0April Germany - 15000 1April - - 55000 1May France Martin 25000 0May France - 25000 1May Germany Smith 15000 0May Germany - 15000 1May - - 40000 1
- - - 95000 1
115/143
Evolution de SQL pour OLAP
Fenêtre glissante
Pour répondre à des questions comme :Trouver pour chaque mois, les ventes de chaque magasin enfaisant la moyenne entre le mois courant et les deux moisprécédents : faire la moyenne sur les 3 derniers moisTrouver pour chaque magasin, les ventes cumulées pourchaque mois de l’an dernier, ordonnées par moisComparer les ventes de chaque mois avec la moyenne desventes de chaque magasin pendant les 3 mois précédents
→ Nécessite de définir une fenêtre glissante du temps et yeffectuer des cumuls, moyennes, dérivations, ...
116/143
Evolution de SQL pour OLAP
Fenêtre glissante
Notion de fenêtre :Dans une requête, une fenêtre est une sélection de lignes(tuples) utilisée pour un certain calcul par rapport à la lignecouranteLa taille de la fenêtre est un nombre de lignes mais peut êtreexprimée de différentes façons (nombre entier ou par unecondition)Une fenêtre se déclare soit explicitement par une clauseWINDOW ou directement dans le SELECT où elle est utilisée
117/143
Evolution de SQL pour OLAP
Fenêtre glissante3 paramètres :
1 Partitionnement PARTITION : Chaque ligne de la partition ades valeurs égales sur un ensemble de colonnes (analogue auGROUP BY)
2 Ordre ORDER : Ordre des lignes dans la partition comme un tripartiel sur 1 ou plusieurs colonnes (attention aux valeursnulles)
3 Cadre FRAMING : Définition de la taille de la fenêtre demanière physique (nombre de lignes – ROWS) ou logique(condition, plage de valeurs – RANGE) -ROWS 2 PRECEDING
118/143
Evolution de SQL pour OLAP
Fenêtre glissanteExemple
Trouver les populations de chaque pays et année, calculer lamoyenne du taux de croissance de la population pour chaque payset année, sur la base des années courante, précédente et suivante
Table : population(country, year, number)
SELECT country , year , avg ( popu lat ion )OVER (ORDER BY country , yearROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS p_avgFROM popu lat ionORDER BY country , year , p_avg ;
(source : Adiba & Fauvet, 2005)
119/143
Evolution de SQL pour OLAP
Fenêtre glissanteExemple
Calculer pour chaque magasin et pour chaque mois du dernier tiersde 2001 le total des ventes, ainsi que la moyenne glissante desquantités vendues avec les 2 mois précédents
Table Fvm(magasin, anmois, qté_totale)
SELECT h . magasin , h . anmois , h . qté_tota le ,AVG(h . qté_tota le ) OVER w AS moygl i s sFROMFvm hWHERE h . anmois BETWEEN 200109 AND 200112WINDOW w AS(PARTITION BY h . magasin ORDER BY h . anmois ROWS 2 PRECEDING)
(source : Adiba & Fauvet, 2005)
120/143
Evolution de SQL pour OLAP
Fenêtre glissanteExemple (groupe incomplet)
Calculer pour chaque magasin et pour chacun des 4 derniers mois2001, le total des ventes ainsi que la moyenne glissante desquantités vendues sur les 2 mois précédents à condition qu’il y aitbien 2 mois, sinon NULL
Table Fvm(magasin, anmois, qté_totale)
SELECT h . magasin , h . anmois , h . qté_tota le ,CASE WHEN Count (∗) OVER w < 3 THEN NULLELSE AVG(h . qté_tota le ) OVER w End AS moygl i s sFROM Fvm h Where h . anmois BETWEEN 200109 AND 200112WINDOW w AS(PARTITION BY h . magasin ORDER BY h . anmois ROWS 2 PRECEDING)
(source : Adiba & Fauvet, 2005)
121/143
Introduction au langage MDX
Introduction à MDX
122/143
Introduction au langage MDX
Origine de MDX
MDX :Multi Dimensional eXpression,Langage de requêtes OLAP pour les bases de donnéesmultidimensionnelles
HistoriqueInventé en 1997 par Mosha Pasumansky au sein de Microsoft,Version commerciale Microsoft OLAP Services 7.0 & AnalysisServices en1998Dernière spécification OLE DB for OLAP (ODBO) en 1999adopté les autres systèmes OLAP → devenu un standard
123/143
Introduction au langage MDX
Origine de MDX
Objectifs :naviguation dans les bases multidimensionnellesdéfinition des requêtes sur tous leurs objets (dimensions,hiérarchies, niveaux, membres et cellules)
Requête MDX : rapport à plusieurs dimensions consistant enun ou plusieurs tableaux 2DUtilisé par de nombreux outils de BI commerciaux ou nonLangage très complexe et puissant générant des requêtes pluscompacte que les requêtes SQL équivalentes
124/143
Introduction au langage MDX
MDX versus SQL
Syntaxe de MDX similaire à celle de SQLMots clé SELECT, FROM, WHERE mais leurs sémantiques sontdifférentes :
SQL : construction de vues relationnellesMDX construction de vues multidimensionnelles des données
125/143
Introduction au langage MDX
MDX versus SQL
Analogies entre termes multidimensionnels (MDX) etrelationnels (SQL)
Multidimensionnel (MDX) Relationnel (SQL)Cube TableNiveau (Level) Colonne (chaine de caractère ou
valeur numérique)Dimension plusieurs colonnes liées ou une
table de dimensionMesure (Measure) Colonne (discrète ou numérique)Membre de dimension Valeur dans une colonne et une ligne(Dimension member) particulière de la table
126/143
Introduction au langage MDX
MDX versus SQL
Structure générale d’une requête :SQL :SELECT column1, column2, ..., columnn FROM tableMDX :SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM cube
Clause FROM : Spécification de la source de donnéesSQL : une ou plusieurs tablesMDX : un cube
127/143
Introduction au langage MDX
MDX versus SQL
Clause SELECT : indication des résultats que l’on souhaiterécupérer par la requête
en SQL :Une vue des données en 2 dimensions : lignes et colonnesLes lignes ont la même structure définie par les colonnes
en MDX :Nombre quelconque de dimensions pour former les résultats dela requêteOn parle axe pour éviter confusion avec les dimensions du cubePas de signification particulière pour les lignes et les colonneMais il faut définir chaque axe : axe1 définit l’axe horizontalet axe2 définit l’axe vertical
128/143
Introduction au langage MDX
Exemple de requête MDX
SELECT { Par is , B e r l i n } ON ROWS{[Q1] , [Q2 ] . CHILDREN} ON COLUMNS
FROM CubeSalesWHERE (MEASURES. SalesAmount ,
Time . [ 2 0 1 4 ] ,Product . Product )
129/143
Introduction au langage MDX
Entrepôt de données simplifiésMesures : Unit Price, Quantity, Discount, SalesAmount, FreightDimension : Temps
hiérarchie : Annee > trimestre > Mois >, membres :Annee : 2010, 2011, 2012, 2013, 2014Trimestre : Q1, Q2, Q3, Q4Mois : January, February, March, ...
Dimension : Clienthiérarchie : Continent > Pays > Region > City, membres :
Ville: Paris, Lyon, Berlin, Köln, Marseille, Nantes ...Region: Loire atlantique, Bouches du Rhône, Bas Rhin, Torino...Pays: Austria, Belgium, Danmark, France, ...Continent level: Europe, North America, Sud America, Asia
Dimension : Produithiérarchie : Categorie > Sous − categorie > produit, membres :
Categorie : Food, Drink ...Sous-categorie Food: Baked_food ......
130/143
Introduction au langage MDX
ExempleCube Sales :
3 dimensions : Time, Customer, Product1 mesure : SalesAmount
Cellule en haut à gauche : valeur 21, vente de boissons à Paris durant lepremier trimestre (Q1)( Product . Category . Beverage ; Time . Quarter .Q1 ;
Customer . C i ty . Par i s )
(inspired from Vaisman & Zimányi)
131/143
Introduction au langage MDX
Syntaxe de base de MDX
132/143
Introduction au langage MDX
Structure générale d’une requête MDXSyntaxe générale d’une requête MDX :SELECT [< s p e c i f i c a t i o n d ’un axe>
[ , <s p é c i f i c a t i o n d ’un axe > . . . ] ]FROM [< s p é c i f i c a t i o n d ’un cube >][WHERE [< s p é c i f i c a t i o n d ’un f i l t r e ( s l i c e r ) >]]
Parenthèses en MDX :{ } : Ensemble des éléments servant à la création d’unedimension du résultat de la requête( ) : Sélection de tuples dans la clause WHERE[ ] : Représentation d’espaces, de caractères spéciaux etd’interprétation non numérique de chiffres.
NB: [ ] : optionnels, sauf si le nom contient des caractèresespace, des chiffres, ou est un mot-clé MDX
133/143
Introduction au langage MDX
Structure générale d’une requête MDX
SELECT : description des axes du cube résultatChaque dimension du résultat :
est associée à un rôle correspondant à sa représentation dansle tableau retourné par la requête MDX :ON COLUMNS, ON ROWS, ON PAGES, ON SECTIONS, ON CHAPTERS
sur un ou plusieurs niveaux de la hiérarchie :{Paris, Berlin} (dimension Lieu, niveau Ville){[1er trimestre], [2nd trimestre].CHILDREN}(dimension Temps, niveaux trimestre et mois)
134/143
Introduction au langage MDX
Structure générale d’une requête MDXFROM : Spécification du/des cube/s de départ
Ensemble de cubes nécessaires à la création du cube résultatSi plusieurs cubes nécessaires : jointure multidimensionnellechaque paire de cubes doit alors posséder au moins unedimension concordante
WHERE :Restriction sur le/s cube/s de départRestrictions sur le/s cube/s de départ de la clause FROMSpécification des restrictions par une liste de noeuds de lahiérarchie d’une dimension nommée slicer-dimension
NB : les mesures sont des éléments d’une dimension spécialenommée Measures (utiliséables aussi dans les clauses WHERE etFROM).
135/143
Introduction au langage MDX
Membres en MDX
membre : une instance d’un niveau d’une dimensiongénéralement spécifié entre crochets [...]Exemple : membres de la dimension ”Products” de niveau 1[Food], [Drink]Membres : éléments accessibles dans les hiérarchies pouvantêtre référencés de différentes façons :[2012][Time].[2012][Product].[Food][Product].[Food].[Baked Goods][Product].[All Products].[Food].[Baked Goods]
136/143
Introduction au langage MDX
Membres en MDX
enfants d’un membre : membres du niveau immédiatement endessous de celui-ciExemple dans des requêtes simples :SELECT [ Time ] . [ 2 0 1 2 ] ON COLUMNS FROM [ Sa l e s ]SELECT [ Product ] . [ Food ] ON COLUMNS FROM [ Sa l e s ]SELECT [ Product ] . [ Food ] . [ Baked Goods ] ON COLUMNS
FROM [ Sa l e s ]
137/143
Bilan
Conclusion et perspectives
Deux tendances actuellesdatamartsdataweb
construction du Data Warehouse : processus long et difficileConstruction progressive par datamarts
Avantage : rapideInconvénient : risque de cohabitation de datamarts incohérents
DatawebOuverture du data warehouse au web
138/143
Bilan
Solutions commerciales
Solutions intégréesBusiness ObjectSASOracleIBM DB2SQL Server
139/143
Bilan
Solutions Open-sources (1)
Composants :ETL : Octopus, Talend, Kettle, CloverETLDWH : MySQL, Postgresql, GreenPlum/BizgresOLAP : Mondrian, PaloReporting : Birt, Open Report, Jasper Report, JFreeReportData Mining : Weka, R, Xelopes
140/143
Bilan
Solutions Open-sources (2)
Solutions intégrées :Pentaho (Kettle, Mondrian, JFreeReport)SpagoBI
Solutions spécifiques :I2B2 Data WarehouseClinical Research / Hospital data warehouse
141/143
Bilan
Plus loin...Big data warehouses
VolumeOptimisation/parallélisation des agrégationsOLAP dans un cloud
VariétéNouveaux modèles multidimensionnels et opérateursd’agrégationEntrepôts NoSQL
VélocitéTravailler en mémoire : problème de l’explosion dimensionnelleFonctions d’oubli
VéracitéQualité des données sourcesSécurité des données entreposées
142/143
Bilan
Plus loin ...
Tableur collaboratifDécisionnel sur mobileUtilisateur non-expertConfidentialité : données décisionnelles partagées dans lenuageEthique : analyse du comportement d’utilisateurs,manipulation de données personnelles
143/143
top related