Chapitre1 BDA
Chapitre1 BDA
Chapitre1 BDA
environnement distribué
1.Introduction
Une base de données centralisée est gérée par un seul SGBD et elle est stockée dans sa
totalité à un emplacement physique unique avec une seule et même unité de traitement. En
conséquence, la gestion de ces données avec le temps s’est confrontée à divers problèmes
tels que, l’augmentation de volume de données, de traitements et de transactions. Aussi, les
débits des liaisons réseaux évoluaient rapidement.
Dans ce contexte, l’idée de base de données repartie (BDR) est venue, le principe est de
multiplier les sources de données et les faire communiquer par réseaux, afin de bénéficier de
traitements parallèles, minimisant ainsi le temps de réponse.
Exemple
Soit le Schéma global d’une base de données :
Produit (NoProd, DesProd, Prix, NoFour)
Fournisseur (NoFour, NomFour, VilleFour)
Client (NoCli, NomCli, VilleCli)
Représentants (NoRep, NomRep, VilleRep)
Commande (NoProd, NoCli, Date, Qte, NoRep)
Produit
Site1 Site2 Fournisseur
Réseau
Site3 Site4
Commande Commande
Client Client
Représentant Représentant
1
3.SGBD réparti
Un système qui gère une base de données répartie en fournissant un moyen d’accès rendant
la distribution transparente à l’utilisateur.
Ensemble de logiciels systèmes constitués des gérants de données répartis, des gérants de
communication et des SGBD locaux résidant sur chaque site de la base de données répartie.
Gérant de Gérant de
Gérant de données Gérant de
données Réseau
communication communication
reparties reparties
Site1 Site2
BD1 BD2
Figure 2 : SGBD réparti
BD
2
Cette approche est généralement guidée par l’objectif de performances à obtenir par la mise à
proximité des données aux utilisateurs potentiels.
BD
Cette démarche est la plus difficile puisqu'en plus des problèmes techniques identiques à ceux
inhérents à une conception descendante, il faudra résoudre également des problèmes
d’hétérogénéité des systèmes ou même sémantique des informations.
Donc, Les SGBD hétérogènes ont des fonctionnalités supplémentaires telles que la conversion
des données et des requêtes depuis un modèle vers un autre, ceci est réalisé par un sous-système
appelé traducteur. Il y a deux approches :
Approche pivot : on utilise un modèle Pivot dans lequel chaque modèle est converti. Pour n
modèles, on a besoin de n traducteurs.
Modèle2
Modèle1
Modèle Pivot
Modèle3 Modèle4
Le modèle pivot est généralement relationnel à cause de sa simplicité et son haut niveau
d’indépendance. Le modèle pivot décrit le schéma conceptuel global et la base de données est
manipulée grâce au langage de ce modèle. La conversion (modèle pivot/modèle locale) se fait
au niveau du schéma externe locale.
3
Schéma externe Schéma externe Schéma externe
globale1 globale1 globale n
Schéma de placement
Site1 Site2
Site m
- Les schémas externes globaux : supportent les vues sur les sites d’utilisateurs particuliers.
- Le schéma conceptuel global : définit toutes les relations appartenant à la BD répartie.
- Le schéma de placement : précise la façon dont les relations sont placées sur les différents
sites du réseau. Il contient toutes les informations relatives à la localisation, la fragmentation
et la duplication des données. Selon l’exemple de la figure1 le schéma de placement est le
suivant :
Site2(Produit, Fournisseur)
Site3(Commande, Client, Représentant)
Site4(Commande, Client, Représentant)
- Les niveaux des schémas locaux : décrivent la BD locale. Il existe autant de schémas locaux
qu’il y a de sites dans le réseau.
- Le schéma local externe : représente les fragments tel qu’ils sont décrits dans le schéma de
placement. Il peut être considéré comme une vue de BD locale. Le schéma local externe assure
l’indépendance des SGBD, Il doit être présent dans le cas d’une BD répartie hétérogène. Il est
utile ainsi lorsque la BD répartie n’inclut qu’un sous ensemble de relations de la BD Locale.
- Gestion d’un dictionnaire de données global qui maintient l’information relative aux données
réparties.
- Définition et contrôle des données réparties.
4
- Évaluation des requêtes réparties émises par les utilisateurs et invoquant la base de données
réparties.
- Gestion de transactions réparties.
- Contrôle de concurrence répartie
- Gestion des objets dupliqués (propagation des MAJ) (synchronisation).
- Transparence pour l’utilisateur
- Autonomie de chaque site
- Indépendance vis à vis du système d’exploitation, du réseau et du SGBD
6.2. Fragmentation
Les relations peuvent être divisées en sous-relations stockées dans des sites différents. Afin
d’augmenter la performance de la base de données repartie en favorisant les accès locaux, et permet
l’équilibre de la charge entre sites.
6.3. Duplication
Le principe est de dupliquer un fragment ou une relation sur différents sites en favorisant les accès
locaux. Ce qui permet d’augmenter la fiabilité et la disponibilité des données.
Commande2 Produit2
Site1 Site2 Fournisseur
Client2
Produit1
Réseau
Site3 Site4
Commande1
Client1
Produit1
5
La duplication est très efficace lorsqu’un site tombe en panne. Cependant, il faut maintenir la
cohérence des copies multiples (le problème de mise à jour) : après une panne le site réparé doit
remettre à jour tous ses fragments. Par exemple après la panne du site2, il faut mettre à jour le
fragment Produit1 dupliqué dans le Site1 et le Site2.
Lorsque la duplication se fait sur des sites où les fragments sont le plus souvent utilisés, elle augmente
les performances. Mais ceci ne doit pas augmenter la complexité et le cout de maintenance des copies.
Avantages Inconvénient
Centralisé : le dictionnaire est Maj des schémas simple et -Trop d’accès au site centrale
géré dans un seul site central. efficace
-la panne du site central
implique la panne de la BD.
Dupliqué : il existe une copie Évite les inconvénients de MAJ du dictionnaire doit être
du dictionnaire dans chaque l’approche centralisée répercutée dans tous les sites.
site.
Fragmenté : il est fragmenté Manipulation des données Manipulation des données
en dictionnaires locaux locales simple et efficace. distantes plus complexe
contenant les informations (nécessite la recherche du site
pertinentes aux données du où se trouve l’information du
site où il est stocké dictionnaire)
6
Exemple
En appliquant ce type de fragmentation sur un schéma global contenant deux relations Etudiant et
Groupe. On obtient les schémas locaux suivants :
Exemple
La relation Client(NoCli, NomCli, VilleCli) peut être fragmentée en deux fragment selon l’attribut
Ville :
Client
NoCli NomCli VilleCli
C1 Ali Oran
C2 Farida Alger
C3 Ahmed Mostaganem
C4 Karim Oran
Client1 Client2
NoCli NomCli VilleCli NoCli NomCli VilleCli
C1 Ali Oran C2 Farida Alger
C4 Karim Oran C3 Ahmed Mostaganem
Figure 10 : Exemple de fragmentation horizontale
Exemple
Soit la fragmentation de la relation Produit (NoPRo, DesPro, Prix, NoFour) en deux relations :
Produit1 : Select NoPRo, DesPro, Prix From Produit ((NoPro, DesPro, Prix) Produit)
Produit2 : Select NoPRo, NoFour From Produit ((NoPro, NoFour) Produit)
7
Produit1
Produit NoPro DesPro Prix
NoPro DesPro Prix NoFour P1 Bureau 30000
P1 Bureau 30000 F2 P2 Chaise 9000
P2 Chaise 9000 F1 P3 Table 25000
P3 Table 25000 F3 P4 Armoire 42000
P4 Armoire 42000 F1 Produit2
NoPro NoFour
P1 F2
P2 F1
P3 F3
P4 F1
Exemple
Soit la fragmentation de la relation précédente Produit en quatre relations :
Produit1
NoPro DesPro Prix
P2 Chaise 9000
P3 Table 25000
8
Produit 1 : Select NoPRo, DesPro, Prix From Produit where Prix<=25000
((NoPro, DesPro, Prix) (σ(Prix<=25000) Produit))
Produit 2 : Select NoPRo, NoFour From Produit where Prix<=25000
((NoPro, NoFour) (σ(Prix<=25000) Produit))
Exemple
On peut fragmenter la table Commande par la jointure avec les deux fragments Client1 et Client2
(exemple de la fragmentation horizontale). On obtient alors deux tables Commande, la première est
relative aux clients Oranais, et la deuxième est relative aux clients non oranais.
Commande1 : Commande ⋈ Client1
Commande2 : Commande ⋈ Client2
Commande1
Commande
NoPro NoCli Date Qte
NoPro NoCli Date Qte P4 C1 20/06/2020 2
P1 C3 12/09/2020 6
P4 C1 20/06/2020 2
P2 C3 12/09/2020 6
P3 C2 10/03/2020 10 Commande2
NoPro NoCli Date Qte
P1 C3 12/09/2020 6
P2 C3 12/09/2020 6
P3 C2 10/03/2020 10
Figure 13 : exemple de fragmentation horizontale dérivée
Les opérations de sélection sont à la base des fragmentations horizontales, les opérations de
projection sont à la base des fragmentations verticales et les jointures sont à la base des
fragmentations dérivées.
9
Pour éviter le risque d'émietter la base de données, on peut restreindre le nombre de requêtes prises
en considération. On ne s'intéresse alors qu'aux requêtes les plus fréquentes ou les plus sensibles
(celles pour lesquelles le temps de réponse maximum est borné).
On supprime de cet ensemble les conditions qui sont toujours fausses et on simplifie les autres.
Les conjonctions de condition qui restent déterminent les fragments.
Exemple
On peut fragmenter la relation Compte (NoClient, Agence, TypeCompte, Somme) en se basant sur les
requêtes suivantes :
C2 = Agence = 'Oran'
Donc l’ensemble CC = {C1 C2 C3, ¬C1 C2 C3, C1 ¬C2 C3, C1 C2 ¬C3, ¬C1 ¬C2 C3, ¬C1 C2
¬C3, C1 ¬C2 ¬C3, ¬C1 ¬C2 ¬C3}
Certaines conjonctions de CC sont fausses et d’autres peuvent être réduites en déterminant les
fragments.
Dans le cas où la relation à fragmenter est un fragment horizontal (Fragmentation mixte), il faut
rechercher à partir des conditions de ce fragment toutes les requêtes concernées et prendre en
considération que les expressions de projection de ces requêtes.
10
Exemple
En se basant sur les mêmes requêtes précédentes pour fragmenter la relation Compte, on obtient :
(1) et (2) Les projections extraites en ajoutant la clé (si elle ne figure pas) :
P1 = NoClient, Agence
P2 = NoClient, Agence, TypeCompte, Somme
P3 = NoClient, Somme
(4) On ne prend pas en considération les projections avec un ensemble vide, donc :
IP= {P1P3, ̅̅̅
𝑃1 P3, P1 ̅̅̅ 𝑃1 ̅̅̅
𝑃3 , ̅̅̅ 𝑃3 }
Décomposition
Schéma de
Requêtes portant sur placement
Des relations du schéma global
Algorithme
Optimisation
d’accès repartis
Exécution
10.1. La décomposition
La décomposition de la requête est traitée de la même façon que dans un système centralisé.
Également, la requête globale est décomposée en sous-requêtes.
Exemple
Soit la Base de données globale :
Produit (np, désignation, pu, nf)
Client ( ncl, nomC, ville)
Commande (np, ncl, date, qte)
11
Fournisseur (nf, nomF, ville, statut)
Et Soit la requête globale suivante : Quels sont les numéros et les désignations des produits
commandés par des Oranais avec une quantité supérieure à 100.
ncl
Ville= ‘Oran’
Ville= ‘Oran’
np
ncl Client
Produit Commande
Produit Commande
10.2. La localisation
Les informations nécessaires à la localisation et à la fragmentation sont stockées dans le schéma de
placement (dictionnaire). La localisation d’une requête passe par 2 étapes :
12
np, désignation
ncl
Requête globale
ncl
np
Ville= ‘Oran’
np, désignation
np, ncl
Qte>100
np
Requête de reconstruction
Client1 Client2
Produit1 Produit2
Commande1 Commande1
2. Simplification
La simplification d’une requête canonique consiste à restructurer les sous arbres syntaxiques afin de
rapprocher les opérateurs unaires aux fragments puis à appliquer les règles de simplification. Cette
étape permet de déterminer les opérations inutiles dans une requête canonique. Sachant que les
opérations inutiles sont celles qui produisent un résultat vide, ou identique à l’opérande. Parmi ces
règles :
Règle 1 : une sélection sur un fragment horizontal dont le prédicat est contraire au prédicat de
fragmentation donne un résulta vide → (suppression de la branche).
Règle 2 : une sélection sur un fragment horizontal dont le prédicat est le même que celui de la
fragmentation donne un résultat identique → (suppression de la sélection)
Règle 3 : la projection sur des attributs n’appartenant pas au fragment vertical (sauf attribut de
reconstruction) donne un résultat vide → (suppression de la branche).
Exemple
- En rapproche les opérateurs unaires, on obtient :
13
np, désignation
ncl
ncl
np
Règle 1
Règle 2
np, désignation
np, ncl Ville= ‘Oran’ Ville= ‘Oran’
Client2
Client1
Règle 3
np Qte>100
Qte>100
np, désignation np
Commande1 Commande2
Produit1 Produit2
np, désignation
ncl
ncl
np
np, ncl
np, désignation
Qte>100 Qte>100
Client1
Produit1 Commande1 Commande2
10.3. Optimisation
Après avoir généré un arbre de requête et traduire les sous-arbres en opérations, la stratégie adoptée
pour l'exécution est ascendante. On part donc des feuilles, en exécutant les opérations unaires de
restriction et projection le plus tôt possible car elles réduisent respectivement le degré et la cardinalité
d’une relation. Ensuite, remonter au niveau supérieur (prétraitement et jointure des relations) et
prendre une décision sur le site d'affectation de l'opérateur. Et ainsi de suite pour les niveaux
supérieurs jusqu'à la racine.
14
Exemple
Supposant que la requête a été émise au site1 (Site globale), et que les fragments sont placés dans les
sites suivants :
Site1 : Fournisseur, Produit1
Site2 : Client2, Produit2, Commande1
Site3 : Commande2, Clien1
O9
O8
O6
O7
O5
Client1
O1 O4 Site3
Produit1 O2 O3
Site1
Commande1 Commande2
Site2 Site3
Le rôle de cette étape d’optimisation est de déterminer une stratégie d’exécution de la requête qui :
- Minimise une fonction de coût (temps de traitement et le temps de transfert des données
entre les différents sites).
- Prend en considération les traitements exécutés en parallèles.
La requête obtenue après localisation peut être exécutée par une stratégie simple selon l’algorithme
suivant :
1) Opérateur unaire (α) : Exécuter les opérations unaires sur des fragments comme des
requêtes locales et transférer ensuite les résultats vers un site unique (généralement le
site où a été adressée la requête globale) : site(α) = site de l’opérande.
2) Opérateur binaire (op1 β op2) : lorsque tous les opérandes d'une même opération
algébrique sont situés sur le même site, la solution la moins coûteuse pour exécuter cette
opération est le plus souvent de l'exécuter sur ce site. Si non l’opération est exécutée sur
le site demandeur (globale) :
Plusieurs plans d’exécution peuvent être générés, l’optimiseur choisit alors le moins coûteux en
fonction du temps de traitement et de transfert des données.
15
T5 : envoyer T3 → site1
T6 : exécuter O4 → site1
T7 : exécuter O5 → site1
T8 : exécuter O6 → site1
T9 : exécuter O7 → site3
T10 : envoyer T9 → site1
T11 : exécuter O8 → site1
T12 : exécuter O9 → site1
16