Master Extraction de Connaissances à partir des

publicité
Master Extraction de Connaissances à
partir des Données
Mémoire rédigé dans le cadre du master ECD
Sélection dynamique d'index dans les entrepôts
de données
Stage réalisé au sein du Laboratoire ERIC
5 Avenue Pierre Mendès-France
69676 BRON Cedex - France
http://eric.univ-lyon2.fr
Stephane-gaston AZEFACK
Master Recherche ECD
[email protected]
Encadrée par :
Jérôme DARMONT
Laboratoire ERIC - Université Lyon 2
[email protected]
Remerciements
Ce stage de master recherche a été réalisé au laboratoire ERIC (Equipe de
Recherche en Ingénierie des Connaissances), au sein de l'équipe BDD (Base de
Données Décisionnelles). Je tiens à remercier tous les membres de l’équipe,
professeurs et doctorants qui ont contribué de près ou de loin à la réussite de ce travail.
Plus particulièrement, j’aimerais remercier mon directeur de mémoire Jérôme
Darmont, sans qui ce stage n’aurait pas vu le jour, pour ses conseils à chaque fois que
je me suis incrusté dans son bureau sans rendez-vous.
Mes remerciements vont également aux membres du jury, messieurs
H. Briand, Y. Kodratoff et D.A Zighed.
2
Résumé
Les entrepôts de données connaissent un très vif développement. Il devient
important de réduire la charge de travail qu’un administrateur doit effectuer
manuellement. Le but des systèmes auto-administratifs est de s'administrer et de
s'adapter eux-mêmes, automatiquement, sans perte ou même avec un gain de
performance.
L’idée d’utiliser les techniques de fouilles de données pour extraire de ces
mêmes données des connaissances intervenant dans le processus de sélection
automatique d’index dans les entrepôts de données est une approche très prometteuse.
Une première approche utilisant les motifs fréquents fermés a été proposée dans
[Aou05] mais cette approche est statique et ne garantie pas l’aspect un dynamique, la
charge pouvant évolue dans le temps.
Dans ce mémoire, nous proposons une amélioration de l’approche proposée
dans [Aou05] afin que le processus de sélection d’index soit dynamique en l’adaptant
cette fois à une recherche incrémentale des motifs fréquents maximaux.
Nous avons développé un outil, qui extrait de manière incrémental, les motifs
fréquents maximaux à partir d’une charge de requête et à partir de ceux-ci,
recommande une configuration d’index afin d'optimiser le temps d'accès aux Données.
Mots clés : Bases de données, Entrepôts de données, Indexation, Fouille de données,
Recherche de motifs fréquents incrémentale,Modèles de coût, Performance.
Abstract
With the wide development of databases in general and data warehouses in
particular, it is important to reduce the tasks that a database administrator must perform
manually. The aim of auto-administrative systems is to administrate and adapt
themselves automatically without loss or even with a gain in performance. The idea of
using data mining techniques to extract useful knowledge for administration from the
data themselves is very important. First static approach was proposed in [Aou05].
In this paper, we propose an improvement of the approach suggested in [Aou05]
in mean that the process of index selection been dynamic by adapting it this time to an
incremental research of the maximum frequent item.
3
Tables des matières
Remerciements ............................................................................................................... 2
Résumé ........................................................................................................................... 3
Chapitre 1 Introduction ................................................................................................ 5
1.1
Contexte et problématique ................................................................................ 5
1.2
Objectifs et contributions ................................................................................... 5
1.3
Organisation du mémoire .................................................................................. 6
Chapitre 2 Etat de l’art ................................................................................................. 7
2.1
Problème de sélection d'index........................................................................... 7
2.1.1
Travaux de Frank et al. .............................................................................. 8
2.1.2
Travaux de Choenni et al. .......................................................................... 9
2.1.3
Travaux de Whang - Algorithmes ADD and DROP .................................. 10
2.1.4
Travaux de Gündem ................................................................................ 10
2.1.5
Travaux de Chaudhuri et al. ..................................................................... 10
2.1.6
Travaux de Feldman et al......................................................................... 11
2.1.8
Travaux de Valentin et al. ........................................................................ 12
2.2
Recherche incrémentale des motifs fréquents ................................................ 13
2.2.1
Algorithme incrémental recherche de motifs fréquents fermes ............... 13
2.2.2
Algorithme incrémental de recherche de motifs fréquents maximaux ..... 14
Chapitre 3 Approche proposé.................................................................................... 15
3.1
Recherche de motifs fréquents ....................................................................... 15
3.1.1
Contexte et motivations............................................................................ 15
3.1.2
Algorithme Zigzag .................................................................................... 17
3.2
Démarche de sélection automatique d'index................................................... 19
3.2.1
Extraction de la charge ............................................................................ 20
3.2.2
Analyse de la charge................................................................................ 21
3.2.3
Construction du contexte d'extraction ...................................................... 22
3.3
Modèles de coût .............................................................................................. 23
3.4
Stratégie de sélection d'index bitmap de jointure ............................................ 23
3.4.1
Construction de l'ensemble d'index candidats.......................................... 23
3.4.2
Enregistrement et suppression des index candidat.................................. 24
3.4.3 Construction de la configuration d'index ........................................................ 25
Chapitre 4 Implémentation et Expérimentations ........................................................ 26
4.1
Implémentation................................................................................................ 26
4.1.1
Génération des motifs fréquents .............................................................. 26
4.2
Expérimentations............................................................................................. 29
Chapitre 5 Conclusion et perspectives ...................................................................... 31
Annexe A : Fichier de sauvegarde : base de connaissance .......................................... 32
Bibliographie.................................................................................................................. 33
4
Chapitre 1 Introduction
1.1 Contexte et problématique
Aujourd’hui, l’information joue un rôle crucial dans le quotidien des entreprises.
L’acquisition et l’analyse de cette information sont devenues des choix stratégiques
incontournables dans les entreprises avec de plus en plus de grands volumes de
données à manipuler. Ce développement a contribué au développement des entrepôts
de données. Un administrateur en plus de la gestion de l’espace de stockage et de la
gestion des performances, a également à sa charge la conception logique ou physique
des bases de données. Il devient donc important de réduire la fonction d’administration
[WMHZ02].
Pour améliorer les performances du système en minimisant les temps d'accès
aux données l’administrateur peut mettre en œuvre la sélection des structures
physiques tels que les index [FST88]. L'optimisation automatique de ces tâches donne
lieu à des systèmes dits auto-administratifs avec comme objectif de s'administrer et de
s'adapter eux-mêmes, automatiquement, sans perte de performance.
Depuis quelques années, l'idée d'utiliser les techniques de fouille de données
(data mining) pour extraire des connaissances utiles des données elles-mêmes, pour
leur administration est exploité [Cha98]. Dans [Aou05] une approche basée sur la
recherche des motifs fréquents fermés pour la sélection des index bitmap de jointure à
été proposée. Cependant, cette recherche de motifs fréquents fermés reste statique et
ne garantie pas encore l’aspect dynamique du processus de sélection d’index. C'est
pourquoi nous étudions dans ce mémoire l'utilisation des techniques de fouille de
données (recherche des motifs fréquents incrémentale) pour la sélection d’index.
1.2 Objectifs et contributions
Notre objectif principal consiste à fournir des stratégies qui permettent de
sélectionner une structure d’index efficace afin d'optimiser les performances des
entrepôts de données en se basant sur la recherche incrémentale des motifs fréquents.
Plusieurs travaux de recherche ont traité le problème de sélection d'index.
Cependant, ces travaux ne prennent pas en compte les connaissances (mé-tadonnées,
statistiques, charge de requêtes appliquée au système, usage des attributs de l'entrepôt
de données dans ces requêtes, etc.) qui peuvent être extraites de la charge afin de
réduire la complexité du problème de sélection et de cibler les index candidats les plus
intéressants. La stratégie de sélection d'index que nous proposons intègre donc cette
5
connaissance elle exploite la recherche des motifs fréquents maximaux de manière
incrémentale afin de cibler l'ensemble des index candidats. L’intuition [Aou05] est que
l'utilité d'un index donné est fortement corrélée avec la fréquence d'utilisation des
attributs associés à cet index dans l'ensemble des requêtes de la charge.
1.3 Organisation du mémoire
Ce mémoire de stage est organise comme suit. Dans le chapitre 1 nous
présentons les principaux travaux proposés pour résoudre le problème de la sélection d’index.
Cette partie est suivie d’un état de l’art sur la recherche incrémentale des motifs fréquents
fermés et maximaux.
Le chapitre 3 présente l’approche proposée pour la sélection d'index basée sur la recherche
incrémentale de motifs fréquents maximaux. Nous exposons également les raisons de
notre choix et l’explication de l’algorithme.
Le chapitre 4 pressente notre implémentation et les objets utilisés. Pour terminer, nous
concluons et indiquons quelques perspectives dans le chapitre 5.
6
Chapitre 2 Etat de l’art
Dans ce chapitre, nous abordons une recherche bibliographique et nous
exposons une synthèse des travaux qui traitent des problèmes de sélection d’index
dans les entrepôts de données car ces structures physiques (index…) réduisent
considérablement le temps de réponses des requêtes dans les bases et entrepôts [VG99LBE03].
2.1 Problème de sélection d'index
Nous exposons dans cette partie, une synthèse des travaux qui traitent des
problèmes de sélection d’index dans les entrepôts de données. Le problème de
sélection d'index consiste à construire une configuration d'index optimisant le coût
d'exécution d'une charge donnée sous certaines contraintes comme l’espace de
stockage alloué par les Systèmes de Gestion des Bases de Données aux index à
sélectionner.
- Le coût d’exécution de la charge doit être minimal ;
- L’espace de stockage des index ne doit pas dépasser la taille de l’espace disque
alloué par l’administrateur pour stocker les index à sélectionner.
On est donc face à un problème NP-Complet [Com78]. Alors, il n'existe pas
d'algorithmes qui proposent une solution optimale en un temps fini. Plusieurs travaux de
recherche dans la littérature proposent plutôt des solutions proches de la solution
optimale en utilisant des heuristiques réduisant la complexité du problème [LBE03].
La sélection d'index peut être effectuer à partir d’un ensemble d’index candidats
extraite à partie d’une charge de donnée [FON92, CBC93a, CBC93b] par
l’administrateur mais également de manière automatique en réalisant une analyse
syntaxique (SGBD) des requêtes de la charge [CN97, VZZ+00, GRS02]. La
configuration final d’index peut ainsi être faite par une méthodes ascendantes partent
d'une configuration d'index candidats vide [KY87, FON92, CBC93b, CN97] ou alors par
une méthode descendantes dont point de départ est l'ensemble de tous les index
candidats. À chaque itération, des index sont élagués [KY87, CBC93a]. Si le coût de la
charge avant élagage est inférieur (respectivement, supérieur) au coût de cette même
charge après élagage, les index élagués sont inutiles (respectivement, utiles) pour
réduire le coût de la charge. Le processus d'élagage s'arrête lorsque le coût augmente
suite à un élagage.
Les algorithmes génétiques sont couramment utilisés pour résoudre des
problèmes d’optimisation [Aou05]. Ils ont même été adaptés au problème de sélection
d'index [KLT03]. On a au départ un ensemble d'index candidats fourni en entrée. La
fonction objectif à optimiser est le coût de la charge en présence d'une configuration
d’index [Aou05].
7
2.1.1
Travaux de Frank et al.
Dans [FON92], Frank et al. Proposent un outil d'aide à la décision pour le choix
d'index dans une base de données en utilisant une configuration initiale d'index et une
charge de requêtes. Un dialogue est alors établi entre l'outil de sélection d'index et
l'optimiseur de requêtes du SGBD afin de calculer le gain en performance qu'apporte
l'utilisation d'un index donné pour la charge. Le gain est défini comme la différence entre
le coût d'exécution des requêtes sans index et celui de leur exécution avec index. Le
gain est représenté sous forme d'un graphe d'index. Le graphe d'index représenté à la
Figure 2.1 correspond au dialogue ci-dessous en langage naturel entre l'outil et
l'optimiseur :
-
Outil : Pour une requête q, quel est l'index à choisir parmi un ensemble d'index
candidats p1 = {a, b, c, d} et quel est son coût d'utilisation ?
Optimiseur : Je propose l'index i1 = {b}. Le coût estimé pour la requête q utilisant
cet index est c1=23.
Outil : Parmi les index qui restent, c'est-à-dire p2 = p1- i1 = {a, c, d}, quel est le
meilleur index et son coût pour la requête q ?
Optimiseur : L'index i2 = {d} avec un coût c2 = 27.
Fig. 2.1 - Graphe d'index simple
Ce jeu de questions-réponses continue jusqu'à ce qu'il n'y ait plus d'index à proposer
(ik= { })
Cette technique peut donc être résumée en cinq étapes :
1. Une requête de la charge est soumise à l'optimiseur de requêtes avec un
ensemble d'index initial.
2. L'ensemble des index utilisés pour la requête courante est stocké avec le gain
de performance pour la requête.
3. De nouveaux ensembles d'index sont générés et l'étape 2 est réitérée jusqu'à
effectuer un parcours séquentiel.
4. Les gains en performance de chaque index sont additionnés.
8
5. Les index présentant un gain total positif sont enfin proposés à l'utilisateur.
2.1.2
Travaux de Choenni et al.
Etant donnée que l'ajout d'un index dans une configuration peut augmenter son
coût, comme il peut aussi le réduire, Le problème de sélection d'index, tel qu'il a été
posé dans [CBC93b], est basé sur un modèle mathématique avec un comportement
similaire a celui des fonctions mathématiques dites super-modulaire et sous-modulaire
[Aou05].
A l’aide de cet exemple nous allons étudier le comportement de ces fonctions :
Considérons la table Persons de 400000 tuples composée des attributs Pers_ID,
Pers_name,Pers_salary, Pers_age, Pers_sexe, Pers_education et la requête
suivante :
select pers_name
from persons
where pers_education = 'second'
and pers_salary = 2000 and pers_age = 21
Supposons que les facteurs de sélectivité SF des attributs Pers_education,
Pers_salary et Pers_age sont respectivement SFPers_education = 110 , SFPers_salary = 140 et
SFPers_age = 50 , et qu'une page disque contient vingt tuples. Étudions le comportement
de l'ajout d'un index construit sur l'attribut Pers_education dans les trois ensembles
d'index suivants A = {}, A’ = {Pers_salary} et A’’ = {Pers_salary; Pers_age}. Les coûts,
qui représentent le nombre de pages lues, dans chaque con_guration, avec ajout et
sans ajout d'un index construit sur l'attribut Pers_education, sont résumés au Tableau
2.1.
Tab. 2.1 - Résultat de calcul des coûts
L'ajout d'un index construit sur l'attribut Pers_education dans la configuration
vide n'apporte aucun gain Le coût avant et après l'ajout de cet index reste inchangé. En
revanche, l'ajout du même index dans la configuration A’ apporte un gain important En
effet, le coût passe de 10000 pages à 1000 pages. Le même ajout dans A’’ apporte un
gain, quoique moindre comparé au précédent. Ces observations montrent les
caractéristiques de base de la fonction de coût similaires aux caractéristiques des
fonctions super et sous-modulaires.
Le formalisme mathématique de ces fonctions et son adaptation au problème de
sélection d'index est détaillé dans [Aou03]. L'algorithme de sélection d'index prend en
entrée une fonction de coût C1, une charge Qred2 extraite de la charge Q, un ensemble
d'attributs à indexer selon l'administrateur du système et une configuration initiale
d'index pertinente pour chaque requête de la charge et renvoie un ensemble d'index
9
avantageux et un autre ensemble d'index désavantageux, pour des groupes de
requêtes constituant des sous-ensembles de Qred [Aou03].
2.1.3
Travaux de Whang - Algorithmes ADD and DROP
L'algorithme DROP de K. Whang commence d’abord en considérant l'ensemble
des index possibles [Kin74] et à chaque étape, il élimine l'index qui engendre la plus
grande décroissance du coût. Quand la valeur de la fonction ne peut plus être réduite en
éliminant un seul index, l'algorithme tente d'éliminer deux index à la fois, trois index à la
fois, et ainsi de suite, jusqu'à ce que ça ne soit plus possible.
L'algorithme ADD quant à lui, initialise le processus d'optimisation par l'ensemble vide. À
chaque étape, il ajoute un index susceptible de réduire la fonction de coût et s'arrête
quand il n'y a plus de réduction de coût.
2.1.4
Travaux de Gündem
Dans [Gun99], Gündem pose le problème des choix multiples pour la sélection
d'index. Il propose une méthode qui prend en compte le fait qu'un attribut donné peut
être indexé suivant plusieurs techniques et que, par conséquent, les index construits sur
cet attribut suivant différentes techniques apportent des gains et occupent des espaces
de stockage différents. La méthode présentée utilise un ensemble d'index candidats
fourni par l'administrateur pour y sélectionner un sous-ensemble I qui minimise, suivant
une erreur tolérée, le coût de traitement des opérations de mise à jour et de sélection
sans violer la contrainte d'espace de stockage[Aou03]
Pour utiliser cette méthode, les choix multiples d'index pour chaque attribut et les
fréquences respectives des sélections et des mises à jour sont supposés fournis par
l'administrateur du système.
2.1.5
Travaux de Chaudhuri et al.
Dans le but de trouver de nouvelles techniques pour auto-administrer une base
de données, tout en assurant des performances comparables à celles d'une base de
données gérée uniquement par un administrateur humain [Mic01] Microsoft a lancé le
projet de recherche AutoAdmin. L'outil de sélection d'index IST (Index Selection Tool)
[CN97] extrait un ensemble d'index, dit configuration, souhaitable pour une base et une
charge données.
L’architecture générale d’ IST est représentée à la Figure 2.2. Dans la première
itération elle ne considère que les index mono-attribut. Dans la seconde itération, il ne
considère que les index à un seul attribut (trouvés dans la première étape) et à deux
attributs ; et ainsi de suite dans les itérations suivantes.
10
Fig. 2.2 - Architecture générale d'IST
L'algorithme de sélection d'index passe par trois phases :
- Le module de sélection des index candidats élimine un nombre important d'index
qui n'apportent aucun bénéfice aux requêtes de la charge.
- Le module de sélection de configurations recherche les différents sousensembles d'index et extrait la configuration optimale.
- Le module générateur d'index multi-attributs génère les attributs multi-attributs à
considérer à chaque nouvelle itération.
Le module d'évaluation du coût qui maintient la table des coûts.
Module What-if creation index [CN98] simule la présence des index qui n’existent pas
dans la base de données.
2.1.6
Travaux de Feldman et al.
Feldman et al. ont de développé dans [FR03] un outil à base de connaissances
qui assiste l'administrateur dans la sélection d'index appelé DINNER. Partant d’un
ensemble de tables, leurs statistiques et un ensemble de requêtes sur ces tables,
DINNER recommande une configuration d'index qui contient un index primaire et un
ensemble d'index secondaires.
DINNER utilise une base de connaissances extraite de différentes sources : l'expertise
de l'administrateur de la base de données,le manuel du SGBD utilisé, des cours sur
l'administration des bases de données, etc. Ces connaissances sont formalisées en
utilisant un schéma de représentation de connaissances.
La Figure 2.3 illustre une représentation sous forme d'un graphe de la requête de
jointure donnée par la requête (q1) ci-dessous.
(q1) select T1.name
from Item T1, Item-Wharehouse T3
11
Where T3.catalog-number = T1.catalog-number
and T3.quantity > 10000
and T1.supplier-code = 4
and T1.price > 1000
Fig. 2.3 - Graphe de solutions de la requête q1
Le noeud A correspond à une solution réalisant une jointure où l'attribut item de
T1 est dans une table OUTER et l'attribut item-warehouse de T3 est dans une table
INNER. Le nœud B correspond à la solution réalisant la jointure dans le sens inverse.
Chacun de ces nœuds a deux fils : boucle imbriquée (nested loop) et tri-fusion (mergedsort), qui sont des nœuds AND. Chaque nœud possède deux fils représentant une
requête définie sur une seule table.
2.1.8
Travaux de Valentin et al.
Le système DB2 Advisor, est une boite noire pour recommander un ensemble
d'index [VZZ+00]. Ce système admet en entrée une charge de requêtes SQL et renvoie
en sortie la configuration d'index qui optimise les requêtes de la charge.
Il est composé de :
- D'une interface graphique pour la sélection d'index,
- D'un outil en ligne de commande pour recommander des index.
- De l'optimiseur de requêtes de DB2 qui évalue et recommande des index.
En définitive, nous pouvons classer dans un tableau, les travaux traitant du problème de
sélection d'index en tenant compte de ces critères suivant :
- la méthode de construction des index candidats : manuelle ou automatique
12
-
la méthode de construction de la configuration finale d'index : algorithme glouton
(de manière ascendante ou descendante), algorithme génétique ou résolution de
problème du sac à dos [Aou03].
le modèle de coût : fonction mathématique ou appel à l'optimiseur de requêtes.
Tab. 2.2 - Classification des travaux sur la sélection d'index
2.2 Recherche incrémentale des motifs fréquents
Le problème de la recherche incrémentale des motifs fréquents est un problème
crucial car il pose le problème même de la validation des informations issues d’une base
de données de transaction qui évolue dans le temps. Son principe est le suivant :
Soit F l’ensemble des motifs fréquents extraits d’une la base de données de
transactions BD. D est le nombre de transactions dans BD. On suppose que le support
de chaque motif X ∈ F est X.support et qu’il est stocké. Après une série de mise à jour
de la base de données, un incrément bd est ajouté à la base de données BD, d est le
nombre de transactions contenues dans bd. Si nous voulons mettre à jour notre
ensemble de motifs fréquents pour le même seuil minimum de support S, nous devons
trouver tous les motifs X dans BD’ = BD+bd. X est fréquent dans BD’ si X.supportBD’ ≥ S
× (D+d). Soit F’ l’ensemble des motifs fréquents extraits de BD’ ; un motif fréquent Y qui
se trouvait dans F peut ne pas se trouver dans F’, ou encore, un motif Z qui ne se
trouvait pas dans F peut apparaître dans F’ ce qui peut causer une perte d’information.
2.2.1
Algorithme incrémental recherche de motifs
fréquents fermes
Définition (Motif fréquent fermé) Un motif fermé est un ensemble maximal de motifs
communs à un ensemble d'objets. Un motif i ⊆ I tel que support (i) ≥ minsup est
appelé motif fréquent fermé.
13
Les algorithmes incrémentaux permettent de mettre à jour le treillis de concepts
lors de l'ajout de nouveaux objets. Un certain nombre d'algorithmes incrémentaux
existent déjà [GMA95, VM01, VMGMO2], et Propose une construction du Treillis de
Concept en même temps que la génération des concepts [VMGO2]. Ces algorithmes
partent d'un même principe qui spécifie qu'après mise à jour, un treillis comporte trois
types de noeuds : (i) des noeuds inchangés (concepts existants dans le treillis initial),
(ii) des noeuds modifiés (au niveau de l'extension des Concepts) ou bien (iii) des
noeuds rajoutés (dont l'intention n'était pas présente dans le Treillis initial).cependant, la
complexité de ces algorithmes est d'ordre quadratique par rapport au nombre
d'éléments dans le treillis de concepts [VMH03].L’ensemble des motifs fréquents fermés
générés peut devenir très grand en fonction de la taille de la base de données[ZG03].
Certains algorithmes utilisent également des structures de données tel que les
FP-tree (fréquent pattern tree) comme dans [CYH05] et des variantes de structures FPtree comme dans [WCOZ03].
2.2.2
Algorithme incrémental de recherche de motifs
fréquents maximaux
Définition (Motif fréquent maximal) Un motif dont tous les sur-ensembles sont non
fréquents.
Ces algorithmes sont basés sur la propriété que les motifs fréquents maximaux,
c'est-à-dire les motifs dont tous les sur-ensembles sont infréquents, forment une
bordure au dessous de laquelle tous les motifs sont fréquents dans le treillis des
motifs « treillis des itemsets ».A partir des motifs fréquents maximaux, tous les motifs
fréquents sont dérivés et leur support sont déterminés en réalisant un balayage du
contexte [GZ05]. Plusieurs algorithmes ont été proposés pour la recherche incrémentale
des motifs fréquents [ATA99, TC00, DLC97, DLC97, TBA97, FAA97] ils réutilisent tous
les motifs trouvés avant la mis à jour de la base de donnée pour retrouver les nouveaux
motifs mais le coût des mis à jour des motifs est très important. L’algorithme Zigzag
[VMCPO2] que nous avons choisi et que nous décrirons dans l’approche proposé pour
notre sélection d’index (chapitre 3), est basé sur l’algorithme GenMax [GZ05] qui est un
algorithme qui utilise de retour-arriere pour élaguer l’arbre de recherche au plus tôt
guidé par les résultats des précédentes itérations de l’algorithme. Cet algorithme
améliore également le calcul du support et optimise la recherche des petits articles
« short term mining ».
14
Chapitre 3 Approche proposé
Les entrepôts de données sont généralement modélisés selon un schéma en
étoile contenant une table de faits centrale volumineuse et un certain nombre de tables
dimensions représentant les descripteurs des faits [Inm02, KR02]. Avec ce type de
modèle, une requête décisionnelle nécessite une ou plusieurs jointures entre la table de
faits et les tables dimensions. Ces jointures sont très coûteuses en terme de temps de
calcul. Ce coût devient prohibitif lorsque les jointures opèrent sur de très grands
volumes de données. Il est alors crucial de le réduire notamment par les des techniques
qui exploitent des index de jointure pour pré-calculer ces dernières afin d’assurer un
accès rapide aux données [lBE03, Aou05]. L'administrateur de l'entrepôt de données a
donc pour tâche cruciale de choisir les meilleurs index à construire. Avec le
développement des entrepôts de données, il est devenu très important de réduire la
fonction d'administration des SGBD [WMHZ02]. Dans [Aou05], l’auteur propose une
stratégie permettant de sélectionner les index plus avantageux grâce à des modèles de
coût.
Notre stratégie s’inscrit dans la poursuite des travaux dans [Aou05] afin de rendre
la recherche des motifs fréquents incrémentale.
Dans cette étude, nous avons choisi de nous focaliser sur les index bitmap de
jointure car ils sont bien adaptés à l'environnement des entrepôts de données. En effet,
les bitmaps de ces index rendent efficace l'exécution d'opérations courantes comme
And, Or, Not ou Count qui opèrent directement sur les bitmaps (donc en mémoire) et
non plus sur les données sources. De plus, les jointures sont préalablement calculées
au moment de la création de ces index et pas lors de l'exécution des requêtes.
Avant de présenter le principe de notre démarche de sélection automatique
d'index à base d'extraction de motifs fréquents maximaux, allons d’abord exposer les
motivations de notre choix d'utiliser les motifs fréquents maximaux pour la sélection
d'index.
3.1 Recherche de motifs fréquents
3.1.1
Contexte et motivations
Dans [Aou05] l’auteur par de l’intuition que la pertinence d'un index est fortement
corrélée avec la fréquence de son utilisation dans l'ensemble des requêtes d'une charge.
A priori, la recherche des fréquents est un moyen qui semble approprié pour rendre
compte de cette corrélation et ainsi faciliter le choix des index à construire [Aou05].
15
Définition (Motif fréquent) : Soient I = i1,…. im un ensemble de m items et B =t1, …, tn
une base de données de n transactions. Chaque transaction est composée d'un sousensemble d'items I’ ⊆ I. Un sous-ensemble I’ de taille k est appelé un k-motif. Une
transaction ti contient un motif I’ si et seulement si I’ ⊆ ti. Le support d'un motif I’ est la
proportion de transactions de B qui contiennent I’. Le support est donné par la formule
suivante.
Un motif dont le support est supérieur ou égal au seuil minimal du support
minsup, défini par l'utilisateur, est appelé un motif fréquent.
Définition (Motif fréquent maximal) Un motif donc tous les sur-ensembes sont
infrequents.
Par exemple, sur le tableau X, ACTW n’a plus de sur-ensemble qui soit fréquent.
Tableau 3.1 : Exemple d'extraction de motifs fréquents et maximaux
Bien que plusieurs algorithmes traitent le problème de la recherche incrémentale
des motifs fréquents. C’est celui-ci [VMCPO2] qui a retenu notre attention pour les
raisons suivantes.
Dans notre cas d'étude, les objets (transactions) sont des requêtes et les items
sont les attributs extraits de ces requêtes. La charge de requêtes peut être volumineuse
et dans une requête ont peut avoir un seul attribut indexable sélectionné. La charge de
requêtes peut évoluer dans le temps. L'algorithme Zigzag [VMCPO2] s'avère adapté à la
résolution de ce problème. En effet, Zigzag est basé sur l’algorithme Genmax[GZ05] qui
permet en un temps minime, la détermination de tous les motifs fréquents maximaux
dans de très grandes bases de données en optimisant le calcul des support et
l’élimination des motifs infrequent par retour-arriere.
Par ailleurs, les données interrogées dans une session de travail sont souvent
corrélées. De ce fait, les requêtes de la charge, prises dans un intervalle continu de
temps, le sont aussi [Aou05].
16
Cette corrélation entre les requêtes donne lieu à un contexte d'extraction dense.
L’algorithme de recherche incrémentale basé sur la recherche des motifs fermés peut
avoir un nombre de motifs fermés exponentiellement plus grand que l’ensemble des
motifs fréquents maximaux générés [ZG03].
De plus, l’ensemble des motifs fréquents peut être généré directement à partir de
l'ensemble des motifs fréquents maximaux [GZ05].
D'autre part, le nombre d'index candidats dépend du nombre de motifs fréquents. Plus le
nombre de motifs fréquents est élevé, plus on génère d'index candidats. Pour éviter la
prolifération des index candidats, il est judicieux de générer ces index à partir des motifs
fréquents maximaux dont le nombre est moins important que les motifs fréquents et
moins important encore que le nombre de motifs fréquents fermés [ZG03, VMH03]. Cela
permet de réduire la complexité du problème de sélection d'index.
3.1.2
Algorithme Zigzag
Zigzag est un algorithme incrémental, il commence donc par rechercher les
informations (motifs fréquents maximaux, motifs non maximaux mais fréquents, nombre
de transactions …etc) qui ont été calculées et sauvegardées dans une base des
connaissances P à l’étape précédente. Il scanne également la base de donnée entière
D pour savoir si les transactions ont été modifiées en comparant par exemple le nombre
de transactions dans la base à celui précédemment calculé. Le calcul des supports et la
mis à jour des motifs est faite dans la base de donnée des mis à jour ∆ = {(D U d+) - d-}
en fonction de P pour éviter des accès à la base de données D.
d+ représente la liste des nouvelles transactions « ajoutés dans la base de données ».
d- représente la liste des anciennes transactions « supprimés dans la base de données».
Ainsi, la mis à jour des motifs fréquents se fait donc dans ∆ en utilisant P pour minimiser
les accès à D. on peut donc avoir :
- Des motifs qui déclinent « déclined », qui étaient fréquents dans P (de exécution
précédente…) et ne sont plus fréquent dans ∆ (de l’exécution actuelle…).
- Des motifs qui émergent « emerged » qui étaient infrequents dans P mais
deviennent fréquents ∆.
- Des motifs maintenus « retained » sont fréquents dans tout le temps.
L’algorithme ce déroule en plusieurs étapes.
Premier étape : Enregistrement et suppression les transactions
Les nouvelles transactions sont ajoutés et pour chaque item dans ∆, on crée sa
tidlist dans d+ et de le même manière, les vielles transactions sont supprimés et pour
chaque item dans ∆, on créé sa tidlist dans d- ce qui forme la projection vertical. Ce qui
rend très rapide le calcul du support d’un motif car il suffit de compter le nombre
d’éléments dans sa tidlist. Pour un motif X sa tidlist sera :
1
L∆(X)= (LD(X) U Ld+(X)) – (Ld-(X)
1
Une tidlist c’est la liste des transactions dans lesquelles un motif apparaît.
17
Deuxième étape : Détermination des motifs fréquents
Apres avoir enregistrer les nouvelles transaction et supprimer les anciennes,
zigzag doit maintenant déterminer les motifs fréquents maximaux dans ∆.
A ce niveau, Zigzag utilise comme sur la figure 3.1 un algorithme de retour-arriere pour
élaguer l’arbre de recherche. Zigzag utilise également la technique de calcul des
supports par des tidlist et celle du combinet set2 pour élaguer le treillis et améliorer le
calcul du support à l’aide de la projection verticale des motifs [ZG03, GZ05].
Figure 3.1 : Sous ensemble et l’arbre de recherche des motifs fréquent maximaux
par retour-arriere (motifs maximaux encadrés dans un cercle)
Exemple : Partant de F1 = {A, C, D, T, W}, un ensemble des motifs fréquents de taille un. F1
correspond au combine set de départ. En prenant A comme premier items pour la construction
d’un motifs fréquent de taille deux, AD n’est pas fréquent alors tous les sous arbres contenant
AD sont élagués et AD n’entrera d’aucune façon dans la construction des motifs fréquents de
taille trois. Par ailleurs AC étant fréquent avec un combine set {T, W} il produit comme motif
fréquent ACT et {W} et ensuite ACTW comme motif fréquent et {} un combine set vide. ACTW
n’ayant plus de sur-ensemble, est alors considéré comme motif fréquent et maximal.
Troisième étape : La mis à jour des supports des motifs Fréquents
L’algorithme lance pour chaque motif fréquent maximal θ trouvé, l’algorithme
récursif sur la figure 3.2, qui pour chaque k-motif frquents manimal θ, sépare θ en k sous
ensembles de taille (k-1) et calcule leur support dans ∆.
Figure 3.2 : Algorithme de calcul des support
2
Combinet set d’un motif I : C’est l’ensemble des items qui ajoutés à I peuvent créer un motif fréquent.
18
3.2 Démarche de sélection automatique d'index
L'approche que nous proposons, dont le principe général est représenté à la
figure 3.3, exploite une charge de requêtes afin d'en extraire une configuration d'index
améliorant le temps d'accès aux données dans un processus de recherche incrémentale
des motifs donnant un dynamisme au processus de sélection d’index.
Tout d'abord, nous extrayons de la charge des attributs indexables, c'est-à-dire,
les attributs qui peuvent être utiles lors de l'exécution des requêtes s'ils sont indexés.
Ces attributs sont stockés dans un fichier « attribut » et comporte pour chaque ligne la
liste des attributs indexables de la requête correspondante, préfixé par le nom de la
table. Une ligne du fichier est considérée comme une transaction, ce qui correspond à
un contexte d'extraction exploit é par l'algorithme de fouille de données Zigzag.
Métadonnées
Schéma, statistiques
1
Figure 3.3 : Architecture
la stratégie de sélection
automatique d'index
Charge
2
Fichier
Contexte
d’extraction
Entrepôts de données
3
Ensemble des
motifs fréquents
maximaux
4
P
Index
Base de
candidats
connaissance
Enregistrement / élagage
des index candidats
5
Ajout
Suppression
Modèle de
coût
6
Configuration
finale d’index
Enregistrement / élagage
des index
7
Ajout
Suppression
19
1 Extraction de la charge
2
Extraction des
attributs indexables
3
Application de
l'algorithme Zigzag sur
ce contexte
5
Enregistrement ou
élagage des index
candidats
6
Construction de la
configuration finale
7
Création des effective
des index dans
l’entrepôt de données
des requêtes par le
système
4G Génération de
l’ensemble des index
candidats à partir de
l’ensemble des motifs
fréquents maximaux
Nous procédons comme suit pour proposer une configuration d'index :
- Extraction de la charge des requêtes par le système,
- Analyse de la charge de requêtes pour extraire les attributs indexables,
- Construction du contexte de recherche des motifs fréquents,
- Application de l'algorithme Zigzag sur ce contexte,
- Génération de l’ensemble des index candidats à partir de l’ensemble des motifs
fréquents maximaux,
- Enregistrement ou élagage des index candidats qui serons appliqués à la
configuration finale, en fonction des candidats déjà existants (calculés a une
précédente session …),
- Application du modèle de coût [Aou05] et Construction de la configuration finale
d'index.
- Enregistrement et élagage de la configuration finale,
- Création des effective des index dans l’entrepôt.
Nous détaillons chacune de ces étapes dans les sections qui suivent.
3.2.1
Extraction de la charge
La première étape de notre stratégie de sélection d'index consiste à extraire du
journal des transactions les requêtes adressées au SGBD. Cette tâche peut être
réalisée en exploitant la capacité des SGBD actuels de sauvegarder les opérations
réalisées sur le système durant une période de temps. Cette période est fixée par
l'administrateur et doit être suffisante pour pouvoir anticiper les requêtes futures des
utilisateurs.
Dans l'environnement des entrepôts de données, les requêtes extraites sont
décisionnelles. Dans un schéma en étoile par exemple, elles peuvent être exprimées en
algèbre relationnelle comme suit [Aou05] :
Où S est une conjonction de prédicats simples sur les attributs des tables dimensions, G
est un ensemble d'attributs des tables dimensions Di (les attributs de la clause Group
20
by), et M est un ensemble de mesures agrégées, chacune étant définie en appliquant
un opérateur d’agrégation sur une mesure de la table de faits F.
3.2.2
Analyse de la charge
Les requêtes SQL présentes dans la charge sont traitées par un analyseur
syntaxique afin d'en extraire tous les attributs susceptibles d'être des supports d'index.
Ces attributs sont ceux présents dans les clauses Where des requêtes. Ces attributs
servent à la recherche dans les requêtes d'interrogation. Dans les systèmes
décisionnels, les requêtes sont de type Select et les rafraîchissements sont réalisés
périodiquement [VG99]. Nous ne construisons donc le fichier contenant les attributs qu'à
partir des requêtes d'interrogation.
Les règles permettant de proposer des attributs indexables à travers un exemple
sont les suivantes.
Soit un prédicat de restriction qui a l'une des formes suivantes :
t.a between v1 and V2, t.a θ v2, t.a like v1 ou t.a IN (v1, v2 ..)
Où:
t est le nom ou l'alias d'une table ;
a est un attribut de cette table ;
θ est l'un des opérateurs =, ≠, >, >, ≤, ≥ ;
v1 v2 sont des valeurs constantes ne faisant pas référence à une table (nom ou alias
d'une table).
Plusieurs cas peuvent conduire à proposer des index « inutiles », c'est-à-dire des index
candidats qui ne seront pas exploités pour répondre aux requêtes de la charge.
1. Un prédicat de la forme E(t.a) = v1, où E(t.a) est une expression en t.a, par
exemple, t.a2+3t.a. Dans un tel cas, t.a n’est pas l’opérande immédiat de
l’opérateur de comparaison. Le SGBD n'utilise pas d'index sur l'attribut a pour
chercher les tuples vérifiant ce prédicat.
2. Un prédicat de la forme t.a≠ v1 n’utilise pas d’index sur l’attrubut a car toutes les
données sont parcourues sauf v1, si elle existe dans la table.
3. Un prédicat de comparaison de chaîne de caractères utilisant Like n’exploite pas
l’existence d’un index pour chercher les tuples vérifiant ce prédicat si la recherche
s’effectue sur une sous-chaine (comme pour l’utilisation de joker u début du like
‘%chaine’) plutôt que sur la totalité de la chaîne.
21
3.2.3
Construction du contexte d'extraction
À partir des attributs extraits dans l'étape précédente, nous construisons un
fichier contenant sur chaque ligne du fichier, tous les attributs indexables de chaque
requête. Nous illustrons la construction de ce fichier à travers l'exemple suivant.
Soit un entrepôt de données composé de la table de faits Sales et de cinq tables
dimensions Channels, Customers, Products, Times et Promotions. La figure 3.4
représente un extrait de charge composé de trois requêtes.
Figure. 3.4 - Extrait de charge
Le fichier « attributs » obtenu après l’analyse syntaxique de la charge est
composé de trois lignes chacune comportant les attributs indexables de chaque requête
(figure 3.5).chaque attribut est préfixé par le nom de la table correspondante.
Ce fichier, exploitée par l'algorithme Zigzag, donne lieu à un ensemble de motifs
fréquents maximaux.
Apres une petite présentation du modèle de coût décrit dans [Aou05], nous
détaillerons comment sont générés les index bitmap de jointure candidats à partir de ces
motifs fréquents maximaux.
Figure. 3.5 – fichier « attributs »
22
3.3 Modèles de coût
Généralement, le nombre d'index candidats est d'autant plus important que la
charge en entrée est volumineuse [Aou05]. La création de tous ces index peut ne pas
être réalisable en pratique à cause des contraintes systèmes telles que le nombre limité
d'index par table ou la taille de l'espace de stockage alloué aux index. Pour pallier ces
limitations, des modèles de coût ont été proposé dans [Aou05] permettant de ne
conserver que les index les plus avantageux.
Ces modèles estiment l'espace en octets occupé par les index bitmap de jointure, les
coûts d'accès aux données à travers ces index et les coûts de maintenance de ces
index en terme de nombre d'entrées/sorties. La construction de ce modèle passe par :
-
le calcul de la taille d’un index bitmap de jointure, le coût de la sa maintenance en
fonction de la variation de la taille et du coût d’insertion dans la table des faits
mais également dans les tables dimensions.
Coût d’accès aux données par un accès direct au bitmap.
Coût de jointure.
3.4 Stratégie de sélection d'index bitmap de
jointure
La stratégie de sélection d’index est la même que dans [Aou05] à la seule
différence que nous partons cette fois d’un ensemble de motifs fréquents maximaux. Un
algorithme glouton exploite ensuite une fonction objectif basée sur les modèles de coût
présentés à la Section 3.3 et développé dans [Aou05], afin d'élaguer les index les moins
avantageux. Le détail des étapes de la construction des index candidats est donné dans
les sections suivantes.
3.4.1
Construction de l'ensemble d'index candidats
Avec l’ensemble des motifs fréquents maximaux et du schéma de l'entrepôt de
données (clés étrangères de la table de faits, clés primaires des tables dimensions, etc.),
nous construisons un ensemble d'index candidats.
L'instruction de creation d'un index bitmap de jointure est généralement
composée de trois clauses :
On, From et Where. La clause On est composée des attributs sur lesquels est construit
l'index (attributs non clés des tables dimensions), la clause From contient les tables
jointes et la clause Where est constituée des prédicats de jointure. La requête cidessous montre un exemple d'une commande SQL permettant de construire un index
23
bitmap de jointure sur l'attribut Fiscal_Year de la table dimension Times (Sales est la
table de faits), sous Oracle 9i.
(1)
CREATE bitmap index BIJ_TIMES
on sales (times.fiscal_year)
from sales,times
where sales.time_id=times.time_id
En considérant un motif fréquent maximal « Table.attribut1,....., Table.attributn »
comme une suite finie d'éléments de la forme Table.attribut. Chaque motif fréquent est
analysé pour déterminer les différentes clauses d'un index bitmap de jointure. Tout
d'abord, nous extrayons les éléments contenant les clés étrangères de la table de faits.
Les motifs ne contenant pas de tels éléments ne donnent pas d'index bitmap de jointure
car ces éléments sont nécessaires pour définir les clauses From et Where de l'index.
Nous recherchons ensuite, dans le motif fréquent, les éléments contenant les
clés primaires des tables dimensions afin de construire la clause Where. Les tables
trouvées au cours de cette analyse constituent la clause From. Les éléments contenant
des attributs non clés des tables dimensions forment la clause On.
Si de tels éléments n'existent pas, l'index bitmap de jointure ne peut pas être construit
car la clause On est formée des attributs non clés des tables dimensions. Par exemple,
le motif fréquent maximal <Times.Time_id, Sales.Time_id, Times.Fiscal_Year> donne
l'index bitmap de jointure BIJ_TIMES de la commande SQL est présentée ci-dessus.
3.4.2
Enregistrement et suppression des index candidat
Nous disposons donc dans P et ∆ (décrit à la section 3.1.2), l’ensemble un
ensemble de connaissances sauvegardées au cours de l’exécution du processus et qui
va nous permettre de choisir à ce niveau les index candidats intéressants que nous
allons soumettre ensuite à la configuration d’index finale avec application du modèle de
coût pour avoir les index les plus pertinents. Des index supprimés et ajoutés, on extrait
la liste des motifs qui on contribués à leur création. Le résultat de ce calcul est
enregistré dans la base de connaissance P (cf annexe 1) les index sont également
sauvegardés. Pour la requête de création d’index ci-dessus (1), le motif qui a permit sa
création est :
(2)
Times.Time_id, Sales.Time_id, Times.Fiscal_Year
Le motif (2) de l’index (1) ayant été par exemple sélectionné lors d’une précédente
recherche, peut devenir lors de l’exécution de l’application non fréquent à cause par
exemple de la mis à jour de la base de données ou du changement du support minimal.
On dit qu’il décline « declined » et si par contre il est toujours fréquent, on dit qu’il est
maintenu « retained » il est donc intéressant pour la configuration d’index finale à laide
du modèle de coût.
Les index constitués à partir des motifs maximaux qui déclinent « déclined »,
sont supprimés et ne participerons pas à la configuration finale d’index. Les index
constitués a partir des motifs qui émergent « emerged » ou qui sont
24
maintenus « retained » sont les plus intéressants et sont engregistrer pour participer à
la configuration finale d’index.
3.4.3 Construction de la configuration d'index
Le seul objectif d’un index est de réduire les entrées-sorties. Pour la configuration
finale, il faut donc évaluer la réduction ou l'augmentation du coût d'exécution en terme
d'entrées/sorties, des requêtes de la charge pour chaque index. Le coût d'exécution
d'une requête est égal au coût d'accès aux données à travers cet index. La sélection est
faite en privilégiant les index apportant le plus de profit tout en occupant un minimum
d'espace de stockage mais également en privilégiant aussi les index qui engendrent le
moins d’entrées sorties lors de l'exécution des requêtes.
L’algorithme de sélection d'index défini dans [Aou05] se base sur une recherche
gloutonne dans l'ensemble des index candidats I donné en entrée. La configuration
d’index est générée à l’aide des fonctions objectif P « profit », R « ration profit/espace »
ou H « hybride » décrites dans et du modèle de coût décrits dans [Aou05].
25
Chapitre 4 Implémentation et
Expérimentations
Il est difficile d’apprécier une méthode sans lui appliquer des tests sur des
données réelles. Il nous a donc semblé capital d’implémenter notre approche pour
pouvoir l’évaluer. Nous l’évaluons par la suite avec un entrepôt de données test.
Les deux principales parties de notre approche sont la génération des motifs fréquents à
partir d’une charge de requêtes et la sélection d’index.
4.1 Implémentation
4.1.1
Génération des motifs fréquents
Langage et librairies
Un langage évolué gérant facilement des classes « structure de données » et
disposant d’une multitude de librairies efficaces était nécessaire, c’est pour cela que
nous avons choisi le langage Java pour le développement.
Structure de données
Il nous a d’abord fallut définir une structure de données pour la représentation d’un
motif car celui ci peut avoir plusieurs propriétés pendant l’exécution du programme. Un
motif est une classe java qui a les propriétes suivante :
-
le nombre de transactions dans lesquelles il apparaît,
Le nombre d’items qui le compose,
Un vecteur qui comporte la liste de ces items,
Un vecteur qui comporte la liste des transactions
Un drapeau pour savoir si le motif est maximal,
Un drapeau pour les éventuels changement d’état et le niveau de génération du
motif.
L’algorithme : zigzag
L’application prend en entrée le fichier d’attribut généré dans [Aou05] à partir de
la charge de requête ; sur chaque ligne la liste des attributs indexables de chaque
requête.
26
Notre approche étant incrémental, l’application commence par lire les
informations qui ont été calculées pendant une précédente exécution.
La méthode Read_information() parcours le fichier de sauvegarde des
données « base de connaissance » (en annexe) pour lire les informations sur :
- le nombre de transaction « requête » à l’étape précédente,
- le nombre de motifs non fréquents qui ont été créés pendant l’exécution ainsi que la
liste de ceux-ci.
- Le nombre de motif maximaux fréquents qui on été généré et la liste de ceux ci.
- Le nombre d’index candidats sélectionnés et la liste des motifs fréquents qui les
constituent.
- Le nombre d’index candidats supprimes et la liste des motifs fréquents qui les
composent.
Il faut maintenant savoir pour l’exécution encours quels sont les modification qui ont
été apportés à la charge.
Pour cela, il faut parcourir la le fichier d’attribut avec la méthode Parsefile() elle permet
donc de parcourir le fichier d’attributs ligne par ligne. Un attribut est considéré comme
un motif de taille un. A chaque fois qu’on rencontre un item pour la première fois, on
remplit ses champs « classe motif », on incrémente le compteur des items et on le
sauvegarde dans une table de hachage à l’indice de la valeur du compteur. Tout au
long de l’exécution du programme nous ne travaillons plus qu’avec des entiers, un
accès à la table de hachage avec le numéro « indice » permet de récupérer la valeur de
l’attribut correspondant(cf. figure 5.1). Apres le traitement d’une ligne, on passe à la
ligne suivante donc il faut également incrémenté le compteur des
transactions « requête ». À chaque fois qu’on rencontre cet item, on incrémente juste le
compteur des items
Pour savoir si des requêtes ont étés ajouté à la charge il suffit de comparer le
nombre de transactions lues précédemment dans Read_information() et le compteur
total des transactions actuel.
Exemple pour une base de transaction BD (sur chaque ligne des attributs représentés
par des lettres):
BD
ABCD
BCD
AB
nb_trans = 2
nb_items = 1
list_items = A,
list_trans = 1 et 3
Ismax = 0
Flag = 0
nb_trans = 3
nb_items = 1
list_items = B,
list_trans = 1, 2 et 3
Ismax = 0
Flag = 0
nb_trans = 2
nb_items = 1
list_items = C,
list_trans = 1et 2
Ismax = 0
Flag = 0
nb_trans = 2
nb_items = 1
list_items = C,
list_trans = 1et 2
Ismax = 0
Flag = 0
Figure 5.1 structure d’une instance motif
Le treillis des motifs « treilis des itemset » commence par les motifs de tailles un
« item ». Genmax[ZG03] commence également par généré les motifs de taille un qui
sont fréquents à laide de la méthode generateF1(). Elle compte tout simplement pour
chaque motif le nombre d’éléments dans la liste des transactions qu’elle compare au
support minimum. Pour un support de trois, sur la figure 5.1 seul le motif B est fréquent.
27
La méthode execu() implémente la fonction de retour-arriere avec en entrée une classe
motif « itemset » vide et un combinet set correspondant à l’ensemble des motifs
fréquents de taille un précédemment calculés. Dans cette méthode, les motifs non
fréquents lues dans le fichier de sauvegarde « base de connaissance » et ceux
nouvellement calculés sont utilisés en évitant a chaque d’avoir des motifs en doublons.
Ils peuvent devenir des maximaux auquel cas on dit qu’ils émergent. Dans le même
ordre les maximaux découverts aux étapes précédente peuvent devenir non fréquent
ont dit qu’ils déclinent. (cf. section 3.12)
Save_maximaux(fichier_max) permet de sauvegarder les maximaux créer dans un
autre fichier « des maximaux ».
Store_information(fichier_base) sauvegarde toutes les informations calculées dans le
fichier de sauvegarde P.
Look_max_indexSupp() recherhe les maximaux qui ont été créés à partir des index
supprimés non sélectionnées.
Look_max_indexAjout() recherche les maximaux qui ont été créés à partir des index
sélectionnées.
Sélection d’index Bitmap
Constru_Max_Index() propose section d’index généré à l’aide des maximaux
contenues dans le fichier des maximaux comme expliqué à la section 3.4.1.
Figure 5.2 : interface de sélection des index
28
4.2 Expérimentations
Afin de valider notre stratégie de sélection d'index bitmap de jointure, nous
l'avons appliquée sur un entrepôt de données test implanté au sein du SGBD Oracle 9i
installé sur un PC sous Windows XP Pro doté d'un processeur Pentium Dual Core à
1,60 GHz, d'une mémoire centrale de 1024 Mo et d'un disque dur IDE de 120 Go. Cet
entrepôt de données est composé d'une table de faits Sales et de cinq tables
dimensions Customers, Products, Promotions, Times et Channels. Le Tableau 5.1
détaille le nombre de tuples et la taille en Mo de chaque table de cet entrepôt. Nous
avons mesuré pour différentes valeurs de la charge des requêtes, le temps d'exécution
des requêtes de la charge d’abord en utilisant une approche statique avec
reconstruction des index à zéro et l’approche incrémentale avec génération des index
de manière dynamique à l’aide des motifs fréquents maximaux générés de manière
incrémentale.
Tableau. 5.1 - Caractéristiques de l'entrepôt de données test (Oracle 9i)
La charge est composée de quarante requêtes décisionnelles comportant
plusieurs jointures (cf. Annexe B). Nous avons mesuré le temps total d'exécution des
requêtes de cette charge (il faut tout de même forcer l’exécution des index en utilisant
/*+ORDERED dans la charge)
29
Temps de reponses(en minutes)
500
450
400
350
300
Statique
incremental
250
200
150
100
50
0
1x40
2x40
3x40
4x40
5x40
Charge de requete
Figure. 5.3 - Fonction profit
La Figure 5.3 montre que les en utilisant les index dans les deux cas, les temps
d’exécution sont plus ou moins proches jusqu’à une certaine valeur de la quantité de la
charge. Apres cette valeur autour d’une charge (4x40=160 requêtes), le temps
d’exécution en situation itérative a tendance à augmenter très vite alors que dans la
situation incrémentale ce temps semble plutôt se stabiliser. Cela peut être du au fait que
étant donnée que la recherche des index est basé sur la recherche des motifs fréquents
maximaux (sur-ensemble de tous les fréquents) plus la base augmente plus on a de
corrélation et moins on a de motifs fréquents maximaux. Dans ce cas on n’a de moins
en moins de nouveaux index à créer. De plus le coût de rafraîchissement l'entrepôt de
données étant proportionnel au nombre d'index construits [Aou05] cette réduction du
nombre d'index devient intéressante.
30
Chapitre 5 Conclusion et
perspectives
Dans ce mémoire, nous nous sommes intéressées à la possibilité d'utiliser
techniques de fouille de données tel que la recherche des motifs fréquents maximaux
pour la sélection d’index, en ayant comme objectif d'optimiser les performances des
entrepôts de données. Notre travail a été guidé par une étude préalable des travaux
existants traitant du problème de la sélection d'index en général mais en particulier par
les travaux de Kamel Aouche [Aou05]. En se basant sur un algorithme existant
[VMCP02] nous avons implémenté notre stratégie que nous avons expérimenté sur un
entrepôts de données test. Notre stratégie sélection d’index permet ainsi la construction
des index en exploitant certaines méta-données et certaine connaissance en
administration et en optimisation des SGBD, intégrée directement dans l'analyseur
syntaxique, cela produit des index candidats pertinents pour la charge. La recherche
incrémentale des motifs fréquents maximaux réduit considérablement l’espace de
recherche des index candidats et rend leur recherche dynamique et incrémentale car on
conserve les index candidats qui n’on pas été retenus et les motifs qui n’ont pas été
maximaux pendant les processus de sélection précédent. Ceux-ci peuvent devenir
intéressant dans le processus suivant. Le module génération des index, génère
directement des index mono et multi-attributs. Notre stratégie de sélection d’index prend
en compte les index bitmap très efficaces pour les requêtes d’interrogation dans les
bases volumineuses. Elle peut également être adapté à d’autres techniques.
L’algorithme de construction de la configuration finale d'index peut être améliorée ou
adaptée à d’autres techniques d’indexation en changeant le modèle de coût par
exemple.
Différentes perspectives sont envisagées. En premier lieu, il serait intéressant de
pouvoir développer une véritable interface graphique conviviale afin que pouvoir saisir
les paramètres de l’application. Les tests effectués dans ce mémoire ne considèrent que
le temps d’exécution en fonction de l’évolution de la charge. Il serait intéressant de
regarder également le temps des mis à jour et l’espace disque occupé par les index en
utilisant la fonction objectif décrit dans [Aou05].
31
Annexe A : Fichier de sauvegarde : base de connaissance
Nombre de requête dans la base
Nombre de motifs non fréquents
Motifs non fréquents
………….
(candidats à la
maximalité)
Séparateur entre les non fréquents et fréquents
Motifs maximaux
Motifs candidat ajoutés
Motifs candidat supprimés
32
Bibliographie
[Aou05] Aouiche K., Techniques de fouille de données pour l'optimisation automatique
des performances des entrepôts de données, thesis, laboratoire ERIC –
Université de lyon2. 2005.
[CYH05] Hong Cheng. & Xifeng Yan. & Jiawei Han., IncSpan: Incremental Mining of
Sequential Patterns in Large Database. Sixth IEEE International Conference on
Data Mining - Workshops (ICDMW'05), 2005.
[ZG03]Mohammed J. Zaki, Karam Gouda, Fast Vertical Mining Using Diffsets, 9th
International Conference on Knowledge Discovery and Data Mining,
Washington, DC, August 2003.
[Cha98] Chaudhuri S., “ Data Mining and Database Systems : Where is the Intersec-tion ? “,
Data Engineering Bulletin, 21(1) :4-8. 1998.
[Com78] Comer D., “The di_culty of optimum index selection “, ACM Transactions on Database
Systems (TODS), 3(4) :440-445. 1978.
[FON92] Frank M.R., Omiecinski E., Navathe S.B., “ Adaptive and Automated Index Selection in
RDBMS “, in 3rd International Conference on Extending Database Technology, EDBT
1992, Vienna, Austria, volume 580 de Lecture Notes in Computer Science, pp. 277-292.
1992.
[CBC93a] Choenni S., Blanken H.M., Chang T., “ Index Selection in Relational
Databases “, in 5th International Conference on Computing and Information
ICCI 1993, Ontario, Canada, pp. 491-496. 1993.
[CBC93b] Choenni S., Blanken H.M., Chang T., “ On the Selection of Secondary Indices
in relational Databases “, Data Knowledge Engineering, 11(3) :207-238.1993.
[CN97] Chaudhuri S., Narasayya V.R., “ An E_cient Cost-Driven Index Selection Tool for
Microsoft SQL Server _, in 23rd international Conference on Very Large Data Bases
(VLDB 994), Santiago de Chile, Chile, pp. 146_155. 1997.
[VMCPO2] Adriano Veloso, Wagner Meira, Jr., Marcio Carvalho, Bruno Possas, Srini
Parthasarathy, Mohammed J. Zaki, Mining Frequent Itemsets in Evolving
Databases, 2nd SIAM International Conference on Data Mining, Arlington, April
2002.
[GZ05] Karam Gouda and Mohammed J. Zaki, GenMax: An Efficient Algorithm for
Mining Maximal Frequent Itemsets, Data Mining and Knowledge Discovery: An
International Journal, Vol. 11, pp 1-20, 2005.
[FST88] Finkelstein S.J., Schkolnick M., Tiberio P., “ Physical Database Design for Relational
Databases “, ACM Transactions on Database Systems, 13(1) :91-128. 1988.
[LBE03] Ladjel Bellatreche., Techniques d'optimisation des requêtes dans les data
warehouses. LISI/ENSMA, 2003.
[VMGO2] Petko Valtchev; Rokia Missaoui; Robert Godin; Mohamed Meridji.,
Generating frequent itemsets incrementally : two novel approaches based on
Galois lattice theory. Journal of Experimental & Theoretical Artificial Intelligence,
Volume 14, pages 115 – 142, April 2002.
33
[KY87] Kyu-Young W., Foundation of Data Organization, chapitre Index Selection in Rational
Databases, pp. 497_500, Plenum Publishing Co. 1987.
[WCOZ03] William Cheung. & Osmar R. Zaïane R. Incremental Mining of Frequent
Patterns
Without
Candidate
Generation
Or
Support .
iteseer.ist.psu.edu/622682.html, 2003.
[GMA95] Godin, R. & Missaoui, R. & Alaoui, H., Incremental concept formation
algorithmsbased on galois lattices. Computational Intelligence, 11(2), pages
246-267, 1995.
[GRS02] Golfarelli M., Rizzi S., Saltarelli E., “ Index selection for data ware-housing “, in 4th
International Workshop on Design and Management of Data Warehouses (DMDW
2002), Toronto, Canada, pp. 33_42. 2002.
[VMH03] Valtchev, P. & Missaoui, R. & Hacene, M. R. & Godin, R., Incremental
maintenance of association rule bases. In Proceedings of the 2nd Workshop on
Discrete Mathematics and Data Mining, San Francisco, 2003.
[VM01] Valtchev, P. & Missaoui, R., Building concept (Galois) lattices from parts :
generalizing the incremental methods. In H. Delugach and G.Stumme, editors,
Proceedings,ICCS-01, volume 2120 of Lecture Notes in Computer Science,
Stanford (CA), USA,Springer-Verlag, pages 290-303, 2001.
[VMGMO2] Valtchev, P. & Missaoui, R. & Godin, R. & Meridji, M., Generating Frequent
Itemsets Incrementally : Two Novel Approaches Based On Galois Lattice
Theory. Journal of Experimental & Theoretical Artifcial Intelligence, 14(2-3),
pages. 115-142, 2002.
[VG99] Vanachayobon S., Gruenwald L., “ Indexing Techniques for Data Warehouses
Queries “, Technical report, The University of Oklahoma, School of Computer
Science. 1999.
[VVK02] Valluri S.R., Vadapalli S., Karlapalem K., “ View Relevance Driven Materialized View
Selection in Data Warehousing Environment “, in 13th Australasian Database
Technologies (ADC 2002), Melbourne, Australia, pp. 187-196.2002.
[VZZ+00] Valentin G., Zuliani M., Zilio D., Lohman G., Skelley A., “DB2Advisor : An Optimizer
Smart Enough to Recommend Its Own Indexes “, in 16th International Conference on
Data Engineering, (ICDE 2000), California,USA, pp. 101-110. 2000.
[WB98] Wu M., Buchmann A., “ Encoded Bitmap Indexing for Data Warehouses “,in 14th
International Conference on Data Engineering (ICDE 1998), Orlando,USA, pp.
220_230. 1998.
[WMHZ02] Weikum G., Monkeberg A., Hasse C., Zabback P.,“ Self-tuning DatabaseTechnology
and Information Services : from Wishful Thinking to ViableEngineering “, in 28th
International Conference on Very Large Data Bases (VLDB 2002), Hong Kong, China,
pp. 20-31. 2002.
[FAA97] R. Feldman, Y. Auman, A. Amir and H. Mannila. Efficient Algorithms for Discovering
Frequents Sets in Incremental Databases. In Proc. Of SIGMOD Work-shop on
Research Issues in Data Mining and Knowlewdge Discovery, May 1997.
[TBA97] S. Thomas, S. Bodagala, K. Alsabti and S. Ranka. An Efficient Algorithm for the
Incremental Updation of Association Rules in Large Databases. In Proc. Of the 3rd
International conference on Data Mining and Knowlewdge Discovery (KDD 97), August
1997.
[DLC97] S. D. Lee, and D. Cheung. Maintenance of Association Rules: When to Update? In
Proc. Of SIGMOD Workshop on Research Issues in Data Mining and Knowlewdge
Discovery, May 1997.
34
[CLK97] D. Cheung, S. D.n Lee, and B Kao. A general Incremental Technique for Maintaining
Discovered Association Rules. In Proc. Of the 5th intl. conf. on Databases Systems for
Advanced Applications, April 1997.
[TC00] S. Thomas and S. Chakravarthy. Incremental Mining of Constrained Associations. In
Proc. Of the 7th Intnl. Conf. of high Performance Computing (HiPC), P. 547-558,
December 2000.
[ATA99] N.Ayan, A. Tansel, and E. Arkun. And Efficient Algorithm to Update Large Itemsets with
Early Prunning. In Proc. Of the 5th ACM6SIGKDD intnl. Conf. on Data Mining and
Knowlewdge Discovery, August 1999.
[VZZ+00] Valentin G., Zuliani M., Zilio D., Lohman G., Skelley A., “ DB2 Advisor : An Optimizer
Smart Enough to Recommend Its Own Indexes “, in 16th International Conference on
Data Engineering, (ICDE 2000), California, USA, pp. 101-110. 2000.
[Gun99] Gundem T.I., “ Near optimal multiple choice index selection for relational databases “,
Computers & Mathematics with Applications, 37(2) :111-120. 1999.
35
Téléchargement