Vous êtes sur la page 1sur 32

Chapitre 3 

:
FRAGMENTATION ET ALLOCATION

M. AZOTI & M. SANI 1


FRAGMENTATION ET ALLOCATION

1. Définitions, objectifs, caractéristiques

2. Techniques de fragmentation

3. Allocation et les différentes méthodes (BEST-FIT et allocation progressive)

M. AZOTI & M. SANI 2


FRAGMENTATION ET ALLOCATION

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.

M. AZOTI & M. SANI 3


FRAGMENTATION ET ALLOCATION

3. Caractéristiques 

 La fragmentation doit être sans perte d'information,


 Pour toute donnée d’une table R, il existe un fragment Ri de la table R qui possède cette donnée :
Règle de complétude ;
 La non-perte d'informations est vérifiée par recomposition de la base à partir des différents
fragments en utilisant le langage de manipulation de données (SQL par exemple) ; leur réunion doit
redonner le schéma global : Règles de reconstruction.
 
 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.

M. AZOTI & M. SANI 4


FRAGMENTATION ET ALLOCATION

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.

M. AZOTI & M. SANI 5


FRAGMENTATION ET ALLOCATION

a. Fragmentation par relation (classe d’objets)


Ce sont les classes (relation ou table dans le modèle relationnel, entité en Entité-Association, classe dans le
modèle orienté-objet) qui peuvent être réparties dans des fragments différents. Les fragments sont donc
définis à partir des "classes" de la base de données. Il est à noter que toutes les occurrences d'une même classe
appartiennent au même fragment.
NB :
 L'opération de partitionnement est la définition de sous schémas.
 L'opération de recomposition est la réunion de sous schémas.

M. AZOTI & M. SANI 6


FRAGMENTATION ET ALLOCATION

Exemple : Cas d’une banque


Nous avons trois tables dans la base :
Agence (Agence, Adresse)
Clients (NoClient, NomClient, Prenom, Age)
Compte (NoClient#, Agence#, TypeCompte, Somme).

Donc cette base peut être fragmentée en deux fragments :


• {Compte, Client}
• {Agence}.

M. AZOTI & M. SANI 7


FRAGMENTATION ET ALLOCATION

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.

M. AZOTI & M. SANI 8


FRAGMENTATION ET ALLOCATION

 
Méthodologie de la fragmentation horizontale (primaire)
Pour 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 ce cas, 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 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),

M. AZOTI & M. SANI 9


FRAGMENTATION ET ALLOCATION

NB : Le signe ˄ représente une conjonction (ET en français ou AND en anglais).

 On ôte de cet ensemble les conjonctions de condition qui sont toujours fausses, et on simplifie les autres.

 Les prérequis

i) Premier théorème de Morgane = +


ii) Deuxième théorème de Morgane = = x
D’après les lois fondamentales de l’algèbre de Boole :
iii)A + A = A
iv) A.A = A
v) 1 + A = 1
vi) A. = 0

M. AZOTI & M. SANI 10


FRAGMENTATION ET ALLOCATION

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

M. AZOTI & M. SANI 11


FRAGMENTATION ET ALLOCATION

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';

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

- A : prenom = 'Jean‘ (prélevée des requêtes R1 et R3)


- B : nom LIKE '%R%‘ (prélevée de la requête R1)
- C : numeq = '1‘ (prélevée de la requête R2)
- D : numeq = '2‘ (prélevée de la requête R3)

M. AZOTI & M. SANI 12


FRAGMENTATION ET ALLOCATION

Les conditions de sélection :

- C1 = A ʌ B
- C2 = C
- C3 = D ʌ A

  Nous avons trois (03) contraintes donc le nombre de conjonctions est = 8.

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}

M. AZOTI & M. SANI 13


FRAGMENTATION ET ALLOCATION

  Evaluons chacun des termes :  


 C1 ʌ C2 ʌ C3 = (A ʌ B) ʌ C ʌ (D ʌ A)
= A.B.C.D.A
= A.B.C..A car D = ¬C  D =
= 0 car C. = 0

 ¬C1 ʌ C2 ʌ C3 = ¬ (A ʌ B) ʌ C ʌ (D ʌ A)
= .C.D.A
= .C..Acar D = ¬C  D =
=0 (cf. i) car C. = 0

M. AZOTI & M. SANI 14


FRAGMENTATION ET ALLOCATION

   
 C1 ʌ ¬C2 ʌ C3 = (A ʌ B) ʌ ¬C ʌ (D ʌ A)
= A.B..D.A
= A.B.D.D.A car ¬C = D  = D
= A.B.D car A.A = A
= Aʌ Bʌ D
 C1 ʌ C2 ʌ ¬C3 = (A ʌ B) ʌ C ʌ ¬ (D ʌ A)
= A.B.C.
= A.B.C.( + ) car = +
= A.B.C.(C + ) car ¬D = C  = C
= A.B.(C.C + C.)
= A.B.CC + A.B.C.
= A.B.CC + 0 car A. = 0
= A.B.C car A.A = A
= Aʌ Bʌ C

M. AZOTI & M. SANI 15


FRAGMENTATION ET ALLOCATION

   
 ¬C1 ʌ ¬C2 ʌ C3 = ¬ (A ʌ B) ʌ ¬C ʌ (D ʌ A)
= ..D.A
= ( + )..D.A car = +
= ( + ).D.D.A car ¬C = D  = D
= ( + ).D.A car A.A = A
= .D.A + .D.A
= 0 + .D.A car .A = 0
= A..D
= A ʌ ¬B ʌ D
 
 C1 ʌ ¬C2 ʌ ¬C3 = (A ʌ B) ʌ ¬C ʌ ¬ (D ʌ A)
= A.B..
= A.B..( + ) car = +
= A.B.. + A.B..
= 0 car . = 0 et A. = 0

M. AZOTI & M. SANI 16


FRAGMENTATION ET ALLOCATION

 •  ¬C1 ʌ C2 ʌ ¬C3 = ¬ (A ʌ B) ʌ C ʌ ¬ (D ʌ A)
= .C.
= ( + ).C.( + )
= ( + ).C.( + )
= ( + ).(C.C + C)
= ( + ).(C + C) car A.A = A
= .C + .C. + .C + B.C
= .C + .C + .C + .C.B car . =
= .C + .C.B + .C car A + A = A
= .C.(1 + B) + .C
= .C + .C car 1 + A = 1
= ( + ).C
= (¬A ∪ ¬B) ʌ C

M. AZOTI & M. SANI 17


FRAGMENTATION ET ALLOCATION

 
 ¬C1 ʌ ¬C2 ʌ ¬C3 = ¬ (A ʌ B) ʌ ¬C ʌ ¬ (D ʌ A)
= ..
= ( + )..( + )
= ( + ).D.(C + ) car ¬C = D  = D et ¬D = C  = C

= ( + ).(D.C + D.)
= ( + ).(D.) car D.C = 0
= .D. + .D.
= .D + .D. car . =
= .D.(1 + )
¬C1 ʌ ¬C2 ʌ ¬C3 = .D car 1 + A = 1
= ¬A ʌ D

M. AZOTI & M. SANI 18


FRAGMENTATION ET ALLOCATION

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'
 CC5 = ¬ C1 ʌ ¬ C2 ʌ ¬ C3 = ¬A ʌ D
 F5 = SELECT *FROM cuisinier WHERE prenom != 'Jean' AND numeq ='2'.

M. AZOTI & M. SANI 19


FRAGMENTATION ET ALLOCATION

Ces 5 conditions définissent les fragments horizontaux suivants (exclusifs) :

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

M. AZOTI & M. SANI 20


FRAGMENTATION ET ALLOCATION

c. Fragmentation verticale (par attributs)


Les fragments sont construits à partir de quelques attributs d'une relation ; ce sont les attributs (avec leurs
occurrences) d'une même relation qui peuvent être répartis dans des fragments différents et 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 et la reconstruction
est effectuée par jointure des différents fragments.

M. AZOTI & M. SANI 21


FRAGMENTATION ET ALLOCATION

Méthodologie de la fragmentation verticale

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
 

M. AZOTI & M. SANI 22


FRAGMENTATION ET ALLOCATION

  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).

NB : Le signe ∩ représente l’intersection de deux ou plusieurs ensembles (ex : A ∩ B).
 
 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

M. AZOTI & M. SANI 23


FRAGMENTATION ET ALLOCATION

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

M. AZOTI & M. SANI 24


FRAGMENTATION ET ALLOCATION

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';

M. AZOTI & M. SANI 25


FRAGMENTATION ET ALLOCATION

Pour effectuer la fragmentation verticale, on se base sur les projections utilisées :


- R1 =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 (SELECT *
FROM...). En effet si on prend le P2 on aura la présence de tous les attributs et donc P2 ∩ P1 par exemple donnera
toujours P1 : (numero, numeq). Par conséquent, l’ensemble P2 ne sera d’aucune utilité dans ce cas.

M. AZOTI & M. SANI 26


FRAGMENTATION ET ALLOCATION

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.

M. AZOTI & M. SANI 27


FRAGMENTATION ET ALLOCATION

  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)

Fragments verticaux obtenus :


- F1 = ∏numero(Cuisinier)
- F2 = ∏numero, nom(Cuisinier)
- F3 = ∏numero, numeq(Cuisinier)
- F4 = ∏numero, prenom(Cuisinier)

M. AZOTI & M. SANI 28


FRAGMENTATION ET ALLOCATION

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 :

M. AZOTI & M. SANI 29


FRAGMENTATION ET ALLOCATION

M. AZOTI & M. SANI 30


FRAGMENTATION ET ALLOCATION

M. AZOTI & M. SANI 31


FRAGMENTATION ET ALLOCATION

M. AZOTI & M. SANI 32

Vous aimerez peut-être aussi