Barka Ahlem
Barka Ahlem
Barka Ahlem
DÉPARTEMENT D’INFORMATIQUE
SUJET
Promotion : 2015/2016
Remerciements
A tous les gens qui ont aidés du pré et du loin pour réaliser ce
modeste travail.
- Bibliographique ....……..………………………………………………………… 53
-Annexes………………………………………………………………………………… 58
Liste des figures
Figure I.1 : Architecture d’un entrepôt de données.
Figure I.2 : Magasins de données (datamarts).
Figure I.3 : Schémas en étoile.
Figure I.4 : Schémas en flocons.
Figure I.5 : exemple d’un cube de données.
Figure I.6 : Table multidimensionnelle (Visualisation d’une ‘tranche’ du cube).
Figure I.7 : Classification des techniques d’optimisation.
Figure I.8: Index Bitmap.
Figure I.9: Index B-Arbre.
Figure I.10 : Fragmentation verticale.
Figure I.11 : Le processus de sélection des vues matérialisées.
Figure I.12: Fragmentation Horizontale.
Figure I.13 : fragmentation mixte.
Figure II.1 : Exemple d’une fragmentation primaire et dérivée.
Figure II.2 : Approche basée sur les prédicats.
Figure II.3 : Approche basée sur les affinités.
Figure II.4 : Approche basée sur un modèle de coût.
Figure III.1 : Les cinq niveaux d’organisation d’un algorithme génétique.
Figure III.2 : Exemple de croisement à un point.
Figure III.3 : Exemple de croisement à deux points.
Figure III.4 : Exemple une mutation.
Figure III.5 : Exemple de codage.
Figure III.6 : Exemple de croisement
Figure III.7: Exemple de Mutation.
Figure IV.1 : Visual Studio 2012.
Figure IV.2 : Oracle.
Figure IV.3 : Oracle Développer.
Figure IV.4 : Schéma de l’entrepôt utilisé APB benchmark
Figure IV.5 : Procédure de travail.
Figure IV.6 : Architecture de l’application
Figure IV.7 : Diagramme de cas d’utilisation.
i
Figure IV.8 : Visualisation d’entrepôt de données.
Figure IV.9 : Analyse des requêtes.
Figure IV.10 : Fenêtre d’application de GA et GA+RS.
Figure IV.11 : Exemple d’application de l’AG et l’AG+RS.
Figure IV.12 : Évaluation de coûts d’exécutions en fonction de nombre d’itérations.
Figure IV.13 : Évaluation de taux d’amélioration en fonction de nombre d’itérations.
ii
Liste des Tables
Table I.1 : Base de données vs Entrepôt de données.
Table I.2 : Comparaison entre OLTP et OLAP.
Table II.1 : Matrice d'usage des sous-domaines de l'attribut Ville.
Table II.2 : Matrice d'affinité des sous-domaines de l'attribut Ville.
Table IV.1 : Taille des tables.
Table IV.2 : Résultats d’exécutions d’AG et AG + RS avec le taux d’amélioration.
iii
Liste des Algorithmes
Algorithme III.1 : Algorithme génétique générique.
iv
Introduction
générale
Introduction générale
De nos jours, les entrepôts décisionnels d’entreprise constituent des ressources critiques.
Avec l’évolution des exigences métiers, ils doivent gérer des volumes et des vitesses de
données sans cesse grandissants. Les entrepôts sont construits autour d’une table de faits,
souvent très volumineuse, qui peut atteindre plusieurs téraoctets, entourée de plusieurs
tables de dimensions qui contiennent les axes d’analyse relativement aux indicateurs ou
mesures contenus dans la table des faits. Ces derniers sont accédés par des requêtes
décisionnelles complexes caractérisées par de multiples opérations de sélection, de jointure
et d’agrégation. Pour optimiser ces requêtes, l’administrateur est amené à effectuer une
tâche importante dans la conception physique, durant cette phase l’administrateur choisit
un ensemble de techniques d’optimisation à sélectionner.
La fragmentation horizontale est une structure non redondante d'optimisation de
requêtes OLAP. Dans le cadre de ce mémoire, nous formalisons d'abord le problème de
sélection d'un schéma de fragmentation pour un entrepôt de données relationnel comme un
problème d'optimisation. Nous proposons ensuite une méthode hybride combinant un
algorithme génétique AG et un algorithme de recuit simulé RS.
Ce mémoire est organisé de la manière suivante : Chapitre 01 est consacré aux
définitions des concepts fondamentaux d’entrepôt de données, aussi aux techniques
d’optimisations des requêtes. Le deuxième chapitre présente d’une façon détaillée la
technique d’optimisation Fragmentation Horizontale FH dans les entrepôts de données. Et
concerne le troisième chapitre nous avons spécifié le problème générale qui on vas le
traité, et après l’application des algorithmes génétique et des recuit simulé sur ce problème,
Nous présentons aussi dans ce chapitre le modèle de coût utilisé. Dans le quatrième
chapitre, nous avons présenté nos résultats de validation sur un banc d’essai APB-1 et un
ensemble de 8 requêtes. Enfin, une conclusion rappelle la problématique étudiée ainsi que
les résultats obtenus. Cette conclusion nous a permis de lister quelques perspectives de
prolongement de nos travaux.
1
CHAPITRE I
Entrepôts de données : Concepts Fondamentaux
Chapitre I : Entrepôts de données : Concepts Fondamentaux
1 Introduction
L’entrepôt est le lieu de stockage centralisé d’un extrait des sources. Il historie les données
utiles pour la décision. Son organisation doit faciliter la gestion efficace des données et la
conservation des évolutions. Ils sont manipulent généralement des données d’une taille de
plusieurs Téraoctets.
Dans ce chapitre on va présenter d’une part, les concepts fondamentaux de l’entrepôt de
données, ses caractéristiques, son architecture et ses principes de modélisation. D'autre part,
nous devons donner un aperçu sur les techniques d’optimisation des requêtes dans les
entrepôts de données.
2 L’entrepôt de donnée (ED)
2.1 Définition
Un entrepôt de données est une structure informatique dans laquelle est centralisé un
volume important de données consolidées à partir des différentes sources de renseignements
d'une entreprise et qui est conçue de manière que les personnes intéressées aient accès
rapidement à l'information stratégique dont elles ont besoin [1]. Il faut noter que l’entrepôt de
données est généralement destiné aux décideurs de l’entreprise souvent non spécialistes de
l’informatique. L’entrepôt doit être muni d’interfaces graphiques adaptées à des utilisateurs
non informaticiens [7]. Les points clefs garantissant le succès d'un entrepôt de données sont
les suivants :
Les informations d'un entrepôt de données doivent être accessibles et fiables (de
qualité).
La conception d'un entrepôt de données doit répondre à un besoin de ROI1 élevé
(Return On Investment, retour sur investissement).
La réponse aux demandes très diverses des utilisateurs.
L’entrepôt de données doit évoluer avec les besoins des utilisateurs et du système
d'information [14].
2.2 Caractéristiques
Les caractéristiques d’un entrepôt de données (datawarehouse) peuvent donc se résumer
comme suit :
2. Il les compile et les prépare pour une réutilisation dans un but de data mining.
1
La notion de ROI est très présente pour mesurer la rentabilité des actions de marketing, notamment dans les
domaines du marketing direct et du marketing digital.
2
Chapitre I : Entrepôts de données : Concepts Fondamentaux
3. Il ne modifie pas les données mais les analyse pour créer de l’information nouvelle.
4. Ses finalités sont généralement d’ordre statistique mais peuvent être très variées et
3
Chapitre I : Entrepôts de données : Concepts Fondamentaux
4
Chapitre I : Entrepôts de données : Concepts Fondamentaux
décisionnel après qu’elles ont subi des opérations de sélection, de nettoyage et de reformatage
dans le but de les homogénéiser. Cette phase constitue une étape importante et très
Nettoyage et Transformation.
Intégration.
Chargement.
5
Chapitre I : Entrepôts de données : Concepts Fondamentaux
Critère
Online Transaction Processing Online Analytical Processing
(OLTP) (OLAP)
6
Chapitre I : Entrepôts de données : Concepts Fondamentaux
7
Chapitre I : Entrepôts de données : Concepts Fondamentaux
8
Chapitre I : Entrepôts de données : Concepts Fondamentaux
• Avantages
Réduction du volume.
Première des analyses par pallier (drill down) sur la dimension hiérarchisée.
• Inconvénients
Navigation difficile.
Nombreuses jointures [32].
3.1.2.3 Modèle en constellation
La constellation de faits permet de représenter plusieurs tables de faits partageant
quelques tables de dimension [35]. Ces différentes relations de faits composent une famille
qui partage les dimensions mais où chaque relation de faits a ses propres dimensions [10]. Un
modèle en constellation comprend donc plusieurs faits et des dimensions communes ou non
[23].
3.2. Modélisation logique
La conception logique d’un entrepôt de données vise à organiser et classer les informations
des sources de données par sujet fonctionnel. Elle est préliminaire à la modélisation
dimensionnelle où chaque sujet correspond à une table gérée au sein de l’entrepôt. Ce dernier
permet d’isoler les données stratégiques et de conserver les métadonnées. L’interrogation des
entrepôts de données se fait par des requêtes OLAP. Ces requêtes correspondent à une
structuration des données selon plusieurs axes d’analyse pouvant représenter des notions
variées telles que le temps de la localisation géographique ou le code identifiant des produits.
Les modèles de conception des systèmes transactionnels ne sont pas adaptés à ce type de
requêtes complexes qui utilisent beaucoup de jointures, demandent beaucoup de temps de
calcul et sont de nature ad hoc. Pour ce type d’environnement, une nouvelle approche de
modélisation a été suggérée: les modèles multidimensionnels [43].
3.2.1 les modèles multidimensionnels
Le modèle multidimensionnel permet d’organiser les données selon des axes représentant
des éléments essentiels de l’activité d’une entreprise. Trois niveaux de représentation des
données sont définis dans le processus décisionnel : l’entrepôt qui regroupe des données
transversales à l’ensemble des métiers de l’entreprise, le magasin de données qui est une
représentation verticale des données portant sur un métier particulier et enfin le cube de
données (ou hypercube). Le cube correspond à une vue métier où l’analyste choisit les
mesures à observer selon certaines dimensions. Un cube est une collection de données
agrégées et consolidées pour résumer l’information et expliquer la pertinence d’une
9
Chapitre I : Entrepôts de données : Concepts Fondamentaux
observation. Le cube de données est exploré à l’aide de nombreuses opérations qui permettent
sa manipulation [8].
10
Chapitre I : Entrepôts de données : Concepts Fondamentaux
peuvent stocker de grands volumes de données, mais ils peuvent présenter un temps de
réponse élevé. Leurs principaux avantages sont la facilité d’intégration dans les SGBDs
relationnels existants et une bonne efficacité pour stocker les données multidimensionnelles
[21].
3.2.1.2 Modèle M-OLAP (Multidimensional-On Line Analytical Processing)
Une alternative à ces deux approches consiste à utiliser un système multidimensionnel
"pur" qui gère des structures multidimensionnelles natives ; on parle de l'approche MOLAP.
Les structures multidimensionnelles natives utilisées sont des tableaux à n dimensions. Dans
la littérature, les termes de cube, hypercube et table multidimensionnelle sont utilisés de
manière interchangeable. Nous utiliserons le terme d'hypercube pour désigner des structures
à deux, trois ou à plus de trois dimensions. Cette approche permet de stocker les données de
manière multidimensionnelle. L'intérêt est que les temps d'accès sont optimisés, mais cette
approche nécessite de redéfinir des opérations pour manipuler ces structures
multidimensionnelles [34].
3.2.1.3 Model H-OLAP (Hybrid - On Line Analytical Processing)
Ce modèle réunit les avantages des deux modèles M-OLAP et R-OLAP en diminuant leurs
inconvénients. Il est utilisé surtout dans les outils commerciaux (Oracle Application Server,
Microsoft Analyses Services). Il consiste à stocker les données détaillées dans des tables
relationnelles (comme le modèle R-OLAP), tandis qu’il stocke les données agrégées sous une
forme multidimensionnelle (comme le modèle MOLAP) [33].
3.3 La conception physique des entrepôts de données
La conception physique d’une base ou entrepôt de données consiste à établir une
configuration physique sur le support de stockage. Cela comprend la spécification détaillée
des éléments de données, les types de données et la sélection des techniques d’optimisation.
Cette dernière est au cœur de la conception physique. Dans la première génération de moteurs
d’exécution de requêtes dédiés aux bases de données traditionnelles, la conception physique
n’avait pas autant d’importance. Aujourd’hui face à la complexité des requêtes à traiter et le
volume important des données, la conception physique a reçu une importance phénoménale
[15].
4 Choix des techniques d’optimisation
Si nous explorons la littérature et les éditeurs de gestion de bases de données
commerciaux, nous trouvons une large panoplie de techniques d’optimisation qui peuvent être
redondantes ou non. Les techniques redondantes nécessitent un espace de stockage et un coût
11
Chapitre I : Entrepôts de données : Concepts Fondamentaux
de maintenance (les vues matérialisées, les index avancées, la fragmentation verticale, etc.)
par contre les techniques non redondantes ne nécessitant ni espace de stockage ni coût de
maintenance (la fragmentation horizontale, le traitement parallèle, etc.). Pour optimiser les
requêtes définies sur l’entrepôt, l’AED peut choisir une ou plusieurs techniques parmi ces
deux catégories. Ce choix est souvent difficile dû au fait que certaines techniques sont
bénéfiques pour certaines requêtes et non pas pour d’autres [8].
12
Chapitre I : Entrepôts de données : Concepts Fondamentaux
C'est un type d'index qui permet de trouver rapidement les lignes répondant à un critère
particulier. Il est aussi utile pour combiner facilement plusieurs critères. Par exemple, si on a
des index bitmap sur la ville et sur le sexe, on peut combiner les bitmaps avec un ˄ (et)
logique pour obtenir directement la liste des étudiantes habitant Dijon [10].
13
Chapitre I : Entrepôts de données : Concepts Fondamentaux
o Root ou racine: plus haut niveau de l’index pointe vers les niveaux suivants
des nodes branches.
o Nœuds intermédiaires ou branches : contiennent des pointeurs vers le niveau
suivant des branches ou vers les nœuds de feuilles.
o Nœud de feuilles ou leaf nodes : le plus bas niveau de l’index pointe vers
d’autres nœuds de feuilles [20].
4.1.1.3 Les index de jointure binaires
L’IJB sert à précalculer les jointures entre une ou plusieurs tables de dimension et la table
des faits dans les entrepôts de données modélisés par un schéma en étoile. Au contraire des
index binaires standards où les attributs indexés appartiennent à la même table, l’IJB est défini
sur un ou plusieurs attributs appartenant à plusieurs tables. Plus précisément, il est défini sur
la table des faits en utilisant des attributs appartenant à une ou plusieurs tables de dimension.
Pour montrer comment un IJB est construit, supposons un attribut A ayant n valeurs
distinctes V1, V2, …, appartenant à une table de dimension D, supposons que la table des
faits F est composée de m instances. La construction de l’index de jointure binaire défini sur
l’attribut A se fait de la manière suivante:
1. Créer n vecteurs composés chacun de m entrées.
2. Le ième bit du vecteur correspondant à une valeur est mis à 1 si le n-uplet de
rang i de la table des faits est joint avec un n-uplet de la table de dimension D tel que la valeur
de A de ce n-uplet est égale à . Il est mis à 0 dans le cas contraire [14].
La fragmentation est une technique de conception logique utilisée dans les modèles
relationnels et objet. Elle consiste à partitionner le schéma d'une base de données en plusieurs
sous-schémas dans le but de réduire le temps d'exécution des requêtes [20]. L’unification
respecte la règle de reconstruction d’une table fragmentée à partir de ses fragments verticaux
et vise à réduire la redondance des vues. Les auteurs supposent que leur approche peut être
bénéfique pour la distribution de l’entrepôt sur une architecture parallèle et proposent de
combiner leur algorithme de fragmentation avec un algorithme d’allocation des fragments sur
les nœuds distants [44].
14
Chapitre I : Entrepôts de données : Concepts Fondamentaux
15
Chapitre I : Entrepôts de données : Concepts Fondamentaux
calculée à partir des valeurs d'autres cellules. Dans le cas d'un système ROLAP, on trouve
également cette dépendance dans les arbres algébriques. Il est alors souhaitable de
matérialiser les parties partagées (cellules ou nœuds) par plusieurs requêtes. Cette approche a
pour but de sélectionner les cellules ou les nœuds partagés. Cette solution semble la plus
intéressante par rapport aux deux approches précédentes [27].
16
Chapitre I : Entrepôts de données : Concepts Fondamentaux
17
CHAPITRE II
La fragmentation horizontale dans les entrepôts de
données
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
1 Introduction
La fragmentation horizontale FH vise à restructurer les données afin de faciliter leur
exploitation et interrogation par les requêtes décisionnelles. Elle permet de répartir les
instances d'une table, d'un index ou d'une vue matérialisée en un ensemble de partitions
disjointes appelés fragments horizontaux [6]. Le grand avantage tiré de cette structure revient
au non duplication des données par rapport aux autres structures, une caractéristique qui
participe directement à une réduction de coût de mises à jour. La fragmentation horizontale
peut être combinée avec les autres structures, et elle est de deux types primaire et dérivée
[23]. Dans ce chapitre en va présenter généralement la fragmentation horizontale FH, et
déterminer le problème de sélection d’un schema de FH.
2 La fragmentation horizontale FH
La fragmentation consiste à diviser un ensemble de données en plusieurs partitions, appelées
fragments, de manière à ce que la combinaison des fragments recouvre l'intégralité des données
sources sans ajout ni perte d'information [25]. La fragmentation horizontale se base sur la
répartition des tuples d’une table en plusieurs sous-ensembles suivant des critères de
fragmentation. Ces critères sont des prédicats de sélections définis sur un ensemble d’attributs
de fragmentation. Ainsi, la définition d’un schéma de fragmentation revient à répartir ces
prédicats en sous-ensembles où chaque sous ensemble permet de définir un fragment [21].
La fragmentation horizontale dans les entrepôts de données relationnels est plus difficile que
celle dans les bases de données relationnelles et objets. Pour fragmenter une table de faits,
l’administrateur de l’entrepôt de données (DWA) doit exécuter les étapes suivantes :
1. Sélectionner la (les) table(s) de dimension participant dans le processus de
fragmentation de la table de faits.
2. Décomposer ces tables de dimension.
3. Utiliser leurs schémas pour fragmenter la table de faits [18].
Il existe deux types de fragmentation horizontale.
2.1 Fragmentation primaire
La fragmentation horizontale primaire permet de répartir les tuples d'une table suivent la
conjonction de prédicats de sélection définis sur les attributs de la même table. Elle favorise les
opérations de sélection portées sur les attributs de fragmentation, car pour exécuter une requête
qui contient un prédicat de sélection sur un attribut de fragmentation, l'optimiseur ne charge
que les fragments concerné par le prédicat de sélection .Elle est réalisée grâce à l'application de
l'opération de restriction sur les tuples de la table à fragmenter [36].
18
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
1
Une requête qui consulte plusieurs lignes de la même ou de différentes tables en même temps est appelée requête de
jointure.
19
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
20
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
4 Le Procédure de FH
Pour illustrer cette procédure de fragmentation, nous considérons un schéma en étoile avec
trois tables de dimension : Client, Temps et Produit et une table de fait Ventes. Supposons que
la table de dimension Client est fragmentée en deux fragments Client1 et Client2 définis par les
clauses suivantes : Client1 = ¾Sexe=′M′ (Client) et Client2 = ¾Sexe=′F′ (Client). Ce type de
fragmentation est supporté par les SGBDs commerciaux. Cette fragmentation est matérialisée
par la clause SQL suivante :
- CREATE TABLE Client (NC number(4), Cnom varchar2(14), Sexe varchar2(1))
- PARTITION BY LIST (Sexe) (PARTITION Client1 values (’M’), PARTITION
Client2 values (’F’)) ;
La table de faits Ventes peut être fragmentée en deux fragments Ventes1 et Ventes2 définis
par : Ventes1 = Ventes ⋉ Client1 et Ventes2 = Ventes ⋉ Client2, où ⋉ représente l’opération
de semi-jointure.
Ce processus de fragmentation génère deux sous schémas en étoile S1 et S2 tels que : S1 :
(Ventes1, Client1, produit, temps) (activités de ventes réalisées par les clients masculins
seulement) et S2 : (Ventes2, Client2, produit, temps) (activités de ventes réalisées par les
clientes féminine seulement).
Le nombre de fragments horizontaux de la table de faits (noté N) généré par cette procédure
de fragmentation est donné par : N =∏ , où mi et g représentent respectivement le
nombre de fragments de la table de dimension Di, et le nombre de tables de dimension
participant dans le processus de fragmentation. Ce nombre peut être très grand [22]. En
conséquence, au lieu de gérer un seul schéma en étoile, doit gérer N sous schémas en étoile. Il
lui sera très difficile de maintenir tous ces sous schémas.
La fragmentation peut améliorer l’exécution de la jointure entre la table des faits et les tables
de dimension. Si par exemple, l’administrateur veut exécuter une requête OLAP avec des
opérations d’agrégation ne concernant que les clientes, la jointure entre table des faits Ventes et
la table de dimension Client se traduit par une jointure entre Vente2 et Client2. Parallèlement,
la fragmentation pourrait être concurrente dans l’utilisation aux index de jointure binaires (bit
map join indexes). L’index de jointure est construit en traduisant les restrictions à la valeur de
la colonne de la table de dimension [16]. Nous pouvons construire un index de jointure binaire
afin d’optimiser la requête précédente [16] :
CREATE BITMAP INDEX IJB
ON Client (Sexe)
21
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
22
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
fragmenter et un ensemble de prédicats ou de requêtes les plus fréquentes ainsi que leurs
fréquences d’accès et donnent en sortie un schéma de fragmentation horizontale de la table.
[15]
6.1 Algorithmes basées sur les prédicats
Le principe de ces Algorithmes revient à identifier les sous-ensembles des prédicats
contenus dans les tables de dimensions à condition que ces prédicats garantissent la minimalité
(disjonction des fragments obtenus deux à deux) et la complétude (possibilité de la
reconstruction d’une relation à l’aide de l’union de l’ensemble des fragments la constituant).
Ces sous-ensembles sont exploités ensuite pour la fragmentation dérivée [28].
24
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
25
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
26
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
27
CHAPITRE II : La fragmentation horizontale dans les entrepôts de données
7 Conclusion
Pour assurer une bonne conception physique des entrepôts de données, il faut utiliser des
structures redondantes comme les vues matérialisées et l’indexation et des structures non
redondantes comme la fragmentation des données. Dans ce chapitre, nous sommes intéressés à
la fragmentation horizontale des entrepôts de données relationnels, nous avons présenté une
méthodologie complète pour la fragmentation horizontale dans les entrepôts de données
modélisés par des schémas en étoile, on appelle ce formalisme Problème d’optimisation.
28
CHAPITRE III
Métaheuristiques et fragmentation d’entrepôt de
données
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
1 Introduction
Les métaheuristiques 1 sont généralement des méthodes bio-inspirées 2 , elles forment
aujourd'hui la majorité des algorithmes utilisés pour des problèmes d'optimisation difficile,
dans tous les domaines de recherches, Elles sont généralement utilisées comme des méthodes
génériques pouvant traiter une large gamme de problèmes différents. Dans ce chapitre nous
devons donner premièrement le problème que nous avons traité, et après on va donner une
vue générale sur les deux Métaheuristiques (les algorithmes génétiques AG et les recuits
simulés RS) choisies pour la résolution du problème de sélection de schéma de fragmentation
horizontale d’entrepôt de données pour lequel l’exécution d’une charge de requêtes prend un
temps d’exécution très considérable sans sa fragmentation.
2 Description du problème
Un entrepôt de données stocke de grosses quantités de données consolidées et historisées.
Il est particulièrement conçu pour répondre aux requêtes décisionnelles complexes [16], et la
complexité des requêtes de jointure en étoile engendrent un temps d’exécution important.
Pour réduire ce temps, l’administrateur de l’entrepôt (AED) doit sélectionner un ensemble de
techniques d’optimisation [15]. La problématique traitée dans ce chapitre s’articule sur la
Sélection de Schéma de Fragmentation horizontale : La plupart des approches proposées
partitionne des tables en fonction des fréquences d'accès des prédicats de sélection et ne
contrôle pas le nombre de fragments généré.
Comment sélectionner un schéma de fragmentation horizontale optimisant une charge
de requêtes et générant un nombre de fragments fixé par l’AED?
Pourquoi avons-nous besoin de tels algorithmes ?
Certains problèmes sont trop complexes pour que l'on puisse proposer un algorithme, ou
lorsqu'il n'y a aucune méthode exacte pour les résoudre, d'une modélisation délicate et/ou
confuse où la solution au problème est inconnue. Ou alors un algorithme tolérant aux
variations de données, susceptible de s'adapter à une nouvelle situation, pour qu'il évolue. Par
exemple, comment effectuer le déplacement d'un robot ? Comment faire réagir ce robot suite
à une bousculade, une perte d'équilibre ? Comment adapter le comportement du robot face au
danger ? [52]
1
Une métaheuristique est un algorithme d’optimisation visant à résoudre des problèmes d’optimisation
difficile. Terminologie : On parle de méta, du grec μετά « au-delà » (comprendre ici « à un plus haut niveau »),
heuristique, du grec εὑρίσκειν / heuriskein, qui signifie « trouver ».
2
Inspirées des principes de la biologie. Une informatique bio-inspirée est un système ou une architecture dont
l'organisation est issue de la connaissance que l'on a du fonctionnement des systèmes vivants.
29
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
30
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
meilleures performances [4], et voici un algorithme plus détaillé d’un algorithme génétique
[2] :
Algorithme III.1 : Algorithme génétique générique
Début
1. Initialiser les paramètres nécessaires ;
2. Initialiser une population de N individus ;
3. Évaluer les N individus ;
4. Tant que la condition d’arrêt n’est pas satisfaite faire
1. Utiliser l’opérateur de sélection pour sélectionner K individus ;
2. Appliquer l’opérateur de croisement sur les K individus avec la probabilité Pc ;
3. Appliquer l’opérateur de mutation sur les individus avec la probabilité Pm ;
4. Utiliser l’opérateur d’évaluation pour évaluer les enfants obtenus ;
5. Utiliser l’opérateur de sélection pour remplacer quelques individus parents par
des individus enfants ;
Fin Tant que
5. Retourner la ou les meilleures solutions ;
Fin
31
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
Un chromosome: est un ensemble de gènes, présentés dans un ordre donné de
manière qui prend en considération les contraintes du problème à traiter. Par exemple,
dans le problème du voyageur de commerce, la taille du chromosome est égale au
nombre de villes à parcourir. Son contenu représente l’ordre de parcours de différentes
villes. En outre, on doit veiller à ce qu’une ville (représentée par un nombre ou un
caractère par exemple) ne doit pas figurer dans le chromosome plus qu’une seule fois.
Un individu: est composé d’un ou de plusieurs chromosomes. Il représente une
solution possible au problème traité.
Une population: est représentée par un ensemble d’individus (i.e. l’ensemble des
solutions du problème).
Une génération: est une succession d’itérations composées d’un ensemble
d’opérations permettant le passage d’une population à une autre [2].
3.2.1 Le codage des individus
Le premier pas dans l’implantation des algorithmes génétique, Chaque paramètre d'une
solution est assimilé à un gène, toutes les valeurs qu'il peut prendre sont les allèles de ce gène,
on doit trouver une manière de coder chaque allèle différent de façon unique.
Un chromosome est une suite de gêne, on peut par exemple choisir de regrouper les
paramètres similaires dans un même chromosome (chromosome à un seul brin) et chaque
gène sera repérable par sa position : son locus sur le chromosome en question.
Chaque individu est représenté par un ensemble de chromosomes, et une population est un
ensemble d'individus [42].
Un principe de codage de l'élément de population. Cette étape associe à chacun des points
de l'espace d'état une structure de données. Elle se place généralement après une phase de
modélisation mathématique du problème traité. La qualité du codage des données conditionne
le succès des algorithmes génétiques. Les codages binaires ont été très utilisés à l'origine. Les
codages réels sont désormais largement utilisés, notamment dans les domaines applicatifs
pour l'optimisation de problèmes à variables réelles [42].
3.2.2 L’évaluation d’un individu
La fitness d’un individu est calculée par la fonction d’évaluation ; elle mesure son
adaptation à un environnement donné et le but de l’algorithme génétique est de maximiser
cette fonction. Pour résoudre un problème d’optimisation, on prend naturellement la fonction
de coût comme fonction d’évaluation [11].
32
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
3.2.3 Les opérateurs génétiques
Après avoir défini un codage, une population initiale de n individus est générée
aléatoirement. Chaque individu est caractérisé par un chromosome comptant L gènes
et représente un point de l'espace de recherche. L'initialisation de la population peut
donc être réalisée simplement en effectuant n × L tirages au sort binaires, de
manière à générer n chromosomes. Le tirage aléatoire doit avoir une loi de
probabilité uniforme, de façon à obtenir une occupation homogène de l'espace de
recherche. À chaque génération, on évalue la performance de chaque individu de la
population, ce qui nécessite n évaluations de la fonction de coût. Pour un problème
de minimisation, la valeur opposée ou inverse de la fonction de coût peut être choisie.
Ensuite, des opérateurs font évoluer les caractéristiques génétiques de la population, de
manière à explorer l'espace de recherche et favoriser les caractéristiques des meilleurs
individus pour les générations futures [17].
3.2.2.1 L'opérateur de sélection
L’opérateur de sélection permet de sélectionner les meilleurs individus dans la population
pour participer dans la génération de la prochaine population. Les différents types de sélection
qui sont couramment utilisés :
La sélection par roulette : Cette méthode associe chaque individu à sa qualité (valeur
de la fonction d’évaluation). La roulette est partagée entre tous les individus, la surface
allouée à chaque individu est en fonction de la qualité de l’individu. L’implémentation
de cette méthode se fait de la manière suivante :
Calculer la valeur de la fonction d’évaluation de chaque individu et la somme
totale de ces valeurs.
Chaque individu est associé à sa probabilité de sélection (segment de longueur
égal à sa valeur de fitness divisée par la somme des fitness déjà calculée).
Tirer un nombre aléatoire et choisir l’individu dont le segment englobe ce
nombre [15].
La sélection aléatoire : cette sélection ce faire aléatoirement, uniformément et sans
intervention de la valeur d’adaptation. Chaque individu a donc une probabilité
population.
33
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
Sélection par rang : consiste à ranger les individus de la population dans un ordre
croissant ou décroissant, selon l’objectif (fonction fitness).
Sélection par tournoi : On tire deux individus aléatoirement dans la population et on
reproduit le meilleur des deux dans la nouvelle population. On répète la procédure
jusqu’à ce que la nouvelle population soit complète [1].
3.2.2.2 L'opérateur de croisement ou crossover
Le phénomène de croisement est une propriété naturelle de l’ADN 3 . Il a pour objectif
d’enrichir la diversité de la population en manipulant les composantes des individus, c’est
adire les chromosomes. C’est par analogie avec la notion d’hybridation de Darwin qu’a été
conçu cet opérateur. Classiquement, les croisements sont envisagés avec un couple
d’individus parents et génèrent deux enfants. Cet opérateur favorise l’exploration de l’espace
de recherche. Considérons deux gènes A et B pouvant être améliorés par mutation. Il est peu
probable que les deux gènes améliorés A’ et B’ apparaissent par mutation chez un même
individu. Par contre l’opérateur de croisement permettra de combiner rapidement A’ et B’
dans la descendance de deux parents portant chacun un des gènes mutants. Il est alors possible
que la présence simultanée des deux gènes produise un individu encore plus adapté.
L’opérateur de croisement assure donc le brassage du matériel génétique et l’accumulation
des mutations favorables. En termes plus concrets, cet opérateur permet de créer de nouvelles
combinaisons des paramètres des composants [46].
Ci-dessous, un schéma illustrant un croisement en un point, un autre pour un croisement en
deux points.
3
Acide désoxyribonucléique : ADN est le support de l’hérédité car il constitue le génome des êtres vivants et se
transmet en totalité ou en partie lors des processus de reproduction.
34
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
35
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
inférieure en utilisant un paramètre température pour contrôler l’acceptation des
déplacements avec une certaine probabilité dépendant d’un certain nombre de
paramètres. Ces deux algorithmes seront décrits en détails dans les sections suivantes
[16].
Algorithme III.2 : Algorithme Recuit Simulé
1. Choisir une solution s ∈ S ainsi qu’une température initiale T.
2. Tant qu’aucun critère d’arrêt n’est satisfait faire
3. Choisir aléatoirement s’ ∈N(s);
4. Générer un nombre réel aléatoire r dans [0,1];
5. Si r < p(T, s, s’) alors poser s := s’;
6. Mettre à jour T;
7. Fin du tant que
La fonction p(T, s, s’) est généralement choisie comme étant égale à la distribution
( ) ( )
Suivant . Ainsi,
( ) ( )
· Si ( ) > ( )alors >1, ce qui signifie que r < p(T, s, s’) et on accepte donc s’
( ) ( )
· Si T a une très grande valeur alors ≅ 1, et on est donc presque sûr d’accepter s’
( ) ( )
· Si T a une très petite valeur et si ( ) < ( ) alors ≅ 0, et on va donc
probablement refuser s’
5 Application de GA au Problème de sélection de schéma de FH
La fragmentation de la table des faits dans un environnement DW pourrait engendrer un
nombre important de fragments qui rendrait le processus de maintenance très coûteux. Afin de
réduire ce nombre ou le rendre contrôlable par l’administrateur de l’entrepôt de données,
plusieurs travaux de recherche ont proposé l’utilisation d’un Algorithme Génétique. Ce
dernier a pour but de sélectionner les tables de dimension à fragmenter pour éviter l’expulsion
du nombre de fragments de la table des faits et garantir une meilleure performance
d’exécution des requêtes [23] [22].
5.1 Processus génétique de la fragmentation horizontale
5.1.1 Codage adopté
Le codage de solution est une étape très important dans l’algorithme génétique, en fait, il
doit permettre la représentation des différentes solutions possibles. Le codage que nous avons
semblable à le codage réel mais avec des nombre entiers, L'encodage d'un schéma de
36
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
fragmentation sous forme d'un chromosome est représenté dans le tableau 5.2. Ce codage
permet d'attribuer à chaque sous-domaine un numéro, les sous-domaines qui possèdent le
même numéro sont fusionnés en un seul ensemble.
Code_lavel 4 3 2 4
Year_lavel 1 1
Family_lavel 1 0 3 2
Figure III.5 : Exemple de codage.
5.1.2 Génération de la population initiale
Dans cette étape, une population initiale doit être générée, ou chaque chromosome
représente une solution réalisable du problème (schéma de fragmentation). La procédure que
nous avons utilisée pour générer la population initiale des individus, adaptée à notre problème
est une génération aléatoire de individus.
5.1.3 Sélection des individus
Il permet l’échange des gènes entre parents (deux parent en général), pour créer 1 ou deux
enfants en essayant de combiner les bonnes caractéristiques des parents. Le but de cet opérateur
est la création de nouveaux individus en exploitant l’espace de recherche. Dans notre algorithme
nous avons utilisé la sélection aléatoire. Cette sélection se fait aléatoirement, uniformément et
sans intervention de la valeur de la fonction objectif.
5.1.4 Croisements des individus
L’opérateur de croisement est appliqué sur deux chromosomes parents pour obtenir deux
chromosomes enfants. Nous avons utilisent le croisement multi-points. Le croisement est une
généralisation du croisement à un point en ce sens qu’au lieu de choisir un seul point de
coupure, on en sélectionne k. l’intérêt d’une telle approche apparaît rapidement, car il devient
possible en un seul croisement d’échanger des buildings.
37
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
Code_lavel 3 3 2 4 Code_lavel 4 0 0 1
Year_lavel 1 1 Year_lavel 1 2
Family_lavel 0 0 3 2 Family_lavel 1 3 1 2
Code_lavel 4 3 2 4 Code_lavel 3 0 0 1
Year_lavel 1 1 Year_lavel 1 2
Family_lavel 1 0 3 2 Family_lavel 0 3 1 2
Code_lavel 0 3 2 4
Year_lavel 1 1
Family_lavel 0 0 3 2
Code_lavel 1 3 2 4
Year_lavel 1 1
Family_lavel 0 0 3 2
38
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
: Les attributs.
5.1.7 Critère d’arrêt
Le critère d’arrêt est le nombre de génération égal à . Après génération,
l’algorithme génétique s’arrête et donne le meilleur chromosome qui possède un Coût (CH)
minimum.
Fitness (schema): Max ( û ( )
) (2)
39
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
40
CHAPITRE III : Métaheuristiques et fragmentation d’entrepôt de données
7 Conclusion
Dans ce chapitre nous avons déterminé le problème que nous abordons dans notre
recherche, qui concerne à la sélection d’un schéma de fragmentation horizontal, et pour
résoudre ce problème nous avons proposé une solution par les algorithmes génétiques et les
requis simulés.
Nous avons décrit le fonctionnement et les différents opérateurs d’un algorithme génétique
standard, et aussi nous avons vues les recuits simulé qui définit comme une technique
aléatoire pour trouver une solution proche de l’optimale des problèmes d’optimisation
combinatoire4, et après nous avons présenté l’application de GA au Problème de sélection de
schéma de FH.
4
optimisation discrète, est une branche de l'optimisation en mathématiques appliquées et en informatique, également liée à la
recherche opérationnelle
41
CHAPITRE IV
Réalisation et expérimentation
CHAPITRE IV: Réalisation et expérimentation
1 Introduction
Pour commencer l’implantation de la base de données pour s’interagir avec l’application
réalisée il faut tout d’abord choisir un environnement matériel et logiciel adéquat pour le bon
déroulement de travail. Dans ce chapitre nous allons présenter nos outils, nous exposons
également choix concernant les technologies utilisées dans la réalisation et le développement
de notre travail, telles que les langages de programmation, des bases de données et les
serveurs ….etc. Ensuite nous allons présenter les pages et les fonctionnalités de notre travail.
2 Les outils de développement
2.1 Microsoft Visual Studio
Visual Studio uniformise le développement des applications en Visual Basic, Visual
C# .NET, Visual C++ et Visual F#. ASP.NET, Cloud et JavaScript [47], utilisent tous le
même environnement de développement intégré (IDE, integrated development environment),
qui leur permet de partager des outils et facilite la création de solutions faisant appel à
plusieurs langages. Par ailleurs, ces langages permettent de mieux tirer parti des
fonctionnalités du .NET Framework, qui fournit un accès à des technologies clés simplifiant
le développement d'applications Web ASP et de services Web XML.
2.1.1. Microsoft Visual Studio 2012
42
CHAPITRE IV: Réalisation et expérimentation
43
CHAPITRE IV: Réalisation et expérimentation
Oracle est un système de gestion de bases de données relationnelles (SGBDR) édité par
Oracle Corporation. C'est actuellement le leader mondial des bases de données, devant des
produits comme SQL Server de Microsoft. Oracle est un SGBD assurant des fonctionnalités
telles que la définition et la manipulation des données, La cohérence des données, La
confidentialité des données, L'intégrité des données, La sauvegarde et la restauration des
données, La gestion des accès concurrents.
Oracle est fourni avec de nombreux outils d'administration et de développement parmi
lesquels, Oracle Manager (SQL*DBA), Network Manager 1 , Oracle Enterprise Manager,
Import/Export (Échange de données entre deux bases Oracle), Oracle Designer, Oracle
Développer, SQL*Plus : Interface permettant d'exécuter des requêtes SQL et PL/SQL sur la
base de données [53].
2.2.1 Oracle Développer
1
Network-Manager est l'outil de gestion des connexions réseau d'Ubuntu. Son utilité est la création et la configuration des
accès à divers types de réseaux
2
Le banc d’essai est souvent confondu avec le benchmark (« banc test ») qui ne fait que tester les performances d’un système.
44
CHAPITRE IV: Réalisation et expérimentation
banc d’essais est constitué d’une table de faits Actvars et de quatre tables de dimensions,
Prodlevel, Custlevel, Timelevel et Chanlevel (figure 4.4).
3
L'objectif d'un benchmarking est d'identifier les processus les plus efficaces et professionnels pour aider l'organisation à atteindre ses
objectifs, à déterminer un objectif "idéal" en termes de résultats, de qualité de service/produit et à améliorer les processus de l'organisation.
45
CHAPITRE IV: Réalisation et expérimentation
PJOIN : l’ensemble des prédicats de jointure entre la table des faits et les tables
Coût (CH) =∑ ∑ ( )
Nous avons prisent les vecteurs de sélectivité qui nous avons utilisé depuis le travail de
Mr Mohamed BARR une étude antérieure [17] (voir l’annexe A2).
3.2 Implémentation de solution
3.2.1 Procédure de solution
Pour résoudre le problème de sélection d’un schéma de FH, Nous proposons une méthode
hybride combinant un algorithme génétique AG et un algorithme de recuit simulé RS (Figure
4.5).
4
Ces attributs sont généralement des mesures définies dans la table des faits.
46
CHAPITRE IV: Réalisation et expérimentation
5
Technique d'organisation du code d'un programme en le groupant en objets, les objets étant ici des éléments
individuels comportant des informations (valeurs de données) et des fonctionnalités.
47
CHAPITRE IV: Réalisation et expérimentation
4 Présentation graphique
La page principale « Application sur l’ED » est un ensemble des pages (tabControl)
Visualisé l’ED
48
CHAPITRE IV: Réalisation et expérimentation
Application de GA et GA+RS
49
CHAPITRE IV: Réalisation et expérimentation
Nombre Taux
Coût AG Coût AG + RS
d'itérations d'amélioration
û ( ) û ( )
= × 100 (1)
û ( )
12
10
Taux d'amilioration
6
Coût AG
4 Coût AG + RS
2
0
0 50 100 150
Nombre d'itération
50
CHAPITRE IV: Réalisation et expérimentation
45%
40%
35%
Taux d'amilioration
30%
25%
20%
Taux d'amélioration
15%
10%
5%
0%
0 50 100 150
Nombre d'itérations
51
Conclusion
générale
Conclusion générale
Dans le cadre de ce travail de master, nous avons vu et traité la complexité et la difficulté
du problème de sélection de la technique de fragmentation horizontale dans un entrepôt de
données. Au cœur de ce mémoire, nous avons présenté les différentes étapes de l’adaptation et
la réalisation de notre application, nous avons commencé par la présentation générale des
entrepôts de données, définition, caractéristique et l’architecture, ainsi les techniques
d’optimisation des entrepôts de données. Nous avons présenté ensuite en détail la technique
d’optimisation FH ou fragmentation horizontale, et après la détermination de problème de
fragmentation horizontal « Sélection d’un schéma de fragmentation horizontale ». Et pour
résoudre ce problème nous avons présenté en générale deux métaheuristiques: les algorithmes
génétiques GA et recuis simulé RS et après nous avons adapté les GA pour résoudre le
problème de sélection et l’algorithme RS pour améliorer les résultats d’algorithme génétique.
L’analyse des résultats présenté montre clairement que l’algorithme GA amélioré le cout
de schéma de fragmentation (nombre Entré/Sortie) en fonction de nombre de générations, et
aussi les résultats présentent l’amélioration de solution de GA avec l’hybridation ‘GA+SR’.
Comme perspectives à ce travail, Il est préférable d’exploiter la solution retournée par GA
et GA+RS pour fragmenter l’entrepôt de données et ensuite l’exécution de la charge de
requêtes sur les fragments trouvés pour réduire le temps d’exécution de ces requêtes.
52
Bibliographie
Bibliographie
[1] A. DAÂS, mémoire magister : Optimisation des requêtes dans le datawerehouse, ECOLE
DOCTORALE D’INFORMATIQUE (STIC) Option : Ingénierie des Systèmes Informatiques
[2] A. Gherboudj, THESE doctorat : Méthodes de résolution de problèmes difficiles
académiques, Université de Constantine2, Faculté des Technologies de l’information et de la
Communication, Département d’Informatique Fondamentale et ses Applications, 2013
[3] A. HASSAN, Modélisation des Bases de Données Multidimensionnelles : Analyse par
Fonctions d’Agrégation Multiples, thèse de doctorat, UNIVERSITÉ TOULOUSE 1
CAPITOLE, 1décembre 2014.
[4] A. KERKAD, THESE doctorat : L’interaction au service de l’optimisation à grande
échelle des entrepôts de données relationnels, Ecole Doctorale : Sciences et Ingénierie pour
l'Information, Mathématiques Secteur de Recherche : INFORMATIQUE ET
APPLICATIONS, 2015.
[5] A. Noaman et k. Barker, « A Horizontal Fragmentation Algorithm for the Fact Relation in
a Distributed Data Warehouse », in the 8th International Conference on Information and
Knowledge Management, November, 1999.
[6] A. Sanjay, V. R. Narasayya, and B. Yang, Integrating vertical and horizontal partitioning
into automated physical database design. Sigmod (SIGMOD'04), June 2004.
[7] B. Frédéric et T. Olivier, Construction graphique d’entrepôts et de magasins de données,
IRIT (Institut de Recherche en Informatique de Toulouse), équipe SIG, Université Toulouse
III.
[8] C. Favre, F. Bentayeb, O. Boussaid, J. Darmont, G. Gavin, N Harbi, N Kabachi et S
Loudcher, Les entrepôts de données pour les nuls. . . ou pas !, Université de Lyon ERIC
Lyon 2 et ERIC Lyon 1
[9] Ceiec, Innovation dans la fourniture et la production de statistiques: importance des
nouvelles technologies, Finnland, 20 et 21 janvier 2000
[10] E. Benitez, C. Collet, et M. Adiba. Entrepôts de données : caractéristiques et
problématique. Revue TSI, 20(2), 2001.
[11] E. ZIYATI, Optimisation de requêtes OLAP en Entrepôts de Données Approche basée
sur la fragmentation génétique, thèse de doctorat, UNIVERSITÉ MOHAMMED VAGDAL,
08 Mai 2010.
53
Bibliographie
[30] M. Merouani et E. Abdelouarit , Les index pour les entrepôts de données : comparaison
entre index arbre-B et Bitmap, Faculté poly disciplinaire de Tétouan et Faculté des sciences
de Tétouan, https://hal.archives-ouvertes.fr/hal-00842579 , 9 Jul 2013
[31] M. T. Özsu and P. Valduriez. Principles of Distributed Database Systems ,1999 .
[32] M. Teisseire, H. Alatrista Salas et F. Bouillot, Déroulement Du cours: Entrepôt De
données et l’Analyse en ligne, (EPSI l’école d’ingénieures informatique)
[33] M. VAN CANEGHEM, « Le voyageur de commerce Algorithme “branch and bound”,
Algorithme Glouton, Méthode de recherche locale », support de cours, Département
d'Informatique de la Faculté des Sciences de Luminy Université de la Méditerranée LIM :
Laboratoire d'Informatique de Marseille, Décembre 2002.
[34] O. Teste, Modélisation et manipulation d'entrepôts de données complexes et historisées,
thèse doctorat, UNIVERSITE PAUL SABATIER DE TOULOUSE (SCIENCES), 18
décembre 2000.
55
Bibliographie
56
Bibliographie
57
Annexe
Annexe
1. La création des tables de dimensions
Table CHANLEVEL
CREATE table "CHANLEVEL" (
"BASE_LEVEL" VARCHAR2(50),
"ALL_LEVEL" VARCHAR2(50),
constraint "CHANLEVEL_PK" primary key ("BASE_LEVEL")
)
Table CUSTLEVEL
CREATE table "CUSTLEVEL" (
"STORE_LEVEL" VARCHAR2(50),
"RETAILER_LEVEL" VARCHAR2(50),
constraint "CUSTLEVEL_PK" primary key ("STORE_LEVEL")
)
Table PRODLEVEL
CREATE table "PRODLEVEL" (
"CODE_LEVEL" VARCHAR2(50),
"CLASS_LEVEL" VARCHAR2(50),
"GROUP_LEVEL" VARCHAR2(50),
"FAMILY_LEVEL" VARCHAR2(50),
"LINE_LEVEL" VARCHAR2(50),
"DIVISION_LEVEL" VARCHAR2(50),
constraint "PRODLEVEL_PK" primary key ("CODE_LEVEL")
)
Table TIMELEVEL
CREATE table "TIMELEVEL" (
"TID" VARCHAR2(50),
"MONTH_LEVEL" VARCHAR2(50),
"QUATER_LEVEL" VARCHAR2(50),
"YEAR_LEVEL" VARCHAR2(50),
constraint "TIMELEVEL_PK" primary key ("TID")
)
58
Annexe
59
Annexe
Where
A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.Class_LEVEL='MVOSML0DZA5V'
Group by Time_level
Q3:
Select Time_level,count(*)
From ACTVARS A, PRODLEVEL P
Where
A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.Class_LEVEL='ZYXHAYKT707N'
Group by Time_level
Q4:
Select Time_level,Avg(unitssold)
From ACTVARS A, PRODLEVEL P
Where
A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.Class_LEVEL not in('A1DGFSPTJ473', 'MVOSML0DZA5V', 'ZYXHAYKT707N')
Group by Time_level
Q5:
Select Time_level,count(*)
From ACTVARS A, PRODLEVEL P
Where
A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.group_LEVEL='CSZD5QO5AW6J’'
Group by Time_level
Q6:
Select Time_level,Max(unitssold)
From ACTVARS A, PRODLEVEL P
Where
A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.group_LEVEL<>'CSZD5QO5AW6J’'
Group by Time_level
Q7:
Select Time_level,count(*)
From ACTVARS A, PRODLEVEL P
Where
A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.family_LEVEL='UHVQ8L35XZFF'
Group by Time_level
Q8:
Select Time_level,sum(dollarcost)
From ACTVARS A, PRODLEVEL P
Where
A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.family_LEVEL='IIFSK6AKVBON'
Group by Time_level
60
: اﻟﻤﻠﺨﺺ
إﻛﺘﺴﺒﺖ ﻣﺴﺘﻮدﻋﺎت اﻟﺒﯿﺎﻧﺎت ﻣﻜﺎﻧﺔ ﻛﺒﯿﺮة ﻓﻲ وﻗﺘﻨﺎ اﻟﺮاھﻦ ﻷھﻤﯿﺘﮭﺎ اﻟﻮاﺿﺤﺔ ﻓﻲ اﺗﺨﺎذ
وﺗﻌﺘﺒﺮ.اﻟﻘﺮارات ﺣﯿﺚ اﻋﺘﺒﺮ اﻟﺒﺎﺣﺜﻮن ﺗﻄﻮﯾﺮھﺎ وﺗﺴﮭﯿﻞ اﻟﻮﺻﻮل إﻟﻰ اﻟﻤﻌﻠﻮﻣﺎت أوﻟﻮﯾﺔ ﻛﺒﯿﺮة
. ﺗﻘﻨﯿﺔ اﻟﺘﺠﺰﺋﺔ اﻷﻓﻘﯿﺔ ﻣﻦ أﺑﺮز واﺣﺴﻦ اﻟﺘﻘﻨﯿﺎت ﻓﻲ ﺗﺤﺴﯿﻦ ﻣﺴﺘﻮدع.
ﻓﻲ ھﺬا اﻟﻌﻤﻞ اﻟﻤﺨﺼﺺ ﻟﻤﺬﻛﺮة اﻟﻤﺎﺳﺘﺮ ﻗﻤﻨﺎ ﺑﺘﻄﺒﯿﻖ طﺮﯾﻘﺔ ﺗﮭﺠﯿﻦ ﺑﯿﻦ اﻟﺨﻮارزﻣﯿﺎت
اﻟﺠﯿﻨﯿﺔ و ﺧﻮارزﻣﯿﺔ اﻟﺘﺨﻤﯿﺮ اﻟﻤﺤﺎﻛﻰ ﻟﺤﻞ ﻣﺸﻜﻞ ﺗﺤﺪﯾﺪ ﻣﺴﺎر اﻟﺘﻘﺴﯿﻢ اﻷﻓﻘﻲ ﻟﻤﺴﺘﻮدع اﻟﺒﯿﺎﻧﺎت
.ﺣﯿﺚ اﺳﺘﺨﺪﻣﻨﺎ ﻣﺴﺘﻮدع اﻟﺒﺎﻧﺎت ﺑﻨﺸﻤﺎرك ﺑﺎﻋﺘﻤﺎد وﻛﻠﻐﺔ ﺑﺮﻣﺠﺔ اﺧﺘﺮﻧﺎ ﺳﻲ ﺷﺎرب
، ﺑﻨﺸﻤﺎرك، اﻟﺘﺨﻤﯿﺮ اﻟﻤﺤﺎﻛﻰ، اﻟﺨﻮارزﻣﯿﺎت اﻟﺠﯿﻨﯿﺔ، ﻣﺴﺘﻮدﻋﺎت اﻟﺒﺎﻧﺎت: اﻟﻜﻠﻤﺎت اﻟﻤﻔﺘﺎﺣﯿﺔ
اﻷوراﻛﻞ و اﻟﺴﻲ ﺷﺎرب
Résumé :
Les entrepôts de données occupent une place importante dans nos jours, grâce à
son grand rôle dans la prise de décision, les chercheurs ont considère que son
développement est en priorité. Parmi les meilleures techniques d’optimisation des
entrepôts de données c’est la fragmentation horizontale.
Dans notre travail, nous avons appliqué une méthode hybride combinant un
algorithme génétique et un algorithme de recuit simulé pour résoudre le problème de
Sélection d’schéma FH où en utilisant le banc d’essai Benchmark APB-1 en
comptant sur Oracle, et comme langage de programmation on a choisi C #.
Mots clés : Entrepôt de données, Algorithmes génétiques, recuit simulé, Benchmark,
Oracle et C#.
Abstract:
The data warehouse gained a big standing in our current time for its clear importance in
making decision, where the researchers considered its development and facilitation of the arrival
to the information big priority. The horizontal division Technique considers of the most
prominent and best techniques in improving warehouse. In this specified work for master
dissertation, we propose a hybrid method combining a genetic algorithm and a simulated
annealing algorithm to solve the problem of determining horizontal partitioning of data
warehouse where we have used data warehouse Benchmark adoption and chose C # as a
programming language.
Keywords: Data warehouses, the genetic algorithms, simulated annealing, Benchmark,
Oracle and C#.