Vous êtes sur la page 1sur 37

CHAPITRE 3: Allocation et Duplication des

données

Mme Sameh Souli


25

Applications: Fragmentation
Fragmentation par relation (suivant)
Exemple: Banque
• Trois tables: Agence, Clients, Compte
Compte Client
NoClient Agence TypeCompte Somme NoClient NomClient Prénom Age
174 723 Lausanne courant 123 345.89 174 723 Villard Jean 29
177 498 Genève courant 34 564.00 177 498 Cattell Blaise 38
201 639 Lausanne courant 45 102.50 201 639 Tesllis Alan 51
201 639 Lausanne dépôt 325 100.00 203 446 Kovalsky Validmir 36
203 446 Genève courant 274 882.95 Agence
Agence Adresse
• Cette base peut être fragmentée en deux Lausanne Rue du Lac, 3, 1002 Lausanne
fragments: {Compte, Client} Genève Avenue du Mont Blanc, 21, 1200 Genève
et
{Agence}.
26

Fragmentation
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,
• La reconstruction est effectuée en utilisant l’opération d’union.
27

Fragmentation
Fragmentation horizontale
(suivant)
• La tableBanque
Exemple: Compte peut être divisée en deux fragments par répartition
des tuples en deux catégories :
• Compt1 = σ TypeCompte = courant(Compte)
• Compt2 = σ TypeCompte = dépôt (Compte)
Compt1 Compt2
NoClient Agence TypeCompte Somme NoClient Agence TypeCompte Somme
174 723 Lausanne courant 123 345.89 201 639 Lausanne dépôt 325 100.00
177 498 Genève courant 34 564.00
201 639 Lausanne courant 45 102.50
203 446 Genève courant 274 882.95

• La recomposition est réalisée par une opération


d’union
28

Fragmentation
Fragmentation verticale (par attributs)
Les fragments sont construits à partir de quelques attributs d'une
relation:
• Ce sont les attributs (avec leur occurrences) d'une même relation qui peuvent
être répartis dans des fragments différents.
• Toutes les valeurs des occurrences pour un même attribut se trouvent dans le
même fragment.
• La répartition des attributs dans différents fragments ne peut être correcte que
si l'identifiant (ou identité d'objet) est dupliqué dans chaque fragment  cet
identifiant est utile pour la reconstruction (décomposition sans perte
d'informations.
Le découpage d'une relation en sous tables est effectuée utilisant la
projection sur les colonnes composant chaque fragment.
La reconstruction est effectuée par jointure des
différents fragments.
29

Fragmentation
Fragmentation verticale (suite)
Exemple: Banque
• Dans les guichets bancaires on n’a besoin de connaître que les soldes des
comptes, alors que les services de contentieux ont besoin de connaître les
informations complètes sur chaque client.
• Compt1 = ∏ NoClient, Somme(Compte)

• Compt2 = ∏ Noclient, Agence, TypeCompte(Compte)


Compt1
Compt2
NoClient Somme NoClient Agence TypeCompte
174 723 123 345.89 174 723 Lausanne courant
• La recomposition est réalisée
177 498 34 564.00 177 498 Genève courant
par une opération de jointure
201 639 45 102.50 201 639 Lausanne courant
Compte = Compt1 |x| Compt2
201 639 325 100.00 201 639 Lausanne dépôt
203 446 274 882.95 203 446 Genève courant
30

Fragmentation
Fragmentation hybride (par valeurs)
Cette fragmentation combine la fragmentation horizontale
(par occurrences) et verticale (par attributs).
• Le partitionnement est effectué par une combinaison de projections et de
sélections.
• Les occurrences et les attributs peuvent donc être répartis dans des différents
fragments.
La reconstruction est effectuée par combinaison de jointures et
d'unions des différents fragments.

Abdelouahed Sabri 2011/2012


31

Fragmentation
Fragmentation hybride (par valeurs)
Exemple: Banque

Compt1 = ∏ NoClient, Somme (σ TypeCompte = courant(Compte))

Compt2 = ∏ Somme ( σ TypeCompte = dépôt (Compte))
• Compt3 = ∏NoClient,
NoClient, AgenceCompte)

Compt4 = ∏ Noclient, TypeCompte(Compte)
Compt1 Compt2 Compt3 Compt4
NoClient Somme NoClient Somme NoClient Agence NoClient TypeCompte
174 723 123 345.89 201 639 325 100.00 174 723 Lausanne 174 723 courant
177 498 34 564.00 177 498 Genève 177 498 courant
201 639 45 102.50 201 639 Lausanne 201 639 courant
203 446 274 882.95 201 639 Lausanne 201 639 dépôt
203 446 Genève 203 446 courant
• La reconstruction
Compte= (Compt1 ∪ Compt2 ) |x| Compt3 |x| Compt4
Abdelouahed Sabri 2011/2012
32

Fragmentation
Méthodologie de la fragmentation horizontale
Question: Comment décomposer une base de données en
fragments horizontaux???
On se base sur les requêtes d'interrogation ou de mise à jour les
plus importantes et les plus fréquentes.
Pour le cas de la fragmentation horizontale on se base sur les
conditions de sélections.
• Soient c1, c2, ..., cn les conditions de sélection qui ont été extraites
des requêtes,
• On forme l'ensemble des 2n conjonctions de conditions où chaque
condition élémentaire est prise dans sa forme positive ou dans sa
forme négative

• On ôte de cet ensemble les conjonctions de condition qui sont


toujours
33

Fragmentation
Méthodologie de la fragmentation horizontale
Exemple:
On considère une table CUISINIER que l'on se propose de répartir
Cuisinier
en fragments horizontaux NUMERO NOM PRENOM NUMEQ
12 DUPONT Jean 1
34 DUPONT Jeanne 2
17 DUBOIS Robert 1
22 DUBALAI Aline 1
26 DUGENOU Jean 2
11 DURAND Aline 2
38 DURACUIRE ROBERT 2
9 DURALUMIN Roberte 1
13 DURDUR Jean 2
20 DURALEX Jean 1

On commencera par se baser sur les requêtes les plus fréquentes:


R1: SELECT numero, numeq FROM CUISINIER WHERE prenom = 'Jean' AND nom LIKE '%R%';
R2: SELECT * FROM CUISINIER WHERE numeq = '1';
R3: SELECT numero, nom FROM CUISINIER WHERE numeq = '2' AND prenom = 'Jean';
34

Fragmentation
Méthodologie de la fragmentation horizontale
Exemple (suite):
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.
• Soit
– A : prenom = 'Jean‘
– B : nom LIKE '%R%‘
– C : numeq = '1‘
– D : numeq = '2‘
• Les condition de sélection:
– 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}
35

Fragmentation
Méthodologie de la fragmentation horizontale
Exemple (suite):
Evaluons chacun des termes :
• C1ʌC2ʌ C3 = Φ
• ¬C1ʌ C2ʌ C3 = Φ
• C1ʌ ¬C2ʌ C3 = A ʌ B ʌ D
• C1ʌ C2ʌ ¬C3 = A ʌ B ʌ C
• ¬C1ʌ ¬C2ʌ C3 = A ʌ ¬B ʌ D
• C1ʌ ¬C2ʌ ¬C3 = A ʌ B ʌ ¬C ʌ ¬D
• ¬C1ʌ C2ʌ ¬C3 = (¬A ∪ ¬B)ʌ C
•¬C1ʌ ¬C2ʌ ¬C3 = (¬A ʌ ¬B ʌ ¬C) ∪ (¬A ʌ ¬C ʌ ¬D) ∪ (¬B ʌ ¬C ʌ ¬D)
Supposons, comme hypothèse supplémentaire (contrainte
d’intégrité) , qu'il n'y a que deux équipes de cuisiniers (1 et 2) ce qui
implique
• ¬Cʌ ¬D = Φ, ¬C = D, ¬D = C
36

Fragmentation
Méthodologie de la fragmentation
horizontale
Exemple (suite):
On a alors les 5 conjonctions de conditions significatives :
• CC1 = C1ʌ ¬C2ʌ C3 = Aʌ Bʌ D
F1 = SELECT *FROM cuisinier WHERE prenom='Jean' AND nom LIKE '%R%'
AND numeq ='2'
• CC2 = C1ʌ C2ʌ ¬C3 = Aʌ Bʌ C
F2 = SELECT *FROM cuisinier WHERE prenom='Jean' AND nom LIKE '%R%'
AND numeq ='1’
• CC3 = ¬C1ʌ ¬C2ʌ C3 = Aʌ ¬Bʌ D
F3 = SELECT *FROM cuisinier WHERE prenom='Jean' AND nom NOT LIKE
'%R%' AND numeq ='2'
• CC4 = ¬C1ʌ C2ʌ ¬C3 = (¬A ∪ ¬B)ʌ C
F4 = SELECT *FROM cuisinier WHERE (prenom !
='Jean' OR nom NOT LIKE
'%R%' ) AND numeq ='1'

37

Fragmentation
Méthodologie de la fragmentation horizontale
Exemple (suite):
Ces 5 conditions définissent les fragments horizontaux
F1
(exclusifs) : NUMERO NOM PRENOM NUMEQ
13 DURDUR Jean 2
F2
Cuisinier NUMERO NOM PRENOM NUMEQ
NUMERO NOM PRENOM NUMEQ 20 DURALEX Jean 1
12 DUPONT Jean 1
34 DUPONT Jeanne 2 F3
17 DUBOIS Robert 1 NUMERO NOM PRENOM NUMEQ
22 DUBALAI Aline 1 26 DUGENOU Jean 2
26 DUGENOU Jean 2
Fragmentation F4
11 DURAND Aline 2 NUMERO NOM PRENOM NUMEQ
38 DURACUIRE ROBERT 2 12 DUPONT Jean 1
9 DURALUMIN Roberte 1 17 DUBOIS Robert 1
13 DURDUR Jean 2 22 DUBALAI Aline 1
20 DURALEX Jean 1 9 DURALUMIN Roberte 1
F5
NUMERO NOM PRENOM NUMEQ
34 DUPONT Jeanne 2
11 DURAND Aline 2
38 DURACUIRE ROBERT 2
38

Fragmentation
Méthodologie de la fragmentation horizontale
Exercice:
On considère la table Compte (NoClient, Agence, TypeCompte,
Somme) . Proposer un schéma de fragmentation horizontal en
tenant compte des requêtes suivantes

R1 = ∏ NoClient, Agence (σTypeCompte = 'courant' and Somme > 100000(Compte))

• R2 = σ Agence = 'Lausanne’(Compte)
R3 = ∏ NoClient, Somme(σ Agence = ' Genève’ and TypeCompte = 'courant' (Compte))
Compte
NoClient Agence TypeCompte Somme
174 723 Lausanne courant 123 345.89
177 498 Genève courant 34 564.00
201 639 Lausanne Courant 45 102.50
201 639 Lausanne Dépôt 325 100.00
203 446 Genève Courant 274 882.95
42

Fragmentation
Méthodologie de la fragmentation verticale
Question: Comment décomposer une base de données en
fragments verticaux???
On se base 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).
43

Fragmentation
Méthodologie de la fragmentation verticale
Pour le cas de la fragmentation verticale 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 2n intersections des expressions de
projection où chacune est soit l'expression initiale soit son
complément.

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.
44

Fragmentation
Méthodologie de la fragmentation verticale
Exemple :
On considère une table CUISINIER que l'on se propose de répartir
en fragments verticaux Cuisinier
NUMERO NOM PRENOM NUMEQ
12 DUPONT Jean 1
34 DUPONT Jeanne 2
17 DUBOIS Robert 1
22 DUBALAI Aline 1
26 DUGENOU Jean 2
11 DURAND Aline 2
38 DURACUIRE ROBERT 2
9 DURALUMIN Roberte 1
13 DURDUR Jean 2
20 DURALEX Jean 1
On commencera par se baser sur les requêtes les plus fréquentes:
R1: SELECT numero, numeq FROM CUISINIER WHERE prenom = 'Jean' AND nom LIKE '%R%';
R2: SELECT * FROM CUISINIER WHERE numeq = '1';
R3: SELECT numero, nom FROM CUISINIER WHERE numeq = '2' AND prenom = 'Jean';
45

Fragmentation
Méthodologie de la fragmentation verticale
Exemple (suite):
Pour effectuer la fragmentation verticale on se base sur les projections
utilisées:
• P1 : (numero, numeq)
• P3 : (numero, nom)
• P2 n'est pas considérée comme une projection car tous les attributs sont
demandés dans la requête.
A partir des projection 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é numero :
• ¬P1 = (numero, nom, prenom)
• ¬P3 = (numero, prenom, numeq)

 IP = { P1 ∩ P3, ¬ P1 ∩ P3, P1 ∩ ¬P3, ¬P1 ∩ ¬P3}


46

Fragmentation
Méthodologie de la fragmentation verticale
Exemple (suite):garder les colonnes communes
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)

 Fragments verticaux:
F1 = ∏numero(Cuisinier)
F2 = ∏numero, nom(Cuisinier)
F3 = ∏numero, numeq(Cuisinier)
F4 = ∏numero, prenom(Cuisinier)
47

Fragmentation
Méthodologie de la fragmentation hybride
C’est la combinaison des deux fragmentations: horizontale et
verticale. F1
Pour chaque fragment horizontal, on NUMERO NOM PRENOM NUMEQ
regarde quelles sont les requêtes qui 13 DURDUR Jean 2
F2
les concernent (sélection): NUMERO NOM PRENOM NUMEQ
20 DURALEX Jean 1
F3
R1: SELECT numero, numeq FROM NUMERO NOM PRENOM NUMEQ
CUISINIER WHERE prenom = 'Jean' 26 DUGENOU Jean 2
Fragments
F4
AND nom LIKE '%R%'; NUMERO NOM PRENOM NUMEQ horizontaux
R2: SELECT * FROM CUISINIER 12 DUPONT Jean 1
17 DUBOIS Robert 1
WHERE numeq = '1'; 22 DUBALAI Aline 1
R3: SELECT numero, nom FROM 9 DURALUMIN Roberte 1
CUISINIER WHERE numeq = '2' AND F5
NUMERO NOM PRENOM NUMEQ
prenom = 'Jean‘; 34 DUPONT Jeanne 2
11 DURAND Aline 2
38 DURACUIRE ROBERT 2
48

Fragmentation
Méthodologie de la fragmentation hybride
Les intersections de projection de chacun des
fragments
F1
horizontaux, avec les fragments correspondants
NUMERO NOM PRENOM NUMEQ sont donc:
R1 R3
13 DURDUR Jean 2
F2
R1: SELECT numero, numeq FROM NUMERO NOM PRENOM NUMEQ R1 R2
CUISINIER WHERE prenom = 20 DURALEX Jean 1
F3
'Jean' AND nom LIKE '%R%'; NUMERO NOM PRENOM NUMEQ R3
R2: SELECT * FROM CUISINIER 26 DUGENOU Jean 2
WHERE numeq = '1'; F4
NUMERO NOM PRENOM NUMEQ R2
R3: SELECT numero, nom FROM 12 DUPONT Jean 1
CUISINIER WHERE numeq = '2' 17 DUBOIS Robert 1
22 DUBALAI Aline 1
AND prenom = 'Jean'; 9 DURALUMIN Roberte 1
F5
NUMERO NOM PRENOM NUMEQ Aucune
34 DUPONT Jeanne 2
11 DURAND Aline 2
38 DURACUIRE ROBERT 2
49

Fragmentation
Méthodologie de la fragmentation hybride
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)}
50

Fragmentation
Méthodologie de la fragmentation hybride
Les différents fragments:
F11 F14
NUMERO NUMERO NOM NUMERO NUMEQ NUMERO PRENOM
F12
13 13 DURDUR 13 2 13 Jean
F21 F22
F13
NUMERO NUMEQ NUMERO NOM PRENOM
Cuisinier
20 1 20 DURALEX Jean
NUMERO NOM PRENOM NUMEQ
12 DUPONT Jean 1 F31 F32
34 DUPONT Jeanne 2 NUMERO NOM NUMERO PRENOM NUMEQ
17 DUBOIS Robert 1 26 DUGENOU 26 Jean 2
22 DUBALAI Aline 1 F41
26 DUGENOU Jean 2 NUMERO NOM PRENOM NUMEQ
11 DURAND Aline 2 12 DUPONT Jean 1
38 DURACUIRE ROBERT 2 17 DUBOIS Robert 1
9 DURALUMIN Roberte 1 22 DUBALAI Aline 1
13 DURDUR Jean 2 9 DURALUMIN Roberte 1
20 DURALEX Jean 1
F51
NUMERO NOM PRENOM NUMEQ
34 DUPONT Jeanne 2
11 DURAND Aline 2
38 DURACUIRE ROBERT 2
Abdelouahed Sabri 2011/2012
51

Schéma
d’allocation
Après la fragmentation, la question qu’ont doit se poser est:
Ou seront affectés chacun des fragments???
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.
Pour chaque requête:
On connaît l'ensemble des sites qui sont susceptible d'émettre cette
requête,
On possède de l'ensemble des fragments qui sont concernés par la
requête.
 Placer les fragments sur les sites où ils sont le plus utilisés, pour
minimiser les transferts de données entre les sites.
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
52

Schéma
d’allocation
Exemple:
reprenons l'exemple précédent et supposons que deux
sites soient pris en considération A et B
R1: SELECT numero, numeq FROM CUISINIER WHERE prenom = 'Jean'
AND nom LIKE '%R%';
R2: SELECT * FROM CUISINIER WHERE numeq = '1';
R3: SELECT numero, nom FROM CUISINIER WHERE numeq = '2' AND
prenom = 'Jean';
53

Schéma
d’allocation
Exemple (suite):
Supposons que la requête R1 est émise de A ou B, que la requête R2
est émise de A seulement et que la requête R3 est émise de B seulement.
Pour les trois requêtes, les fragments suivants sont concernés :
• R1  fragment13
• R2  fragment 21, fragment 22, fragment 41
• R3  fragment 12, fragment 31
• Pour les autres fragments, on peut dire:
–Le fragment 21 peut appartenir à la requête R1 ou R2
–Le fragment 11 peut appartenir a toutes les Requêtes
–Le fragment 51 n’appartient à aucune requête
–Le fragment 32 n’appartient à aucune requête
–Le fragment 14 n’appartient à aucune requête
 On doit faire des choix pour ces fragments de façon à équilibrer les sites
54

Schéma
d’allocation
Exemple (suite):
Supposons que la requête R1 est émise de A ou B, que la requête R2
est émise de A seulement et que la requête R3 est émise de B seulement.
Pour les trois requêtes, les fragments suivants sont concernés :
• R1  fragment13 • Le fragment 21 peut appartenir à la requête R1 ou R2
• R2  fragments 21, 22 et 41 • Le fragment 11 peut appartenir a toutes les Requêtes
• R3  fragments 12 et 31 • Les fragments 51, 32 et 14 n’appartiennent à aucune
Pour les sites: requête

• site A: fragment 13, fragment 21, fragment 22, fragment 41, fragment 11,
fragment 51
• site B: fragment 12, fragment 31, fragment 14 , fragment 32
On peut combiner quelques fragments:
• site A: fragment 11, fragment 13, fragment 2, fragment 4, fragment 5
• site B: fragment 12, fragment 14 , fragment 3
55

Les mises-à-
jour
Les mises à jour consistent en trois opérations: insertion
(INSERT), suppression (DELETE) et modification
(UPDATE).
Insertion
Exemple: insérer un nouveau cuisinier dans la table
CUISINIER : INSERT INTO CUISINIER VALUES(21,
'DUBOUT', 'Jean', 2);
Le fragment horizontal concerné peut être retrouvé avec les CC
(pour le cas présent, il s'agit de CC3) ; ensuite il faut insérer le
tuple dans tous les fragments verticaux.
NUMERO NOM NUMERO PRENOM NUMEQ
26 F31 DUGENOU F32
26 Jean 2
21 DUBOUT 21 Jean 2
56

Les mises-à-
jour
Suppression:
Exemple: suppression du cuisinier Jean DUBOUT :
DELETE FROM CUISINIER WHERE nom = 'DUBOUT' AND
prenom = 'Jean' ;
On utilise les conditions CC : CC3 et CC4 sont concernées.
 On cherchera donc dans les fragments correspondants

F31 F32 F31 F32


NUMERO NOM NUMERO PRENOM NUMEQ NUMERO NOM NUMERO PRENOM NUMEQ
26 DUGENOU 26 Jean 2 26 DUGENOU 26 Jean 2
21 DUBOUT 21 Jean 2
F41
F41 NUMERO NOM PRENOM NUMEQ
NUMERO NOM PRENOM NUMEQ 12 DUPONT Jean 1
12 DUPONT Jean 1 17 DUBOIS Robert 1
17 DUBOIS Robert 1 22 DUBALAI Aline 1
22 DUBALAI Aline 1 9 DURALUMIN Roberte 1
9 DURALUMIN Roberte 1
57

Les mises-à-
jour
Suppression (suite):
Exemple: supprimer le cuisinier de numéro 21
DELETE FROM CUISINIER WHERE numero = 21 ;
Aucune CC n’est concernée
 Il faut chercher dans tous les fragments
58

Les mises-à-
jour
Modification:
Exemple : modification de l'affectation du cuisinier DUBOUT
UPDATE CUISINIER SET numeq = 1 WHERE nom = 'DUBOUT' ;
On utilise les conditions CC : CC3, CC4, CC5 sont
concernées.
 On modifie puis on vérifie que les CC son toujours vérifiées:
• Puisque numeq = 1, il faut l’enlever du fragment F3 et F5
• On déplace alors le tuple dans le fragment 4.
60

Répartition
avancée
Dans le cas où la méthode classique de fragmentation-
allocation ne s'avère pas satisfaisante, on peut faire appel à
des techniques plus puissantes (mais aussi plus complexes
à mettre en œuvre):
L'allocation avec duplication de fragments,
L'allocation dynamique des fragments,
La fragmentation dynamique.
61

Répartition
Allocation
avancée avec duplication
Certains fragments peuvent être dupliquées sur
plusieurs sites
(éventuellement sur tous les sites)
Avantages:
 Ellepermet d’améliorer les performances en terme de temps d'exécution
des requêtes (en évitant certains transferts de données).
 Elle permet une meilleure disponibilité des informations
(connues de
plusieurs sites),
 Elle permet une meilleure fiabilité contre les pannes.
Inconvénient:
 les mises à jour doivent être effectuées sur toutes les copies d'une même
donnée.
En conséquence:
62

Répartition
Allocation
avancée avec duplication
Deux types de duplication: synchrone et asynchrone.
Duplication synchrone:
• La sérialisabilité est assurée sur l’ensemble des nœuds
• Une transaction est confirmée seulement lorsque tous les sites ont été
mis-à-jour
Duplication asynchrone:
• Les mises-à-jour sont d’abord faites sur une copie primaire
• Les sites de réplication sont mis-à-jour en différé, à partir de la
copie primaire, après la confirmation de la transaction
• Ex. d’implémentation: vues matérialisées (eq. SNAPSHOTs)
63

Répartition
Allocation
avancée dynamique
Ici, l'allocation d'un fragment peut changer en cours
d'utilisation de la BDR:
Le schéma d'allocation et les schémas locaux doivent être tenus à
jour.
Peut être utilisée comme une alternative à la duplication  elle se
révèle plus efficace lorsque la base de données est disposée à de
nombreuses mises à jour.
64

Répartition
Fragmentation
avancée
dynamique
Dans le cas où le site d'allocation peut changer
dynamiquement, il est possible que deux fragments
complémentaires (verticalement ou horizontalement) se
retrouvent sur le même site. Il est alors normal de les
fusionner.
A l'inverse, si une partie d'un fragment est appelée sur un
autre site, il peut être intéressant de décomposer ce
fragment et de ne faire migrer que la partie concernée.
Ces modifications du schéma de fragmentation se reflètent
sur le schéma d'allocation et sur les schémas locaux.