Prof : A. BENMAKHLOUF
1
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
I- Introduction
De nos jours les entreprises et les différents organismes ont besoin de plus en plus de gérer un
volume important de données. L’utilisation des bases de données centralisées avec un système
de gestion des BDD génère une lourdeur dans la réalisation et l’exécuter à distance des
différentes transactions surtout lorsqu’il s’agit des entreprises multinationales.
Pour surmonter ce problème, le recours à des bases de données réparties devient une
nécessité.
Une indépendance à la localisation : permet l’exploitation des données dans les BDD
relationnelles indépendamment de la localisation des données. c.-à-d., exprimées des requêtes
en SQL similaires aux requêtes locales et simplifier la vue utilisateur et l’écriture de requêtes.
Une fiabilité élevée : permet de minimiser le risque lié à la centralisation des données dans un
seul serveur. Les bases de données réparties ont souvent des données répliquées. La panne
d’un site n’est pas très importante pour l’utilisateur, qui s’adressera à autre site.
Des performances : réduire le trafic sur le réseau est une possibilité d’accroître les
performances. Le but de la répartition des données est de les rapprocher de l’endroit où elles
sont accédées. Répartir une base de données sur plusieurs sites permet de répartir la charge
sur les processeurs et sur les entrées/ sorties.
2
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
3
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Dans cette méthode on définit dans un premier temps un schéma conceptuel global de la base
de données répartie, puis on distribue sur les différents sites les schémas conceptuels locaux.
La répartition se fait donc en deux étapes, en première étape la fragmentation, et en deuxième
étape l’allocation de ces fragments aux sites. Cette méthode (top down) est utilisée dans le cas
où on veut faire la conception d’une nouvelle base de données dont les données vont être
réparties dans les différents sites.
4
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
En plus de la répartition physique des données, la répartition d'une base de données intervient
dans les trois niveaux de son architecture.
Niveau externe : les vues sont distribuées sur les sites utilisateurs.
Niveau conceptuel : le schéma conceptuel des données est associé, par l'intermédiaire du
schéma de répartition (lui-même décomposé en un schéma de fragmentation et un schéma
d'allocation), aux schémas locaux qui sont réparties sur plusieurs sites, les sites physiques.
Niveau interne : le schéma interne global n'a pas d'existence réelle mais fait place à des
schémas internes locaux répartis sur différents sites.
5
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
IV- Fragmentation
La fragmentation est le processus de décomposition d'une base de données en un ensemble de
sous-bases de données. Cette décomposition doit être faite sans perte de données ou/et
d'information. Il y a deux règles principales pour assurer une fragmentation sans cette perte de
données.
La complétude : pour toute donnée d’une relation R, il existe un fragment Ri de la relation R
qui possède cette donnée.
La reconstruction : pour toute relation décomposée en un ensemble de fragments Ri, il existe
une opération de reconstruction.
6
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
, dans le serveur-1
dans le serveur-2
Les tuples d’une même classe vont être réparties sur plusieurs Serveurs.
•
L’opération de recomposition des informations sera l’union des sous-classes ∪
L’opération de fragmentation sera donc la sélection
•
1 !"
2 % &
Les attributs de la même classe sont fragmentés dans plusieurs serveurs. Dans ce cas toutes
les valeurs des occurrences pour un même attribut se trouvent dans le même fragment. Des
attributs sont dupliqués dans les fragments pour assurer leurs jointures.
7
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Dans cette fragmentation seulement quelques valeurs des occurrences pour un même attribut
se trouvent dans le même fragment. C’est donc une combinaison entre la FH et la FV.
1 ⋈ 2 ∪ 3 ⋈ 4
: ⋉ :; .
relations jointes Rj. Cette dernière se fait en générale en utilisant des semi jointures
Exemple :
, ,
Créer deux procédures PL/SQL qui permet de fragmenter les tables clients et comptes
la base de données selon les règles suivantes :
1: = !& !"
1: 1⋉
2: = !&> !"
1: 2⋉
Réponses :
8
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
La fragmentation sera basée sur l’ensemble des requêtes d’interrogation ou de mise à jour les
plus utilisées. Il faut extraire de ces requêtes toutes les conditions de sélection, les attributs de
projection et les jointures.
Les conditions de sélection seront à la base de la FH et les attributs de projections seront à la
base de la FV, les jointures donneront une information sur la fragmentation par objet. Une
fragmentation doit respecter les deux critères de reconstitution et complétude.
9
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Pour éviter le risque d'émietter la base de données, on doit restreindre le nombre de requêtes
prises en considération dans la fragmentation. On ne s'intéresse alors qu'aux requêtes les plus
fréquentes ou les plus sensibles et celle qui demande un temps d’exécution élevé.
10
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
:?@ ⋈
⏟
%BC .?E %BF .?E
:?G
H
Exemple2:
11
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
:?@ ∪ :?G
H
Pour éviter de perdre des données dans une FH. On construit tous les min-termes des
variables logiques représentant les conditions de sélection dans les requêtes. Chaque min-
terme doit représenter une condition de sélection pour insérer les données dans les tables
fragmentées. Puisque la somme (union) de tous les min-termes vaut 1, nous serons sûr que
l’union des tables fragmentées va nous permettre la reconstitution de la table initiale sans
perte de données. Parfois, pour ne pas sur-fragmenter une table, on peut rassembler par union
les min-termes qui ne sont pas vérifiés par les requêtes de sélection.
Soient C1, C2, …, Cn les conditions de sélection qui ont été extraites des requêtes. Comme les
fragments horizontaux doivent être exclusifs, on produit l'ensemble des 2n min-termes :
IJ ∗
L ∗
L NM O
@,!
On supprime de cette ensemble les termes qui sont toujours fausses et on simplifie les autres.
:P1: @⋀ G RST
RST 1: @. G RST
RST 2: @.UUUU
G RST
RST 3: UUUU
@. G RST
RST 4: UUUU
@.UUUU
G RST
12
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
On peut rassembler les tables Table2, Table3, Table4 en une seule table.
1. UUUU
2 V UUUU
1. 2+UUUU
1. UUUU
2 UUUU
1 V UUUU
2
RST 1: @. G RST
RST 2: UUUU G RST
@WUUUU
Correction :
S@ !& !"
T@ Z[ \ 40
SG !& % &^
TG Z[ _ 30
On note x et y les conditions de sélection des deux requêtes R1 et R2. Les min-termes sont :
S@ T@ UUU
SG S@ T@
13
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
et
S@ T@ UUU
TG S@ T@
Donc
`bU S@ T@
De même pour le min-terme
`̅ b SG TG
Le dernier min-terme est toujours faux :
`b 0
1. Pour avoir des fragments de schéma qui respecte les conditions de sélection, il faut
commencer à fragmenter la table R2 puis récupérer le fragment associé de la table
source R1 par semi-jointure.
2. Pour ne pas perdre des données de la table R1 il faut tenir compte des n-uplets de R1
qui n’existe pas dans la table destination (plusieurs)
14
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
: PLê : %C. %F :@ ⋈ :G
Avec R1 est la table source et R2 est la table destination.
m1 :G
eff1: l %G %C . %F
m1%@ :@ ⋉ m1%G
m2%G :G
eff2: l
UUUUUU
%C WUUUUUU
%F
m2%@ :@ ⋉ m2%G
m3 :@ ⧑ :G
eff3: l %@ nopF +qrr
Exercice1 :
15
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Exercice2 :
S } S ST S S^
^
S ^
} ^
:STS ^
T Z[ _ 40
~ • _0
1 .
uvvw: g
1 1⋉
2 . U ."
uvvx: g
2 ⋉ 2
3
uvvy: g
3 3⋉
4 UW U . UW"̅ .UUU
uvvz: g
4 ⋉ 4
16
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Les fragments verticaux sont exclusifs, sauf en ce qui concerne le (ou les) attribut(s) de
jointure qui sont insérés dans tous les fragments, et ce pour une décomposition sans perte
d'information.
Exercice :
La fragmentation est :
17
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
3 !&> !"
uvvy: g
3 ⋉ 3
L’affectation des fragments sur les sites est décidée en fonction de l’origine prévue des
requêtes qui ont servi à la fragmentation. Le but est de placer les fragments pour minimiser
les transferts de données entre les sites.
Un fragment ne peut exister que dans un seul site. Ici, chaque donnée est mise à jour sur un
seul site. Cette méthode est plus efficace quand les données sont beaucoup plus modifiées
que lues.
Pour des raisons de fiabilité et d’optimisation on peut décider de répliquer les données sur
tous les sites. Ainsi, si un site est temporairement ou définitivement défaillant, on utilise
simplement un autre. Il existe deux types de réplication
a. Types de réplication
Dans le cas d’une allocation avec duplication, La diffusion des mises à jour appliquée à une
copie aux autres copies doit être assurée automatiquement par le SGBD réparti. Cette
diffusion peut être basées sur la diffusion de l'opération de mise à jour ou sur la diffusion du
résultat de l'opération. Un ordonnancement identique des mises à jour dans tous les sites
est nécessaire afin d'éviter les pertes de mises à jour.
i. Réplication asymétrique
Un site primaire seul autorisé à mettre à jour et chargé de diffuser les mises à jour aux
autres copies dites secondaire. Le site primaire effectue les contrôles et garantit
18
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Dans ce cas Une transaction est validée seulement lorsque tous les sites ont été mis à jour.
Ce type de réplication peut se faire à l’aide des triggers.
19
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Une proposition de répartition des différents triggers dans les trois sites est donnée par la
figure-3.
20
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Le trigger de la synchronisation de la réplication de BDD1 dans BDD2 et dans BDD3 est donné par :
Les sites de réplication sont mis-à-jour en différé, à partir de la copie primaire, après la
confirmation de la transaction. Ce type de réplication peut se faire à l’aide des vues
matérialisées.
syntaxe :
21
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Une vue matérialisée (VM) est un moyen simple de créer une vue physique d’une table. La
différence d’une vue standard c’est que les données sont dupliquées. On l’utilise pour, des
fins d’optimisation de performance, lorsqu’une requête demande l’exécution d’un ensemble
de sous-requêtes, ou pour faire des réplications de table.
La ‘fraicheur’ des données de la VM dépend des options choisies. Le décalage entre les
données de la table maître et la VM peut être nul (rafraichissement synchrone) ou d’une durée
planifiée : heure, jour,etc.
FAST: mise-à-jour partielle de la copie locale. C’est la méthode la plus efficace, elle utilise
des journaux spécifiques traçant les modifications de la table maître.
FORCE: effectue un FAST si possible, sinon un COMPLET. C’est la méthode par défaut.
FOR UPDATE: permet de mettre à jour la copie locale (les changements sont propagés aux
tables maîtresses).
Le problème d’allocation consiste à définir une répartition des fragments sur les sites afin de
réduire le temps de réponse des requêtes sur des données distribuées avec ou sans
réplication sur plusieurs sites.
La méthode ABS se base sur le principe de stocker un fragment sur tous les sites où le
bénéfice du stockage est supérieur à son coût.
Bénéfice = (temps de lecture distant - temps de lecture local)
Coût = coût de la mise à jour locale + coût des mises à jour distantes
22
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Soient :
Définitions
- Une transaction est un ensemble d’opérations menées sur une BD,
- Ces opérations peuvent être en lecture et/ou écriture,
- Une opération est atomique, c’est donc une unité indivisible de traitement,
- Une transaction est soit validée par un commit, soit annulée par un rollback, soit
interrompue par un abort,
R "" S RS • mP ŽS Ž~
@
Avec :
23
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Le calcul doit se faire pour les accès Local et Distant, et pour les deux cas les accès en Lecture et
en Ecriture. Le temps total des accès en Ecriture représente un coût puisqu’il doit être réalisé
dans tous les sites où le fragment Rk est stocké. Par contre, si on retranche du temps d’accès
Distant en lecture le temps des accès Local en Lecture cela représente un bénéfice.
û R "" S 3r VR "" S 3X
eé é• R "" S rX ‘ R "" S rr
EL : Ecriture Local
ED : Ecriture Distant
LL: Lecture Local
LD : Lecture Distant
Exemple :
Soit une base de données fragmentée en R1, R2 et R3 et considérons cinq sites (S1, S2, .., S5). Les
données concernant les transactions effectuées sur les fragments sont données par les tableaux
suivant :
24
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Ecriture Lecture
EL ED NsiteL NsiteD TaccEL TaccED Coût LL LD NsiteL NsiteD TaccLL TaccLD Benef Benef-Coût
R1 S1 T1 T1 de S4 et S5 1 2 150 1200 1350 T1 T1 de S4 ou S5 1 1 300 1500 1200 -150
S2 T1 de S1, S4 et S5 3 0 1800 1800 T2 T2 de S4 1 1 400 2000 1600 -200
S3 T1 de S1, S4 et S5 3 0 1800 1800 0 0 0 -1800
S4 T1 T1 de S1 et S5 1 2 150 1200 1350 T1, T2 T1 de S1 ou S5 1 1 700 3500 2800 1450
T2 de S2
S5 T1 T1 de S1 et S4 1 2 150 1200 1350 T1 T1 de S1 ou S4 1 1 300 1500 1200 -150
R2 S1 T3 de S3 et S5 2 0 4200 4200 T1 T1 de S4 ou S5 1 1 300 1300 1000 -3200
S2 T3 de S3 et S5 2 0 4200 4200 0 0 -4200
S3 T3 T3 de S5 1 1 600 2100 2700 T3 T3 de S5 1 1 1350 5850 4500 1800
S4 T3 de S3 et S5 2 0 4200 4200 T1 T1 de S1 ou S5 1 1 300 1300 1000 -3200
S5 T3 T3 de S3 1 1 600 2100 2700 T1, T3 T1 de S1 ou S4 1 1 1650 7150 5500 2800
T3 de S3
R3 S1 T2 de S2 et S4 2 0 4400 4400 -4400
S2 T2 T2 de S4 1 1 500 2200 2700 T2 T2 de S4 1 1 1200 6000 4800 2100
S3 T2 de S2 et S4 2 0 4400 4400 T3 T3 de S5 1 1 1200 6000 4800 400
S4 T2 T2 de S2 1 1 500 2200 2700 T2 T2 de S2 1 1 1200 6000 4800 2100
S5 T2 de S2 et S4 2 0 4400 4400 T3 T3 de S3 1 1 1200 6000 4800 400
25
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
- Insertion
Il faut retrouver le fragment horizontal concerné en utilisant les conditions qui définissent
les fragments horizontaux, puis insertion du tuple dans tous les fragments verticaux
correspondants.
- Suppression
Rechercher le tuple dans les fragments qui sont susceptibles de contenir le tuple concerné,
et supprimer les valeurs d'attribut du tuple dans tous les fragments verticaux.
- Modification
Rechercher le tuple dans les fragments qui sont susceptibles de contenir le tuple concerné,
et modifier les valeurs d'attribut du tuple dans tous les fragments verticaux.
Exemple : trigger pour suppression des données dans les fragments répliqués :
26
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Exemple2 : trigger pour la mise à jour des données dans les fragments répartis :
Soient C1 et C2 les conditions de répartition des données dans respectivement dans « Site1 »
et « Site2 ». Les données qui ne respectent pas C1 et C2 sont stockées dans « Site ».
L’algorithme du trigger responsable à la répartition de la mise à jour est donné par :
Dans le cas des requêtes locales le coût provient principalement du nombre d’entrée et sortie en
mémoire secondaire. À ce coût s’ajoute celui de transfert de données entre les sites dans le cas
des requêtes réparties.
Dans les SGBD l’optimiseur restructure les arbres algébriques des requêtes afin de minimiser
le temps de réponse des requêtes complexe demandant plusieurs jointures. On préfère toujours
faire des produits cartésiens avec le minimum de tuples possible. On cherche donc à
remplacer les jointures par les semi-jointures.
27
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
R1(a, b, c, d)
R2(x, y, z)
Bien évidemment le dernier algorithme est celui qui sera utilisé par l’optimiseur pour
répondre à la requête.
Exemple :
Question traitée : Quel sont les clients qui ont commandé le produit « Tarte au sucre »
avec une quantité par commande >20
Réponse en SQL
28
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Clt = Client
Cde = Commande
DC = DétailsCommande
Ref = RéfProduit
Désig = Désignation
Qt = Quantité
Hypothèse :
Si on suppose que :
La table Client dispose de 1000 tuples.
La table Commande dispose de 4000 tuples
La table Détail Commande 8000 tuples
La table Produit 10000 tuples.
Dans ce cas les restrictions vont se faire sur une table de 1000×4000×8000×10000.
Afin de réduire le nombre de ligne des relations utilisées dans les jointures et par conséquent
réduire le coût de la requête, on propose la restructuration suivante de l’arbre algébrique.
29
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Optimisation globale.
Soient des jointures entre les tables T1, T2 etT3. Chaque site « Si » contient une seule table
« Ti ».
Algo 1 :
Transférer T1 au site 2
30
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
R=T1 ⋈ T2 au site 2
Algo 2 :
R=T1 ⋈ T2 au site 1
Transférer T2 au site 1
Algo 3 :
Transférer T1 au site 3
Si on suppose que le nombre de tuples de chaque relation est donné de telle sorte qu’on a :
NT1<NT2<NT3. L’algorithme algo-3 sera donc le plus optimal.
R1 ⨝ '1 R2 R1 ▷ R2 : au site 2
Algorithme :
Transférer T2 au site1
31
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
R = T1 ⨝ T2 au site1
S = T3 ⨝ T4 au site 3
En parallèle, transférer T4 au site3
Un DBlink est un objet Oracle permettant de créer un lien entre plusieurs bases de données
Oracle, ce lien peut être sur le même hôte, sur un hôte appartenant au même domaine ou sur
tout autre hôte joignable par le protocole TCP/IP. Les BD link permettent de manipuler les
d’une BDD répartie sur plusieurs sites distant comme si c’était une BDD centrale stocké dans
un seul serveur. Pour créer un DBLink, il faut que les fichiers de configuration
« tnsname.ora » et « lestener.ora » soit correctement renseigné sur le service de connexion à
distance :
- Adresse : Protocol, Host et le Port
- Connexion des data : nom du serveur et le nom du service
Syntaxe :
Dans Site1:
32
Filière : Licence Génie Informatique
Prof : A. BENMAKHLOUF
Voir TP5
33