• Aucun résultat trouvé

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

Documents relatifs