Vous êtes sur la page 1sur 10

Conception de BDR et requêtes Migration vers une BDR

Décomposition en BD locales
Approche décomposition BD
Fragmentation
Allocation des fragments
BD1 BD2 BD3
Fragmentation de requêtes
Optimisation de requêtes
Intégration logique des BD locales existantes
BD

BD1 BD2 BD3

1 2

Conception d'une BDR par Décomposition Objectifs de la Décomposition

Fragmentation
Relation globale
• trois types : horizontale, verticale, mixte
fragmentation • performances en favorisant les accès locaux
• équilibrer la charge de travail entre les sites

allocation Duplication (réplication)


• favoriser les accès locaux
• augmenter la disponibilité des données
Site 1 Site 2

3 4

Page 1
Types de Fragmentation Fragmentation correcte
Complète
• chaque élément de R doit se trouver dans un fragment

Reconstructible
• on doit pouvoir recomposer R à partir de ses
fragments
Disjointe
• chaque élément de R ne doit pas être dupliqué
horizontale verticale mixte

5 6

Fragmentation Horizontale Fragmentation Horizontale par sélection


Fragmentation horizontale de R sur m fragments Fragments définis par sélection Client
tuples de R: {t1, …, tn}, fragments: {R1, …, Rm} nclient nom ville
• Fragmentation par round-robin create table Client1 as
C1 Dupont Paris
Le tuple ti ∈ Rj avec j = i mod m select * from Client where ville = ‘Paris’ C2 Lyon

Martin
•  lecture séquentielle C3 Martin Paris
create table Client2 as C4 Smith Lille
• Fragmentation par hachage sur l’attribut A
• ti ∈ Rj avec j = hash(ti.A) select * from Client where ville <> ‘Paris’
Client1
•  sélection (A=v), équi-jointure (A=B)
nclient nom ville
• Fragmentation par intervalle
• Fragmenter le domaine de l’attribut A en m intervalles C1 Dupont Paris
• Vecteur {a1, …, am-1} Reconstruction C3 Martin Paris
• ti ∈ Rj avec aj-1 ≤ Ti.A < aj
•  sélection ( «A between x and y») create view Client as Client2
select * from Client1 nclient nom ville
union
C2 Martin Lyon
select * from Client2; C4 Smith Lille

7 8

Page 2
Fragmentation Horizontale par sélection Fragmentation Horizontale Dérivée
• Fragmentation de R selon n prédicats Fragments définis par semi-jointure Cde
les prédicats {p1, …, pn} ex: {a<10, a > 5, b=‘x’, b=‘y’} create table Cde1 as

ncde nclient produit qté
select * from Cde, Client1
• L’ensemble M des prédicats de fragmentation est : where Cde.nclient = Client1.nclient D1 C1 P1 10
• M = { m | m = ∧ 1 ≤ k ≤ n pk* } avec pk* ∈{pk, ¬ pk} D2 C1 P2 20
D3 C2 P3 5
• Eliminer les m de sélectivité nulle ex: a<10 ∧ a > 5 create table Cde2 as D4 C4 P4 10
• Simplifier: a<10 ∧ a ≤ 5 ∧ b=‘x’ ∧ b ≠ ‘y’ devient a ≤ 5 ∧ b=‘x’ select * from Cde, Client2
• Construire les fragments {R1, …, Rk} where Cde.nclient = Client2.nclient

• Pour chaque mi , Ri = σmi (R) Reconstruction


• Minimalité Cde = Cde1 union Cde2
• Ne pas avoir 2 fragments toujours lus ensemble
Cde1 Cde2
• Choisir les pi des requêtes les plus fréquentes
ncde nclient produit qté ncde nclient produit qté
D1 C1 P1 10 D3 C2 P3 5
D2 C1 P2 20 D4 C4 P4 10

9 10

Propriétés de la fragmentation Fragmentation Verticale


horizontale dérivée
R: fragmentation horizontale Fragments définis par projection
S: fragmentation horizontale dérivée Cde1 = Cde (ncde, nclient) Cde
Cde2 = Cde (ncde, produit, qté) ncde nclient produit qté
Complète D1 C1 P1 10
Reconstruction
• Chaque tuple de S doit joindre avec au moins un tuple de R D2 C1 P2 20
Cde = [ncde, nclient, produit, qté] D3 C2 P3 5
Disjointe where Cde1.ncde = Cde2.ncde D4 C4 P4 10
• ∀i,j , (S Z< Ri) ∩ (S Z< Rj) = ∅

Reconstructible
• S = (S Z< R1) ∪ (S Z< R2) ∪ … ∪ (S Z< Rn)
Cde1 Cde2
ncde nclient ncde produit qté
⇒ contrainte d’intégrité référentielle
• A = clé de R D1 C1 D1 P1 10
• S.A référence R.A D2 C1 D2 P2 20
D3 C2 D3 P3 5
D4 C4 D4 P4 10

11 12

Page 3
Propriétés de la fragmentation verticale Matrice d’affinité des attributs
Fragmentation verticale de R Matrice A
• Ai ⊆ attributs(R) aij = affinité de Ai avec Aj
• Fragments: Ri = πAi(R) ex: nb de requêtes qui accèdent Ai et Aj

Complète
A1 A2 A3 A4
• Attributs(R) = A1 ∪ A2 ∪ … ∪ An
A1 45 0 45 0
Disjointe
A2 80 5 75
• A1 ∩ A2 ∩ … ∩ An = clé(R)
A3 53 3
Reconstructible A4 78
• R = R1 ZY R2 ZY … ZY Rk

13 14

Matrice d’affinité Allocation des Fragments aux Sites


regroupement des attributs
Matrice A
Non-dupliquée
A1 A3 A2 A4
• partitionnée : chaque fragment réside sur un seul site
A1 45 45 0 0 Dupliquée
A3 53 5 3 • chaque fragment sur un ou plusieurs sites
A2 80 75 • maintien de la cohérence des copies multiples
A4 78 • Règle :
• si le ratio Lectures/màj est > 1, la duplication est avantageuse

15 16

Page 4
Allocation de Fragments Exemple d'Allocation de Fragments
Problème: Soit
F un ensemble de fragments
Client1 Client2
S un ensemble de sites nclient nom ville
nclient nom ville
Q un ensemble d’applications et leurs caractéristiques C1 Dupont Paris C2 Martin Lyon
C3 Martin Paris C4 Smith Lille
trouver la distribution "optimale" de F sur S
Optimum
• coût minimal de comm, stockage et traitement Cde1 Cde2

• Performance = temps de réponse ou débit ncde client produit qté ncde client produit qté
D1 C1 P1 10 D3 C2 P3 5
Solution D2 C1 P2 20 D4 C4 P4 10
• allouer une copie de fragment là où le bénéfice est
supérieur au coût Site 1 Site 2

17 18

Transparence des requêtes Transparence des requêtes


Transparence de la répartition : degré d’intégration du Schéma de fragmentation
schéma • contient la définition des fragments

• Requête indépendante de la fragmentation : haut Schéma d’allocation


niveau de transparence • contient la localisation de chaque réplique de fragment

• bas niveau de transparence : l’utilisateur doit spécifier Où se trouve le schéma de répartition ?


les fragments qu’il manipule => pb de nommage non 1. Chaque site a une copie de tout le schéma :
ambigu.
avantage : lectures rapides
Le système doit optimiser les lectures/écritures,
inconvénient : modifications de schémas
• effectuer automatiquement les mises à jour des
répliques, 2. Chaque site a un schéma local
il faut retrouver les informations sur les autres sites
• optimiser les requêtes.
3. Solutions mixtes : copie partielle du schéma sur certains sites

19 20

Page 5
Evaluation de Requêtes Réparties Exemple d'Evaluation Simple
Select A from R where B = b
Requête sur relations globales

Fragmentation R = R1 U R2
Schéma
Fragmentation de fragmentation

Select A from R1 where B =b


union Select A from R2 where B = b
Requête sur fragments

R1 = R1 @ Site1
Schéma Optimisation R2 = R2 @ Site2
Optimisation d'allocation R2 = R2 @ Site3

Select A from R1 @ Site1 where B = b


Plan d'exécution réparti union Select A from R2 @ Site3 where B = b

21 22

Fragmentation Reconstruction
Réécriture Select nom from Client
• mettre la requête sous forme d'un arbre algébrique Client1 : Client where ville = ‘Paris’
(feuille = relation, noeud = op. relationnel)
Reconstruction Client2 : Client where ville not ‘Paris’
• remplacer chaque feuille par le programme de
reconstruction de la relation globale
P (nom) P (nom)
Transformation
• appliquer des techniques de réduction pour éliminer les
opérations inutiles
Client U
Notations utilisées :
• S : select
• J : join Client1 Client2
• P : project
23 24

Page 6
Réduction pour la fragmentation horizontale Réduction pour la Fragmentation Verticale

Règle : éliminer l'accès aux fragments inutiles Règle : éliminer les accès aux relations de base qui
n'ont pas d'attributs utiles pour le résultat final
Exemple :
Client1 : Client where ville = ‘Paris’
Exemple
Client2 : Client where ville not ‘Paris’ Cde1 : Cde (ncode, nclient)

Select * from Client where ville = ‘Lyon’ Cde2 : Cde (ncode, produit, qté)
Select nclient from Cde

S (ville=Lyon) P (nclient) P (nclient)


U S (ville=Lyon)

U S (ville=Lyon) S (ville=Lyon) J (ncde)

Client1 Client2 Client1 Client2 Client2 Cde1 Cde2 Cde1

25 26

Réduction pour la Fragm. Hor. Dérivée Exemple


Règle : distribuer les jointures par rapport aux unions et Requête canonique J (nclient)
appliquer les réductions pour la fragmentation
horizontale S (ville=Lyon)

U U
Exemple
Client1 : Client where ville= ‘Paris’ Cde1 Cde2 Client1 Client2
Client2 : Client where ville not ‘Paris’
Cde1 : Cde where Cde.nclient=Client1.nclient Après 1ère réduction J (nclient)
Cde2 : Cde where Cde.nclient=Client2.nclient

S (ville=Lyon)
Select * from Client, Cde U
where Client.nclient = Cde.nclient
and ville= ‘Lyon’
Cde1 Cde2 Client2

27 28

Page 7
Exemple (suite) Optimisation de Requêtes Réparties
U
entrée : une requête simplifiée exprimée sur des fragments
Distribution sortie : un plan d'exécution réparti optimal
J (nclient) J (nclient)

Objectifs
S (ville=Lyon) S (ville=Lyon)
• choisir la meilleure localisation des fragments
Cde1 Client2 Cde2 Client2
• minimiser une fonction de coût: f (I/O, CPU, Comm.)
• exploiter le parallélisme
Elimination du sous-arbre inutile J (nclient)
• exprimer les transferts inter-sites
Solution
S (ville=Lyon)
• examiner le coût de chaque plan possible (par
transformation) et prendre le meilleur
Cde2 Client2
29 30

Exemple Choix de la Solution

Site 1 : Client1 = Client where ville= ‘Paris’ Site 5

Site 2 : Client2 = Client where ville not ‘Paris’ (Client1 U Client2) J nclient (S qté > 10 (Cde1 U Cde2))

Site 3 : Cde1 = Cde where Cde.nclient=Client1.nclient


Site 1 Site 2 Site 3 Site 4
Site 4 : Cde2 = Cde where Cde.nclient=Client2.nclient
Site 5 : résultat
C3 U C4 Site 5

Select * from Client, Cde Site 1 Site 2


C3 = C1 J nclient Client1 C4 = C2 J nclient Client2
where Client.nclient = Cde.nclient
and qté > 10 Site 3 Site 4
C1 = S qté > 10 Cde1 C2 = S qté > 10 Cde2

31 32

Page 8
Coût des Solutions Jointure
Supposons R sur S1, S sur S2, T sur S3.
• taille (Cde1) = taille (Cde2) = 10 000 Requête demandée sur le site S0 : R ZY S ZY T
• taille (Client1) = taille (Client2) = 2 000 Plusieurs possibilités :
• coût de transfert d’un n-uplet = 1 a) Copier tout sur S0 et faire les jointures sur S0
• Sélectivité(qté>10) = 1% b) Copier R sur S2, et joindre R et S sur S2
Copier le résultat sur S3, et faire la jointure avec T sur S3
Stratégie 1 Copier le résultat sur S0
• transfert de Cde1 + Cde2 = 20 000 Tenir compte des index, de la taille des relations à transférer, de la taille
des relations intermédiaires, de la charge des sites, de la vitesse de
• transfert de Client1 + Client2 = 4000 transmission, etc.
On peut paralléliser les jointures : grand nombre de stratégies
Stratégie 2
• transfert de C1 + C2 = 1%*10000 + 1%* 10000 = 200
• transfert de C3 + C4 = 200
33 34

Semi-jointure Semi jointure: réduction des transferts


Traiter la jointure entre deux relations réparties sur 2 sites: Réduire la taille des transferts inter site
R1 sur S1, R2 sur S2 Rappel: R1Z< R2 = ΠR1 (R1ZY R2) T1 = ΠΑ (R) à transférer de S1 vers S2
Vecteur de bits V = {b1, …, bn},
Domaine de l’attribut R.A: {a1, …, an},
Requête R1 ZY R2 = R1 ZY (R2Z< R1) et résultat sur S1
Vi = 1 si ai ∈ ΠΑ (R), sinon Vi=0
T1 = ΠΑ (R1) sur S1, puis envoi de T1 sur S2 Limite: si le domaine est grand (n>>1), taille vecteur
T2 = R2 Z< T1 sur S2, puis envoi de T2 sur S1
Bloom filter : vecteur de taille fixe (=M)
Calcul de R1 ZY T2 sur S1 • Vecteur V = {b1, …, bM},
Requête R1ZY R2 = (R1Z< R2) ZY (R2Z< R1) et résultat sur S0 • fonction de hachage h() : {a1, …, an} → {1,M}
Transférer T1 = ΠΑ (R1) de S1 → S2 • Vj=1 si h(ai) = j et ai ∈ ΠΑ (R), sinon Vi=0

Transférer T2 = ΠΑ (R2) de S2 → S1 • Inconvénient: a ∈ ΠΑ (R), b ∉ ΠΑ (R), h(a)=h(b)

Transférer T3 = R1Z< R2 de S1 →S0 • Les tuples de R tq R.A=b sont transférés inutilement.

Transférer T4 = R2Z< R1 de S2 →S0


Sur S0, T3 ZY T4
35 36

Page 9
Conclusion

Importance de la fragmentation horizontale pour


augmenter le parallélisme inter- et intra-requête

Utiliser la fragmentation verticale si forte affinité


d'attributs et beaucoup d'attributs

L'optimisation reposant sur un modèle de coût est


critique s'il y a beaucoup de sites

37

Page 10