UNIVERSITÉ MOHAMMED V – AGDAL FACULTÉ DES SCIENCES Rabat N° d’ordre 2491 THÈSE DE DOCTORAT Présentée par ELhoussaine ZIYATI Discipline : Sciences de l’ingénieur Spécialité : Informatique et Télécommunications Titre : Optimisation de requêtes OLAP en Entrepôts de Données Approche basée sur la fragmentation génétique Soutenue le : 08 Mai 2010 Devant le jury : Président : Driss Aboutajdine, PES, Faculté des Sciences Rabat Examinateurs : O. El Beqqali, PES, Faculté des Sciences de Fès S. Ouatik El Alaoui, PH, Faculté des Sciences de Fès R. Oulad Haj Thami, PES, ENSIAS Rabat S. Mouline, PH, Faculté des Sciences Rabat A. El Qadi, PA, EST de Meknès Faculté des Sciences, 4 Avenue Ibn Battouta B.P. 1014 RP, Rabat – Maroc Tel +212 (05) 37 77 18 34/35/38, Fax: +212 (05) 37 77 42 61, http://www.fsr.ac.ma 1 2 Avant propos Les travaux présentés dans ce mémoire ont été effectués au Laboratoire de Recherche en Informatique et Télécommunications, Unité associée au CNRST de la Faculté des Sciences de Rabat –Université Mohammed V Agdal, Maroc, Sous la direction du Professeur Driss Aboutajdine. Je tiens à remercier : Mr. Driss Aboutajdine, Professeur à la Faculté des Sciences de Rabat-Université Mohammed V Agdal, pour la confiance qu’il m’a accordée en m’autorisant à mener mes travaux de recherche dans ce laboratoire et d’avoir présidé ce jury de thèse et pour l’intérêt qu’il a manifesté à ce travail en acceptant la charge de suivre de près ces travaux. Je le remercie vivement pour sa disponibilité, son soutien et ses encouragements. Les rapporteurs sur ce travail : Mr. Omar El Beqqali, Professeur à la Faculté des Sciences de Fès, et Mr. Said Ouatik Alaoui, Professeur à la Faculté des Sciences de Fès, pour avoir accepté d’être rapporteur, et pour l’intérêt qu’ils ont manifesté pour ce travail, et pour leurs observations qui ont contribué à améliorer ce mémoire. Mr. Rachid Oulad Haj Thami, Professeur à l’ENSIAS, Université Mohammed V Agdal, pour l’honneur qu’il me fait en faisant partie de ce jury de thèse. Mme Salma Mouline, Professeur à la Faculté des Sciences de Rabat, Université Mohammed V Agdal, pour le grand honneur qu’il me fait en participant à ce jury de thèse, et pour ses remarques qui ont permis d’améliorer la qualité de ce mémoire. 3 Mr. Abderrahim El Qadi, Professeur à l’EST de Meknès, encadrant de ma thèse. Je voudrais lui exprimer ma profonde reconnaissance pour l’aide qu’il m’a constamment octroyée tout au long de ce travail. Tous les membres du LRIT, Professeurs et Doctorants, pour leur esprit du groupe. Qu’ils trouvent ici le témoignage de toute mon estime et ma sincère sympathie. Il m’est enfin agréable d’adresser ma profonde gratitude pour tous ceux qui m’ont soutenu durant cette thèse, en particulier Mr. Ladjel Bellatreche, Mr. Kamel Boukhalfa et Mr. Hammadi Bouslous. Qu’ils veuillent bien trouver ici le témoignage de ma profonde reconnaissance. Mes remerciements vont aussi à tous mes collègues dans les laboratoires LRIT, en particulier, un grand merci à Mounir AIT KERROUM, Rachid SAADANE, Ahmed FAQIHI, pour leurs aides et conseils. Je remercie chaleureusement mes parents mes parent pour leur soutien et pour leurs félicitations lors de mes réussites… Enfin merci à ceux que je n’ai pu citer mais qui ont toutes mes amitiés et mes remerciements. 4 5 Table des matières CHAPITRE 1 : ENTREPOT DE DONNEES : MODELES ET TECHNIQUES D’OPTIMISATION ......................................................................................... 19 1 Introduction .................................................................................................19 2 Architecture des entrepôts de données ....................................................... 19 2.1. Les caractéristiques des entrepôts de données ..................................................... 19 2.2. Architecture d’un système décisionnel ................................................................ 20 2.3. Fouille de données multidimensionnelles ............................................................ 23 2.4. Entrepôt et les bases de données relationnelles.................................................... 24 3 Les modèles des entrepôts de données ........................................................ 26 3.1. 3.2. 4 3.1.1. Concept de fait, de dimension et de hiérarchie .................................................... 27 3.1.2. Modèles en étoile, en flocon et en constellation .................................................. 28 La modélisation logique...................................................................................... 30 Les techniques d’optimisation dans les entrepôts de données ................... 32 4.1. 4.2. 5 La modélisation conceptuelle.............................................................................. 26 Les techniques redondantes ................................................................................ 32 4.1.1. Les vues matérialisées ........................................................................................ 32 4.1.2. Les index ........................................................................................................... 33 Les techniques non redondantes .......................................................................... 36 4.2.1. La fragmentation horizontale .............................................................................. 36 4.2.2. La fragmentation horizontale dérivée .................................................................. 36 4.2.3. La fragmentation verticale .................................................................................. 37 4.2.4. La fragmentation mixte (hybride) ....................................................................... 37 Conclusion ...................................................................................................38 CHAPITRE 2 : L’OPTIMISATION DE L’ENTREPOT DE DONNEES ....... 40 1 Introduction .................................................................................................40 2 Les vues matérialisées ................................................................................. 40 6 2.1. La sélection des vues .......................................................................................... 41 2.1.1. 2.1.1.1. Algorithme dans le contexte ROLAP............................................................... 42 2.1.1.2. Algorithme dans le contexte MOLAP .............................................................. 47 2.1.2. 2.2. 3 Algorithmes sans contraintes .............................................................................. 42 Algorithmes avec contrainte ............................................................................... 50 2.1.2.1. Contrainte d’espace ....................................................................................... 50 2.1.2.2. Contrainte du temps de maintenance .............................................................. 52 La maintenance des vues matérialisées ............................................................... 53 2.2.1. La maintenance incrémentale ............................................................................. 54 2.2.2. La maintenance autonome .................................................................................. 55 2.2.3. La maintenance en temps réel ............................................................................. 56 Les fragmentations ...................................................................................... 56 3.1. 3.2. Fragmentation verticale ...................................................................................... 56 3.1.1. Principe (problème de la fragmentation verticale) ............................................... 57 3.1.2. Les algorithmes de la fragmentation verticale ..................................................... 58 Fragmentation horizontale .................................................................................. 60 3.2.1. Position du problème .......................................................................................... 60 3.2.2. Principe de la fragmentation ............................................................................... 61 3.2.3. Propriétés de la fragmentation ............................................................................ 61 3.2.4. Les algorithmes de la FH .................................................................................... 62 3.2.4.1. Algorithme glouton ........................................................................................ 62 3.2.4.2. Algorithme dirigé par contrainte .................................................................... 63 3.2.4.2.1. Algorithme basé sur la minimalité et la complétude des prédicats ........... 64 3.2.4.2.2. Algorithme dirigé par les affinités des prédicats ..................................... 67 3.3. 4 La fragmentation dérivée .................................................................................... 68 Conclusion ...................................................................................................70 CHAPITRE 3 : ENTREPOT DE DONNEES ET ALGORITHMES GENETIQUES ................................................................................................ 71 1 Introduction .................................................................................................71 7 2 Concepts et principes des Algorithmes Génétiques ...................................71 2.1. Stratégie évolutive .............................................................................................. 71 2.2. Principe de base .................................................................................................. 73 3 2.2.1. Codage d’individu .............................................................................................. 74 2.2.2. Génération de la population initiale .................................................................... 75 2.2.3. Evaluation .......................................................................................................... 75 2.2.4. Sélection ............................................................................................................ 77 2.2.5. Croisement ......................................................................................................... 78 2.2.6. Mutation ............................................................................................................ 80 2.2.7. Convergences des algorithmes génétiques .......................................................... 81 2.2.8. Limitations des algorithmes génétiques .............................................................. 82 Application des algorithmes génétiques à l’entrepôt de données .............. 82 3.1. Processus génétique de la fragmentation horizontale ........................................... 83 3.1.1. Codage adopté.................................................................................................... 83 3.1.2. Représentation des fragments horizontaux .......................................................... 84 3.1.3. Sélection des individus ....................................................................................... 86 3.1.4. Types de croisements ......................................................................................... 87 3.2. Optimisation avec contrainte............................................................................... 87 3.3. Mutation ............................................................................................................. 89 4 Conclusion ...................................................................................................90 CHAPITRE 4 : MISE EN ŒUVRE D’UN ALGORITHME GENETIQUE POUR LA FRAGMENTATION MIXTE......................................................... 91 1 Introduction .................................................................................................91 2 AGs Présentation de notre approche : nouveau modèle d’optimisation avec les ...................................................................................................................... 91 2.1. Processus génétique de fragmentation mixte ....................................................... 91 2.1.1. Codage d’individu .............................................................................................. 92 2.1.2. Sélection des individus ....................................................................................... 93 2.1.3. Croisement ......................................................................................................... 93 2.1.4. Mutation ............................................................................................................ 95 8 3 2.1.5. Processus d’amélioration .................................................................................... 95 2.1.6. Caractéristiques de notre algorithme ................................................................... 97 Evaluation globale de l’approche sur un benchmark ................................ 98 3.1. Banc d’essai Benchmark ..................................................................................... 98 3.2. Implémentation................................................................................................... 99 3.3. 3.2.1. Pseudo code ..................................................................................................... 100 3.2.2. Chargement de l’entrepôt ................................................................................. 101 3.2.3. Types de requêtes prises en compte .................................................................. 102 Evaluation ........................................................................................................ 103 3.3.1. Sans pénalisation .............................................................................................. 103 3.3.2. Avec pénalisation ............................................................................................. 108 4 Conclusion ................................................................................................. 111 5 Conclusion et perspectives ........................................................................ 112 6 Références .................................................................................................. 115 9 Liste des figures Figure 1.1 : L’entrepôt de données est la base des systèmes décisionnels .............................. 20 Figure 1.2 : Architecture et niveaux d’agrégation des données. ............................................. 21 Figure 1.3 : Architecture simplifié d’un entrepôt de données ................................................ 21 Figure 1.4 : La fouille de données et entrepôt de données ..................................................... 23 Figure 1.5 : Application d’une technique de datamining ....................................................... 24 Figure 1.6 : Exemple de cube de données (Ventes par ville)................................................. 27 Figure 1.7 : Exemple de modélisation en étoile ..................................................................... 28 Figure 1.8 : Exemple de modélisation en flocon de neige ...................................................... 29 Figure 1.9 : Exemple de modélisation en constellation .......................................................... 30 Figure 1.10 : Index de projection sur l’attribut Age. .............................................................. 34 Figure 1.11 : Index de jointure pour l’équi-jointure Département.ville = Employé.ville ........ 35 Figure 1.12 : La fragmentation mixte suivant une relation R k , Att1 , Att2 , Att3 . ................... 38 Figure 2.1 : Les types de PSV ............................................................................................... 41 Figure 2.2 : Le processus de sélection des vues matérialisées. ............................................... 42 Figure 2.3 : Principe de base de la sélection de [YLK, 97] .................................................... 44 Figure 2.4 : Cube de données multidimensionnel. ................................................................. 47 Figure 2.5 : Exemple de requête............................................................................................ 48 Figure 2.6 : Treillis de vues .................................................................................................. 50 Figure 2.7 : Schéma d’un entrepôt de données ...................................................................... 54 Figure 2.8 : Principe général de l’algorithme de [HN, 79] ..................................................... 60 Figure 2.9 : Processus de sélection des dimensions. .............................................................. 61 Figure 2.10 : Structure de l’algorithme glouton ..................................................................... 63 Figure 2.11 : Les deux relations R (N.emp, Nom, Fonction) et S (Fonction, Salaire) ............. 69 Figure 3.1 : Principe général des algorithmes génétiques ...................................................... 74 Figure 3.2 : Slicing crossover ............................................................................................... 78 Figure 3.3 : 3-point slicing Crossover. .................................................................................. 79 Figure 3.4 : Mutation classique discrète ................................................................................ 80 Figure 3.5 : Mutation continue .............................................................................................. 81 Figure 3.6 : Mutation adaptative ........................................................................................... 81 Figure 3.7 : Les SDSs des attributs de fragmentation. ........................................................... 85 Figure 3.8 : Exemple de représentation de fragments dans le cas de trois attributs................. 85 Figure 3.9 : Exemple de Mutation ......................................................................................... 89 Figure 4.1 : Codage de différents individus pour un chromosome vertical (schéma de fragmentation verticale) ........................................................................................................ 93 Figure 4.2 : Croisement suivant la dimension Store............................................................... 94 Figure 4.3 : Exemple de mutation verticale ........................................................................... 95 Figure 4.4 : Schéma de l’entrepôt utilisé APB benchmark..................................................... 99 10 Figure 4.5 : Architecture du moteur générique .................................................................... 100 Figure 4.6 : Démarche de fragmentation proposée. ............................................................. 101 Figure 4.7 : Chargement de l’entrepôt de données............................................................... 102 Figure 4.8 : Fenêtre d’exécution d’une requête sous Aqua data studio................................. 104 Figure 4.9 : Temps d’exécution des requêtes selon deux schémas (fragmenté et non fragmenté). ......................................................................................................................... 105 Figure 4.10 : La différence entre la fragmentation mixte proposée et horizontale. ............... 106 Figure 4.11 : L’impact du nombre de fragments verticaux sur la performance..................... 107 Figure 4.12 : Cout total d’exécutions de l’ensemble suivant le nombre de partitions. .......... 108 Figure 4.13 : Temps de réponse avec et sans pénalité.......................................................... 109 Figure 4.14 : L’impact du choix entre les trois modes de pénalité. ...................................... 109 Figure 4.15 : La relation entre le coût total et le type de pénalité. ........................................ 110 Figure 4.16 : Relation entre la valeur et le cout total d’exécution .................................... 110 Figure 4.17 : Effet du nombre de dimensions sur le coût total d’exécution. ......................... 111 11 Liste des tableaux Tableau 1.1 : Différences entre SGBD et entrepôt de données .............................................. 25 Tableau 1.2 : Comparaison des processus OLAP et OLTP .................................................... 26 Tableau 2.1 : La description de l’algorithme [BLT, 86] ........................................................ 55 Tableau 2.2 : Relation Projet................................................................................................. 66 Tableau 3.1 : Exemple d’individu ......................................................................................... 85 Tableau 4.1 : Principaux paramètres des différents algorithmes ............................................ 98 Tableau 4.2 : Taille des tables ............................................................................................... 99 12 Liste des algorithmes Algorithme 1 : La sélection des vues selon [YKL, 97] .......................................................... 46 Algorithme 2 : La sélection des vues matérialisées selon [HRU, 96] ..................................... 51 Algorithme 3 : Algorithme de génération des prédicats complets et simples ......................... 65 Algorithme 4 : Algorithme de fragmentation horizontale [OV, 91] ....................................... 66 Algorithme 5 : Algorithme évolutionnaire typique ................................................................ 72 Algorithme 6 : Algorithme mixte proposé............................................................................. 92 Algorithme 7 : Algorithme de croisement pour la fragmentation verticale............................. 94 Algorithme 8 : Opération de mutation................................................................................... 95 13 Abréviations SI : Système d’information OLAP : On-Line Analytical Processing OLTP : On-Line Transaction Processing DW : Data Warehouse AG : Algorithme Génétique SGBD(R) : Système de Gestion de Base de données (Relationnel) MOLAP : Multidimensionnel OLAP ROLAP : Relational OLAP OOLAP : Object OLAP PSV : Problème de sélection des vues matérialisées SPJ : Sélection, Projection et Jointure B.E.A : Bond Energy Algorithm AE : Algorithme Evolutionnaire EPS : Ensemble des prédicats simples SDS : Sous Domaine stable IOC : Input Output Cost FS : Fragmentation Schème p SelF j : Facteur de Sélectivité dans la table des faits pour le prédicat FV : Fragmentation verticale FH : Fragmentation horizontale FM : Fragmentation mixe DM : Data Mining PMEV : Plan multiple d’exécution des vues COM_MIN : Complet et Minimal 14 pj Introduction générale L’informatique décisionnelle a connu et connaît aujourd’hui encore un essor important. Elle permet l’exploitation des données d’une organisation dans le but de faciliter la prise de décision. Parmi les objectifs des entrepôts de données (Data Warehouse), la transformation d’un système d’information (SI) qui avait une vocation de production en SI décisionnel (c’est à dire la transformation des données de production en des informations stratégiques). L’entrepôt de données est un ensemble de données destinées aux "décideurs", souvent ce sont des données de production avec des valeurs ajoutées (agrégation, intégrées et historisées). C’est aussi, un ensemble d'outils permettant de : - regrouper, nettoyer, et intégrer les données, - Établir des requêtes, rapports, et analyses. - Extraire de connaissances (fouille de données) et administration du warehouse. Les SGBDs et DW ont des objectifs qui différent avec des traitements et stockage des données différentes et font l'objet également de requêtes différentes. Les SGBDs sont des systèmes dont le mode de travail est transactionnel (OLTP On-line Transaction Processing), permettant l'insertion, la modification, l’interrogation des informations avec efficacité et sécurité. Les deux objectifs principaux sont : en premier lieu la sélection, l’ajout, la mise à jour et la suppression des tuples, et en second lieu l’exécution de ces opérations. Ces tâches s’effectuent très rapidement et simultanément par de nombreux utilisateurs. Les DW sont des systèmes conçus pour l’aide à la prise de décision (OLAP On-Line Analytical Processing), fréquemment utilisés en lecture (utilisateurs), avec pour objectifs principaux de regrouper, d’organiser les informations provenant de sources diverses, les intégrer et les stocker pour donner à l’utilisateur une vue orientée métier, retrouver et analyser l’information avec facilité et rapidité. Les entrepôts de données sont souvent modélisés par un schéma en étoile. Ce schéma est caractérisé par une table de faits de très grande taille (allant de quelques Gigaoctets à plusieurs Téraoctets) liée à un ensemble de tables de dimension de plus petite taille. La table des faits contient les clés étrangères des tables de dimension ainsi qu’un ensemble de mesures 15 collectées durant l’activité de l’organisation. Les tables de dimension contiennent des données qualitatives qui représentent des axes sur lesquels les mesures ont été collectées. Les requêtes de type OLAP définies sur un schéma en étoile (connues par requêtes de jointure en étoile) sont caractérisées par des opérations de sélection sur les tables de dimension, suivies de jointures avec la table des faits. Aucune jointure n’existe entre les tables de dimension. Toute jointure doit passer par la table des faits, ce qui rend le coût d’exécution de ces requêtes très important [Inm, 92] [Inm, 95]. Sans technique d’optimisation, leur exécution peut prendre des heures, voire des jours. Plusieurs structures d’optimisation ont été proposées pour améliorer la performance de ces requêtes. Nous pouvons ainsi citer les vues matérialisées, les index, la fragmentation, le traitement parallèle. Ces techniques peuvent être classées en deux catégories : - Des structures redondantes comme les vues matérialisées et les index du fait qu’elles nécessitent un espace de stockage et un coût de rafraîchissement. - Des structures non redondantes comme la fragmentation (horizontale, verticale et hybride) ne nécessitant ni un coût d’espace de stockage ni un coût de rafraîchissement. Ces techniques sont largement étudiées et utilisées dans les bases de données traditionnelles (relationnelles et orientées objets), dans le but de réduire le temps d’exécution des requêtes. La fragmentation est une technique de conception logique introduite dans les années 80 dans les bases de données réparties [CNP, 82], [CP, 84]. A travers le modèle relationnel, les stratégies de la fragmentation sont décrites : horizontale, verticale et hybride. Les relations étant des tables, il s’agit de trouver les différentes manières de diviser cette table en plusieurs petites tables. Le nombre de fragments est le degré de fragmentation défini en fonction des applications destinées à s’exécuter sur la base de données. Dans le contexte des entrepôts de données la fragmentation hybride et la fragmentation verticale n’ont pas eu le même succès que la fragmentation horizontale. Dans ce contexte, les travaux, présentés dans ce mémoire, constituent une investigation de l’optimisation par des techniques de calcul évolutif. Ces méthodes qui s’inspirent de métaphores biologiques (programmation génétique, algorithme génétique) offrent la possibilité de trouver des solutions optimales à des problèmes d’optimisation globale. Ces techniques de base ont été proposées initialement pour résoudre un type de problème donné. Par conséquent, pour pouvoir mettre en œuvre une telle méthode, 16 il est indispensable de l’adapter au problème à résoudre. Un bon réglage des paramètres est aussi exigé pour l’obtention de bonnes solutions. De ce fait, un des objectifs principaux de ce travail consiste en la conception de nouvelles méthodes hybrides basées sur les Algorithmes Génétiques pour résoudre des problèmes complexes. Ces nouvelles méthodes tentent d'améliorer l'efficacité des algorithmes d'optimisation de base dans le contexte de l’entrepôt de données. Par la suite, notre thèse sera articulée autour des points suivants : Dans le premier chapitre, nous précisons le cadre de cette thèse en définissant les concepts de base de l’entrepôt de données. Nous effectuons un état de l'art concernant la recherche actuelle dans le domaine de l’optimisation dans les entrepôts de données relationnels. Dans le deuxième chapitre, nous présentons les techniques d’optimisation des requêtes les plus utilisées dans le contexte de l’entrepôt de données. Nous mettons en évidence les problèmes liés à chaque technique, et nous présentons également les principales solutions et les algorithmes proposés dans le contexte de l’optimisation des requêtes. Quant au troisième chapitre, il sera consacré à la description de l’optimisation génétique et les différentes étapes de ce processus. Nous décrivons, aussi, le processus d’évolution qu’il induit à travers la structure des différents opérateurs génétiques. Ensuite, Nous rapportons les principaux travaux d’application des algorithmes génétiques à l’entrepôt de données. Nous illustrons, le processus de fragmentation horizontale basé sur les algorithmes génétiques. Un bilan critique et préliminaire de cette approche est présenté, il sert de cadre de réflexions pour définir de nouvelles perspectives à nos travaux. En ce qui concerne le quatrième chapitre, il présente notre contribution à la mise en œuvre d’un modèle hybride de fragmentation génétique. Nous y décrivons notamment nos motivations, caractéristiques fondamentales de l’AG d’optimisation de requêtes que nous proposons, fonctionnement général, structures et objectifs des opérateurs génétiques proposés. Enfin, On y présente également les résultats d’expérimentations réalisées dans le but de valider notre approche d’optimisation de requêtes. Cette évaluation a pour but de 17 mesurer l’efficacité de l’algorithme proposé et estimer l’impact de chacune de ses caractéristiques sur les résultats de la recherche. En conclusion, nous dressons un bilan de nos travaux, et nous présentons ensuite les horizons d’évolution de ces travaux. 18 Chapitre 1 : Entrepôt de données : Modèles et techniques d’optimisation 1 Introduction Comme cité précédemment, le concept Entrepôt de Données surgit à partir des besoins d’analyse des données d’une entreprise pour chercher des avantages compétitifs sur la concurrence. Les bases de données des systèmes existants de type « On-Line Transaction Processing » (OLTP) ne sont pas appropriées comme support de ces analyses parce qu’elles ont été conçues pour des fonctions spécifiques réalisées dans l’entreprise. Donc, les données pertinentes pour faire des analyses se trouvent disséminées entre plusieurs bases. De plus, leur conception vise à améliorer les performances des systèmes OLTP par rapport au traitement d’un grand nombre de transactions de mise à jour, ce qui complique l’interrogation. Nous présentons dans ce chapitre un état de l’art portant sur l’architecture, et les différents modèles de conception des entrepôts de données. Enfin, nous décrivons les principales techniques d’optimisation utilisées qui ont été suggérés dans la littérature pour améliorer les performances des entrepôts de données. 2 Architecture des entrepôts de données L’entrepôt de données joue un rôle stratégique dans la vie d’une entreprise. Il stocke des données pertinentes aux besoins de prise de décision en provenance des systèmes opérationnels de l’entreprise et d’autres sources externes. 2.1. Les caractéristiques des entrepôts de données Un entrepôt de données, par contre, offre des données intégrées, consolidées et historisées pour faire des analyses (figure 1.1). Il s’agit d’une collection de données pour le support d’un processus d’aide à la décision. Les données d’un entrepôt possèdent les caractéristiques suivantes : Orientation sujet : Les données d’un entrepôt s’organisent par sujets ou thèmes. Cette organisation permet de rassembler toutes les données, pertinentes à un sujet et nécessaires aux besoins d’analyse, qui se trouvent répandues à travers les structures fonctionnelles d’une entreprise. 19 Intégration : Les données d’un entrepôt sont le résultat de l’intégration de données en provenance de multiples sources ; ainsi, toutes les données nécessaires pour réaliser une analyse particulière se trouvent dans l’entrepôt. L’intégration est le résultat d’un processus qui peut devenir très complexe du à l’hétérogénéité des sources. Histoire : Les données d’un entrepôt représentent l’activité d’une entreprise pendant une longue période ou il est important de gérer les différentes valeurs qu’une donnée prises au cours du temps. Cette caractéristique donne la possibilité de suivre une donnée dans le temps pour analyser ses variations. Non-volatilité : les données chargées dans l’entrepôt sont surtout utilisées en interrogation et ne peuvent pas être modifiées, sauf dans certains cas de rafraîchissement. Figure 1.1 : L’entrepôt de données est la base des systèmes décisionnels 2.2. Architecture d’un système décisionnel Les données d’un entrepôt se trouvent selon deux axes : synthétique et historique (figure 1.2). L’axe synthétique établit une hiérarchie d’agrégation et comprend les données détaillées (qui représentent les événements les plus récents au bas de la hiérarchie), les données agrégées (qui synthétisent les données détaillées) et les données fortement agrégées (qui synthétisent à un niveau supérieur les données agrégées) [ECM, 99]. L’axe historique comprend les données détaillées historiées, qui représentent des événements passés. Les Méta-données contiennent des informations concernant les données dans l’entrepôt de données, telle que leur provenance et leur structure, ainsi que les méthodes utilisées pour faire l’agrégation. 20 Figure 1.2 : Architecture et niveaux d’agrégation des données. Dans la figure1.3 nous présentons une architecture simplifiée d’un entrepôt [DG, 01]. Les différents composants ont été intégrés dans trois parties : les sources de données, l’entrepôt et les outils existants dans le marché. Figure 1.3 : Architecture simplifié d’un entrepôt de données a) Les sources : Les données de l’entrepôt sont extraites de diverses sources souvent réparties et hétérogènes, et qui doivent être transformées avant leur stockage dans l’entrepôt. Nous avons deux types de sources des données : internes et externes à l’organisation. 21 Internes : La plupart des données sont saisies à partir des différents systèmes de production qui rassemblent les divers SGBD opérationnels, ainsi que des anciens systèmes de production qui contiennent des données encore exploitées par l’entreprise. Externes : Ils représentent des données externes à l’entreprise et qui sont souvent achetées. Par exemple, les sources de données démographiques. b) L’entrepôt de données : Il existe plusieurs types de données dans un entrepôt, qui correspondent à diverses utilisations, comme : Données de détail courantes : Ce sont l’ensemble des données quotidiennes et plus couramment utilisées. Ces données sont généralement stockées sur le disque pour avoir un accès rapide. Par exemple, le détail des ventes de l’année en cours, dans les différents magasins. Données de détail anciennes : Ce sont des données quotidiennes concernant des événements passés, comme par exemple le détail des ventes des deux dernières années. Nous les utilisons pour arriver à l’analyse des tendances ou des requêtes prévisionnelles. Néanmoins ces données sont plus rarement utilisées que les précédentes, et elles sont souvent stockées sur des mémoires d’archives. Données résumées ou agrégées : Ce sont des données moins détaillées que les deux premières et elles permettent de réduire le volume des données à stocker. Le type de données, en fonction de leur niveau de détail, permet de les classifier comme des données légèrement ou fortement résumées. Par exemple, les ventes mensuelles par magasin des dix dernières années sont des données faiblement résumées, tandis que les ventes semestrielles, par région, des dix dernières années sont fortement résumées. Les méta-données : Ce sont des données essentielles pour parvenir à une exploitation efficace du contenu d’un entrepôt. Elles représentent des informations nécessaires à l’accès et l’exploitation des données dans l’entrepôt comme : la sémantique (leur signification), l’origine (leur provenance), les règles d’agrégation (leur périmètre), le stockage (leur format, par exemple : francs, euro,...) et finalement l’utilisation (par quels programmes sont-elles utilisées). 22 c) Outils : Il existe sur le marché différents outils pour l’aide à la décision, comme les outils de fouille de données (pour découvrir des liens sémantiques), outils d’analyse en ligne (pour la synthèse et l’analyse des données multidimensionnelles), outils d’interrogation (pour faciliter l’accès aux données en fournissant une interface conviviale au langage de requêtes),... [CD, 97], [DG, 01]. 2.3. Fouille de données multidimensionnelles L’extraction de connaissances dans les bases de données désigne le processus d’extraction d’informations précédemment inconnues et potentiellement utiles concernant les données stockées dans les bases de données (figure 1.4) [PS, 91]. L’analyse par exemple des transactions de vente d’un supermarché permettra d’étudier les habitudes des clients, en fonction de quoi il sera possible de réorganiser les rayons afin d’améliorer les ventes. Figure 1.4 : La fouille de données et entrepôt de données Les données d’entrepôts enregistrées sont subies à une opération d’orpaillage où datamining qui est par définition la recherche de la connaissance. Il existe plusieurs techniques d’orpaillage, telle que les algorithmes génétiques, l’induction d’arbres de décision et les réseaux de neurones. La figure 1.5 montre l’application d’une technique d’orpaillage à un ensemble de données. Dans ce cas, il s’agit d’induire, à partir de n-uplets en entrée, un modèle de classification sous la forme d’un arbre de décision. L’algorithme appliqué a conduit un arbre dont l’attribut le plus important pour distinguer un n-uplet d’un autre est PRODUIT et dans un deuxième niveau, MAGAZIN. Dans cette figure, il est possible d’observer que, quelque soit la localisation du magasin et l’année, la vente des TV est élevée. En revanche, la vente de radio dépend de la localisation du magasin. 23 Figure 1.5 : Application d’une technique de datamining 2.4. Entrepôt et les bases de données relationnelles Dans l’environnement des entrepôts de données, les opérations, l’organisation des données, les critères de performance, la gestion des méta-données, la gestion des transactions et le processus de requêtes sont très différents des systèmes de bases de données opérationnels. Par conséquent, les SGBDR orientés vers l’environnement opérationnel, ne peuvent pas être directement transplantés dans un système d’entrepôt de données [WMB, 97]. Les SGBDs ont été créés pour gérer de grands volumes d’information contenus dans les différents systèmes opérationnels qui appartiennent à l’entreprise. Ces données sont manipulées en utilisant des processus transactionnels en ligne [Cod, 93]. Par contre, les entrepôts de données ont été conçus pour l’aide à la prise de décision. Ils intègrent les informations qui ont pour objectif de fournir une vue globale de l’information aux analystes et aux décideurs. Parallèlement à l’exploitation de l’information contenue dans ces systèmes opérationnels, les dirigeants des entreprises ont besoin d’avoir une vision globale concernant toute cette information pour faire des calculs prévisionnels, des statistiques ou pour établir des stratégies de développement et d’analyses des tendances. Le tableau 1.1 résume ces différences entre les systèmes de gestion de bases de données et les entrepôts de données [DG, 01]. 24 SGBD Entrepôt de données Objectifs Gestion et production Consultation et analyse Utilisateurs Gestionnaire de production Décideurs, analystes Taille de la base Plusieurs Gigaoctets Plusieurs Téraoctets Organisation de données Par traitement Par métier Types de données Données de gestion Données d’analyses (courantes) (résumées, historisées) Simples, prédéterminées, Complexes, spécifiques Données détaillées Agrégations et group by Requêtes Tableau 1.1 : Différences entre SGBD et entrepôt de données La conception ou la modélisation d’un entrepôt est très différente de celle des bases de données des systèmes de type OLTP, parce qu’il faut penser en terme de concepts plus ouverts et plus difficiles à définir. De plus, les besoins des utilisateurs de l’entrepôt ne sont pas clairs que ceux des utilisateurs des systèmes OLTP. Les bases de données de type OLTP (On-Line Transaction Processing) permettent de gérer des données variées et de réaliser des transactions sur ces données (lectures, mises à jour, etc.). La fouille de données a une forte relation avec OLAP, dont les objectifs sont similaires, mais il faut cependant souligner une différence essentielle (tableau 1.2). OLAP traite les données, alors que le Datamining vise également à extraire des connaissances de ces données. Le tableau 1.2 compare les caractéristiques des processus OLTP et OLAP. 25 Données Processus OLTP Processus OLAP Exhaustives Résumées Courantes Historiques Dynamiques Statiques Orientées applications Orientées sujets (d’analyse) Nombreux Peu nombreux Variés (employés, directeurs…..) Uniquement les décideurs Utilisateurs Concurrents Non concurrents Mise à jour et interrogations Interrogations Requêtes prédéfinies Requêtes imprévisibles et complexes Réponses immédiates Réponses moins rapides Accès à peu d’information Accès à de nombreuses informations. Tableau 1.2 : Comparaison des processus OLAP et OLTP 3 Les modèles des entrepôts de données Pour arriver à construire un modèle approprié pour un entrepôt de données, nous pouvons choisir, soit un schéma relationnel (le schéma en étoile, en flocon de neige ou en constellation) ; soit un schéma multidimensionnel. 3.1. La modélisation conceptuelle La conception des bases de données est en général basée sur le modèle Entité Association (E-R). Ce modèle permet de décrire des relations entre les données élémentaires (entités) éliminant des redondances, ce qui provoque l’introduction d’un nombre important de nouvelles entités. De ce fait, l’accès aux données devient compliqué et le diagramme généré difficile à comprendre pour un utilisateur. C’est pour cette raison que l’utilisation de la modélisation ER pour la conception d’un entrepôt n’est pas considérée comme approprié. Avant de décrire les différents schémas, nous commençons par quelques concepts de base. 26 3.1.1. Concept de fait, de dimension et de hiérarchie Le modèle multidimensionnel est une alternative mieux adéquate aux besoins de l’analyse des données d’un entrepôt. La modélisation multidimensionnelle part du principe que l’objectif majeur est la vision multidimensionnelle des données. Le constructeur fondamental de ces modèles est le cube de données (figure 1.6), qu’offre une abstraction très proche de la façon dont l’analyste voit et interroge les données. Il organise les données en une ou plusieurs dimensions1, Qui déterminent une mesure d’intérêt ou bien le fait2. Une dimension spécifie la manière dont on regarde les données pour les analyser, alors qu’une mesure est un objet d’analyse. Chaque dimension est formée par un ensemble d’attributs et chaque attribut peut prendre différentes valeurs. Les dimensions possèdent en général des hiérarchies3 associées qui organisent les attributs à différents niveaux pour observer les données à différentes granularités. Une dimension peut avoir plusieurs hiérarchies associées, chacune spécifiant différentes relations d’ordre entre ses attributs. On peut alors observer les données dans un espace à trois dimensions : la dimension ville, la dimension produit et la dimension temps. Chaque intersection de ces dimensions représente une cellule comportant le montant des ventes. Figure 1.6 : Exemple de cube de données (Ventes par ville) 1 Une dimension modélise une perspective de l'analyse. Une dimension se compose de paramètres correspondant aux formations faisant varier les mesures de l'activité 2 3 Le fait modélise le sujet de l'analyse. Un fait est formé de mesures correspondant aux informations de l'activité analysée Une hiérarchie organise les paramètres d'une dimension selon un ordre conformément à leur niveau de détail 27 3.1.2. Modèles en étoile, en flocon et en constellation A partir du fait et des dimensions, il est possible d'établir une structure de données simple qui correspond au besoin de la modélisation multidimensionnelle. Cette structure est constituée du fait central et des dimensions (figure 1.7). Ce modèle représente visuellement une étoile, on parle de modèle en étoile. Il se compose du fait central et de leurs dimensions. Dans ce schéma il existe une relation pour les faits et plusieurs pour les différentes dimensions autour de la relation centrale. La relation de faits contient les différentes mesures et une clé étrangère pour faire référence à chacune de leurs dimensions. La figure 1.7 montre le schéma en étoile en décrivant les ventes réalisées dans les différents magasins de l’entreprise au cours d’un jour. Dans ce cas, nous avons une étoile centrale avec une table de faits appelée Ventes et autour leurs diverses dimensions : Temps, Produit et Magasin. Figure 1.7 : Exemple de modélisation en étoile Il existe d'autres techniques de modélisation multidimensionnelle, notamment la modélisation en flocon (snowflake). Une modélisation en flocon est une extension de la modélisation en étoile, il consiste à garder la même table des faits et à éclater les tables de dimensions afin de permettre une représentation plus explicite de la hiérarchie [JLS, 99]. Elle peut être vue comme une normalisation des tables de dimensions. L’avantage du schéma en flocon de neige est de formaliser une hiérarchie au sein d’une dimension, ce qui peut faciliter l’analyse. Un autre avantage est représenté par la normalisation des dimensions, car nous 28 réduisons leur taille. Néanmoins dans [Kim, 96], l’auteur démontre que c’est une perte de temps de normaliser les relations des dimensions dans le but d’économiser l’espace disque. Par contre, cette normalisation rend plus complexe la lisibilité et la gestion dans ce type de schéma. En effet, ce type de schéma augmente le nombre de jointures à réaliser dans l’exécution d’une requête. Les hiérarchies pour le schéma en flocon de neige de l’exemple de la figure 1.7 sont : Dimension Temps = Jour → Mois → Année Dimension Magasin = Commune → Département → Région → Pays. La figure 1.8 montre le schéma en flocon de neige avec les dimensions Temps et Magasin éclatées en sous hiérarchies. Figure 1.8 : Exemple de modélisation en flocon de neige Dans l’exemple ci-dessus, la dimension Temps a été éclatée en deux, Temps et T_Mois. La deuxième dimension Magasin, à été décomposée en trois : Magasin, M_Département et M_Région. Le schéma en constellation représente plusieurs relations de faits qui partagent des dimensions communes. Ces différentes relations de faits composent une famille qui partage les dimensions mais où chaque relation de faits a ses propres dimensions [BCA, 01]. La figure 1.9 montre le schéma en constellation qui est composé de deux relations de faits. La première s’appelle Ventes et enregistre les quantités de produits qui ont été vendus 29 dans les différents magasins pendant un certain jour. La deuxième relation gère les différents produits achetés aux fournisseurs pendant un certain temps. Figure 1.9 : Exemple de modélisation en constellation La relation de faits Ventes partage leurs dimensions Temps et Produits avec la table Achats. Néanmoins, la dimension Magasin appartient seulement à Ventes. Egalement, la dimension Fournisseur est liée seulement à la relation Achats. 3.2. La modélisation logique Au niveau logique, plusieurs possibilités sont envisageables pour la modélisation multidimensionnelle. Il est possible d'utiliser : - un système de gestion de bases de données existant tels que les SGBD relationnels (ROLAP) ou bien les SGBD orientés objet (OOLAP). - un système de gestion de bases de données multidimensionnelles (MOLAP). L'approche la plus couramment utilisée consiste à utiliser un système de gestion de bases de données relationnelles, on parle de l'approche ROLAP ("Relational On-Line Analytical Processing"). Le modèle multidimensionnel est alors traduit de la manière suivante: Chaque fait correspond à une table, appelé table de fait, Chaque dimension correspond à une table, appelée table de dimension. Ainsi, la table de fait est constituée des attributs représentant les mesures d’activités et les attributs clés étrangers de chacune des tables de dimension. Les tables de dimension 30 contiennent les paramètres et une clé primaire permettant de réaliser des jointures avec la table de fait. Plus récemment, une autre approche s’appuie sur le paradigme objet ; on parle de l’approche OOLAP (« Object On-Line Analytical Processing»). Le modèle multidimensionnel se traduit ainsi : Chaque fait correspond à une classe, appelée classe de fait, Chaque dimension correspond à une classe, appelée classe de dimension. Pour décrire les expressions qui décrivent le schéma en étoile ou en flocon, on utilise le langage de définition standard des bases de données orientées objet défini par (Object Data Management Group) l’ODMG4. Une alternative à ces deux approches consiste à utiliser un système multidimensionnel. Les systèmes de type MOLAP stockent les données dans un SGBD multidimensionnel sous la forme d’un tableau multidimensionnel. Chaque dimension de ce tableau est associée à une dimension du cube. Seules les valeurs de données correspondant aux données de chaque cellule sont stockées (figure 1.6). Ces systèmes demandent un pré-calcul de toutes les agrégations possibles. En conséquence, ils sont plus performants que les systèmes traditionnels, mais difficiles à mettre à jour et à gérer. Les systèmes MOLAP apparaissent comme une solution acceptable pour le stockage et l’analyse d’un entrepôt lorsque la quantité estimée des données d’un entrepôt ne dépasse pas quelques giga-octets. Mais, lorsque les données sont éparses, ces systèmes sont consommateurs d’espace [CD, 97] et des techniques de compression doivent être utilisées. L'intérêt est que les temps d'accès sont optimisés, mais cette approche nécessite de redéfinir des opérations pour manipuler ces structures multidimensionnelles, parmi elles utilisées sont : Pivot : Cette opération consiste à faire effectuer à un cube une rotation autour d’un des trois axe passant par le centre de deux faces opposées, de manière à présenter un ensemble de faces différents. 4 www.odmg.org 31 Switch : Cette opération consiste à interchanger la position des membres d’une dimension. Split : Elle consiste à présenter chaque tranche du cube, et à passer d’une représentation tridimensionnelle d’un cube à sa représentation sous la forme d’un ensemble de tables. D’une manière générale, cette opération permet de réduire le nombre de dimensions d’une représentation. On notera que le nombre de tables résultant d’une opération Split dépend des informations contenues dans le cube de départ et n’est pas connu à l’avance. 4 Les techniques d’optimisation dans les entrepôts de données Le processus d’analyse de données s’appuie souvent sur des requêtes qui regroupent et filtrent des données de différentes formes. Compte tenu de la nature interactive des entrepôts de données, la nécessité d’avoir un temps de réponse rapide est un objectif critique pour l’utilisateur et/ou le décideur. Des délais trop longs sont inacceptables dans la plupart des systèmes décisionnels, puisqu’ils peuvent diminuer la productivité. L’exigence courante est un temps de réponse ne dépassant pas quelques secondes ou quelques minutes. Sans technique d’optimisation de requêtes, l’interrogation d’un entrepôt de données serait complexe, et le traitement de ces requêtes pourrait prendre des heures. Les travaux concernant l’optimisation des performances des requêtes décisionnelles sont principalement basés sur des techniques héritées des bases de données relationnelles/objets. Nous pouvons les classées suivant deux catégories : Techniques redondantes Techniques non redondantes 4.1. Les techniques redondantes 4.1.1. Les vues matérialisées Dans l’environnement d’un entrepôt de données, il est généralement possible d’isoler un ensemble de requêtes à privilégier. L’ensemble des vues matérialisées doit être déterminé en fonction de cet ensemble de requêtes [Ull, 96]. Il existe 3 possibilités pour sélectionner un ensemble de vues [Ull, 96] : 32 - Pré-calculer toutes les vues : Cette approche consiste à matérialiser la totalité du cube dans le cas MOLAP, tandis que dans le type ROLAP, elle consiste à matérialiser tous les nœuds intermédiaires des arbres algébriques représentant les requêtes. Cependant, stocker et maintenir toutes les cellules ou nœuds intermédiaires pose un problème dans le cas d'un gros entrepôt. - Ne matérialiser aucune vue : Cette solution ne présente aucun intérêt en ce qui concerne les performances des requêtes. - Matérialiser uniquement une partie des cubes ou des nœuds : Dans un cube, nous ne sommes pas obligé de matérialiser toutes les vues, c’est à cause de la dépendance entre les cellules, c'est à dire que les valeurs contenues dans certaines d’entre elles peuvent être réutilisées à partir des valeurs d'autres cellules. De même pour ROLAP, on trouve également cette dépendance dans les arbres algébriques. Il est alors souhaitable de matérialiser les sous-ensembles communs (cellules ou nœuds) à plusieurs requêtes. Cette approche a pour but de sélectionner les cellules ou les nœuds partagés. C’est la solution idéale en comparaison aux deux autres possibilités. Au niveau de la conception physique, l’administration de l’entrepôt de données doit sélectionner des index afin d’accélérer l’exécution des requêtes de type OLAP. Ce problème est connu sous le nom de problème de sélection des vues matérialisées (PSV). De nombreux travaux ont été réalisés pour résoudre le PSV [Gup, 97] et [KR, 99]. 4.1.2. Les index Les techniques d’indexation utilisées dans les bases de données de type OLTP ne sont pas parfaitement adaptées aux environnements des entrepôts de données. En effet, la plupart des transactions OLTP accèdent à un nombre faible de n-uplets et les techniques utilisées sont adaptées à ce type de situation. Les requêtes décisionnelles dans le cas des entrepôts de données accèdent au contraire à un très grand nombre de n-uplets. Réutiliser les techniques des systèmes OLTP conduirait à des index avec un grand nombre de niveaux. Un index peut être défini sur une seule ou sur plusieurs colonnes d’une relation, Ce type d’index est appelé mono-index. Il existe également des index définis sur deux relations comme les index de jointure qui sont appelés multi-index. Dans les entrepôts de données, les 33 deux types d’index sont utilisés : index sur liste de valeur, index de projection (mono-index) et index de jointure en étoile (star join index) pour les index multi-index. Exemple d’index de projection : Soit C la colonne d’une table à indexer. L’index de projection (voir figure 1.10) sur C est constitué par une séquence des valeurs de C, ces dernières apparaissent dans le même ordre que le numéro des n-uplets dans la table d’origine. Table client Nom Index de projection Age …. Sexe Age Driss 20 …. M 20 Layla 42 …. F 42 Jamal 21 …. M 21 Mounir 52 …. M 52 Alia 18 …. F 18 Karima 17 …. F 17 Hassan 36 …. M 36 Figure 1.10 : Index de projection sur l’attribut Age. Les requêtes complexes définies sur une base de données relationnelles demandent fréquemment des opérations de jointures entre plusieurs tables. L’opération de jointure est fondamentale dans les bases de données et est très coûteuse en terme de temps de calcul lorsque les tables concernées sont de grande taille, comme le cas des entrepôts de données. Plusieurs méthodes ont été proposées afin d’accélérer ces opérations. Ces méthodes incluent, les boucles imbriquées, le hachage et la fusion. Un index de jointure matérialise les liens entre deux relations par le biais d’une table à deux colonnes contenant les RowID (identifiant des n-uplets) des n-uplets joints deux à deux [PV, 87]. Cet index peut être vu comme une jointure pré-calculée. Créé à l’avance, il est implémenté par une relation d’arité 2 (figure 1.11). L’efficacité dépend du coefficient de sélectivité de jointure. Si la jointure a une forte sélectivité, l’index de jointure sera de taille 34 faible et aura une grande efficacité. Ce genre d’index est parfaitement adapté pour les requêtes des systèmes OLTP parce qu’elles possèdent fréquemment des jointures entre deux tables. Par contre, pour les entrepôts de données modélisés par un schéma en étoile, ces index sont limités. En effet, les requêtes décisionnelles définies sur un schéma en étoile possèdent plusieurs jointures (entre la table des faits et les tables de dimensions). Il faut dans ce cas subdiviser la requête en fonction des jointures. Or le nombre de jointures possibles est de l’ordre de N ! ( N étant le nombre de tables à joindre). Figure 1.11 : Index de jointure pour l’équi-jointure Département.ville = Employé.ville Afin de résoudre ce problème, un nouvel index appelé index de jointure en étoile (star join index) a été introduit [Sys, 97], et adapté aux requêtes définies sur un schéma en étoile. Un index de jointure en étoile peut contenir toute combinaison de clés étrangères de la table des faits. Il peut être n’importe quelle combinaison contenant la clé de la table des faits et une ou plusieurs clés primaires des tables de dimensions. Ce type d’index est dit complet s’il est construit en joignant toutes les tables de dimensions avec la table des faits. Un index de jointure partiel est construit en joignant certaines tables de dimensions avec la table des faits. En conséquence, l’index complet est bénéfique pour n’importe quelle requête posée sur le schéma en étoile. Il exige cependant beaucoup d’espace de stockage. Deux remarques concernant l’index de jointure: • Ce type d’index est exclusivement adapté aux schémas en étoile et par conséquent, il ne l’est pas pour les schémas en flocon. 35 • Il n’existe pas d’algorithme de sélection d’index de jointure en étoile pour un ensemble de requête. De même que pour les PSV, au niveau de la conception physique, l’administration de l’entrepôt de données doit sélectionner des index afin d’accélérer l’exécution des requêtes. Ce problème est connu sous le nom de problème de sélection d’index (PSI), plusieurs solutions ont été proposées [CN, 98] [CN, 99]. 4.2. Les techniques non redondantes 4.2.1. La fragmentation horizontale La fragmentation horizontale a été étudiée dans le cadre des bases de données relationnelles. Elle consiste à diviser une relation R en sous ensembles de n-uplets appelés fragments horizontaux, chacun étant défini par une opération de restriction appliquée à la relation. Les n-uplets de chaque fragment horizontal satisfait une clause de prédicats5. Le schéma de fragmentation de la relation R est donné par : H1 cl1 R , H 2 cl2 R , ..., H q clq R , où cli est une clause de prédicats. La reconstruction de la relation R à partir de ces fragments horizontaux est obtenue par l’opération d’union de ces fragments. La fragmentation horizontale se décline en deux versions [CNP, 82] : les fragmentations primaires et dérivées (ou indirecte [GGT, 96]). La fragmentation primaire d’une relation est effectuée grâce à des prédicats de sélection définis sur la relation [OV, 91], voir chapitre 2. 4.2.2. La fragmentation horizontale dérivée La fragmentation horizontale primaire favorise le traitement des requêtes de restriction portant sur les attributs utilisés dans le processus de la fragmentation. La fragmentation horizontale dérivée est utile pour le traitement des requêtes de jointure, voir chapitre 2. 5 Une clause de prédicats est une combinaison de prédicats avec les opérateurs 36 et 4.2.3. La fragmentation verticale Dans la fragmentation verticale, une relation est divisée en sous relations appelées fragments verticaux où chaque fragment contient un sous–ensemble des attribues de la relation et sa clé. Soit une relation R k , A1 , A2 ,..., An , avec n attributs A1 , A2 ,..., An et une clé K . Chaque attribut Ai a un domaine de valeurs que nous appelons dom Ai . La fragmentation verticale de la relation R est donnée par : V p k , A1p , A2p ,..., Akpp où chaque V1 k , A11 , A21 ,..., Ak11 , V2 k , A12 , A22 ,..., Ak22 , ..., attribut Aij A1 , A2 ,..., An . Les fragments verticaux V1 , V2 ,..., V p sont disjoints si chaque attribut Ai 1 i n de la relation R appartient à un et un seul fragment vertical. La clé K est dupliquée dans chaque fragment afin de faciliter la reconstruction de la relation R à partir de ces fragments qui est réalisée par la jointure de p fragments verticaux. La fragmentation verticale favorise naturellement le traitement des requêtes de projection [OQ, 97] portant sur les attributs utilisés dans le processus de la fragmentation, en limitant le nombre de fragments à accéder. 4.2.4. La fragmentation mixte (hybride) La fragmentation mixte (figure 1.12) combine les deux types de fragmentation : horizontale et verticale. Elle consiste à partitionner une relation en sous-ensembles de sous relations, ces dernières étant définies par la fragmentation verticale et les sous-ensembles par la fragmentation horizontale. 37 Figure 1.12 : La fragmentation mixte suivant une relation R k , Att1 , Att2 , Att3 . 5 Conclusion Dans ce chapitre, nous avons présenté un état de l’art sur les entrepôts de données et les principales techniques d’optimisation de requêtes définies dans le contexte des entrepôts de données relationnels. Mieux encore, nous avons traité le sujet des entrepôts de données qui étendent les concepts et la technologie traditionnelle des bases de données, pour créer des systèmes d’aide à la décision. En exploitant l’architecture d’un entrepôt de données, nous avons expliqué les différents composants qu’il intègre, comme les diverses sources, les types de données et les différents outils pour arriver à la visualisation de l’information. En dernier lieu, nous avons décrit les différents modèles multidimensionnels pour la construction d’un entrepôt de données, ainsi que quelques différentes opérations pour la manipulation des données multidimensionnelles. Nous passerons en revue dans le chapitre suivant quelques techniques et algorithmes utilisés afin de réduire le coût d’exécution des requêtes OLAP. 38 39 Chapitre 2 : L’optimisation de l’Entrepôt de données 1 Introduction La taille des entrepôts de données peut varier de quelques giga-octets à plusieurs téraoctets dont la majorité des données sont stockée dans un nombre restreint de grandes tables de faits. Ces données sont dédiées aux applications d'analyse et de prise de décisions. Ce processus d'analyse est réalisé à l'aide de requêtes complexes comportant de multiples jointures et des opérations d'agrégation sur des tables volumineuses. En dépit de leur complexité, les preneurs de décisions souhaitent que leurs requêtes soient satisfaites le plus rapidement possible. Les principales techniques utilisées pour répondre à ce besoin sont : les vues matérialisées, les index et la fragmentation. Dans ce chapitre, nous allons détailler les principaux algorithmes qui ont été suggérés dans la littérature pour améliorer les performances des entrepôts de données, en précisant les différents processus avec les avantages et inconvénients de chaque proposition. 2 Les vues matérialisées Une des techniques d’optimisation des performances est la création de vues matérialisées. Par définition, une vue matérialisée est une table contenant les résultats d'une requête pré calculée. Les vues améliorent l'exécution des requêtes en pré calculant les opérations les plus coûteuses telles que la jointure et l'agrégation, et en stockant leurs résultats dans la base. En conséquence, certaines requêtes nécessitent uniquement l'accès aux vues matérialisées, permettant ainsi d’être exécutées plus rapidement. Les vues peuvent être utilisées pour satisfaire plusieurs objectifs, comme l’amélioration de la performance des requêtes. L’utilisateur applique les requêtes sur les tables de la base de données et le mécanisme de réécriture les réécrit automatiquement de façon à utiliser la ou les vues matérialisées contenant les données requises. Ce mécanisme améliore considérablement le temps de réponse des requêtes. De plus, il est transparent pour l’utilisateur qui n’a pas besoin de connaître l’existence ou non de vues matérialisées. Deux problèmes majeurs sont liés aux vues matérialisées : La sélection des vues. La maintenance des vues matérialisées. 40 2.1. La sélection des vues Dans l'environnement d'un entrepôt de données, il est généralement possible d'isoler un ensemble de requêtes à privilégier. L'ensemble des vues matérialisées doit donc être déterminé en fonction de cet ensemble de requêtes. Le problème de sélection des vues matérialisées (PSV) peut être abordé sous deux angles différents en fonction du type de modèle de données adopté (figure 2.1): Le PSV de type ROLAP. Le PSV de type MOLAP. Figure 2.1 : Les types de PSV Dans la présentation cubique (PSV dans MOLAP), chaque cellule du cube présente une vue potentielle. Notons que les vues matérialisées à ce niveau ne sont que des requêtes ayant des agrégations sur les relations de base. Dans le PSV de type ROLAP, chaque requête est représentée par un arbre algébrique. Chaque nœud (non feuille) est considéré comme une vue potentielle. Ce type de PSV est plus général que le premier. Ce problème de sélection peut être décrit comme suit, quel que soit le type : Etant donné une contrainte de ressource S (capacité de stockage, par exemple), le PSV consiste à sélectionner un ensemble de vues V1 ,V2 ,...,Vk minimisant une fonction 41 objectif (coût total d'évaluation des requêtes et/ou coût de maintenance des vues sélectionnées) et satisfaisant la contrainte S (figure 2.2). Figure 2.2 : Le processus de sélection des vues matérialisées. De nombreux algorithmes ont été développés pour élaborer une solution optimale ou quasi optimale pour le PSV. La plupart de ces algorithmes étaient destinés au cas statique comme nous allons le voir dans les sections suivantes. Les algorithmes proposés pour la sélection des vues peuvent être classés en trois catégories, en fonction du type de contrainte qu'ils utilisent : Les algorithmes sans aucune contrainte. Les algorithmes dirigés par une contrainte. 2.1.1. Algorithmes sans contraintes Plusieurs algorithmes sont proposés pour la sélection des vues sans contraintes. Nous allons présenter deux, qui sont l’approche de [YKL, 97] proposée dans le contexte ROLAP, et l’approche de [BPT, 1997] proposée dans le contexte MOLAP. 2.1.1.1. Algorithme dans le contexte ROLAP 42 Les auteurs [YKL, 97] ont développé un algorithme de sélection de vues dans un contexte ROLAP statique6. Ils partent du principe suivant : la principale caractéristique des requêtes décisionnelles est qu'elles utilisent souvent les résultats de certaines requêtes afin de répondre à d'autres requêtes. On peut tirer de cette caractéristique que les requêtes partagent certaines expressions. [YKL, 97] ont formulé le problème de sélection de vues (PSV) comme suit: - Soit un entrepôt de données modélisées par un schéma relationnel ayant d tables de dimensions et une table de fait. - Soit Q Q1, Q2 ,..., Qn un ensemble de requêtes d'interrogation (les plus fréquentes) avec leur fréquence d’accès f1 , f 2 ,..., f n . - Soit U U1 ,U 2 ,...,U n ' un ensemble de requêtes de mise à jour (les plus fréquentes) avec leur fréquence d’accès g1, g 2 ,..., g n ' . Le PSV consiste à sélectionner un ensemble de vues minimisant la somme des coûts d’évaluations des requêtes et de maintenance des vues sélectionnées. Les étapes principales sont : Première étape : a pour but de construire un arbre algébrique pour chaque requête de l’ensemble Q Q1 , Q2 ,..., Qn , par la suite on choisit pour chacun l’arbre optimal7. Exemple : soit un schéma d’entrepôt ayant cinq tables de dimensions et sur lequel trois requêtes décisionnelles définies. La figure 2.3 montre que les requêtes Q1 et Q2 ont une expression commune (Exp1). Ces nœuds sont de bons candidats pour la matérialisation. 6 PSV statique : Le PSV statique consiste à sélectionner un ensemble de vues à matérialiser afin de minimiser le coût total d’évaluation des requêtes, le coût de maintenance, ou les deux, sous la contrainte de la ressource. Le problème suppose donc que l’ensemble des requêtes n’évolue pas contrairement au PSV dynamique. 7 Arbre optimal : optimal (évalué en fonction des coûts). L'existence de plusieurs arbres algébriques est due aux propriétés des opérations algébriques (appelées règles de transformation des arbres). Ces règles sont au nombre de huit: la commutativité des jointures, l'associativité des jointures, le groupement des restrictions, la commutativité des restrictions et des projections, la commutativité des restrictions et des jointures, la commutativité des restrictions et des unions ou des restrictions et des différences, la commutativité des projections et des jointures, et enfin la commutativité des projections et des unions. 43 Figure 2.3 : Principe de base de la sélection de [YLK, 97] Deuxième étape : a pour but la génération du PMEV (Plan Multiple d’Exécution des Vues). Suite à l'obtention des graphes optimaux, les sous expressions communes sont identifiées, puis les graphes de requêtes ayant des sous expressions communes sont fusionnés en PMEV. Un PMEV est un graphe orienté, acyclique et étiqueté, dont la structure est définie par (N, A), où N et A représentent les ensembles de nœuds et d'arcs du graphe dont les constructions se réalisent de la façon suivante : Pour chaque opération dans l'arbre algébrique de la requête Qi 1 i n , v N T v est la table générée par le nœud v . T v est une table de base, un résultat intermédiaire d’exécution d’une requête, ou le résultat final d'une requête. Pour tout nœud feuille v , T v correspond à la table de base. Pour tout nœud racine v (le nœud qui n'a pas d'arc sortant), T v correspond au résultat de la requête globale. Soit R, et L l'ensemble des feuilles et des nœuds racines. Si la table de base ou le résultat intermédiaire T v correspondant à un nœud v est demandé pour un traitement au niveau d'un nœud v ' , introduire un arc v v ' . Pour tout nœud v , soit S v l'ensemble des nœuds origines des arcs pointant vers v . Si v L ; S v . Soit S * v l'ensemble des descendants de v . Pour tout v N , Cqi v est le coût d'exécution de la requête Qi accédant à T v , lorsque T v est matérialisée, Cu j v est le coût 44 de maintenance de T v causé par la requête de mise à jour Uj et basé sur les changements de base S * v L . Nous avons vu que en fonction des types d'opérations relationnelles (sélection, projection et opérations ensemblistes), le PMEV peut être divisé en quatre niveaux (figure 2.3) : Les feuilles sont les tables de dimension de l’entrepôt et représentent le niveau 0. Dans le niveau 1, nous trouvons des nœuds représentant les résultats des opérations algébriques de sélection et de projection. Dans le niveau 2, les nœuds représentent les opérations ensemblistes comme la jointure, l'union, etc. Le dernier niveau représente les résultats de chaque requête. Chaque nœud intermédiaire de ce graphe est étiqueté par le coût de l'opération algébrique (sélection, jointure, union, etc.) et le coût de maintenance. Ce graphe est utilisé pour rechercher l'ensemble des vues dont la matérialisation minimise la somme des coûts d'évaluation des requêtes et de maintenance des vues. La solution prend en considération l'existence de plusieurs expressions possibles pour une requête. Chaque nœud intermédiaire est considéré comme une vue potentielle. Troisième étape : attribution des coûts Avant de définir ces coûts, quelques notations sont introduites : Ov dénote l’ensemble des requêtes utilisant le nœud v ; Ov R D * v avec R représentant l’ensemble des nœuds racines et D * v l’ensemble des ascendants de v . I v dénote l’ensemble des tables de base utilisées pour produire v ; I v L S * v avec L est l’ensemble des feuilles et S * v est l’ensemble descendants de v . V est l’ensemble des vues matérialisées. A chaque nœud est associé un poids statique w(v ) représentant le bénéfice si le nœud v est matérialisé. Ce poids est donné par la formule suivante : w v f C v g i Qi Ov Qi jI v 45 j CU j v (2.1) Ce poids est utilisé pour ordonner les nœuds du PMEV, le nœud ayant la plus grande valeur sera privilégié pour la matérialisation. O 'v dénote les requêtes globales qui utilisent v , excluant celles qui peuvent utiliser les ascendants de v déjà sélectionnés. O 'v Ov Ou avec u V D * v . Cs dénote le poids dynamique d'un nœud, est donné par : Cs CQi v ) g r CU j v uSv v rIv f (C v i Qi O 'v Qi (2.2) La première partie de la formule précédente représente le bénéfice si v est matérialisée. La deuxième partie est le coût de maintenance de la vue v . Ce terme CQi v est un facteur dupliqué dans le cas où quelques descendants de v ont uSv v été choisis pour la matérialisation. Quatrième étape : sélection des vues Cette étape consiste à ordonner les nœuds de PMEV en fonction de leur poids statique w v ; ensuite, on calcule leur poids dynamique. Si Cs 0 , v est matérialisée (algorithme 1). Algorithme 1 : La sélection des vues selon [YKL, 97] 1. V : 2. créer la liste 3. prendre le 1er élément v de LV . 4. Calculer Ov , 5. Calculer 6. If LV de tous les nœuds ayant des poids positifs (dans l’ordre descendant) I v et Cv Cs Cs 0 then 7. Insérer v dans M 8. Retirer v de 9. LV Else Retirer v des nœuds listés après v dans 10. 11. End if 12. Repeat 13. Etape 3 46 LV et qui sont dans la même branche. LV la liste est vide. 14. Until 15. v V si D v M , alors Retirer v de V . 2.1.1.2. Algorithme dans le contexte MOLAP L’algorithme de [BPT, 97] est proposé pour un contexte multidimensionnel, concernant la sélection des vues matérialisées à base de treillis. Un cube de données multidimensionnel est composé de cellules présentant des mesures observées aux croisements des dimensions. La figure 2.4 montre un exemple de cube composé de la mesure sale observée suivant les trois dimensions customers, times et products. Dans chaque cellule c, t , p de ce cube est stocké le montant des ventes du produit p acheté au mois t par le client c . Dans ce cube, on peut être amené à observer les ventes d'un produit p pour un client c donné. La valeur ALL , ajoutée au domaine de chaque dimension, a été proposée pour répondre à la requête d’agrégation. Cet exemple montre que les valeurs (mesures) de plusieurs cellules sont calculables à partir d'autres cellules du même cube. De telles cellules sont appelées dépendantes. Par exemple, les valeurs des p, ALL, c cellules peuvent être calculées cellules p, t1 , c ,..., p, t t , c , où t désigne la cardinalité de la dimension t . Figure 2.4 : Cube de données multidimensionnel. 47 à partir des Toute cellule ayant la valeur ALL est dite dépendante. Sa valeur peut donc être calculée à partir d'autres cellules. En revanche, si une cellule ne comporte pas la valeur ALL , elle ne peut pas être calculée à partir d'autres cellules. Les cellules sont organisées dans différents ensembles suivant la position de la valeur ALL dans leur adresse. Par exemple, toutes les cellules , ALL, sont placées dans le même ensemble. Chacun de ces ensembles correspond à une requête SQL. Par exemple, la requête SQL de la Figure 2.5 prend ses résultats dans l'ensemble des cellules p, ALL, c . La table R de la clause From contient l'ensemble de toutes les cellules. Chaque requête est ainsi caractérisée par les attributs de la clause Group by. Par exemple, la requête de la figure 2.5 est caractérisée par (products, customers). Select Products, Customers, sum (sales) From Relation Group by Products, Customers Figure 2.5 : Exemple de requête Sélectionner les ensembles de cellules à matérialiser revient à décider quelles requêtes SQL ou vues à matérialiser. Ce problème a été formalisé sous forme de treillis capturant les relations existantes entre les vues, requêtes ou cellules [HRU, 96]. Cette technique consiste à élaborer un treillis qui exploite les hiérarchies des attributs (par exemple : quartier → ville → pays), de plus il est possible de déterminer à partir de quel niveau d'agrégation il n'est plus pertinent de matérialiser. Nous donnons dans la suite quelques définitions utilisées pour formaliser le problème de sélection de vues. Définition 1 : On dit que Qi Q j si et seulement si Qi peut être évaluée en utilisant seulement les résultats de la requête Q j . 48 Par exemple, la vue (products) peut être résolue en utilisant la vue (products, customers) car (products) (products, customers). D'autres vues ne sont pas comparables en utilisant l’opérateur , Par exemple, (products) et (customers). L'opérateur forme alors un ordre partiel sur l'ensemble des vues. L'ensemble des vues muni de l'opérateur a été modélisé sous forme d'un treillis. Définition 2 : Un treillis noté par L V , , est formé par un ensemble de vues V et l'opérateur défini précédemment. La borne supérieure du treillis correspond à la vue dont laquelle toutes les vues sont dépendantes (la totalité du cube) et sa borne inférieure correspond à la vue générée en agrégeant complètement les données de n'importe quelle vue du treillis. Les nœuds de ce treillis représentent les vues V (agrégées sur certaines dimensions), tandis qu’un arc existe entre deux nœuds Vi et V j si celles-ci sont dépendantes Vi V j . Le nœud Vi est un nœud ancêtre et V j un descendant. Les ancêtres et les descendants d'un nœud Vi du treillis sont définis comme suit : Ancêtre ( Vi ) = { V j | Vi V j } Descendant ( Vi ) = { V j | V j Vi } On considère le treillis des vues possibles pour une base de 3 tables de dimensions (P : Product ; T : time ; C : client) figure 2.6. On dit qu’une vue Vi du treillis est une vue candidate si une des conditions suivantes est satisfaite : Vi est associé à quelques requêtes. Il existe deux vues candidates V j et Vk telle que Vi est la plus petite borne supérieure de V j et Vk (le coût de mise à jour des vues V j et Vk est supérieur à celui de Vi ). 49 Figure 2.6 : Treillis de vues Une fois que les vues candidates sont sélectionnées, le bénéfice pour chaque nœud descendant est recalculé et la vue de bénéfice maximal est sélectionnée. Pour conclure sur ce type d'algorithme, nous pouvons dire qu'étant donné l'absence de contrainte qui leur est liée, il n'existe aucun moyen d'évaluer leurs résultats. 2.1.2. Algorithmes avec contrainte Plusieurs modèles de coût ont été développés pour optimiser le compromis espacetemps lorsque le treillis de vues est implémenté. Le problème est approché selon trois points de vue : optimiser le temps ; optimiser l'espace de stockage ; optimiser le temps tant que la contrainte d'espace de stockage n'est pas atteinte. Le coût d'exécution d'une requête est assimilé au nombre de n-uplets lus pour répondre à cette requête. En absence d'index construits sur la vue exploitée par une requête, le coût de cette dernière est égale au nombre de n-uplets que contient cette vue. 2.1.2.1. Contrainte d’espace Plusieurs modèles de coût ont été proposés pour évaluer l'exploitation d'une vue et par conséquent le bénéfice qu'elle apporte. Le coût de stockage des vues a aussi été estimé pour satisfaire la contrainte d'espace. 50 [HRU, 96] ont présenté un algorithme glouton pour sélectionner un ensemble de cellules (vues) dans un cube de données. L’objectif de cet algorithme est de minimiser le temps de réponse des requêtes sous la contrainte que la taille des vues sélectionnées ne dépasse pas la capacité d’espace S . Les auteurs s’intéressent seulement aux requêtes ayant des fonctions d’agrégation. Ils ont modélisé le problème sous la forme d'un treillis de vues, représenté en figure 2.6, et ont développé un modèle de coût afin d'estimer le coût de chaque vue du treillis. Ce coût est basé sur le principe suivant : Pour évaluer une requête Q (vue), nous choisissons une vue ancêtre de Q (disons Qa ), qui a été matérialisée. Le coût d'évaluation de la requête Q est le nombre de tuples présents dans la table correspondante à Qa . Chaque vue est associée à un coût de stockage correspondant au nombre de tuples de cette vue. Soit C v le coût d'une vue v . Le bénéfice B v, S apporté par la vue v , sachant qu'un ensemble S est préalablement sélectionné, est le seuil à ne pas dépasser. 1. Pour chaque vue w v , définir la quantité Bw : a. Soit u la vue de plus petit coût telle que w u b. Si C v C u , alors B w C u C v . sinon B w 0 . 2. B v, S B w w u L’algorithme est alors le suivant : Algorithme 2 : La sélection des vues matérialisées selon [HRU, 96] 1: déclaration: A (la capacité d’espace), | v | (la taille de la vue v ) 2: while A 0 do 3: v : vue ayant un bénéfice maximal; 4: if A | v | 0 then 5: V : V v ; 6: A A | v | ; 7: V : l'ensemble des vues end if 51 8: end while En d'autre terme, le bénéfice de V est calculé en considérant sa contribution dans la l'évaluation des requêtes. Pour chaque vue w couvrant v , nous calculons le coût d'évaluation w en utilisant v et d'autres vues dans S offrant un coût moins élevé pour évaluer w . Si le coût de la vue v est inférieur au coût de w , alors la différence représente une partie du bénéfice de la matérialisation de la vue v . Le bénéfice total B v, S est la somme de tous les bénéfices en utilisant v pour évaluer w , et fournissant un bénéfice positif. Les auteurs montrent que cet algorithme présente des performances très proches de l'optimum. Cependant, il parcourt l'espace des solutions possibles à un niveau élevé de granularité et peut éventuellement laisser échapper de bonnes solutions [BPT, 97]. 2.1.2.2. Contrainte du temps de maintenance Pour les algorithmes dirigés par le temps de maintenance, nous citons les travaux de [GM, 99]. Le problème de sélection de vues consiste à sélectionner un ensemble de vues afin de minimiser le temps de réponse des requêtes de manière à ce que le temps de maintenance des vues sélectionnées ne dépasse pas un seuil fourni par l'utilisateur. Ces algorithmes supposent que les requêtes qui sont l'objet de l'optimisation sont connues à priori. Dans ce cas, le problème de sélection de vues est qualifié de statique. Si une évolution des requêtes est enregistrée, alors il est nécessaire de reconsidérer le problème de sélection de vues en reconstruisant les vues à matérialiser. La sélection devient alors dynamique. Dans ce contexte, nous pouvons citer le système DynaMat de [KR, 99], qui rafraîchit les vues sélectionnées si la taille de ces dernières dépasse la capacité de l'espace de stockage allouée par l'administrateur suite aux opérations de mise à jour. Il procède alors à certaines éliminations selon des critères de remplacement. Par exemple, les vues les moins utilisées sont éliminées. Plus formellement, si V v1 , v2 ,..., vn est un ensemble de vues candidates, Q q1 , q2 ,..., qm un ensemble de requêtes et S la taille de l’espace disque réservé par 52 l’administrateur pour stocker les vues à sélectionner, alors il faut trouver une configuration de vues configV telle que : Le coût d’exécution des requêtes de la charge soit minimal, c’est-à-dire : CoutConfigV Q min CoutV Q Avec CoutV Q : le coût de l’ensemble Q sachant V . L’espace de stockage de configV ne dépasse pas S (seuil d’espace) : taille v S vConfigV 2.2. La maintenance des vues matérialisées Un entrepôt de données contient un ensemble de vues matérialisées dérivées à partir de tables qui ne résident pas dans l’entrepôt de données. Les tables de base changent et évoluent au rythme des mises à jour. Cependant, si ces changements ne sont pas reportés dans les vues matérialisées, leurs contenus deviendront obsolètes et leurs objets ne représenteront plus la réalité. Par conséquent, un objet d’une vue peut continuer à exister alors que les objets ayant servi à la création des vues ont été modifiés ou supprimés. Afin de résoudre ce problème d’inconsistance des données, la solution le plus intuitive serait de recalculer la vue, mais ce type de traitement reste toujours le plus coûteux pour un DW. Trois stratégies fondamentales ont été proposées : Dans la première, les vues sont mises à jour périodiquement [LHM, 86]; dans ce cas ces vues peuvent être considérées comme des photographies ("snapshots"). Dans la seconde [BLT, 86], les vues sont mises à jour immédiatement à la fin de chaque transaction. Dans la dernière, les modifications sont propagées d’une manière différée [SP, 89]. Dans ce cas, une vue est mise à jour uniquement au moment où elle est utilisée par une requête d’un utilisateur. La maintenance permet de recalculer le contenu des vues matérialisées à partir des tables sources. Cependant, cette approche est complètement inefficace (très coûteuse). En effet, une bonne maintenance des vues est réalisée lorsque les changements (insertions, suppressions, 53 modifications) effectués dans les tables sources peuvent être propagés aux vues sans être dans l’obligation de recalculer intégralement leurs contenus. Plusieurs techniques ont été proposées dans la littérature afin de répondre à ce besoin : la maintenance incrémentale, la maintenance autonome des vues et la maintenance des vues en batch. 2.2.1. La maintenance incrémentale La maintenance incrémentale qui se propose de répercuter les mises à jour survenues au niveau des données sources sans recalculer complètement les vues. Cette maintenance consiste à identifier le nouvel ensemble de n-uplets à ajouter à la vue dans le cas d’une insertion ou le sous-ensemble de n-uplets à retirer de la vue dans le cas d’une suppression. Plusieurs approches traitent le problème de la maintenance incrémentale des vues matérialisées ont été développées dans les bases de données relationnelles et entrepôts de données [RSS, 96]. Nous en retenons, les travaux de [BLT, 86] dans le contexte des bases de données puisque la plus part des contributions traitent celui de la maintenance des bases de données relationnelles et/ou Objet (figure 2.7). Figure 2.7 : Schéma d’un entrepôt de données Les auteurs s’intéressent aux vues SPJ (Sélection, Projection et Jointure). Dans un souci de clarté, nous présentons l’algorithme incrémental pour les vues de jointures (qui s’étend aux vues SPJ ). Soit V R1 R2 ... Rn une vue joignant n relations. Supposons que l’on insère les ensembles de n-uplets Ri dans les relations Ri , i 1,...., n , respectivement. 54 D’après la propagation de ces insertions au niveau de la vue V , nous obtenons V ' R1 R1 R2 R2 .... Rn Rn . En appliquant la propriété de la distributivité de la jointure sur l’union, la mise à jour de V est égale à l’union de 2n multijointures. Les auteurs ont montré que pour maintenir la vue V de façon incrémentale, il est facile d’obtenir toutes les multi-jointures de V ' grâce à une table de vérité dont chaque entrée Bi 1 i n est associée à une relation Ri de la vue. Bi 1, correspond aux nouveaux n-uplets (Ri ) 0, correspond aux anciens Exemple : supposons que n 3 V R1 R2 R3 , l’ensemble de toutes les multijointures est décrit dans le tableau 2.1 suivant : Tableau 2.1 : La description de l’algorithme [BLT, 86] Supposons que R3 ne soit pas mise à jour, nous devons donc évaluer l’expression suivante : R1 R2 R3 R1 R2 R3 R1 R2 R3 . La même procédure est appliquée dans le cas de suppression de n-uplets, en respectant la propriété de la distributivité de la jointure par rapport à la différence. 2.2.2. La maintenance autonome Considérons un schéma d’un entrepôt de données ayant un ensemble de tables de base T T1 , T2 ,..., Tn . Soit V une vue matérialisée calculée à partir d’une table Ti . Supposons qu’un changement Ti intervienne au niveau de Ti . La vue V est dite à maintenir d’une manière autonome si elle peut être maintenable en utilisant seulement la vue V et les changements Ti de Ti . 55 Parmi les solutions proposées pour garantir la maintenance autonome, est celle qui nécessite la duplication entière de toutes les données de la base dans l’entrepôt de données. Le processus de maintenance des vues devient alors local à l’entrepôt. Toutefois, cette technique génère un nouveau problème au niveau de l’entrepôt de données qui se traduit par l’augmentation de l’espace de stockage pour loger les données dupliquées et entraîne une redondance d’informations. 2.2.3. La maintenance en temps réel Une opération de maintenance est relativement longue et peut donc interrompre l’usage de l’entrepôt. Dû à cette raison elle est exécutée durant les périodes d’activité creuse (la nuit par exemple), c’est le cas pour les systèmes commerciaux, la mise à jour s’effectue en batch par l’intermédiaire de transactions de maintenance. 3 Les fragmentations La fragmentation est une technique de conception logique. Dans la littérature, deux termes sont utilisés pour la segmentation d’une relation : partitionnement et fragmentation. Comme précédemment énoncé, le partitionnement d’une relation se définit par la division de cette dernière en plusieurs partitions disjointes. La fragmentation consiste en la division en plusieurs fragments (sous-ensembles de la relation) qui peuvent être non disjoints. Deux sortes de fragmentation sont possibles : la fragmentation horizontale et la fragmentation verticale. 3.1. Fragmentation verticale Telle qu’elle est déjà définie, la fragmentation verticale d’une relation R répartie les attributs de la relation afin de générer plusieurs tables R1 , R2 ,..., Rk , contenant chacun un sous-ensemble des attributs de R en plus de la clé primaire de R. Elle permet d’accélérer l’exécution des requêtes décisionnelles, et élimine la duplication des données en stockant l’index et non les colonnes indexées, cela permet de réduire l’espace nécessaire pour ces index. 56 Dans la littérature, nombreux travaux ont été proposés pour définir les fragments verticaux, en se basant sur les affinités des attributs [NR, 89], ou un modèle de simulation [HN, 79]. 3.1.1. Principe (problème de la fragmentation verticale) La fragmentation verticale représente un enjeu plus important dans les entrepôts que dans un contexte de base de données relationnelles ou objets. Cette importance est due au choix des tables (de dimensions ou des faits) à fragmenter. Les choix possibles sont les suivants : Fragmenter verticalement une ou les tables de dimensions. Ce choix pourrait être intéressant pour le cas où la taille des tables de dimensions est importante (le cas d’un schéma en étoile). Cette fragmentation pourrait réduire le coût des opérations de jointures en étoile. Partitionner seulement la table de faits. Celle-ci est composée des clés étrangères des tables de dimensions et des mesures. La fragmentation verticale possible de la table de faits consiste à fragmenter l’ensemble des mesures en différents fragments. Les clés étrangères seront dupliquées dans chaque fragment vertical. Dans le présent travail nous optons pour le premier choix. Plus formellement, et selon [ZBB, 07] dans le contexte d’entrepôt de données, le problème de fragmentation verticale peut être formalisé de la façon suivante : étant donné : (1) un ensemble de tables de dimension D D1 , D2 ,..., Dd et une table de faits F , (2) un ensemble de requêtes OLAP fréquentes Q Q1 , Q2 ,..., Qm ,où chaque requête Qi 1 i m possède une fréquence d’accès f Qi , et (3) un seuil M qui représente le nombre de fragments verticaux que l’administrateur souhaiterait avoir. Le problème consiste à (1) déterminer un ensemble de tables de dimension à fragmenter, et (2) fragmenter une ou des tables de dimension de façon à ce que le coût total d’exécution des requêtes sur le schéma en étoile fragmenté soit réduit et que le nombre de fragments verticaux ne dépasse pas le seuil M . 57 3.1.2. Les algorithmes de la fragmentation verticale Une première approche est celle présentée par [NCW, 84], qui suppose une relation ayant m attributs à fragmenter et un ensemble de n requêtes les plus fréquentes. Elle s’exécute en deux phases : Durant la première phase, trois matrices sont construites : la matrice d’usage des attributs, la matrice des affinités des attributs et la matrice d’affinité ordonnée. - Dans la matrice d’usage des attributs, la valeur de l’élément de la ligne i et de la colonne j a pour valeur 1 si l’attribut j est accédé par la requête i, sinon cette valeur est nulle. Cette matrice est complétée par des valeurs de fréquences d’accès pour chacune des requêtes représentées dans une colonne supplémentaire. - La matrice des affinités d’attributs a m lignes et n colonnes correspondant aux attributs de la relation à fragmenter. La valeur de l’élément de la ligne i et de la colonne j reporte les valeurs d’affinités définies entre ces attributs. Cette affinité correspond à la somme des fréquences d’accès des requêtes accédant simultanément aux deux attributs. - La matrice d’affinité ordonnée est obtenue après l’application de l’algorithme de B.E.A (Bound Energy Algorithm) [SSGJ, 84] sur la matrice des affinités d’attributs. Par permutation de lignes et de colonnes, l’algorithme B.E.A. regroupe les attributs qui sont utilisés simultanément en fournissant une matrice sous la forme d’un semi-bloc diagonal. Les informations nécessaires durant la 1ère partie sont de type quantitatif. En effet, elle s’appuie sur le comportement des applications et a pour but de placer dans une même partition les attributs qui sont généralement accédés ensemble. Une mesure indiquant la proximité des attributs est l’affinité des attributs. Soit Q Q1 , Q2 ,..., Qm l’ensemble de requêtes destinées à s’exécuter sur une relation R A1 , A2 ,..., An . A chaque requête qi et chaque attribut A j , on associe une valeur d’usage de l’attribut noté use qi , A j définie comme suit : use qi , Aj 1 si l'attribut Aj est référencé par une requete qi 0 sinon Par un ensemble de requêtes Q et un ensemble d’attributs A1 , A2 ,..., Ak on aura donc une matrice dite matrice d’usage des attributs 58 A1 A2 ...... . Ak q1 1 0 .......... . . q2 0 . . 1 . . 1 0 . . q . .......... 0 1 n Cependant cette matrice n’est pas suffisante pour fragmenter une relation car les valeurs qu’elle contient ne décrivent pas les fréquences des différentes applications. Les auteurs [NCW, 84] ont introduit alors la quantité aff Ai , A j , qui mesure l’affinité entre deux attributs Ai et A j d’une relation R en fonction de l’ensemble d’applications Q . aff Ai , Aj ref q acc q l k l k k / use qk , Ai 1use qk , A j 1 Sl Où refl qk est le nombre d’accès aux attributs A , A pour i j chaque exécution de l’application qk au site Sl et accl qk est la fréquence d’accès de l’application. La matrice d’affinité est utilisée lors du processus de fragmentation, qui consiste dans un premier temps à grouper l’ensemble des attributs ayant une forte affinité, et dans un deuxième temps à fragmenter la relation en fonction de ces groupements. Un autre algorithme de la fragmentation verticale est celui présenté par [HN, 79]: Les auteurs ont proposé une solution basée sur un modèle de simulation pour l’évaluation des performances présentées par le schéma après une fragmentation verticale (figure 2.8). Les deux composantes principales de cette méthode sont : Un générateur de partitions. Un évaluateur de performances qui attribue une valeur de mérite à chaque partition. 59 Figure 2.8 : Principe général de l’algorithme de [HN, 79] 3.2. Fragmentation horizontale La fragmentation horizontale constitue un aspect important dans la conception physique des bases de données [SNY, 04]. Elle a un impact significatif sur l’exécution des requêtes OLAP et la gestion de l’entrepôt de données. 3.2.1. Position du problème Dans le contexte des entrepôts de données relationnels, la fragmentation horizontale permet de partitionner les tables, les index et les vues matérialisées en plusieurs ensembles de lignes disjoints, physiquement stockés et séparément consultés [SNY, 04]. Contrairement aux vues matérialisées et aux index, la fragmentation ne duplique pas les données, en conséquence elle réduit le coût de mises à jour [PSA, 04]. Le problème consiste à déterminer un ensemble des tables de dimension à fragmenter et d’utiliser leurs schémas de fragmentation pour fragmenter la table de faits F en un nombre de fragments horizontaux (appelés fragments de faits) tels que le coût total d’exécution des requêtes sur le schéma en étoile fragmenté soit réduit. 60 3.2.2. Principe de la fragmentation Le problème majeur de la fragmentation horizontale (figure 2.9) peut être formalisé de la façon suivante : étant donné un ensemble de tables de dimension D D1 , D2 ,..., Dd et une table de fait F , un ensemble de requêtes OLAP fréquentes Q Q1 , Q2 ,..., Qm , ou chaque Qi 1 i m possède requête une fréquence d’accès, et un seuil W (donné par l’administrateur de la base de données) représentant le nombre maximum de fragments qu’il peut maintenir. Notons que la satisfaction de cette contrainte évite le cas d’un nombre très grand de fragments de la table de fait (noté N ). g N mi ou mi et g représentent respectivement le nombre de fragments de la table i 1 de dimension Di et le nombre de tables de dimensions participant dans le processus. Figure 2.9 : Processus de sélection des dimensions. 3.2.3. Propriétés de la fragmentation Durant ce processus de fragmentation dans les bases de données ou les entrepôts de données on doit garantir trois propriétés [CP, 84] : la complétude, la reconstitution, et la disjonction. La complétude garantie que tous les n-uplets d’une relation sont associés à au moins un fragment. 61 La reconstitution garantie qu’une relation peut être reconstruite à partir de ses fragments. Par exemple pour la fragmentation horizontale, la reconstitution de la table des faits et des tables de dimensions est obtenue par l’opération d’union, c’est-à-dire N mi i 1 j 1 F Fi et Di Dij . La disjonction garantie que les fragments d’une relation sont disjoints deux à deux, pas d’intersection. A partir de ces caractéristiques, chaque algorithme proposé doit les tenir compte, sinon il y’aura soit une perte de données ou redondance de données, et cela induit l’incohérence des données initiales. En effet, une relation de m attributs peut être fragmentée verticalement en B m différentes manières [OV, 91], B m étant le nombre de Bell. Pour m grand, m B m peut atteindre m . 3.2.4. 3.2.4.1. Les algorithmes de la FH Algorithme glouton Le problème de partitionnement horizontal a été montré NP-Complet par [SW, 85], de plus, il est NP-complet au sens fort selon [BBR, 08], qu’ils ont considéré une version simplifiée du problème, intitulé: Fragmentation Horizontale à un Seul Domaine, démontrée par réduction du problème 3-partitions qui est connu NP-complet au sens fort. Plusieurs algorithmes sont proposés pour répondre à ce problème d’optimisation. Nous considérons seulement les tables de dimensions dont leurs ensembles de prédicats simples sont non vides. Définition : Un prédicat simple P est de la forme : P : Ai valeur Où, Ai est un attribut d’une relation à fragmenter, ; ; ; ; ; , valeur dom Ai . Etant donné le nombre, cet algorithme commence par sélectionner une table de dimension de manière aléatoire, cette table est alors fragmentée ainsi que la table des faits par la fragmentation dérivée. Si le nombre de fragments N est inférieur au seuil L et il y’a une amélioration dans le coût, l’algorithme sélectionne une autre table de dimension et 62 réitère le même processus tant que les deux conditions (amélioration de coût et N L ) sont satisfaites (figure 2.10). Sinon l’algorithme désélectionne cette table et considère une autre table. À la fin de l’algorithme, nous obtenons un schéma d’entrepôt fragmenté réduisant le coût de traitement des requêtes. Figure 2.10 : Structure de l’algorithme glouton 3.2.4.2. Algorithme dirigé par contrainte Nous avons vu précédemment que la fragmentation horizontale permet de réduire le temps d’exécution des requêtes en minimisant le nombre d’accès aux données. Cependant, pour atteindre cet objectif il faut disposer des algorithmes de fragmentation ayant une complexité raisonnable. Les algorithmes de fragmentation primaire proposés dans les contextes relationnels et objets se divisent en deux catégories : Les algorithmes basés sur la minimalité et la complétude des prédicats. Les algorithmes dirigés par les affinités des prédicats. Ces algorithmes ont été développés dans les bases de données relationnelles dans un contexte soit : Centralisé : La fragmentation verticale favorise naturellement le traitement des requêtes de projection. La fragmentation horizontale permet de limiter le nombre de pages accédées, ou de réduire le nombre de n-uplets accédés inutilement. Réparti : le principe général est le même, seul dans le contexte réparti, la fragmentation consiste à découper une relation par rapport à un ensemble de sites. 63 3.2.4.2.1. Algorithme basé sur la minimalité et la complétude des prédicats Avant de décrire cet algorithme quelques définitions s’imposent : Définition 1 : Une fréquence d’accès est le nombre d’accès aux données que la requête pourra faire pour une période spécifique. Définition 2 : Un prédicat simple p est pertinent relativement à un ensemble de prédicats simples P s’il existe un prédicat simple q P tel que les fragments horizontaux définis par p q et p q soient accédés individuellement par au moins une application. [OV, 91] ont proposé une méthode de fragmentation horizontale dont les étapes sont : 1. Extraction des informations relatives à la base de données: il s’agit de déterminer tous les liens qui existent entre les différentes relations, surtout les jointures et ainsi que regrouper, dans une même classe, toutes les transactions ayant pour origine le même nœud du réseau d’ordinateurs composant le système réparti. Une fréquence d’accès est associée à chaque transaction. 2. Spécification d’un ensemble complet et minimal de prédicats simples: à partir de ces transactions, on énumère tous les prédicats simples P . La complétude garantit que chaque fragment soit accédé par toutes les applications avec la même probabilité. La minimalité garantit que tous les fragments d’une table soient accédés différemment par au moins une application. L’algorithme de production d’un ensemble de prédicats complet et minimal (COM-MIN) à partir d’un ensemble de prédicats simples procède en deux étapes. La première étape initialise l’ensemble de résultats avec un prédicat et sa négation qui fragmente la relation en deux fragments, chacun étant accédé par au moins une application. La seconde étape est itérative, et ajoute tout nouveau prédicat qui fragmente un fragment défini dans l’ensemble résultat en deux fragments, chacun étant accédé par au moins une application. Lors de cette étape, les prédicats qui deviennent non pertinents par rapport à l’ensemble résultat sont éliminés (algorithme 3). 64 Algorithme 3 : Algorithme de génération des prédicats complets et simples 1: Données: une relation R et un ensemble de prédicats P définis sur R 2: Sortie: Un ensemble complet et minimal de prédicats simples 3: déclaration: F (l’ensemble de fragments), P ' de P f i (un fragment défini par un minterm mi ) 4: Règle 1: toute relation est fragmentée en au moins deux fragments qui seront accédés différemment par au moins une application. 5: Initialisation 6: P' 7: chercher un prédicat 8: P ' qi ; P qi de P tel que qi fragmente R en respectant la règle1 P qi ; F fi 9: repeat 10: chercher un prédicat qi de P tel que 11: P ' P ' qi ; P P qi ; F F f i 12: if il existe qk P ' qui n’est pas pertinent then 13: P ' P ' qi 14: F F fi 15: end if 16: until 3. qi fragmente f k de F en respectant la règle 1 P ' est complete Construction des prédicats MINTERM de P q1 ,..., qn : plus formellement ces prédicats sont générés de la façon suivante : étant donnée une relation R A1 ,..., An et un ensemble de prédicats simples P p1 ,...., pm , l’ensemble des minterms est composé de tous les prédicats de la forme : pi P pi* avec pi* pi ou pi* pi . 4. Eliminations des minterms non significatifs : durant cette étape on élimine les minterms qui n’ont pas de sens (données inexistantes, duplications...). Donc suivant cette approche précédemment définie, la fragmentation horizontale primaire pourra formuler par, étant donnée une relation Ri , ses fragments horizontaux sont donnés par : 65 Ri j Fj Ri 1 j n Avec n : nombre de minterms et F j est un prédicat minterm défini sur Ri . L’algorithme global de la fragmentation horizontal de [OV, 91] est : Algorithme 4 : Algorithme de fragmentation horizontale [OV, 91] 1: Données: une relation R et un ensemble de prédicats P définis sur R 2: Sortie: Un ensemble de fragments horizontaux 3: P ' COM _ MIN R, P //génération d’un ensemble de prédicats complet et minimal 4: Déterminer l’ensemble de minterms M i 5: Déterminer l’ensemble des implications I entre les prédicats pi de P ' for each minterm mi M i 6: if mi est contradictoire en respectant I then 7: M i : M i mi 8: 9: end if 10: end for Exemple : Nous illustrons cet algorithme en prenons la relation projet suivante (tableau 2.2) : N.projet Thème.projet Budget Lieu.étude 1 Architecture.parralèles 150.000 INPT 2 Bases.données.objets 135.000 ENSIAS 3 Réseaux.ATM 250.000 INPT 4 Robotique 310.000 FSR Tableau 2.2 : Relation Projet Supposons que deux applications utilisent cette relation. La première est utilisée sur trois sites et retourne le thème et le budget de chaque projet étant donné le numéro du projet. Les prédicats simples sont alors : 66 p1 lieu.étude = INPT p2 lieu.étude = ENSIAS p3 lieu.étude = FSR La deuxième application est exécutée sur deux sites. Sur le premier site sont gérés les projets ayant moins de 200.000 DH de budgets, sur le deuxième ceux de budgets > 200.000. Les prédicats simples qui peuvent être utilisés pour fragmenter la relation projet selon cette deuxième application sont : p4 budget 200.000 p5 budget 200.000 On en déduit l’ensemble Pr de prédicats simples : Pr p1 , p2 , p3 , p4 , p5 Les prédicats minterms pertinents pouvant être définis de Pr sont alors: m1 lieu.étude = INPT budget 200.000 m2 lieu.étude = INPT budget 200.000 m3 lieu.étude = ENSIAS budget 200.000 m4 lieu.étude = ENSIAS budget 200.000 m5 lieu.étude = FSR budget 200.000 m6 lieu.étude = FSR budget 200.000 Le résultat de la fragmentation de la relation projet est la formation de fragments selon les prédicats minterms cités ci-dessus. 3.2.4.2.2. Algorithme dirigé par les affinités des prédicats L’algorithme proposé par [BKA, 00] et [BKS, 97], se base principalement sur les travaux présentés par [NR, 89]. Les auteurs ont adapté cet algorithme qui décrit par cinq étapes principales : i l’énumération des attributs utilisés par les requêtes, ii la construction 67 de la matrice d’usage des attributs, iii la construction de la matrice d’affinité des attributs, iv le regroupement des attributs, et v la construction des fragments verticaux. Par analogie, et pour cet algorithme [BKA, 00], les étapes seraient donc : i l’énumération des prédicats de sélection, ii la construction de la matrice d’usage des prédicats, construction de la matrice d’affinité des prédicats, v l’optimisation des composantes, vi iv le iii la regroupement des prédicats, la construction des minterms, vii la formation des fragments horizontaux, et viii la génération des fragments disjoints. Ce genre d’algorithme a été développé dans le contexte des bases de données réparties [CP, 84][OV, 91] dans lequel la fréquence d’accès des requêtes sur les sites est considérée comme un paramètre essentiel. Le contexte réparti n’est pas le seul domaine d’application de la fragmentation, qui peut être également utilisée dans un contexte centralisé pour minimiser le coût des requêtes [OR, 99]. 3.3. La fragmentation dérivée Dans la littérature : Une relation S (relation membre) peut contenir une clé étrangère vers une relation R (relation propriétaire). La fragmentation horizontale dérivée est définie sur la relation membre S en fonction des fragments horizontaux de la relation propriétaire R . Plus formellement, étant donné un lien allant de la relation S vers la relation R , les fragments horizontaux dérivés de R sont définis par : Ri R Si , 1 i w Où w est le nombre maximum de fragments et Si le i è m e fragment de S . Trois informations sont nécessaires pour effectuer une fragmentation horizontale dérivée : (1) le nom de la relation membre et de la relation propriétaire, (2) le nombre de fragments horizontaux de la relation membre, et (3) la qualification de la jointure entre ces deux relations. Exemple : Considérons les deux relations S et R (figure 2.11), ayant pour extensions respectives : 68 N.emp Nom Fonction E1 X1 ²Adminitstrateur.système E2 X2 Programmeur E3 X3 Analyse E4 X4 Programmeur E5 X5 Ingénieur.maintenance Foncion Salaire Administrateur système 35.000 Ingénieur.maintenance 20.000 Analyste 35.000 Programmeur 25.000 Figure 2.11 : Les deux relations R (N.emp, Nom, Fonction) et S (Fonction, Salaire) On peut donc grouper les employés en deux groupes relativement à leur salaire. Ceux touchant un salaire inférieur à 35.000 et ceux un salaire supérieur ou égal à 35.000. Les fragments S1 et S 2 sont définis comme suit : R1 R S1 R2 R S2 Où S1 S sal 35.000 et S 2 S sal 35.000 . Fragment R1 : N.emp No Fonction m Fragment R2 : N.emp Nom Fonction E2 X2 Programmeur E1 X1 Administrateur. système E4 X4 Programmeur E3 X3 Analyste E5 X5 Administrateur. Système 69 4 Conclusion Malgré ces algorithmes présentés dans un contexte de base de données relationnelles, le problème reste toujours ouvert, surtout dans le cas d’un entrepôt de données (relationnel ou multidimensionnel), c’est d’ailleurs l’objectif de ce travail, dans lequel on a conçu une nouvelle approche pour fragmenter un entrepôt de données, tout en renduisant le coût d’exécution d’un ensemble de requêtes. Tout algorithme de fragmentation (horizontale, verticale et mixte) devrait prendre en considération les paramètres physiques, ce qui n’est pas malheureusement le cas des algorithmes de la fragmentation horizontale basés sur les affinités, la complétude et la minimalité des prédicats. Dans le chapitre suivant, nous nous attachons à présenter un nouveau type d’algorithme, prenons en compte les paramètres physiques de l’entrepôt, basé sur les algorithmes évolutionnaires. 70 Chapitre 3 : Entrepôt de données et algorithmes génétiques 1 Introduction Récemment, un nouvel algorithme de sélection de fragmentation horizontale a été conçu par [BB, 05]. En considérant ce fait comme problème d’optimisation, les auteurs ont utilisé une nouvelle approche, basée sur les algorithmes génétiques, ils ont normalisé un modèle de coût afin d’évaluer chaque solution proposée par l’algorithme, et tester sa validité. Avant d’entamer les détails, quelques notions sur les algorithmes génétiques s’imposent. C’est l’objectif de la première section. Dans la dernière section du chapitre, nous allons illustrer ce processus génétique de fragmentation horizontale dans l’entrepôt de données. 2 Concepts et principes des Algorithmes Génétiques Les algorithmes évolutifs (Evolutionary Algorithms) sont des techniques de recherche inspirées de l'évolution biologique des espèces, apparues à la fin des années 1950. Les algorithmes génétiques (AG) constituent certainement les algorithmes les plus connus [Gol, 89]. 2.1. Stratégie évolutive Le principe d'un algorithme évolutionnaire8 (AE) est très simple. Un ensemble de N points dans un espace de recherche, choisi à priori au hasard, constituent la population initiale; chaque individu x de la population possède une certaine performance, qui mesure son degré d'adaptation (fitness) à l'objectif visé: dans le cas de la minimisation d'une fonction objectif f , x est d'autant plus performant que f x est plus petit. Un AE consiste à faire évoluer progressivement, par générations successives, la composition de la population, en maintenant 8 sa taille constante. Au cours des générations, l'objectif est d'améliorer http://www.enseignement.polytechnique.fr/profs/informatique/Eric.Goubault/poly/cours009.html 71 globalement la performance des individus; le but étant d'obtenir un tel résultat en imitant les deux principaux mécanismes qui régissent l'évolution des êtres vivants : - la sélection, qui favorise la reproduction et la survie des individus les plus performants. - la reproduction, qui permet le brassage, la recombinaison et les variations des caractères héréditaires des parents, pour former des descendants aux potentialités nouvelles. Chaque individu est représenté par un seul chromosome constitué d’une chaîne de gènes. Le codage des données sous la forme d’un chromosome est l’un des points délicats de l’utilisation d’un algorithme génétique (traditionnellement, les algorithmes génétiques manipulent les chaînes de bits). L’algorithme génétique fait évoluer cette population au cours de générations à l’aide d’opérateurs de sélection, de croisement et de mutation, qui sont chargés d’explorer l’espace de recherche en constituant de nouveaux individus à partir d’individus de la population précédente, alors que la sélection favorise les individus qui possèdent une adaptation élevée. La forme générale d’un algorithme génétique suit la structure d’un algorithme évolutionnaire (algorithme 5). Algorithme 5 : Algorithme évolutionnaire typique 1: t 0 2: INITIALISE_POPULATION ( P t ) 3: ÉVALUATION ( P t ) 4: Repeat 5: t t 1 6: SÉLECTION_PARENTS ( P t ) 7: MUTATION ( P t ) 8: RECOMBINAISON ( P t ) 9: ÉVALUATION ( P t ) 10: REPRODUCTION ( P t ) 11: Until TEST_CRITÈRE_D’_ARRÊT ( P t ) 72 La robustesse est une des caractéristiques principales des algorithmes génétiques : ils permettent de fournir une ou plusieurs de « bonne » qualité (pas nécessairement optimales mais suffisantes en pratique) à des problèmes très variés, en sollicitant un investissement assez faible. 2.2. Principe de base Les algorithmes génétiques sont des algorithmes itératifs qui suivent le schéma des évolutionnistes présenté dans l’algorithme 5. Leur fonctionnement est schématisé dans la figure 3.1 dont les étapes sont9 : 1°. A l’initialisation de l’algorithme, une population de taille fixée est générée aléatoirement. Elle est en générale répartie uniformément sur l’espace de recherche. Chaque individu ensuite évalué et on lui associe son adaptation. 2°. Pour la génération k , on reproduit une partie de la population en fonction de l’adaptation de chaque individu : plus la fitness (relative, i.e. par rapport à celle des autres individus) d’un individu est élevée, plus il sera reproduit dans la nouvelle population. 3°. On choisit des couples d’individus parents au hasard dans cette nouvelle population, puis on leur applique avec la probabilité Pc (souvent choisie autour de 0.6) l’opérateur de croisement, les enfants remplacent alors les parents dans la population de la génération k 1 . L’opérateur de croisement est traditionnellement l’heuristique d’un algorithme génétique. 4°. On applique ensuite l’opérateur de mutation à chaque individu avec la probabilité Pm , qui est en général choisit plus faible que Pc . La mutation effectue un déplacement «local» sur les individus. Les mutants remplacent alors les parents dans la nouvelle génération k 1 . 5°. Les individus qui n’ont subi ni de croisement sont recopies tels quels dans la nouvelle population. 9 http://www.recherche.enac.fr/opti/papers/thesis/HABIT/main002.html 73 6°. On réitère ces opérations à partir de la 2ème étape jusqu'à ce qu’un critère d’arrêt soit satisfait. Différentes critères d’arrêt de l’algorithme génétique peuvent être choisis : nombre de générations fixé (temps constant), convergence de la population, population n’évoluant plus suffisamment… Figure 3.1 : Principe général des algorithmes génétiques Pour utiliser un AG sur un problème d’optimisation on doit donc disposer d’un principe de codage des individus, d’un mécanisme de génération de la population initiale, d’une fonction de fitness qui dépend de la fonction à optimiser et qui fournit l’adaptation d’un individu, et d’opérateur permettant de diversifier la population au cours de générations et d’explorer l’espace de recherche. Il faut également choisir les paramètres de l’algorithme qui sont nombreux et parfois délicats à régler : probabilité de croisement Pc et de mutation Pm , taille de population, nombre de générations (si c’est le critère d’arrêt choisi). 2.2.1. Codage d’individu Un individu représente un point de l’espace de recherche du problème traité, c’est-àdire une évaluation de l’ensemble des variables du problème. La mise bout à bout, ces 74 variables, appelés gènes, forme le chromosome de l’individu. Par analogie avec la génétique naturelle, les algorithmes génétiques utilisent traditionnellement des chaînes de bits pour représenter les chromosomes. Ainsi, pour un problème d’optimisation sur n variables entières X i , on peut représenter chacune des variables par un nombre binaire à ki bits (suivant leur domaine), et on obtient le chromosome de taille k à n gènes d’individu en mettant i1,n i bout à bout ces nombres binaires. Beaucoup d’autres codages en adéquation avec la structure de problème ont été expérimentés : chaînes d’entiers, de réels, de graphes d’expressions …Ces types de codage se sont avérés très efficaces sur beaucoup de problèmes. 2.2.2. Génération de la population initiale Généralement, la population initiale est générée aléatoirement de manière à répartir les individus uniformément sur l’espace de recherche. Néanmoins, si on a une idée de la forme de la (des) solution (s), on peut biaiser cette initialisation en regroupant les individus autour de la région considérée, ce qui est susceptible d’accélérer la convergence de l’algorithme. D’autre part, si les contraintes n’ont pu être correctement prises en charge par le codage des individus, il est parfois possible de générer une solution initiale qui les satisfait : domaine des gènes, vérification de contraintes élémentaires… Il faut alors veiller à concevoir des opérateurs qui n’engendrent que des individus admissibles ou prendre en charge les contrevenants pendant l’évaluation. 2.2.3. Evaluation La fitness d’un individu est calculée par la fonction d’évaluation ; elle mesure son adaptation à un environnement donné et le but de l’algorithme génétique est de maximiser cette fonction. Pour résoudre un problème d’optimisation, on prend naturellement la fonction de coût comme fonction d’évaluation, mais dans le cas d’un problème de minimisation, il faut évidemment considérer l’opposé de la fonction de coût. Seule la fonction de coût est utilisée par un algorithme génétique, lors de l’évaluation. Cependant, des problèmes liés à l’évaluation peuvent handicaper la convergence d’un AG : si un gène domine la population très rapidement en conférant à certains individus une 75 fitness élevée, l’exploitation de l’espace de recherche peut être inhibé car le croisement ne produit presque plus de nouvelles solutions10 et seule la mutation permet alors de diversifier la population, ce qui en général n’est pas suffisant11, l’algorithme risque alors de converger prématurément vers un optimum local. Le problème opposé peut également survenir : si tous les individus ont des fitnesses très voisines, par exemple après un grand nombre de générations (quand la population a « presque » convergée), la sélection ne parviendra pas à faire évoluer la population vers l’optimum car les meilleurs individus ne seront pas assez favorisés. On peut remédier ce problème en effectuant un scaling de la fonction de coût, c’est-à-dire en la transformant (par exemple linéairement ou exponentiellement) pour diminuer ou accroître l’écart relatif entre les fitnesses des individus. D’autre part, si la gestion des contraintes n’a pas être effectuée par le codage des données ou la génération des individus (population initiale, et opérateurs de croisement et mutation), on peut la prendre en charge dans la fonction d’évaluation. Une première solution consiste à attribuer une fitness nulle à un individu qui viole les contraintes du problème, ce qui revient à l’éliminer car il ne sera pas reproduit dans la génération suivante. Cependant il peut être intéressant de conserver des individus qui ne satisfont pas toutes les contraintes, mais qui contiennent des « morceaux » de solutions éventuellement utiles dans les générations ultérieures [ZAQ, 08a]. La technique usuelle est alors d’intégrer à la fonction d’évaluation des pénalités pour les individus qui ne respectent pas les contraintes. Ces pénalités dépendent en général du nombre et/ou de l’ « importance » des contraintes violées. On peut alors espérer que l’algorithme génétique va faire évoluer la population vers des régions qui satisfont les contraintes. Néanmoins, les AGs supportent mal la présence de contraintes nombreuses ou complexes, et la technique des pénalités est délicate à mettre en œuvre. Quant le problème est un CSP (Problème de Satisfaction de Contraintes), il peut être difficile de générer la population initiale puis de la faire évoluer. 10 Le croisement de deux individus identiques produit deux individus identiques. 11 L’opérateur de croisement est en général l’heuristique de recherche prépondérante d’un algorithme génétique. 76 2.2.4. Sélection La phase de reproduction de la population d’un AG utilise un principe de sélection pour favoriser les individus les plus adaptés. Différents types de sélection sont couramment utilisés : La Roulette Wheel sélection : pour chaque individu, on reproduit sur un disque de périmètre un arc de cercle proportionnel à sa fitness relative 12, puis on fait tourner la roulette aléatoirement (i.e. on tire au hasard un nombre dans 0,1 ) et on reproduit l’individu sélectionné ; on recommence n fois pour obtenir la nouvelle génération. Le nombre de descendant est ainsi statistiquement proportionnel à sa fitness . Cependant, plus la taille de la population est faible, plus la sélection sera biaisée à cause du petit nombre de tirages effectués. La Stochastic remainder without replacement selection : cette sélection évite le problème lié aux populations de petites tailles éprouvé par la roulette Wheel selection. Pour chaque individu Ind i , on calcule le rapport ri de sa fitness sur la moyenne des fitnesses (i.e. n fois sa fitness relative ), puis on prend sa partie entière E ri et l’individu est reproduit exactement E ri fois ; on exécute ensuite Roulette Wheel selection sur tous les individus affectés des fitnesses ri E ri pour compléter la nouvelle population. Ranking selection : cette sélection remédie le problème dans lequel un gène associé à une fitness élevée peut dominer rapidement la population. Cette sélection tente de remédier ce problème en associant à chaque individu une probabilité de sélection qui ne dépend que du rang de sa fitness dans la population ; on parcourt ensuite la population en tirant pour chaque individu un nombre dans 0,1 et on le reproduit si sa probabilité est supérieure ; on réitère l’opération afin de compléter la nouvelle population. Cette solution est 12 fitness relative d’un individu se calcule en rapportant sa i individus : f realtive Ind f Ind j 1, n i f Ind j 77 fitness à la somme des fitnesses de tous les avantageuse au début de l’algorithme mais peut empêcher la sélection efficace des meilleurs individus. On ajoute très souvent un principe d’élitisme dans le processus de sélection destiné à conserver systématiquement le meilleur individu de la population courante dans la génération suivante, sans lui faire subir d’opérateurs de croisement ou de mutation qui pourraient le détruire. 2.2.5. Croisement Le croisement ou crossover est un opérateur de recombinaison qui fournit un couple d’enfants à partir d’un couple de parents de la génération précédente. Les deux chromosomes initiaux s’alignent et s’entremêlent en plusieurs points de croisement puis se séparent pour former deux chromosomes, où s’alternent des tronçons deux premiers chromosomes. Un opérateur de croisement classique, appelé slicing crossover, est illustré dans la figure 3.2 : deux individus sont choisis dans la population après la phase de reproduction, puis un point de croisement est choisi sur leur chromosome ; on intervertit alors les parties des parents de part et d’autre du point de croisement pour fournir deux nouveaux individus. Figure 3.2 : Slicing crossover Le fait de choisir un seul point de croisement biaise l’effet du crossover : s’il est choisi proche d’une extrémité du chromosome, les enfants seront presque identiques aux parents, et 78 s’il est choisi au milieu, ils en seront très différents. Le 2-point slicing crossover évite ce problème en considérant les chromosomes comme circulaires plutôt que linéaires et en les coupant en deux points. Des k-points slicing crossovers ont également été proposés [DS, 92] (figure 3.3 avec k 3 ), jusqu’au uniform crossover qui utilise un masque binaire généré aléatoirement de la même taille que les chromosomes, pour indiquer à chaque position du gène dans un chromosome le parent qui fournira le gène. Figure 3.3 : 3-point slicing Crossover. Autre type de croisement utilisé est le croisement barycentrique qui produit les gènes des enfants G1i et Gi2 avec des combinaisons linéaires des gènes des parents G1i et Gi2 fils G 1i fils G i2 fils fils G 1i 1 père G 1i père père : père 1 G i2père G i2 père Ceci pour chaque position i 1, n du gène dans le chromosome, et avec un coefficient de pondération aléatoire qui peut éventuellement prendre des valeurs en dehors de 0,1 , pour générer des points « entre » ou à l’ « extérieur » des gènes des pères, mais il faut veiller à respecter les contraintes de domaine des variables. Un autre mécanisme de croisement peut être proposé, à condition de respecter les propriétés : - Lorsque deux individus identiques s’accouplent, ils engendrent des individus identiques à eux-mêmes. - La probabilité que rien ne se passe pendant un crossing-over est toujours non nulle. 79 - Les deux individus qui s’accouplent jouent des rôles identiques. Les opérateurs de croisement adoptés par notre algorithme génétique vérifient ces trois propriétés. 2.2.6. Mutation L’opérateur de mutation effectue en général un déplacement local sur la solution représentée par un individu. La mutation est considérée comme un opérateur marginal pour les AGs, bien qu’elle leur confère la propriété d’ergodicité, c’est-à-dire que tous les points de l’espace de recherche peuvent être atteints ; cet opérateur a une grande importance, de point de vue théorique. L’opérateur classique de mutation sur les chaînes de bits choisit aléatoirement une position dans le gène et le remplace par son complémentaire pour construire l’individu mutant comme l’illustre la figure 3.4. Figure 3.4 : Mutation classique discrète On peut généraliser cette mutation sur des chaînes à domaines discrets de tailles quelconque en changeant la valeur du gène choisi par une autre de son domaine, proche de la valeur initiale. Dans les problèmes continus (figure 3.5), on procède un peu de la même manière en tirant aléatoirement un gène dans le chromosome, auquel on ajoute un bruit aléatoire (par exemple un bruit gaussien) en veillant bien évidemment à ce que le gène résultant reste dans le domaine de définition qui lui est propre. L’écart type de ce bruit est délicat et difficile à régler : s’il est trop faible, l’exploration sera ralentie au début et on risque la convergence locale ; s’il est trop grand, les solutions seront modifiées trop brutalement et on ne pourra pas non plus converger localement vers l’optimum. 80 Figure 3.5 : Mutation continue Il existe également un principe de mutation adaptative figure 3.6, permettant d'optimiser le taux de mutation en codant ce dernier dans la structure du chromosome [Bac, 92]. Ce second chromosome est géré de la même manière que le premier chromosome codant l'espace d'état, c'est-à-dire lui-même soumit aux opérateurs génétiques (croisement et mutation). Au cours du déroulement de l'algorithme, les gènes et les individus ayant des probabilités de mutation élevées auront tendance à disparaître à mesure que la population converge vers l'optimum. De même, les gènes ayant des probabilités de mutation trop faibles ne peuvent évoluer favorablement et tendent à être supplantés. Figure 3.6 : Mutation adaptative 2.2.7. Convergences des algorithmes génétiques Dans leur version canonique, les AGs présentent des limites qui conduisent le plus souvent à des problèmes de convergences lente ou prématurée. Pour pallier à ces inconvénients, des améliorations ont été apportées: e.g, codage, opérateurs biologiques, 81 stratégie élitiste, etc. Les détails de fonctionnement de ces algorithmes peuvent être trouvés dans plusieurs références [Mich, 96] 2.2.8. Limitations des algorithmes génétiques Les algorithmes génétiques sont des outils efficaces pour une classe de problèmes d’optimisation. De plus, ils permettent de traiter des problèmes où la fonction à optimiser ne présente aucune propriété de continuité ou de dérivabilité, par exemple. Néanmoins, les sections précédentes mettent en avant un certain nombre de limitations à leur sujet : Ils sont moins efficaces qu’un algorithme déterministe spécifique (lorsqu’il en existe un) dédié à un problème donné. Les nombreux paramètres qui les contrôlent sont délicats à régler (probabilités de croisement et de mutation notamment), ainsi que le codage des chromosomes qui peut faire varier radicalement la vitesse de convergence. Afin de garantir la robustesse des algorithmes évolutifs, le calcul d’un très grand nombre de fitness (parfois de l’ordre de plusieurs centaines de milliers) est généralement nécessaire avant l’obtention d’une bonne solution. Ce nombre de calcul important peut s’avérer problématique lorsque le coût de calcul (ressources systèmes ou temporelles) de la fitness est important, ou lorsqu’on travaille en grande dimension sur des fonctions à complexité importante par exemple. Ils peuvent éprouver des difficultés à gérer des contraintes nombreuses et complexes car la technique des pénalités intégrées à la fonction de coût utilise des contraintes à posteriori de manière passive. 3 Application des algorithmes génétiques à l’entrepôt de données La fragmentation de la table des faits dans un environnement DW pourrait engendrer un nombre important de fragments qui rendrait le processus de maintenance très coûteux. Afin de réduire ce nombre ou le rendre contrôlable par l’administrateur de l’entrepôt de données, plusieurs travaux de recherche ont proposé l’utilisation d’un Algorithme Génétique. Ce dernier a pour but de sélectionner les tables de dimension à fragmenter pour éviter l’expulsion 82 du nombre de fragments de la table des faits et garantir une meilleure performance d’exécution des requêtes [BB, 05]. [BBR, 08]. 3.1. Processus génétique de la fragmentation horizontale 3.1.1. Codage adopté Tout algorithme de fragmentation horizontale nécessite les données d’un ensemble de requêtes les plus fréquentes. A partir de ces requêtes, nous extrairons deux types d’informations : qualitative et quantitative. Les informations qualitatives concernent les tables de dimension et sont représentées par les prédicats de sélection simples utilisés dans les requêtes. Les informations quantitatives concernent la sélectivité de ces prédicats et les fréquences d’accès des requêtes. Nous rappelons qu’un prédicat simple p est défini par p : Ai Valeur , où Ai est un attribut d’une relation à fragmenter, , , , , , , Valeur Dom Ai . Avant de décrire le processus de codage des individus de la population, nous devons réaliser les tâches suivantes : 1°. L’extraction de tous les prédicats de sélection simples utilisés par les n requêtes. 2°. L’attribution à chaque table de dimension Di 1 i d d’un ensemble de prédicats simples EPS Di qui lui est propre. 3°. Toute table de dimension Di ayant EPS Di , ne sera pas fragmentée. Soit Dcandidat l’ensemble de toutes les tables de dimension ayant leur ensemble de prédicats simples non vide. Soit g la cardinalité de l’ensemble Dcandidat g d . 4°. L’application de l’algorithme COM _ MIN [OV, 99] à chaque ensemble de prédicats simples d’une table de dimension Di . Il fournit en sortie une forme complète et minimale de ces ensembles. La règle de complétude et de minimalité assure que si une table est fragmentée en au moins deux fragments, elle sera accédée différemment par au moins une requête [OV, 99]. 83 3.1.2. Représentation des fragments horizontaux L’analyse des clauses représentant les fragments horizontaux permet d’effectuer une partition du domaine des attributs de fragmentation en sous-domaines appelés sous domaines stables SDS . Les éléments de cette partition sont déterminés par les prédicats simples. Exemple : Cet exemple montre comment les prédicats de fragmentation définissent des partitions de chaque domaine des attributs de fragmentation (un attribut de fragmentation est un attribut qui participe dans le processus de partitionnement). Considérons trois attributs de fragmentation : Age et Sexe de la table de dimension Client, et Saison de la table de dimension Temps. Supposons que les domaines des attributs de fragmentation sont : Dom Age 0,120 ; Dom Sexe ' M ', ' F ' ; Dom Saison " Printemps ", " Eté ", " Automne ", " Hiver " Sur l’attribut Age, quatre prédicats simples sont définis : P1 : Age 18 , P 2 : Age 60 , P 3 : Age 18 et P 4 : Age 60 . SDSs par les Le domaine de l’attribut quatre Age 0,120 prédicats P1, P 2, P 3, P 4 de est donc partitionné en trois la manière suivante: Dom Age d 11 d 12 d 13 , avec d 11 0,18 , d 12 18, 60 , d 13 60,120 . – D’une manière similaire, le domaine de l’attribut Sexe est partitionné en deux SDSs : Dom Sexe d 21 d 22 , avec d 21 ' M ' , d 22 ' F ' – Finalement, l’attribut Saison est partitionné en quatre SDSs : Dom Saison d 31 d 32 d 33 d 34 , avec d 31 "Printemps" et d 32 "Eté" , d 33 "Automne" et d 34 "Hiver" [ZBB, 07]. Les différents SDSs de chaque attribut de fragmentation sont représentés par la figure 3.7 : 84 Figure 3.7 : Les SDSs des attributs de fragmentation. Chaque attribut de fragmentation Ai sera représenté par un tableau d’entiers de ni cellules, où ni correspond au nombre de sous domaines, les valeurs dans les cellules de ce tableau oscilleront entre 1 et ni . Si deux cellules ont la même valeur, on regroupe les sous domaines de manière à n’en former qu’un. Chaque individu (un schéma de fragmentation) est donc représenté par un tableau d’entiers (tableau 3.1) ou par un cube (figure 3.8). Sexe 1 1 Saison 2 1 3 Age 2 1 2 3 Tableau 3.1 : Exemple d’individu Figure 3.8 : Exemple de représentation de fragments dans le cas de trois attributs. 85 A partir du tableau 3.1, on peut déduire que la fragmentation de l’entrepôt ne se fera pas sur l’attribut Sexe , car tous les sous domaines de l’attribut ont la même valeur. En conséquence, on fragmentera en utilisant l’attribut Saison et l’attribut Age . Pour l’attribut Saison , trois prédicats de fragmentation sont possibles, à savoir : P1 : Saison " Printemps" , P 2 : Saison " Eté" et P3 : Saison " Automne" Saison ="Hiver" . Pour l’attribut Age, deux prédicats sont possibles : P 4 : Age 18 Age 60 et P 5 : 18 Age 60 . A partir de ces prédicats, nous pouvons fragmenter le schéma de l’entrepôt en 6 fragments, où chaque fragment est défini par une clause de prédicats : P1 P 4 ; P1 P5 ; P 2 P 4 ; P 2 P5 ; P 3 P 4 et P3 P5 . La représentation en tableau multidimensionnel peut être utilisée pour calculer le nombre de tous les schémas de fragmentation possibles (dénoté par H ) : H 2 k i 1 ni Où k et ni représente le nombre d’attributs de fragmentation et le nombre de sous domaines de l’attribut Ai , respectivement. Si on considère les trois attributs de fragmentation : Age, Sexe et Saison (de l’exemple précédent), le nombre de schémas possibles est 2 2 3 4 29 . Ce nombre représente également le nombre de minterms possibles générés par l’algorithme de fragmentation horizontale primaire proposé par [OV, 99]. 3.1.3. Sélection des individus [BB, 05] ont utilisé la méthode de la roulette pour sélectionner les individus parents. Dans cette méthode chaque individu est accompagné de son évaluation. Plus cette évaluation est élevée, plus l’individu a de chance d’être sélectionné. Les individus choisis sont appelés le « père » et la « mère ». – Une fois les individus choisis, on détermine si on va les croiser ou pas en tirant un chiffre aléatoire ; 86 – Si ce chiffre est supérieur à un certain taux de croisement (en général fixé entre 70 et 90 %), on ne les croise pas et les individus sont réinjectés directement dans la population de génération suivante. – Si le père et la mère sont trop semblables, un seul sera réinjecté. Dans l’autre cas, on crée deux enfants à partir des deux parents. On ajoute alors ces enfants à la population. 3.1.4. Types de croisements Plusieurs types de croisement peuvent être envisagés : le croisement mono-point (1 seul point de croisement par individu), le croisement multipoints (2 ou plusieurs points de croisement par individu), le croisement uniforme (opération bit à bit entre les individus). Dans notre étude, [BB, 05] ont choisi d’utiliser un croisement multipoints pour la raison suivante : nous savons depuis la création d’un individu que les prédicats sont placés les uns à la suite des autres dans le vecteur d’entiers. Les individus sont croisés une fois sur chaque prédicat, pour ne pas désavantager le croisement d’un prédicat par rapport à un autre. On sait en effet que chaque prédicat dispose d’un nombre d’entiers différents. Si on n’effectue qu’un croisement par individu le prédicat qui a un grand nombre d’entiers (par exemple, l’attribut Age de la table de dimension Client aura autant d’entiers que d’âges) aura une probabilité de croisement supérieure à un attribut ayant un domaine de faible cardinalité, comme l’attribut Sexe (masculin et féminin). Cette opération de sélection est effectuée tant que la population n’a pas atteint le nombre convenable d’individus. 3.2. Optimisation avec contrainte Chaque chromosome (schéma de fragmentation) FSi généré par notre AG est évalué en utilisant une fonction de fitness représentée par un modèle de coût qui calcule la somme de pages accédées (entrées/sorties) nécessaires pour exécuter chaque requête dans l’entrepôt de données fragmenté. Soit D sel D1sel ,..., Dksel l’ensemble des tables de dimension ayant 87 des attributs de sélection, où chaque prédicat de sélection Pj (défini sur une table de P dimension Di ) possède un facteur de sélectivité notée par ( SelDij 0,1 ). Ce prédicat Pj , a également un facteur de sélectivité dans la table des faits, noté P P P par SelF j SelF j SelDij . Dans notre étude, les facteurs de sélectivité sont choisis en utilisant une répartition uniforme (RU), car la présentation la plus simple est celle qui suppose l’uniformité de la distribution des valeurs et l’indépendance des attributs pour évaluer la sélectivité des prédicats de comparaison. Notons que chaque requête Qk est exécutée sur chaque schéma de fragmentation FSi S1 ,..., S Ni . Afin d’identifier les sous schémas en étoile pertinents pour la requête Qk , Nous avons introduit une variable booléenne dénotée par Pertinence Qk , S i [BB, 05], définie par : Pertinence Qk , Si 1 si le sous schéma Si participe dans l'evaluation de Qk 0 sinon . Cependant, le coût d’exécution en termes de pages (entrées/sorties entre le disque et la mémoire centrale) de chaque requête Qk 1 k m est évalué de la façon suivante : Identification de tous les sous schémas pertinents par les Ni sous schémas, Pour chaque sous schéma pertinent, nous chargeons en mémoire les pages de la table des faits concernées par la requête Qk . Finalement, ce coût peut être exprimé par l’équation suivante [BB, 05] : Mj Ni F L IOC Q, FSi Pertinence Qk , S j SelFPi j 1 i 1 PS (3.1) Avec, M j , F , L et PS représentent le nombre de prédicats de sélection utilisés pour définir les fragments de sous schéma en étoile S j , la cardinalité de la table des faits (nombre de tuples) F , la longueur en octets de chaque tuple de la table des faits, et la taille d’une page disque (en octets), respectivement. Le coût total pour exécuter l’ensemble des requêtes est exprimé par l’équation suivante : 88 m TIOC Q, FSi IOC Qk , FSi k 1 (3.2) Donc le problème de fragmentation d’un entrepôt de données relationnel consiste à partitionner un schéma en étoile, tel que le coût total d’exécution de requêtes soit minimal ou en d’autres termes, le gain est maximisé : Maximiser_ Eval Q, FSi TIOC Q , TIOC Q , FS i (3.3) tel que Ni W , avec TIOC Q , représente le coût d’exécution de l’ensemble de requêtes sur le schéma de l’entrepôt non fragmenté. 3.3. Mutation L’analogie avec le monde vivant nous amène à nous poser la question de la mutation. Dans la nature, les mutations sont fréquentes et entraînent des variations plus ou moins marquées de l’individu. Dans notre modèle (figure 3.9) nous avons choisi un taux de mutation qui se situe entre 30% et 6%, c’est le taux habituellement utilisé. Il faut choisir un juste milieu entre une trop faible et une trop forte mutation. Les mutations s’effectuent aux niveaux des attributs de notre individu. Suivant un nombre aléatoire, nous choisissons de muter un ou plusieurs attributs de l’individu. On peut voir sur le schéma suivant la mutation d’un attribut. Figure 3.9 : Exemple de Mutation On remarque sur l’exemple ci-dessus (figure 3.9), la mutation d’un individu sur l’un de ses attributs, qu’il y avait trois fragments dans l’individu initial en ce qui concerne l’attribut 2. Sur l’individu muté, on remarque qu’il y a toujours trois fragments mais les intervalles pris en compte ne sont plus les mêmes. Dans la pratique, il pourrait y avoir plus d’intervalles distincts 89 ou un regroupement d’intervalles. De même, les mutations pourraient se produire sur plusieurs attributs de l’individu. 4 Conclusion Dans ce chapitre, nous avons décrit les principales fonctions d’un algorithme génétique. D’abord nous avons donné des exemples, ensuite nous avons présentés les travaux de recherche d’optimisation des requêtes OLAP, basés sur les AGs, concernant le codage, mutation et croisement, ainsi que les opérations primitives à utiliser pour la fragmentation horizontale. Bien que l’algorithme présente une solution remarquable, vues les résultats obtenus, il reste loin, d’exploiter les possibilités offertes pour améliorer le cout d’exécution des requêtes OLAP, c’est pour cela nous voulons introduire la fragmentation verticale dans ce processus afin d’améliorer d’avantages la solution d’optimisation. De plus apparemment, dans une telle démarche, toutes les tables de dimension auraient la même probabilité d’être utilisées, ce qui n’est pas toujours vrai dans la réalité, car elles ne possèdent pas la même taille fréquence d’utilisation, etc. Donc il serait intéressent de décider le nombre des tables de dimensions pertinentes pour la fragmentation ensuite leurs attributs. Par la suite nous allons démontrer cette hypothèse, c’est l’objectif du quatrième chapitre. 90 Chapitre 4 : Mise en œuvre d’un algorithme Génétique pour la fragmentation mixte 1 Introduction Dans ce chapitre, nous allons décrire notre adaptation de l’algorithme génétique, concernant le codage, mutation et croisement, ainsi que les opérations primitives à utiliser, pour la fragmentation mixte. Le choix d’utilisation est la garantie d’aboutir à la fin du processus à une solution presque optimale et qui répond à toutes les exigences et contraintes établies par l’administrateur. De plus et pour confirmer notre approche une étude détaillée avec des expérimentations est envisagée dans la fin du chapitre. Nous considérons cette approche d’optimisation comme une alternative aux systèmes qui doivent gérer, manipuler et optimiser des données historiques. 2 Présentation de notre approche : nouveau modèle d’optimisation avec les AGs L’idée majeure consiste à combiner l’algorithme précédemment cité dans chapitre 3 (section 3), par au autre algorithme chargé de trouver un schéma de fragmentation verticale, puisque cette dernière n’a pas connu le même succès que celui de la fragmentation horizontale, cet algorithme lui-même est un algorithme génétique [ZAQ, 08a]. 2.1. Processus génétique de fragmentation mixte Le processus de fragmentation mixte est entamé par une fragmentation horizontale primaire des dimensions, et une fragmentation horizontale dérivée de la table des faits ([BB, 05] et [BBR, 08]), suivie par une verticale suivant les dimensions [ZAQ, 08a], [ZAQ, 08b]. L’algorithme 6 nous montre les étapes nécessaires de notre approche pour répondre au problème d’optimisation dans l’entrepôt de données relationnel. La première étape consiste à extraire les données utiles à savoir les fréquences d’utilisations et les prédicats de sélection à partir des requêtes. Les deux dernières étapes sont indépendantes. 91 Algorithme 6 : Algorithme mixte proposé Entrée : Q: Ensemble de requêtes avec leurs fréquences F D : Ensemble de tables de dimension Sortie: schémas de fragmentation (vertical et horizontal). Début Extraire (prédicats de selection) Algorithme_genetique_horizontal() // fragmentation horizontale de l’ED suivant la configuration générée Algorithme_genetique_horizontal() // fragmentation verticale de l’ED suivant la configuration générée Fi n 2.1.1. Codage d’individu Tout algorithme de fragmentation verticale nécessite un ensemble de requêtes les plus fréquentes. A partir de ces requêtes, et pour une table de dimension candidate pour la fragmentation, nous avons construit une matrice d’usage des attributs. Soit ni le nombre d’attributs non clés de la table de dimension Di . Chaque individu (un schéma de D fragmentation) est donc représenté par un tableau d’entiers de taille N ni ( D est le k 1 nombre de dimensions) (figure 4.1). Si des cellules ont la même valeur, cela signifie que ces attributs forment le même fragment vertical. Si dans un tableau de codage toutes les cellules ont la même valeur, cela signifie que cette table de dimension ne sera pas partitionnée. Exemple 1 : Considérons l’individu qui présente une dimension ayant la représentation suivante : 3, 0,3, 0, 2, 2 . Cette représentation génèrera trois fragments verticaux de cette dimension : les attributs A1 et A3 forment le premier fragment, A2 et A4 forment le deuxième fragment, tandis que A5 et A6 forment le dernier fragment (il faut ajouter la clé primaire de la relation dans chaque fragment). 92 Figure 4.1 : Codage de différents individus pour un chromosome vertical (schéma de fragmentation verticale) Exemple 2 : Dans la figure ci-dessus, le chromosome présentant la dimension Custlevel indique la création de deux fragments verticaux : FV1 Key , A1 , A2 et FV2 Key , A3 , A4 . 2.1.2. Sélection des individus Nous avons utilisé la méthode de la roulette pour sélectionner nos individus parents comme pour la fragmentation horizontale (chap.3, sc. 3.1.3). 2.1.3. Croisement Nous avons appliqué le croisement à une paire d’individus (les parents) d’une certaine proportion de la population - avec une probabilité Pc , généralement autour de 0.6 - pour en produire de nouveaux (chromosomes), et on décide si on croise ou pas suivant une variable aléatoire échantillonnée et comparée avec la probabilité Pc . Le type de croisement utilisé est celui d’un seul point pour la génération de la population suivante (Algorithme 7) [ZAQ, 08]. 93 Algorithme 7 : Algorithme de croisement pour la fragmentation verticale Entrée : Génération G Paramètre : Probabilité de croisement Pc Début : 1: Choisir deux Individus aléatoirement ( I i , I j ) 2: Échantionner n 1, d ième // Choisir la n dimension des deux // Individus ( I i , I j ) 3: Échantionner u 0,1 4: Si u Pc alors 5: Échantionner m 1, N att 6: Échanger I i m , I j m // Permutation a partir de l’attribut m 7: Fin Fin si La figure 4.2 montre un exemple de croisement pour un entrepôt de données de trois dimensions (Product, Client, Store) Figure 4.2 : Croisement suivant la dimension Store. Dans cet exemple (figure 4.2), la dimension store est choisie suivant une valeur prise aléatoirement, puis on applique le même type de croisement utilisé pour la fragmentation horizontale. 94 2.1.4. Mutation L’algorithme 8 nous illustre cette étape qui est presque la même que celle de la fragmentation horizontale avec une légère adaptation. Algorithme 8 : Opération de mutation Entrée : Génération G Paramètre : Nbre_Mutation, Probabilité de mutation Pm Début : 1: Choisir un Individu aléatoirement de G 2: Répéter 4: Échantionner m 0,1 5: Si m Pm alors Échantionner d 1, N d 3: Echantionner n 1, N att 6: 7: 8: 9: Fin Muter le nème attribut fin si Jusqu’a Nbre_Mutation La figure 4.3 montre un exemple de mutation pour une dimension (Product) choisie suivant une valeur donnée aléatoirement. Figure 4.3 : Exemple de mutation verticale 2.1.5. Processus d’amélioration Pour réaliser cette amélioration et suivant les deux parties de l’algorithme mixte, nous avons entamé le processus par une population diversifiée et aléatoire qui ne dépend pas des 95 informations de l’entrepôt de données et ne prend aucune information qui lui permet d’avoir une idée sur la solution initiale, ceci offre plus de chances de bien cerner la recherche et de mieux s’approcher de la solution optimale. Le principe de notre approche est de considérer chaque population d’une façon itérative, dans le but de réduire le plus possible le coût d’évaluation des requêtes. Notons que notre AG peut générer des solutions violant la contrainte d’espace. Et afin d’améliorer et pénaliser ces solutions, une valeur de pénalité est introduite à la fonction objective (à minimiser ou maximiser) comme une partie de la fonction de fitness [YCG, 04][ZAQ, 08d]. Supposons que nous traitons le problème suivant : Maximiser F x sous la contrainte Cx C où Cx représente un coût généré par la solution x et C représente un seuil de coût à ne pas dépasser. La fonction de pénalité (notée Pen x ) permet de pénaliser les solutions violant la contrainte, en diminuant la valeur de la fonction à maximiser selon le degré de violation de la contrainte. Trois types de la fonction de pénalité ont été définis, logarithmique, linéaire et exponentielle : - Pénalité logarithmique : Pen x log 2 1 Cx C où représente le facteur de pénalité. - Pénalité linéaire : Pen x 1 Cx C - Pénalité exponentielle : Pen x 1 Cx C 2 L’utilisation de la fonction de pénalité au sein de la fonction F x permet de transformer le problème à un problème d’optimisation sans contraintes d’une fonction F ' x définie à partir des fonctions F x et Pen x . Cela peut être effectué en utilisant trois modes, soustraction, division et division-soustraction qui sont définis comme suit. 1. Mode Soustraction : F ' xF x Pen x si F xPen x F ' x0 sinon 2. Mode division 96 F ' x F x s i P e n x 1 P en x F ' x F x s i P e n x 1 3. Mode soustraction-division F ' x F x P e n x s i F x P e n x F x F ' x s i P e n x 1 e t F x P e n x P en x F ' x F x s i P e n x 1 s i F x P e n x Nous avons adopté ces opérations pour améliorer les solutions, on procède ainsi à: éliminer toutes les solutions non admissibles et ne laisser que les solutions admissibles. Cette approche peut être non intéressante dans le cas où le déplacement entre deux solutions admissibles passerait obligatoirement par une solution non admissible. Notons qu’il est nécessaire dans ce cas de mettre en œuvre des opérateurs génétiques qui gardent l’admissibilité des solutions (l’application d’un opérateur génétique sur une solution admissible donne toujours une solution admissible) ; pénaliser les solutions non admissibles en incluant une fonction de pénalité comme partie de la fonction d’évaluation. 2.1.6. Caractéristiques de notre algorithme Pour chaque technique d’optimisation, un certain nombre d’algorithmes est disponible. Pour sélectionner un schéma de FH, plusieurs algorithmes de sélection ont été proposés [BBR, 08]. Suivant l’algorithme mixte proposé (algorithme 6), et pour réaliser cette fragmentation (verticale), l’administrateur doit identifier quelques paramètres de configuration relatifs d’abord à l’algorithme génétique, et indépendants du processus de sélection, plus les attributs de dimension participant à ce processus, appelés les attributs de fragmentation (tableau 4.1). Ainsi, chaque algorithme est caractérisé par un certain nombre de paramètres à configurer. Le tableau suivant récapitule les différents paramètres utilisés par ces algorithmes. 97 Sachant qu’il n’existe pas de paramètres qui soient adaptés à la résolution de tous les problèmes qui peuvent être posés à un A.G. Cependant, certaines valeurs sont souvent utilisées peuvent être de bons points de départ pour démarrer une recherche de solution à l’aide d’un A.G. Taille de la population : entre 30 et 50 individus Taux de crossover : entre 70% et 95% Taux de mutation : entre 0,5% et 1%. Algorithme Paramètres - Nombre d’individus Algorithme génétique - Nombre de générations - Taux de croisement - Taux de mutation - Les attributs de fragmentation (à partir de la Algorithme de fragmentation verticale clause Select). - Les fréquences d’utilisations des requêtes OLAP. Tableau 4.1 : Principaux paramètres des différents algorithmes 3 Evaluation globale de l’approche sur un benchmark Afin de valider nos contributions, nous avons mené des expériences qui nous ont permet d’évaluer et de comparer les techniques de fragmentation. Ces expériences exploitent un entrepôt de données généré par un banc d’essai (Data warehouse Benchmark APB-1 release II [OC, 98]). 3.1. Banc d’essai Benchmark L’évaluation des performances des SGBDs en général, et les tests d’efficacité des techniques d’optimisation des performances en particulier, sont généralement effectués à l’aide de bancs d’essais. Dans le contexte des entrepôts de données, nous avons utilisé le banc d’essais Benchmark APB-1 release II [OC, 98]. Le schéma en étoile que nous avons dégagé à 98 partir de ce banc d’essais est constitué d’une table de faits Actvars et de quatre tables de dimensions, Prodlevel, Custlevel, Timelevel et Chanlevel (figure 4.4). Les caractéristiques de chaque table sont représentées dans le tableau 1. Le détail de ces tables est représenté dans l’annexe A. Figure 4.4 : Schéma de l’entrepôt utilisé APB benchmark. Table Nombre d’enregistrement Taille d’enregistrement 1 500 000 74 Prodlevel 9000 72 Custlevel 900 24 Chanlevel 9 24 Timelevel 24 36 Actvars Tableau 4.2 : Taille des tables 3.2. Implémentation Pour évaluer nos méthodes de fragmentation génétique, nous avons développé un moteur génétique relatif à la fragmentation verticale (figure 4.5) [ZBB, 07] [ZAB, 06]. 99 Figure 4.5 : Architecture du moteur générique 3.2.1. Pseudo code Proposer un modèle de coût générique prenant en compte tous les types de requêtes et adapté à tous les SGBDs est une tâche très difficile. Plusieurs travaux ont porté sur la proposition de modèles de coût pour estimer le coût d’exécution d’une requête. Il est possible de classer les modèles proposés en deux catégories : (1) modèles basés sur une fonction mathématique ad-hoc [BBA, 06] [ZBB, 07]. (2) modèles basés sur l’optimiseur de requêtes. Ce coût est calculé en utilisant des formules qui prennent en compte un certain nombre de paramètres et de statistiques collectées sur la base de données. Le premier modèle de coût utilisé lors de la fragmentation horizontale permet d’évaluer la qualité des différents schémas de fragmentation générés par l’algorithme de fragmentation. Il permet d’estimer le nombre d’entrées/sorties nécessaire pour exécuter une requête sur un schéma fragmenté ou non (figure 4.6). Ce modèle de coût a été détaillé dans le chapitre 3. Le deuxième modèle de coût pour la fragmentation verticale est une adaptation du premier model, il permet d’évaluer les différentes configurations (localisation) des attributs générés par l’algorithme de sélection. Nous ne prenons pas en compte le temps CPU que nous supposons négligeable par rapport au temps nécessaire pour effectuer les E/S. 100 Figure 4.6 : Démarche de fragmentation proposée. Dans le cadre de nos contributions, nous avons proposé un modèle de coût appartenant à la première catégorie pour être indépendant du SGBD utilisé et avoir rapidement un coût de chaque schéma de fragmentation sans passer par l’optimiseur (chapitre 3, §3.2). 3.2.2. Chargement de l’entrepôt Le banc d’essais ABP-1 est livré avec un fichier exécutable APB.exe [OC, 98], qui sert à générer les fichiers de données servant à peupler l’entrepôt. Il est livré aussi avec un fichier contenant les scripts de création des tables constituant l’entrepôt. Nous avons modifié ces scripts pour créer les tables de dimension ProdLevel, TimeLevel, CustLevel et ChanLevel et la table des faits Actvars. Le peuplement de l’entrepôt se fait à l’aide de l’utilitaire SQLLoader fourni avec Oracle10g en utilisant des fichiers de contrôles que nous avons créés. Les fichiers de contrôles spécifient les formats des fichiers de données et des tables dans lesquelles ces fichiers seront chargées. La figure 4.7 montre le chargement de l’entrepôt en utilisant l’outil de génération APB.EXE fourni avec le banc d’essais APB-1 [OC, 98] et l’outil SQLLoader fourni avec Oracle. 101 Figure 4.7 : Chargement de l’entrepôt de données 3.2.3. Types de requêtes prises en compte Les requêtes prises en compte dans ces expériences et lors de l’élaboration de notre modèle de coût sont des requêtes de jointure en étoile ayant la structure suivante : SELECT [SGA], FC1(AA), FC2(AA),..., FCn(AA) FROM F, D1, D2,... Dk WHERE PJOIN AND PSEL [GROUP BY GA] Où : SGA : l’ensemble des attributs retournés dans la réponse à la requête (il peut être vide pour les requêtes retournant un calcul). Ces attributs peuvent être des attributs de dimension et/ou de faits. FC1, FC2,…, FCn : les fonctions de calculs (MIN, MAX, COUNT, SUM, AA : l’ensemble des attributs d’agrégation, ces attributs sont généralement des AVG). mesures définies dans la table des faits. k : le nombre de tables de dimension utilisées par la requête. 102 PJOIN : un ensemble de prédicats de jointure entre la table des faits et les tables de dimension sous forme de conjonction. Un prédicat de jointure (équi-jointure) a la forme suivante : F . fki Di .ki . où fki , ki représentent respectivement la clé étrangère et la clé primaire de la table de dimension Di . PSEL : un ensemble de prédicats de sélection sous forme de conjonction, chaque conjonction est constituée de plusieurs prédicats définis sur la même table. GA : l’ensemble des attributs de groupement. Ces attributs peuvent être des attributs de faits et/ou de dimension. Les requêtes que nous avons prises en charges pour notre modèle de coût sont représentées dans l’annexe B. Le problème de ce type des requêtes, définies sur un schéma en étoile, est qu’elles possèdent plusieurs jointures (entre la table des faits et les tables de dimensions). Il faut dans ce cas subdiviser la requête en fonction des jointures. Or le nombre de jointures possibles est de l’ordre de N ! et N étant le nombre de tables de dimensions à joindre. Nous pouvons même formaliser ce problème d’ordonnancement ainsi, étant donnée une requête de jointure en étoile Q impliquant m jointures entre la table des faits F et m tables de dimension D1 , D 2 ,…, Dm . Le problème de sélection d’un ordre de jointure consiste à trouver une permutation de l’ensemble 1, 2,..., m tel que le coût d’exécution de la requête suivant l’ordre de jointure généré par cette permutation soit minimal. Notons que chaque élément i de cet ensemble représente l’ordre d’apparition de la table de dimension Di dans la séquence de jointures. Pour résoudre ce problème, une recherche exhaustive peut être utilisée. Elle consiste à générer tous les ordres possibles, les évaluer et choisir le meilleur ordre. Il est clair que pour des valeurs importantes de m , le problème de sélection d’un ordre de jointure devient complexe, et par conséquent aucun algorithme ne pourra donner la solution optimale en un temps fini. 3.3. Evaluation 3.3.1. Sans pénalisation Nous avons effectué nos expérimentations en deux étapes : 103 La première étape consiste à fragmenter horizontalement l’entrepôt de données en utilisant l’algorithme génétique. Alors que dans la deuxième étape, il s’agit de partitionner les fragments horizontaux verticalement en utilisant l’algorithme 6. Chaque solution est implémentée sous Oracle 10g. Pour le calcul des temps d’exécution de requêtes, nous avons utilisé l’utilitaire Aqua data studio 4.7.2 (ADS). Pour mener notre évaluation, nous avons considéré un ensemble de 14 requêtes (voir annexe), ayant la forme précédemment citée. Chaque requête est exécutée sur l’entrepôt non fragmenté et son temps d’exécution est calculé avec ADS (figure 4.8). Figure 4.8 : Fenêtre d’exécution d’une requête sous Aqua data studio. Intérêt de la fragmentation horizontale Nous avons mené plusieurs expériences. Premièrement, nous voulons savoir l’intérêt de la fragmentation horizontale, L’axe des abscisses montre les différentes requêtes et l’axe des ordonnées montre le temps d’exécution de chaque requête en milliseconde. La figure 4.9 montre que la fragmentation horizontale est très intéressante pour cet ensemble de requêtes, en particulier les trois premières. Ces résultats confirment les travaux présentés dans [BB, 05] et avec une baisse de 19% du coût total. 104 Figure 4.9 : Temps d’exécution des requêtes selon deux schémas (fragmenté et non fragmenté). Ces résultats sont obtenus suivant le schéma de fragmentation horizontale généré : Dimension Timelevel : 7 partitions Dimension Prodlevel : 48 partitions Dimension Custlevel : 2 partitions Dimension Chanlevel : 3 partitions Impact de la fragmentation mixte Dans la deuxième expérience [ZAQ, 08][ ZBB, 07], nous avons voulu voir le comportement de la fragmentation mixte (horizontale puis verticale) par rapport à la fragmentation horizontale. Pour ce faire, nous avons exécuté les mêmes requêtes sur un schéma fragmenté horizontalement et un schéma mixte fragmenté horizontalement et verticalement suivant la configuration : Timelevel 012 Prodlevel 10224 105 Chanlevel 11 Custlevel 11 Cette configuration, par exemple suivant la dimension Timelevel (Tid, Year_level, Month_level) se traduit par la création de 3 partitions verticales PV1 (Tid, Year_level), PV2 (Tid, Month_level) et PV3 (Tid, Quarter_level)). Si nous prenons en compte le coût total de requêtes, la réduction causée par la fragmentation mixte est significative. La figure 4.10 montre l’intérêt de la fragmentation mixte pour les entrepôts de données, avec un bénéfice est de 2,3%. Figure 4.10 : La différence entre la fragmentation mixte proposée et horizontale. Impact du nombre de fragments verticaux Dans la troisième expérience, nous avons varié le nombre de fragments verticaux possibles de l’entrepôt. Nous avons considéré trois configurations d’entrepôts: avec 9 fragments verticaux, avec 8 fragments verticaux, et le dernier avec 7 fragments. Pour chaque configuration, nous avons exécuté notre algorithme de fragmentation mixte (fragmentation horizontale suivie par une verticale), avec la contrainte de seuil (qui représente le nombre de 106 fragments verticaux). Les requêtes sont ainsi exécutées selon chaque configuration. Les résultats sont présentés dans les figure 4.11 et 4.12. Nous pouvons conclure que la performance dépend fortement du nombre de fragments ; le gain se traduit par une réduction de 16,68%. Cela pourrait être expliqué par le fait que lorsqu’on augmente le nombre de fragments verticaux, on augmente les opérations de jointures. Figure 4.11 : L’impact du nombre de fragments verticaux sur la performance 107 Figure 4.12 : Cout total d’exécutions de l’ensemble suivant le nombre de partitions. 3.3.2. Avec pénalisation Pour évaluer chaque solution, nous avons utilisé la fonction de coût déjà cité (chapitre 3, §3.2) qui calcule le coût d’exécution des requêtes sur l’entrepôt fragmenté et partitionné. Des solutions de mauvaises qualités peuvent être acceptées au cours de la recherche et peuvent être inadmissibles. Pour prendre en considération les solutions inadmissibles, nous avons inclu une fonction de pénalité pour la solution transgressant une contrainte [ZAQ, 08d]. Ainsi, et pour les réexaminer, il faut introduire une fonction de pénalité. Plusieurs formes de cette fonction de pénalité peuvent être définies. Dans [YCG, 04] les auteurs ont défini trois formes de la fonction de pénalité, et trois modes pour l’inclure dans la fonction objective. Ils ont traité un problème de maximisation du gain apporté en matérialisant un ensemble de vues sous une contrainte du coût de maintenance. Compte tenu de la fonction de pénalité, le résultat obtenu est significatif (figure 4.13), puisque le temps d’exécution de l’ensemble des requêtes décisionnelles chute d’une manière brutale et remarquable, ce qui traduit que la solution trouvée est presque optimal [ZQA, 09]. 108 Figure 4.13 : Temps de réponse avec et sans pénalité Impact des modes de pénalité Le choix de la forme de pénalité joue un rôle additif vers une solution affine, Nous évaluons à présent l’intérêt des trois modes au cours de la recherche, la figure 4.14 présente les résultats d’exécution de l’AG utilisant les opérateurs appropriés à chaque mode. Figure 4.14 : L’impact du choix entre les trois modes de pénalité. Il apparaît clairement l’intérêt de l’application du mode, on obtenant une réduction remarquable du coût. De plus, et selon les trois types de pénalité définis précédemment, l’administrateur a le choix entre logarithmique, exponentielle ou bien linéaire, la figure 4.15 présente la différence entre les trois. 109 Figure 4.15 : La relation entre le coût total et le type de pénalité. Selon cette figure, on peut décider que le choix de pénalité est décisif, est de type linéaire cela est du fait que lorsque on modifie l’écart (la valeur ajoutée) d’une manière logarithmique ou exponentielle, cela minimise et réduit le fait de pénalité. Après, nous voulons savoir, si la valeur que nous avons pris pour 0, 6 est justifiable, nous avons changé cette valeur plusieurs fois et pour chaque valeur on a lancé la charge des requêtes sur l’entrepôt de données fragmenté, on a obtenue la figure 4.16 Figure 4.16 : Relation entre la valeur et le cout total d’exécution Impact du nombre de dimensions 110 Nous nous intéressons à présent, à l’évaluation de l’impact du nombre des dimensions intervenant dans ce processus génétique d’optimisation de requête sur les résultats de la recherche. A cet effet, nous avons fragmenté notre entrepôt de données d’une manière graduelle: une dimension, deux dimensions, trois dimensions…. les résultats obtenus nous montrent qu’il y’a un seuil de fragmentation relatif au nombre de dimensions (figure 4.17). Figure 4.17 : Effet du nombre de dimensions sur le coût total d’exécution. L’évaluation est basée sur l’estimation de dimensions pertinentes ainsi que le nombre de dimensions, c’est le facteur Treshold. 4 Conclusion Dans ce chapitre, nous avons présenté notre approche d’optimisation des requêtes OLAP dans un système décisionnel. Nous avons décrit le processus génétique de fragmentation mixte de l’entrepôt de données. Pour aboutir à la mise en œuvre de ce modèle, nous avons utilisé APB Benchmark release II [OC, 98]). Nous avons évalué les techniques de fragmentation sur un schéma d’entrepôt de données en étoile, qui est composée d’une table de faits (Actvars) et de quatre tables de dimensions (chanlevel, prodlevel, custlevel et timelevel). Nous avons construit ce schéma en utilisant le SGBD oracle 10g. Pour l’optimisation de temps d’exécution des requêtes OLAP, nous avons définit un ensemble de requêtes Q Q1 , Q2 ,..., Qm joignant la table de fait avec les tables de dimensions. Nous avons d’abord utilisé l’algorithme basé sur la fragmentation horizontale seulement, ensuite, 111 nous avons appliqué notre algorithme (avec et/ou sans pénalité), et nous avons constaté que notre proposition donne de meilleurs résultats pour notre cas des expérimentations. 5 Conclusion et perspectives Les travaux développés dans ce mémoire s’inscrivent dans le cadre de la conception physique de l’entrepôt de données relationnel. Nous y avons proposé une approche d’optimisation de requêtes basée sur les concepts de la génétique. De nombreux modèles et techniques d’optimisation ont été proposés dans la littérature. Nous avons présenté les techniques principales mises à l’épreuve dans les bases de données relationnelles et orientées objets. Il s’agit de vues matérialisées, de la création d’index, et de la fragmentation. Ces techniques se basent sur les différentes modélisations des entrepôts de données : le modèle ROLAP et le modèle MOLAP. Nous avons mis en évidence les problèmes liés à chaque technique. Dans ce contexte de travail, nous nous sommes intéressés à la fragmentation et à la mise en œuvre d’un AG d’optimisation de requêtes OLAP. Les AG’s sont des procédés d’optimisation qui présentent des propriétés fort intéressantes : exploration parallèle et efficace d’espaces complexes, construction graduelle de solutions partielles, recherche coopérative. Nous avons formalisé le problème de la fragmentation horizontale dans les entrepôts de données modélisées par des schémas en étoile. Nous avons présenté les travaux effectués par les algorithmes génétiques dans la fragmentation horizontale de la table des faits, en adaptant les techniques utilisées dans les bases de données relationnelles. Par la suite, nous avons illustré les problèmes liés à la fragmentation de la table des faits en fonction des tables de dimensions, et nous avons suggéré l’utilisation d’une fragmentation mixte basée sur les algorithmes génétiques. Notre contribution consiste à fragmenter un schéma relationnel d’un entrepôt de données horizontalement, ensuite verticalement afin de réduire le coût d’exécution de requêtes. Nous avons formalisé le problème de sélection de schéma de fragmentation verticale 112 comme un problème d’optimisation avec contrainte. Cette dernière représente le nombre de fragments verticaux que l’administrateur peut maintenir. Pour le résoudre, nous avons proposé un algorithme génétique qui adapte le même codage que l’algorithme proposé [BB, 05]. Un processus de codage des schémas de fragmentation possibles est décrit. Un modèle de coût qui représente la fonction sélective a été développé afin de mesurer la qualité de la solution choisie. L’évaluation de notre nouvelle approche d’optimisation de l’entrepôt de données a montré son impact positif sur le temps d’exécution des requêtes OLAP. Les résultats générés par l’AG sont intéressants et montrent que la fragmentation mixte peut être utilisée dans les entrepôts de données ayant des tables de dimensions importantes. Avec une fragmentation adéquate des tables de dimensions, il est possible d’améliorer les performances d’exécution des requêtes décisionnelles en respectant le seuil des fragments que l’administrateur doit choisir. Les résultats obtenus, en appliquant cette approche, justifient l’adoption des algorithmes génétiques pour résoudre le problème de sélection d’une configuration pour fragmenter et partitionner un entrepôt de données. Pour les perspectives envisageables à nos travaux, il serait intéressant de faire passer à l’échelle cet algorithme en considérant des tables très volumineuses. Il serait également intéressant d’aménager notre algorithme afin de tenir compte de l’évolution des requêtes tant dans leurs structures que dans leurs fréquences. Ainsi que, nous essayerons d’améliorer d’avantage notre approche : proposer une population initiale mieux dépendante de la solution cherchée. rendre la condition d’arrêt flexible. De l’autre coté, il est intéressant de ne pas se consacrer sur la réponse exacte d’une requête OLAP, des recherches actuelles se penchent pour trouver des approches d’approximation des résultats d’une requête OLAP soumise à un entrepôt de données. Ces approches offrent de nouvelles possibilités d’exploration et d’extraction de données qui permettent de réduire à la fois le temps de réponse et la taille des données parcourues. 113 114 6 Références [All, 96] Jean-Marc Alliot ; Techniques d’optimisation stochastique appliquées aux problèmes du contrôle aérirn. Thèse d’habilitation, Université de Toulouse Paul Sabatier, 1996. [Bac92] T. Back, Self-Adaptation in genetic algorithms. Proceedings of the first European conference on Artificial Life, 1992. [BBA, 06] Bellatreche, L., B. K., et H. I. Abdalla (2006). Saga : A combination of genetic and simulated annealing algorithms for physical data warehouse design. In 23rd British National Conference on Databases (212-219). [BB, 05] Ladjel Bellatreche and Kamel Boukhalfa, La fragmentation dans les entrepôts de données : une approche basée sur les algorithmes génétiques, Revue des Nouvelles Technologies de l'Information (EDA'2005), Juin, 2005, pp. 141-160. [BBR, 08] Kamel Boukhalfa, Ladjel Bellatreche and Pascal RICHARD, Fragmentation Primaire et Dérivée: Étude de Complexité, Algorithmes de Sélection et Validation sous ORACLE10g, LISI, Rapport de Recherche, N° 01 -2008, Mars, 2008. [BCA, 01] E. Benitez, C. Collet, and M. Adiba. Entrepôts de données : caractéristiques et problématique. Revue TSI, 20(2), 2001. [BKS, 97] L. Bellatreche, K. Karalapalem, and A. Simonet. Horizontal class partitioning in object-oriented database. In 8th International Conference and Database and Expert systems Applications (DESA’97), Toulouse, Lecture Notes in Computer Science 1308, pages 58-67, Septembre 1997. [BKS, 00] L. Bellatreche, K. Karalapalem, and A. Simonet. Algorithms and support for Horizontal class partitioning in object-oriented database. In the distributed and parallel Databases joutnal, 8(2): 155-179, April 2000. [BLT, 86] J. A. Blakeley, P. Larson, and F. W. Tompa. Efficently updating materialized views. Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 61–71, June 1986. 115 [BPT, 97] E. Baralis, S. Paraboschi, and E. Teniente. Materialized view selection in a multidimensional database. Proceedings of the International Conference on Very Large Databases, pages 156–165, August 1997. [CD, 97] Surajit Chaudhuri and Umeshwar Dayal. An overview of data warehousing and OLAP technology. SIGMOD Record, 26(1) :65–74, 1997. [CN, 98] S. Chaudhuri and V. Narasayya. Autoadmin ‘what-if’ index analysis utility. Proceedings of the ACM SIGMOD International conference on Management of Data, pages 367-378, June 1998. [CN, 99] S. Chaudhuri and V. Narasayya. Index merging. Proceedings of the International conference on Data Engineering (ICDE), pages 296-303, March 1999. [CNP, 82] Ceri S., Negri M., Pelagatti G.(1982), « Horizontal Data Partitioning in Database Design », Proceedings of the ACM SIGMOD International Conference on Management of Data. SIGPLAN Notices, vol., p. 128-136. [Cod, 93] Codd E.F., "Providing OLAP (on-line analytical processing) to user-analysts : an IT mandate", Technical Report, E.F. Codd and Associates, 1993. [CP, 84] S. Ceri and G. Pelagatti. Distributed Databases: Principles and Systems. McGrawHill International Editions, 1984. [DS, 92] Kenneth A. De Jonh and William M. Spears. A Formal analysis of the Role of Multi-Point Crossover in Genetic Algorithms, volume 5 of Annals of Mathematics and Artificial Intelligence, chapter 1, pages 1-26. 1992. [DG, 01] A. Doucet and S. Gangarski. Entrepôts de données et Bases de Données multidimensionnelles, Chapitre 12 du livre : Bases de Données et internet, Modèles, langages et systèmes. Editions Hermès, 2001. [ECM, 99] Edgard Benitez-Guerrero, Christine Collet, Michel Adiba, Rapport de Recherche, entrepôt de données : Synthèse et analyse. RR 1017-I-LSR 8, Mai 1999. [GGT, 96] Gardarin G., Gruser J.-R., Tang Z.-H.(1996), « A Cost-based Selection of Path Expression Processing Algorithms in Object-Oriented Databases », 22nd International Conference on Very Large Data Bases, VLDB’96, vol., p. 390-401. 116 [GM, 99] Gupta H., Mumick I.S., “Selection of Views to Materialize Under a Maintenance Cost Constraint”, in 7th International Conference on Database Theory (ICDT 1999), Jerusalem, Israel, pp. 453-470. 1999. [Gol, 89] Goldberg D. E., (1989). Genetic Algorithms in search, optimization and machine learning. Addison-wesley Publishing Inc. [Gup, 97] H.Gupta. Selection of views to materialize in a data warehouse. Proceedings of the 6th International conference on Database Theory (ICDT’97), pages 98-112, 1997. [HN, 79] Hammer M., Niamir B. « A heuristic appoach to attribute paritioning », Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 93-101, 1979. [HRU,96] Harinarayan V., Rajaraman A., Ullman J.D., “Implementing data cubes efficiently”, in ACM SIGMOD International Conference on Management of data (SIGMOD 1996), Montreal, Canada, pp. 205-216. 1996 [Inm, 92] Inmon (W.). – Building the data warehouse.- Wellesley, Massachusetts, U.S.A., QED Technical publishing Group, 1992. [Inm, 95] Inmon (W.). –what is a Data warehouse? – Rapport technique, INPT solutions, 1995. [JLS, 99] H. Jagadish, L. V. S. Lakshmanan, and D. Srivastava. What can hierarchies do for your data warehouses. Proceedings of the international conference on Very Large Databases, pages 530-541, September 1999. http://www.cait.wuslt.edu/cait/papers/INPT/vol11-no1/. [Kim, 96] R. Kimball. Entrepôts de données, Guide pratique du concepteur de data warehouse. John Wiley and Sons, Inc., 1996. [KR, 99] Y.Kotidis and N. Roussopoulus. Dynamat: A dynamic view management system for data warehouses. Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 371-382, June 1999. [LHM, 86] B. G. Lindsay, L. M. Haas, C. Mohan, H. Pirahesh, and P. F. Wilms. A snapshot differential refresh algorithm. Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 53–60, June 1986. 117 [Mich, 96] Michalewicz Z., (1996). Genetic Algorithms + Data Structures = Evolution Programs. Springer-Verlag, New York. [NCW, 84] S. Navathe, S. Ceri, G.Wiederhold, and D. J. Vertical partitioning algorithms for database design. ACM Transaction on Database Systems, 9(4) :681–710, December 1984. [NR, 89] Navathe, S., Ra M., « Vertical partitioning for database design: graphical algorithm », ACM SIGMOD, pages 440-450, 1989. [OC, 98] O. Council. Apb-1 olap benchmark, release ii. http ://www.olapcouncil.org/ research/ resrchly.htm, 1998. [OQ, 97] O’Neil, P. et D. Quass (1997). Improved query performance with variant indexes. Proceedings of the ACM SIGMOD International Conference on Management of Data, 38–49. [OR, 99] Oracle8i Concepts. Oracle Corporation, Release 8.1.5, 1999. [OV, 91] M. T. Özsu and P. vuldurez. Principals of Distributed Database systems. Prentice Hall, 1991. [OV, 99] M. T. Özsu and P. vuldurez. Principals of Distributed Database systems: Second Edition. Prentice Hall, 1999. [PS, 91] G. Piatesky-Shapiro. Discovery, analysis, and presentation of strong rules. In knowledge discovery in Databases, AAAI/MIT Press, pages 229-248, 1991. [PSA, 94] Papadomanolakis, S. et A. Ailamaki (2004). Autopart : Automating schema design for large scientific databases using data partitioning. Proceedings of the 16th International Conference on Scientific and Statistical Database Management (SSDBM 2004), 383–392. [PV, 87] P. Valduriez. Join indices. ACM Transactions on Database Systems, 12(2) :218– 246, June 1987. [SNY, 04] Sanjay A., Narasayya V. R., Yang B., « Integrating Vertical and Horizontal Partitioning Into Automated Physical Database Design », Proceedings of the ACM SIGMOD International Conference on Management of Data, vol., p. 359370, June, 2004. 118 [SP, 89] A. Segev and J. Park. Maintaining materialized views in distributed databases. Proceedings of the international conference on Data engineering (ICDE), pages 262-270, February 1989. [SSGJ, 84] Shamkant B. Navathe, Stefano Ceri, Gio Wiederhold, Jinglie Dou: Vertical Partitioning Algorithms for Database Design. ACM Trans. Database Syst. 9(4): 680-710 (1984). [SW, 85] Sacca, D. et G. Wiederhold (1985). Database partitioning in a cluster of processors. ACM Trans. Database Syst. 10(1), 29–56. [SYS, 97] Red Breck Systems. Star schema processing for complex queries. White paper. July 1997. [RSS, 96] K. Ross, D. Srivastava, and S. Sudarshan. Materialized view maintenance and integrity constraint checking :Trading space for time. Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 447–458, June 1996. [Ull, 96] J. Ullman. Efficient implementation of data cubes via materialized views, in the Proceedings of the 2nd international conference on knowledge discovery and Data Mining (KDD’96), pages 386-388, 1996. [WMB, 97] Wu,M.-C. et A. Buchmann (1997). Research issues in data warehousing. in Datenbanksysteme in Büro, Technik und Wissenschaft(BTW’97), 61–82. [YCG, 04] Yu J. X., Choi C.-H., Gou G.( November, 2004), “Materialized View Selection as Constrained Evolution Optimization”, IEEE Transactions On Systems, Man, and Cybernetics, Part 3, vol. 33, n° 4, p. 458-467. [YKL, 97] J. Yang, K. Karlapalem, and Q. Li. Algorithms for materialized view design in data warehousing environment. Proceedings of the International Conference on Very Large Databases, pages 136–145, August 1997. [ZAB, 06] Ziyati. E, D.Aboutajdine et L.Bellatreche et « Un algorithme génétique pour la sélection d’un schéma de fragmentation mixte dans les entrepôt de données » (ASD’2006 Agadir, Maroc). [ZAQ, 08a] Ziyati. E, D.Aboutajdine et A. El Qadi « Complete algorithm for fragmentation in data warehouse », The 7th WSEAS International Conference on Artificial 119 Intelligence, Knowledge Engineering and Data Bases (AIKED'08) Cambridge, England. [ZAQ, 08b] Ziyati. E, D.Aboutajdine et A. El Qadi « Algorithms for data warehouse design to enhance decision-making » (WSEAS Transactions on Computer research , Issue 3, Volume 3, March 2008 pp 111-120. [ZAQ, 08c] Ziyati. E, D.Aboutajdine et A. El Qadi « Mixed fragmentation enhancement in data warehouse » (GEI’2008 Génie Logiciel, Systèmes distribués, Réseaux Informatiques, Intelligence artificielle, Systèmes d’information, Systèmes Multimédia, Tunisie). [ZAQ, 08d] E. ziyati, A. El Qadi, D. Aboutajdine, « L’amélioration du processus de fragmentation mixte dans un entrepôt de données ». 1ère Conférence Internationale sur les “Systèmes d’Information et Intelligence Economique”, 1416 Février 2008 à Hammamet – Tunisie. [ZAQ,09a] Ziyati. E, A. El Qadi, et D.Aboutajdine «Toward a complete data warehouse Design» WASET, World Academy of Science Engineering and Technology, WCSET, October Venice Italy, 2009. [ZAQ,09b] Ziyati E., A. Elqadi, D. Aboutajdine, «Vers une nouvelle approche de fragmentation complète dans les entrepôts de données » Premières Journées Doctorales en Technologies de l'Information et de la Communication (JDTIC'09) le 16, 17et 18 Juillet 2009. [ZBB, 07] Ziyati. E, L.Bellatreche et K. boukhalfa « La contribution des structures d’optimisation non redondantes dans la conception physique des entrepôts de données » (ISPS’2007 algiers, Alger). [ZAQ, 09c] Ziyati. E, A. El Qadi,, D.Aboutajdine et L.Bellaterche « Genetic optimization in data warehouse design» International Journal Of Computational Science, volume 4, N°1, January 2010, pp 70-79. 120 Annexe A nombre de valeurs distinctes custlevel timelevel chanlevel prodlevel store_level 900 retailer_level 99 tid 24 year_level 2 quarter_level 4 month_level 12 week_level 1 day_level 2 base_level 9 all_level 0 code_level 9000 class_level 605 group_level 300 family_level 75 line_level 15 division_level 4 customer_level 37 product_level 6500 channel_level 9 time_level 17 nombre d'enregistrements Taille d'enregistrement 900 24 24 36 9 24 9000 72 1500000 74 actvars unitsSold dollarSales dollarCost 121 Annexe B Q1 : Q2 : select Customer_Level, from Select prodlevel.code_level, Product_level, prodlevel.family_level, Time_level, chanlevel.all_level, Sum(Dollarcost) sum(Actvars.dollarsales), ACTVARS A, CUSTLEVEL Count(actvars.dollarsales), C,PRODLEVEL P,TIMELEVEL T where count(*) from A.customer_level=C.store_level dw.actvars, dw.chanlevel, dw.prodlevel where and A.prodcut_level=P.code_level chanlevel.base_level = actvars.channel_level and A.time_level=T.TID and prodlevel.code_level = actvars.product_level and T.year_level='1996' and prodlevel.family_level = 'IKKIOVKDGTWO' and C.retailer_level ='NXEYFSIQE3JM' and chanlevel.all_level = 'UFEJCH4EE4C5' and P.line_level='MJ1F1U1EG009' group by group by prodlevel.code_level, Customer_level, prodlevel.family_level, Product_level, chanlevel.all_level Time_level Q3 : Q4 : SELECT SELECT code_level, base_level, sum(dollarsales), sum(dollarsales) , sum(UnitsSold) sum(UnitsSold) FROM dw.actvars, dw.timelevel, dw.prodlevel FROM dw.actvars, dw.timelevel, dw.prodlevel, WHERE dw.chanlevel time_level = tid WHERE and product_level = code_level time_level = tid and month_level between '01' and '03' and product_level = code_level and family_level = 'M8VWHZM5BS2N' and channel_level = base_level group by code_level and month_level between '10' and '12' and family_level = 'M8VWHZM5BS2N' and all_level = 'MX0TV6Y3ZYIX' group by base_level Q5 : Q6: 122 SELECT SELECT code_level, code_level, sum(dollarsales) sum(dollarsales) FROM dw.actvars, dw.prodlevel, dw.chanlevel FROM dw.actvars, dw.timelevel, dw.prodlevel WHERE WHERE time_level = tid product_level = code_level and product_level = code_level and channel_level = base_level and month_level <> '06' and family_level = 'M8VWHZM5BS2N' and group_level = 'SV5L8W0J8UMZ' and all_level <> 'FQYP80SGU24G' group by group by code_level code_level Q7: Q8: SELECT SELECT product_level, product_level, sum(dollarsales), sum(dollarsales), sum(UnitsSold) sum(UnitsSold) FROM dw.actvars, dw.prodlevel, dw.timelevel FROM dw.actvars, dw.prodlevel, dw.timelevel, WHERE time_level = tid dw.chanlevel and product_level = code_level WHERE time_level = tid and month_level = '03' and product_level = code_level and class_level = 'KPB8DCM3VDMK' and channel_level = base_level and division_level = 'DVWQ0OHI8M00' and year_level = '1995' Group by product_level and month_level='03' and class_level = 'G7DPNCB3JSFW' and division_level = 'D0NS4TAC8RAW' droup by Q9: Q10 : SELECT select product_level time_level, prodlevel.group_level, sum(dollarsales), custlevel.retailer_level, sum(UnitsSold) chanlevel.base_level, timelevel.month_level, FROM dw.actvars, dw.prodlevel, dw.timelevel, sum(a.UNITSSOLD), dw.chanlevel sum(a.DOLLARSALES) from dw.actvars a, dw.prodlevel P, dw.timelevel T, WHERE dw.custlevel C, dw.chanlevel CH 123 time_level = tid where and product_level = code_level a.product_level = P.code_level and channel_level = base_level and a.customer_level = C.store_level and year_level = '1995' and a.channel_level = CH.base_level and month_level='01' and a.time_level = T.tid and class_level = 'G7DPNCB3JSFW' and P.line_level = 'WEINIRDJIU32' and division_level = 'D0NS4TAC8RAW' and C.retailer_level = 'R5MPR2102564' and CH.all_level = 'UFYXSH4EE4C6' group by time_level and T.month_level between '7' and '9' group by prodlevel.line_level, custlevel.retailer_level, chanlevel.all_level, timelevel.month_level Q11 : Q12 : select select prodlevel.division_level, prodlevel.family_level, custlevel.retailer_level, custlevel.retailer_level, timelevel.month_level, chanlevel.all_level, sum (a.unitssold) AS Units, timelevel.month_level sum (a.dollarsales) as DollarSales, from sum (a.DollarCost) as DollarCost, dw.actvars a, dw.prodlevel P, dw.timelevel, sum(a.dollarsalles) - sum (a.dollarCost) as Margin, dw.custlevel C, dw.chanlevel CH (sum(a.dollarsales)-sum where (a.DollarCost))/sum(a.DOLLARSALES) as a.product_level = prodlevel.code_level MarginPct and a.customer_level = custlevel.store_level from and a.channel_level = chanlevel.base_level dw.actvars a, dw.prodlevel P, dw.timelevel T, and a.time_level = timelevel.Tid dw.custlevel C and P.family_level = 'M8VWHZM5BS2N' where and C.retailer_level = 'R5MPR2102564' a.product_level = prodlevel.code_level and CH.all_level = 'MX0TV6Y3ZYIX' and a.time_level = timelevel.tid and T.month_level = '01' and a.customer_level = custlevel.store_level group by and T.year_level = '1995' prodlevel.family_level, and C.retailer_level = 'R5MPR2102564' custlevel.retailer_level, and P.division_level in chanlevel.all_level, 124 ('NF7WO9GBZ20C', 'D0NS4TAC8RAW', timelevel.month_level 'PE6Z2EN6Y7LQ') group by prodlevel.division_level, custlevel.retailer_level, timelevel.month_level Q13: Q14 : SELECT select time_level, prodlevel.division_level, channel_level, custlevel.retailer_level, product_level, timelevel.month_level, sum(dollarsales), sum (a.unitssold) as Units, sum(UnitsSold) sum (a.dollarsales) as DollarSales, FROM dw.actvars, dw.prodlevel, dw.timelevel, dw.chanlevel sum (a.DollarCost) as DollarCost from WHERE dw.actvars a, dw.prodlevel P, dw.timelevel T, time_level = tid dw.custlevel C and product_level = code_level where and channel_level = base_level a.product_level = prodlevel.code_level and year_level = '1995' and a.time_level = T.Tid and month_level='05' and a.customer_level = C.store_level and code_level = 'JY6ZFUICYLS3' and P.division_level IN ('PE6Z2EN6Y7LQ', and division_level = 'NF7WO9GBZ20C' 'NF7WO9GBZ20C') group by time_level, and C.retailer_level = 'R5MPR2102564' group by channel_level, P.division_level, product_level C.retailer_level 125 UNIVERSITÉ MOHAMMED V – AGDAL FACULTÉ DES SCIENCES Rabat DOCTORAT Résumé de la Thèse Discipline : Sciences de l’ingénieur Spécialité : Informatique et Télécommunications UFR : Informatique et Télécommunications Responsable de l’UFR : Prof. Driss ABOUTAJDINE Période d’accréditation : 2003/2008 Titre de la thèse : Optimisation de requêtes OLAP en Entrepôt de Données Approche basée sur la fragmentation génétique Prénom, Nom : ELhoussaine ZIYATI Résumé Les systèmes décisionnels manipulent de très importants volumes de données stockées dans des entrepôts de données. Ces derniers sont alimentés par des données provenant de sources distribuées et hétérogènes. Les entrepôts de données sont très souvent modélisés par un schéma en étoile. Ce schéma est caractérisé par une table de faits de très grande taille (allant de quelques Gigaoctets à plusieurs téraoctets) liée à un ensemble de tables de dimension de plus petite taille. Les requêtes définies sur un schéma en étoile (connues par requêtes de jointure en étoile) sont caractérisées par des opérations de sélection sur les tables de dimension, suivies de jointures avec la table des faits. Toute jointure doit passer par la table des faits, ce qui rend le coût d’exécution de ces requêtes très important. Sans technique d’optimisation, leur exécution peut prendre des heures, voire des jours. Les travaux présentés dans cette thèse traitent des apports de l’algorithmique génétique à ce problème. Notre étude se focalise en premier lieu, sur les principales techniques d’optimisation utilisées qui ont été suggérés dans la littérature pour améliorer les performances des entrepôts de données. En second lieu, notre intérêt s’est porté à la mise en œuvre de notre approche d’optimisation de requête. Elle consiste à fragmenter un schéma relationnel d’un entrepôt de données horizontalement, ensuite verticalement afin de réduire le coût d’exécution de requêtes. Nous avons formalisé le problème de sélection de schéma de fragmentation verticale comme un problème d’optimisation avec contrainte. Cette dernière représente le nombre de fragments verticaux que l’administrateur peut maintenir. Pour le résoudre, nous avons proposé un algorithme génétique qui adapte le même codage que les algorithmes proposés. Un processus de codage des schémas de fragmentation possibles est décrit. Un modèle de coût qui représente la fonction sélective a été développé afin de mesurer la qualité de la solution choisie. Nous évaluons enfin notre approche, au travers d’expérimentations réalisées à l’aide d’un banc d’essai et un ensemble de requêtes décisionnelles pour prouver l’efficacité et l’utilité de la fragmentation mixte génétique, en entrepôt de données. Mots-clefs (6) : Entrepôt de données, Algorithme Génétique, Optimisation, Fragmentation, Requêtes décisionnelles (OLAP). Faculté des Sciences, 4 Avenue Ibn Battouta B.P. 1014 RP, Rabat – Maroc Tel +212 (05) 37 77 18 34/35/38, Fax: +212 (05) 37 77 42 61, http://www.fsr.ac.ma 126