• Aucun résultat trouvé

d’allocation

L’approche F &A consiste à partitionner l’entrepôt de données et à allouer les fragments générés sur les nœuds de la grappe de machines simultanément, Il nous faut donc une procédure de fragmentation et une autre d’allocation. Comme les deux problèmes sont connus NP-complet [125, 89, 14], les implémentations actuelles proposent très souvent la réalisation de solutions

sous-optimales afin de réduire la complexité de calcul.

Afin de traiter le problème de conception d’EDP sur les grappes de bases de données, deux grandes classes de méthodes sont possibles: la conception itérative et des la conception

combinée.

Les méthodes de conception itérative ont été proposées dans le cadre des bases de données distribuées et parallèles traditionnelles. L’idée sous-jacente consiste à fragmenter l’EDP en uti-lisant un algorithme de partitionnement, puis à allouer les fragments générés au moyen d’ un

algorithme d’allocation. Généralement, chaque algorithme de partitionnement et d’allocation a

son propre modèle de coût. Le principal avantage de ces méthodes traditionnelles est qu’elles sont facilement applicables à un grand nombre d’environnements parallèles et distribués dans des environnements hétérogènes (par exemple, les bases de données Peer-to-Peer ). Leur princi-pal inconvénient est qu’elles négligent l’interdépendance entre le partitionnement des données et l’allocation de fragment. En effet, la fragmentation et l’allocation prennent en compte les exigences d’accès aux données et visent à obtenir, autant que possible, l’accès minimal aux références de données locales. Ainsi, il n’est pas possible de déterminer la fragmentation et l’al-location optimale qui résout les deux problèmes indépendamment, car ils sont interdépendants.

4.2. F &A: une démarche conjointe de fragmentation et d’allocation

Pour dépasser les limitations découlant de ces méthodes, la méthode F &A traite

conjoin-tement les problèmes de fragmentation et d’allocation. Plus précisément, durant la phase de

fragmentation, F &A exploite deux meta-heuristiques, l’algorithme Hill Climbing (HC) [55] et l’Algorithme Générique (GA) [78], que nous adaptons. Lors de la phase d’allocation, F &A introduit une formalisation basée sur les matrices qui est capable de capturer les interactions entre les fragments, les requêtes d’entrée et les caractéristiques des nœuds de la grappe de machines (c’est-à-dire la puissance de traitement et la capacité de stockage), et d’effectuer l’al-location des tâches selon le schéma d’all’al-location résultant. Comme notre approche d’all’al-location est un algorithme basé sur les affinités, nous l’appelons F &A-ALLOC. En outre, contrairement à l’approche itérative qui utilise deux différents modèles de coûts pour effectuer la fragmentation et l’allocation séparément, F &A fait usage d’un seul modèle de coût, (voir chapitre 3), qui sur-veille le schéma de fragmentation généré. Ce schéma "est utile" pour le processus d’allocation

réel.

Dans ce qui suit, nous présentons une formalisation de notre approche de conception comme un problème d’optimisation à contraintes. Ensuite, nous présentons un algorithme de fragmen-tation et d’allocation pour le résoudre.

4.2.1 Formalisation du problème

Le problème de la conception d’un entrepôt de données parallèle sur une grappe de bases de données hétérogène peut être décrit comme un problème d’optimisation à contraintes.

Etant donné une charge de requêtes de jointure en étoile Q, un schéma en étoile d’un entrepôt de données DWS et une grappe de base de données DBC, la sélection de la concep-tion la plus approprié pour DWS consiste à fragmenter la table de faits F de DWS en NF fragments et de les allouer sur les différents nœuds de la grappe de machine DBC pour réduire le coût d’exécution de requêtes de Q sur DBC et satisfaire les contraintes de stockage et de maintenance.

Formellement, soient

– un entrepôt schéma de données DWS composé d’une table de faits F et d tables de dimensions D = {D1, D2, . . . , Dd} (comme dans [64, 97], nous supposons que toutes les tables de dimension sont répliquées sur les nœuds de la grappe de bases de données et résident dans leurs mémoires centrales);

– une grappe de bases de données DBC à M nœuds N = {N1, N2, . . . , NM}, chaque nœud

Nm, avec 1 ≤ m ≤ M , ayant une capacité de stockage Smet une puissance de traitement

PM, exprimée en nombre d’opérations traitées dans une unité de temps;

– une charge de requêtes de jointure en étoile Q = {Q1, Q2, . . . , QK} qui sera exécutée sur les M de DBC, chaque requête Ql avec 1 ≤ l ≤ L, étant caractérisée par une fréquence

d’accès fl.

allouons simultanément afin de réduire le coût d’exécution de requêtes sur les M nœuds de la grappe DBC : Minimiser K X k=1 fk× Cost(Qk). (4.1)

Nous avons trois contraintes.

– Allocation non redondante. Une seule copie de chaque fragment Fi(1 ≤ i ≤ N F ) est stockée sur tous les nœuds de la grappe DBC. Pour illustrer cette contrainte, nous intro-duisons une variable de décision binaire xij telle que xim = 1 si le fragment Fi est alloué sur le noeud Nm de N et xim= 0 sinon. Ainsi, la contrainte d’allocation non redondante peut être formellement modélisée comme suit:

∀1 ≤ i ≤ NF :

M X m=1

xim= 1. (4.2)

– Capacité de stockage. L’espace disponible au niveau de chaque nœud Nm de N est borné par sa capacité de stockage Sm. En conséquence, l’ensemble des fragments stockés dans

Nmne peut pas excéder Sm. Formellement, la contrainte de capacité de stockage s’exprime comme suit : ∀1 ≤ i ≤ NF : M X m=1 xim× T aille(Fi) ≤ Sm. (4.3)

Nous rappelons que la T aille(Fi) désigne la taille du fragment Fi, et qu’elle est calculée comme suit: T aille(Fi) = " ||Fi|| × Tl PS # , (4.4)

où: kFik désigne le cardinal de Fi( le nombre de lignes dans Fi), Tl désigne la longueur de chaque tuple de la table des faits F et PS désigne la taille de la page d’un nœud Nm. La contrainte de stockage peut, donc, s’écrire:

∀1 ≤ i ≤ NF M X m=1 xim×kFik × Tl PS ≤ Sm. (4.5)

– Seuil de fragmentation. Pour éviter l’explosion du nombre de fragments, nous définissions un seuil de fragmentation, noté W qui présente le nombre de fragments autorisées par

4.2. F &A: une démarche conjointe de fragmentation et d’allocation

le concepteur pour sa procédure d’allocation. En d’autres termes, W joue le rôle d’une borne supérieure sur le nombre de fragments autorisés dans l’EDP. La contrainte de maintenance W peut être formellement modélisée comme suit:

NF =

d Y j=1

Mj ≤ W . (4.6)

En résumé, notre principal problème de conception d’un EDP sur une grappe de base de données hétérogènes peut être formellement modélisé ainsi:

MinimiserPL k=1fk× Cost(Qk) Sous : ∀iPM m=1xim×h||Fi||×Tl P S i ≤ Sm ∀iPM m=1xim= 1 Qd j=1Mj ≤ W (4.7)

Dans la section qui suit, nous présentons une nouvelle méthode pour résoudre le problème décrit dans la formalisation 4.7.

4.2.2 Algorithme de conception

Notre approche contient principalement deux phases, nous les détaillons dans ce qui suit.

4.2.2.1 Phase de fragmentation de F &A

La phase de partitionnement est considérée comme le noyau de l’approche F &A. Elle consiste à partitionner horizontalement l’entrepôt de données sur la base des prédicats de la charge de requêtes. Les tables de dimension Dj ( 1 ≤ j ≤ d) sont partitionnées en exploitant les prédicats de sélection des requêtes de la charge Q, le schéma de fragmentation obtenu est noté F S(Dj). Par contre, la table des faits F est partitionnée d’une manière dérivée.

La méthode de partitionnement de table de faits qui découle de cette approche est connue en littérature sous le terme de "partitionnement référentiel". Il a récemment été incorporé dans la couche des systèmes de base de données comme Oracle11g [130] et il est déployable sur les autres SGBD par l’utilisation des vues matérialisées. Il est à noter que la méthode de partitionnement est orthogonale à F &A, ce qui signifie que toute approche de partitionnement, parmi celles disponibles dans la littérature, peut être intégrée dans F &A et utilisée comme méthode de référence. Cette particularité donne plus de mérite à l’approche F &A car elle peut

être considérée comme une approche générique facilement utilisable dans différents contextes applicatifs.

4.2.2.1.1 modèle d’un schéma de fragmentation Pour sélectionner le meilleur schéma de fragmentation de l’entrepôt de données, nous utilisons le concept de schéma de fragmentation

candidat. Généré lors de l’exécution de l’algorithme de mise en œuvre de F &A, il peut être

choisi comme la solution finale représentée par l’ensemble des NF fragments des faits qui seront alloués sur les nœuds de la grappe de bases de données.

La structure d’un schéma de fragmentation candidat doit être choisie avec soin car elle représente le schéma de fragmentation en mémoire. La taille de cette structure peut donc impacter négativement l’algorithme proposé.

Dans notre stratégie, la fragmentation se base sur la fragmentation des tables de dimension, donc, nous nous intéressons uniquement au schéma de fragmentation des tables de dimension pour réduire la taille de la structure représentant le schéma de fragmentation candidat.

Notre schéma de fragmentation candidat peut être présenté comme un tableau

multidimen-sionnel, où chaque ligne représente le schéma de partitionnement d’un attribut d’une table de

dimension qui participe au partitionnement. La valeur de chaque cellule d’un tableau donné représentant un attribut Aj appartient à l’intervalle [1..ni], où ni est le nombre de sous do-maines de l’attribut Aj. Le schéma de fragmentation de chaque table est généré comme décrit dans la thèse de Kamel Boukhalfa [32].

1. Enumération des prédicats de sélection. Cette étape consiste à énumérer tous les prédicats de sélection simples utilisés par les L requêtes de départ. Chaque prédicat de sélection est défini par : A θ V aleur tel que A est un attribut d’une table et θ ∈ {=, ≺, , ≤, ≥}, et V aleur ∈ Domaine(A)

2. Attribution des prédicats aux tables. Les prédicats de sélection trouvés dans l’étape précédente sont définis a priori sur l’ensemble des tables. L’objectif de cette phase est d’attribuer à chaque table Di(1 ≤ i ≤ d) un ensemble de prédicats simples SSP Di. 3. Identification des tables à fragmenter. Cette étape consiste à identifier les tables de

dimensions à fragmenter. Pour ce faire, toute table Di ayant un SSP Di vide, ne sera pas prise en compte dans le processus de fragmentation. Soit Dcandidat l’ensemble des tables ayant un SSP Di non vide. Soit g le cardinal de l’ensemble Dcandidat.

4. Vérification des règles de complétudes et de minimalité. L’objectif de cette étape est de s’assurer que si une table est fragmentée en au moins deux fragments, elle sera accédée différemment par au moins deux applications [119]. Pour atteindre cet objectif, nous appliquons l’algorithme COM-MIN [116] à chaque table Di appartenant à l’en-semble Dcandidat. L’algorithme fournit en sortie une forme complète et minimale de ces ensembles.

5. Fragmentation des tables. Chaque table appartenant à l’ensemble Dcandidat est par-titionnée. Tout attribut participant dans le processus de partitionnement est nommé

attribut de fragmentation. Le partitionnement du domaine de chaque attribut peut être

représenté par un tableau multidimensionnel, où chaque ligne représente le partitionne-ment du domaine de l’attribut de fragpartitionne-mentation. La valeur de chaque cellule d’un tableau

4.2. F &A: une démarche conjointe de fragmentation et d’allocation

donné représentant un attribut Ai appartient à l’intervalle [1 . . . ni], où ni représente le nombre de sous domaines de l’attribut Ai. En se basant sur cette représentation, le schéma de fragmentation de chaque table est généré comme suit. [11]

– Si toutes les cellules d’un attribut donné ont des valeurs différentes, alors tous les sous-domaines sont considérés pour fragmenter la table correspondante.

– Si toutes les cellules d’un attribut donné ont la même valeur cela signifie que cet attribut ne participe pas au processus de fragmentation.

– Si certaines cellules d’un attribut ont la même valeur, alors leurs sous-domaines cor-respondants sont fusionnés en un seul.

Ainsi, la table F est alors fragmentée en fonction de tous les schémas de fragmentation des tables de l’ensemble Dcandidat. Chaque fragment horizontal Fi de la table F est défini de la manière suivante : Fi = F n D1j n D2k. . . , D3k

Exemple 4. Supposons que le partitionnement de l’entrepôt APB-1 version II est entraîné par