Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
FRAGMENTATION ET ALLOCATION
2. Techniques de fragmentation
1. Définition
On définit la fragmentation comme étant le processus de décomposition d'une base de données logique (telle
que la voient les utilisateurs) en un ensemble de « sous » -bases de données appelées fragments sans perte de
données. La fragmentation peut être coûteuse s’il existe des applications qui possèdent des besoins opposés.
2. Objectifs
Les applications ne travaillent que sur des sous-ensembles des relations. Une distribution complète des relations
générerait soit beaucoup de traffics soit une réplication des données avec tous les problèmes que cela occasionne :
➢ Problème de mise-à-jour ;
➢ Problème de stockage.
Il est donc préférable de mieux distribuer ces sous-ensembles.
L’utilisation de petits fragments permet de faire tourner plus de processus simultanément ; ce qui entraine une
meilleure utilisation des capacités du réseau.
3. Caractéristiques
➢ Les différents fragments doivent « de préférence » être exclusifs (leur intersection est vide) : Règle
de disjonction
❑ Dans le cas contraire on parle de duplication ; il faut affiner la fragmentation.
4. Techniques de fragmentation
Il existe différentes façons pour fragmenter une base de données. L'unité de fragmentation détermine la
nature de l'élément le plus petit dont les composants ne peuvent être fragmentés (on parle de granularité :
taille du plus petit élément). Une granularité fine donne de grandes possibilités pour la fragmentation et
autorise une répartition flexible et efficace de la base de données mais a l'inconvénient de provoquer une
certaine lourdeur pour la recomposition des informations. A l'opposé, une granularité élevée permet une
gestion simple de la fragmentation, mais fournit des possibilités très limitées pour la fragmentation. L'unité
de fragmentation est généralement laissée au libre choix de l'administrateur. Il y a quatre unités de
fragmentation de base : Relations, Tuples, Attributs et Valeurs.
b. Fragmentation horizontale
Appelée aussi fragmentation par occurrences ou par tuples, la fragmentation horizontale est basée sur un
découpage (horizontal) des tuples des tables. Les occurrences d'une même table peuvent être réparties dans des
fragments différents (avec tous les attributs), le découpage est effectué en utilisant la sélection et la reconstruction
est effectuée en utilisant l’opération d’union. Il existe deux types de fragmentation horizontale : fragmentation
horizontale primaire et fragmentation horizontale dérivée.
On parle de fragmentation dérivée lorsqu’il y a héritage entre les classes. Elle est obtenue dans le cas de lien
mère-fille.
➢ On forme l'ensemble des 𝟐𝒏 conjonctions de conditions (CC) où chaque condition élémentaire est prise
dans sa forme positive ou dans sa forme négative (c’est ce qui donnera toutes les combinaisons possibles des
conjonctions de conditions),
➢ On ôte de cet ensemble les conjonctions de condition qui sont toujours fausses, et on simplifie les autres.
Les prérequis
ഥ+B
i) Premier théorème de Morgane AxB = A ഥ
ഥxB
ii) Deuxième théorème de Morgane = A + B = A ഥ
D’après les lois fondamentales de l’algèbre de Boole :
i) A + A = A
ii) A.A = A
iii)1 + A = 1
ഥ=0
iv) A.A
Exemple
On considère une table CUISINIER (avec NUMEQ qui représente le numéro de l’équipe du
cuisinier) que l'on se propose de répartir en fragments horizontaux.
CUISINIER
NUMERO NOM PRENOM NUMEQ
12 ADENYO Jean 1
34 ADENYO Jeanne 2
17 MANDELA Robert 1
22 AFOLABI Aline 1
26 GODEVI Jean 2
11 ATAKUI Aline 2
38 KAGA ROBERT 2
9 KPOGNON Roberte 1
13 ALLAGOR Jean 2
20 GBENOR Jean 1
R1: SELECT numero, numeq FROM CUISINIER WHERE prenom = 'Jean' AND nom LIKE '%R%';
R3: SELECT numero, nom FROM CUISINIER WHERE numeq = '2' AND prenom = 'Jean';
Pour effectuer la fragmentation horizontale on se base sur les critères de recherche, c'est- à-dire les
conditions exprimées dans les "WHERE" des ordres SQL. Soient
- C1 = A ʌ B
- C2 = C
- C3 = D ʌ A
A partir des conditions Ci, on peut construire l'ensemble des conjonctions CCj (i=1..8) de conditions :
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}
• ¬C1 ʌ C2 ʌ C3 = ¬ (A ʌ B) ʌ C ʌ (D ʌ A)
= AxB.C.D.A
= AxB.C.Cത .A car D = ¬C D = Cത
=0 (cf. i) car C.Cത = 0
• C1 ʌ ¬C2 ʌ C3 = (A ʌ B) ʌ ¬C ʌ (D ʌ A)
ത
= A.B.C.D.A
= A.B.D.D.A car ¬C = D Cത = D
= A.B.D car A.A = A
=AʌBʌD
• C1 ʌ C2 ʌ ¬C3 = (A ʌ B) ʌ C ʌ ¬ (D ʌ A)
= A.B.C.DxA
= A.B.C.(D ഥ car AxB = A
ഥ + A) ഥ+B
ഥ
= A.B.C.(C + Aഥ ) car ¬D = C Dഥ=C
= A.B.(C.C + C.A)ഥ
= A.B.CC + A.B.C.A ഥ
= A.B.CC + 0 ഥ=0
car A.A
= A.B.C car A.A = A
=AʌBʌC
• ¬C1 ʌ ¬C2 ʌ C3 = ¬ (A ʌ B) ʌ ¬C ʌ (D ʌ A)
= AxB.Cത .D.A
ഥ+B
= (A ഥ).Cത .D.A ഥ+B
car AxB = A ഥ
ഥ+B
= (A ഥ).D.D.A car ¬C = D Cത = D
ഥ+B
= (A ഥ).D.A car A.A = A
= Aഥ .D.A + B ഥ.D.A
=0+B ഥ.D.A ഥ =0
car A.A
= A.Bഥ.D
= A ʌ ¬B ʌ D
• C1 ʌ ¬C2 ʌ ¬C3 = (A ʌ B) ʌ ¬C ʌ ¬ (D ʌ A)
ത
= A.B.C.DxA
ത D
= A.B.C.( ഥ
ഥ + A) ഥ+B
car AxB = A ഥ
= A.B.Cത .D
ഥ + A.B.Cത .A
ഥ
= 0 car C. തDഥ = 0 et A.Aഥ=0
• ¬C1 ʌ C2 ʌ ¬C3 = ¬ (A ʌ B) ʌ C ʌ ¬ (D ʌ A)
= AxB.C.DxA
ഥ+B
= (A ഥ).C.(D ഥ)
ഥ+A
ഥ+B
= (A ഥ
ഥ).C.(C + A)
ഥ+B
= (A ഥ
ഥ).(C.C + CA)
ഥ+B
= (A ഥ car A.A = A
ഥ).(C + CA)
ഥ .C + A
=A ഥ .C.A
ഥ +B ഥ
ഥ.C + B.CA
ഥ + A.C
= A.C ഥ +B ഥ
ഥ.C + A.C.B ഥA
car A. ഥ=A
ഥ
ഥ + A.C.B
= A.C ഥ ഥ.Ccar A + A = A
+B
ഥ
= A.C.(1 ഥ.C
+ B) + B
ഥ +B
= A.C ഥ.C car 1 + A = 1
ഥ+B
= (A ഥ).C
= (¬A ∪ ¬B) ʌ C
ഥ+B
= (A ഥ)
ഥ).(D.C + D.A
ഥ+B
= (A ഥ
ഥ).(D.A) car D.C = 0
ഥ .D.A
=A ഥ+B ഥ
ഥ.D.A
ഥ +B
= A.D ഥ
ഥ.D.A ഥA
car A. ഥ=A
ഥ
ഥ
= A.D.(1 ഥ)
+B
ഥ
¬C1 ʌ ¬C2 ʌ ¬C3 = A.D car 1 + A = 1
= ¬A ʌ D
F1 F4
NUMERO NOM PRENOM NUMEQ NUMERO NOM PRENOM NUMEQ
13 ALLAGOR Jean 2 12 ADENYO Jean 1
17 MANDELA Robert 1
22 AFOLABI Aline 1
F2 9 KPOGNON Roberte 1
NUMERO NOM PRENOM NUMEQ
20 GBENOR Jean 1
F5
NUMERO NOM PRENOM NUMEQ
F3 34 ADENYO Jeanne 2
NUMERO NOM PRENOM NUMEQ 11 ATAKUI Aline 2
26 GODEVI Jean 2 38 KAGA ROBERT 2
Pour décomposer une base de données en fragments verticaux, on se base sur les requêtes d’interrogation ou de mise-à-
jour prédéfinies les plus importantes et les plus fréquentes pour extraire les attributs concernés. Les fragments verticaux
sont exclusifs, sauf en ce qui concerne le (ou les) attribut(s) de jointure (clé, identifiant, OID) qui sont communs à tous
les fragments et qui seront utilisés pour que la décomposition soit sans perte d'information (reconstruction).
Pour ce cas, on se base sur les conditions de projections :
➢ Soient p1, p2, ..., pn les conditions de projection qui ont été extraites des requêtes
➢ On forme l'ensemble des 𝟐𝒏 intersections des conditions de projection où chacune est soit l'expression
initiale soit son complément (c’est ce qui donnera toutes les combinaisons possibles des intersections des
conditions de projection).
➢ On ôte de cet ensemble les conjonctions de condition qui sont toujours fausses, et on simplifie les
autres.
NB : Dans le cas où la requête ne possède pas d’attributs de jointure, il faut les ajouter
Exemple
On considère une table CUISINIER (avec NUMEQ qui représente le numéro de l’équipe du
cuisinier) que l'on se propose de répartir en fragments horizontaux.
CUISINIER
NUMERO NOM PRENOM NUMEQ
12 ADENYO Jean 1
34 ADENYO Jeanne 2
17 MANDELA Robert 1
22 AFOLABI Aline 1
26 GODEVI Jean 2
11 ATAKUI Aline 2
38 KAGA ROBERT 2
9 KPOGNON Roberte 1
13 ALLAGOR Jean 2
20 GBENOR Jean 1
R1: SELECT numero, numeq FROM CUISINIER WHERE prenom = 'Jean' AND nom LIKE '%R%';
R3: SELECT numero, nom FROM CUISINIER WHERE numeq = '2' AND prenom = 'Jean';
A partir des projections Pi, on construit l'ensemble IP des intersections de projections où ¬Pj désigne
le complément de Pj sur l'ensemble des attributs de la table CUISINIER avec l'ajout obligatoire de la clé
primaire (car c’est la clé primaire qui nous permettra de relier le prénom d’un cuisinier à son nom par
exemple)
- Si P1 = (numero, numeq) alors son complément dans l’ensemble de tous les attributs de la table
CUISINIER est ¬P1 = (numero, nom, prenom) en ajoutant la clé primaire numero.
- Si P3 = (numero, nom) alors son complément dans l’ensemble de tous les attributs de la table CUISINIER
est ¬P3 = (numero, prenom, numeq) en ajoutant la clé primaire numero.
Nous avons deux (02) contraintes donc le nombre d’intersection est 𝟐𝟐 = 4 donc on construit l’ensemble IP
tel que IP = {P1 ∩ P3, ¬ P1 ∩ P3, P1 ∩ ¬P3, ¬P1 ∩ ¬P3} avec :
- P1 ∩ P3 = (numero, numeq) ∩ (numero, nom) = (numero)
- ¬ P1 ∩ P3= (numero, nom, prenom) ∩ (numero, nom) = (numero, nom)
- P1 ∩ ¬P3= (numero, numeq) ∩ (numero, prenom, numeq) = (numero, numeq)
- ¬P1 ∩ ¬P3 = (numero, nom, prenom) ∩ (numero, prenom, numeq) = (numero, prenom)
NB : Dans l’algèbre relationnel, tout ce qui vient après le signe (pi) ∏ représente tout ce qui vient
après le SELECT dans une requête (ex : F1 = ∏numero(Cuisinier) correspond à SELECT numero
FROM CUISINIER). On a donc fragments verticaux suivants :
Cette fragmentation combine les fragmentations horizontale (par occurrences) et verticale (par attributs). Le
partitionnement est effectué par une combinaison de projections et de sélections et la reconstruction est
effectuée par combinaison de jointures et d'unions des différents fragments. Les occurrences et les attributs
peuvent donc être répartis dans des différents fragments.
Fragmentation horizontale
• Le fragment 1 est concerné par les requêtes R1 et R3, donc par tous les éléments de l'ensemble
IP construits à partir de P1 et P3, soit IP1 = {P1 ∩ P3, ¬ P1 ∩ P3, P1 ∩ ¬P3, ¬ P1 ∩ ¬P3}
→ IP1 = {(numero), (numero, nom), (numero, numeq), (numero, prenom)};
• Le fragment 2 est concerné par les requêtes R1 et R2, donc seulement par les projections P1 et ¬
P1, soit IP2= {P1 ∩ P1, ¬ P1 ∩ ¬ P1}
→ IP2 = {(numero, numeq), (numero, nom, prenom)};
• Le fragment 3 est concerné par la requête R3 donc seulement par les projections P3 et ~P3, soit
IP3 = {P3 ∩ P3, ¬P3 ∩ ¬P3}
→ IP3 = {(numero, nom), (numero, prenom, numeq)};
• Le fragment 4 est concerné par la requête R2, donc par tous les attributs
→ IP4 = {(numero, nom, prenom, numeq)};
• Le fragment 5 n'est concerné par aucune des requêtes, donc par tous les attributs
→IP5 = {(numero, nom, prenom, numeq)}.
I. L’allocation
Après la fragmentation, la question qu’on doit se poser est : Où sera affecté chacun des fragments ?
L’allocation est le fait d’allouer un espace de stockage à un fragment de donné. L’allocation peut se faire avec
réplication ou sans réplication. Sachant que la réplication favorise les performances des requêtes et augmente la
disponibilité des données, mais est coûteuse en mise-à-jour des différents fragments.
Pour chaque requête on connaît l'ensemble des sites qui sont susceptibles d'émettre cette requête et
on possède l'ensemble des fragments qui sont concernés par la requête. Ainsi on place les fragments
sur les sites où ils sont le plus utilisés pour minimiser les transferts de données entre les sites. En
général, pour définir le schéma de localisation, on recherche :
✓ Priorité 1 : D'où sont émises les requêtes de sélection ;
✓ Priorité 2 : D'où sont faites les mises à jour.
Caractéristiques
Problèmes d’allocation
➢ Entrées :
❑ F = {F1, F2, …, Fn} - ensemble de fragments,
❑ S = {S1, S2, …, Sm} - ensemble de sites,
❑ Q = {Q1, Q2, …, Ql} - ensemble de requêtes.
Le problème d’allocation consiste à trouver une distribution optimale de F sur S afin d’améliorer la
performance (temps de réponse, données transférées, etc.) de Q.
➢ Contraintes
❑ Stockage ;
❑ Équilibrage de la charge entre les sites.
Méthodes d’allocation
Méthodes d’allocation
➢ Permet de déterminer le site sur lequel stocker le fragment, là où l’on maximise les traitements locaux ;
Soient les informations relatives aux différents fragments recueillis d’une étude préalable (les fragments de
cet exemple diffèrent des fragments que nous avons obtenus précédemment) :
Fragme Temps Temps Temps Temps mise à Accès T1 * Accès T2 * Accès T3 * Total
Fragment Site
nts d’accès mise à accès jour distant Fréquence Fréquence Fréquence pondéré
F1 S1 4*1 0 0 4
local(ms) jour local distant
S2 0 2*2 0 4
F1 100 150 500 600
S3 0 0 0 0
F2 150 200 650 700
S4 4*1 2*2 0 8
F3 200 250 1000 1100 S5 4*1 0 0 4
F2 S1 2*1 0 0 2
Tableau 2 : Transactions sur les fragments par rapport aux sites
S2 0 0 0 0
Transactions Sites Fréquence Accès Tables (L= lecture, S3 0 0 4*3 12
E = écriture) S4 2*1 0 0 2
4 accès F1 (3L, 1E)
T1 S1, S4, S5 1 S5 2*1 0 4*3 14
2 accès F2 (2L)
F3 S1 0 0 0 0
2 accès F1 (2L)
T2 S2, S4 2 S2 0 4*2 0 8
4 accès F3 (3L,1E)
S3 0 0 2*3 6
4 accès F2 (3L, 1E) S4 0 4*2 0 8
T3 S3, S5 3
2 accès F3 (2L) S5 0 0 2*3 6
Principes
✓ 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 traitement distant – temps de traitement local) * fréquence ;
✓ Coût du stockage copie = coût de la mise à jour locale + coût des mises à jour distantes.
Formules
Conclusion
Bénéfice Copie – Coût m.a.j = 1200 – 1350 = - 150 qui est < 0
On ne peut donc pas allouer le fragment F1 sur le site S1.
M. AZOTI & M. SANI 43
FRAGMENTATION ET ALLOCATION
M.a.j. Interr. Interr. bénéfice bénéfice
Fragment Site M.a.j. distantes Coût m.a.j. Interrogations
locales locales distantes copie - coût
F1 S1 T1 T1 de S4 et S5 1*1*150+2*1*1*600 = 1350 T1 de S1 3*1*100 = 300 3*1*500 = 1500 1200 -150 <0
S2 T1 de S1, S4 et S5 3*1*1*600 = 1800 T2 de S2 2*2*100 = 400 2*2*500 = 2000 1600 -200 <0
S3 T3 T3 de S5 1*1*3*200 + 1*1*3*700 = 2700 T3 de S3 3*3*150 = 1350 3*3*650 = 5850 4500 1800 >0
Remarques
➢ Ne tiennent pas compte de la topologie du réseau ;
➢ Difficulté à estimer les temps moyens ;
➢ Parfois on se concentre sur les transactions critiques et non sur l’ensemble des transactions.