Chapitre II : Problèmes de sélection des techniques d’optimisation
III.5 S ELECTION D ’ UN SCHEMA DE FRAGMENTATION
III.5.1 Démarche de sélection d’un schéma de fragmentation
Nous avons vu, dans la présentation des travaux de (Bellatreche, et al., 2008a) et (Boukhalfa, et al., 2008a) sur la fragmentation, que la fragmentation avancée dans le SGBD Oracle présentait deux manques importants.
- La FH dérivée d’une table est effectuée sur la FH primaire d’une seule autre table.
- La FH primaire d’une table est faite sur une seule clé de fragmentation pour le mode simple et seulement deux clés pour le mode composite
Ces manques empêchent la mise en œuvre d’une stratégie de fragmentation bénéfique. En effet, les requêtes exécutées sur entrepôt renferment des jointures en étoiles entre une table de
Nombre de fragments maximum W
1
2
4 3
Codage du schéma de fragmentation Classe_FH : attributs de sélection
choisit par « k-means » pour FH
- Découpage des domaines d’attributs - Vérification des règles de correction
Sélection d’un schéma optimal par génétique
Implémentation du schéma de FH sur l’entrepôt Entrepôt de donnée
Charge de requête
Modèle de coût
1. Valeurs des attributs candidats à la fragmentation
2. Attributs de candidats à la fragmentation et leurs domaines
3. Schéma de fragmentation
4. Schéma optimal de fragmentation
Chapitre III : Nouvelle démarche de sélection d’index et de fragmentation
83 faits et plusieurs tables de dimensions avec plusieurs opérations de sélections sur dimensions. Il serait intéressant de pouvoir fragmenter les dimensions suivant plusieurs attributs (plus de deux) puis de fragmenter la table de fait suivant la fragmentation primaire de toutes les dimensions concernées (Boukhalfa, et al., 2008a).
Ainsi, nous nous somme basés sur ces travaux afin de mettre en œuvre la sélection d’un schéma de fragmentation, cela en quatre parties : découper les domaines des attributs, coder le schéma de fragmentation, sélectionner le schéma optimal (le plus bénéfique) par algorithme génétique et enfin implémenter la fragmentation horizontale sur l’entrepôt.
III.5.1.1 Découpage des domaines d’attributs
La fragmentation horizontale se base sur la répartition des tuples d’une table en plusieurs sous ensembles suivant des prédicats de sélections définis sur les attributs de fragmentation. Lors de la génération d’un schéma de fragmentation, il faut s’assurer qu’il vérifie les règles de correction annoncées dans (Bellatreche, 2000). Il doit assurer la reconstruction du schéma initial de l’entrepôt (aucune perte de donnée), vérifier la disjonction entre fragments des tables et assurer la complétude qui signifie que chaque tuple d’une table appartient à un fragment.
A partir des attributs de sélection de la Classe_FH, il faut établir un schéma de fragmentation horizontale primaire des tables dimensions. Il faut découper, en sous domaines, les domaines de chaque attribut candidat à la fragmentation.
Chaque attribut de fragmentation AFi de la dimension Dk, appartenant à Classe_FH, possède un domaine de valeurs di. Le découpage du domaine di en ni sous domaine sd1,…, sdni permet de spécifier ni fragments de la dimension Dk. Pour t attributs AF1,…, AFt de la dimension Dk le nombre de fragments total est égale à ∏ C.
Les valeurs des sous domaines d’un attribut sont extraites de la charge de requêtes. Ces requêtes peuvent ne pas utiliser toutes les valeurs d’un attribut. Ainsi, pour vérifier la complétude du schéma de FH et éviter la permet de données après fragmentation de l’entrepôt, nous allons extraire, à partir de l’entrepôt de données et pour chaque attribut, les autres valeurs qui ne figurent pas dans la charge de requêtes. Ces valeurs constituent un nouveau sous domaine sdni+1 ajouté à chaque attribut. Ainsi, chaque attribut est muni de ni+1 sous domaine sd1,…, sdni, + sdni+1
Exemple 23 : Soit un entrepôt de données dont le schéma est donné par la figure III-10.
Temps Client
Id Mois Année
Vente Id
Age Genre
Pays Id_Temps
Id_ Client Id_ Produit
Produit Prix_Unit
Id Classe
Figure III-10: Schéma en étoile d’un entrepôt de données
Soit une charge de requête à partir de la quelle on extrait les prédicats de sélections suivants :
« Genre = F », « Mois=Jan », « Mois in (Fév, Mar) », « Classe = B » et « Age 20 ». Les attributs de fragmentation et les sous domaines complets sont : Genre = {F}, {M}, Mois = {Jan}, {Fév, Mar}, {Avr, Mai,…, Déc}, Classe = {B}, {A, C, D} et Age = {[0, 20[}, {[20, 70]}
84 III.5.1.2 Codage du schéma de fragmentation
Nous avons vu que le nombre de fragments maximum pour une dimension est ∏ C. Mais il se peut que certains sous domaines d’un attribut soient regrouper dans le même sous domaine ce qui permet de générer un nombre de fragments dimension inférieur à ∏ C. Afin d’exprimer cela, les auteurs (Boukhalfa, et al., 2008a) proposent un codage du schéma de fragmentation. Ce codage permet de représenter le schéma de fragmentation sous forme d’un tableau. Chaque ligne représente un attribut et ces sous domaines. Chaque sous domaine sera numéroté. Les domaines qui possèdent le même numéro vont être regroupés en un seul sous domaine. Si tout les sous domaines d’un attribut possèdent la même valeur, l’attribut ne participe pas à la fragmentation Exemple 24 : la figure suivante représente le codage d’un schéma de fragmentation
Mois Janvier (0) Février (0) Mars (0) Avr,…, Déc (0) Age [0, 20[ (0) [20, 70] (1)
Genre F (0) M(1)
Classe A (0) B (2) C(1) D(1)
Figure III-11 : Codage d’un schéma de fragmentation
Ce codage montre que les dimensions concernées par la fragmentation sont Client et Produit. Le partitionnement en sous domaine des domaines des attributs est le suivant :
Age :{ [0, 20[} et {[20, 70]}, Genre : {F}, {M}, Classe : {A}, {B} et {C, D}.
III.5.1.3 Sélection d’un schéma de fragmentation par algorithme génétique
Afin d’effectuer la sélection d’un schéma de fragmentation, nous adoptons un algorithme génétique qui exploite le modèle de coût défini pour la fragmentation. Le chromosome de l’algorithme représente un schéma de fragmentation. Chaque chromosome comporte des gènes composites et chaque gène composite contient n gènes simples. Chaque gène composite est un attribut et chaque gène simple est un sous domaine d’attribut (Boukhalfa, et al., 2008a).
L’implémentation de l’algorithme génétique est faite par une APT JAVA nommée JGAP (Java Genetic Algorithms Package)
Nous disposons de tous les éléments requis afin de spécifier l’algorithme de sélection d’un schéma de fragmentation par algorithme génétique :
Chapitre III : Nouvelle démarche de sélection d’index et de fragmentation
85 Algorithme de sélection d’un schéma de fragmentation (Algorithme 3)
Entrée :
A : Tableau d’attributs de sélection
SD : Tableau à deux dimensions des sous domaine de A W : nombre de fragments maximum
ED : ensemble de données relatif au modèle de coût (taille de table, de page système etc) D : ensemble de table de dimension
F : table de fait Sortie :
Jq: schéma de fragmentation Notation :
SFinitial : schéma de fragmentation initial
P0 : population initiale de chromosome
Fitness_FH : fonction objectif pour le génétique SF : schéma de fragmentation optimal
Début
SD = Complet (A, SDi) /* compléter les domaines de chaque attribut*/
SFinitial = Générer_SF (A, SDi) /* codage des domaines d’attributs*/
P0 = Genetic_Population(SFinitial)
Fitness_FH = Genetic_FitnessFonction (A, W, ED) SF = Genetic_GetBestSolution (A, SD, P0, Fitness_FH) FHPrimaire (SF, D) /* fragmentation primaire des dimensions
FHDérivée (D, F) /* fragmentation dérivée de la fait suivant la FH des dimensions Fin