diffrents cas de trains epicycloidalaux TD_Train_epi_ v9.pdf
Chapitre2_fragmentation_Abdali.pptx
1. BASE DE DONNÉES RÉPARTIES
Chapitre 2: Fragmentation
BDR
1
SIR S6, INFO 3
ABDALI Abdelmounaïm
2019/2020
2. DÉFINITION
La fragmentation est le processus de décomposition d'une
base de donnée en un ensemble de sous bases de données.
Cette décomposition doit être sans perte d'information.
La fragmentation des données représente un sous-ensemble
obtenu par la sélection de lignes et de colonnes à partir
d’une relation globale localisée sur un site unique.
2
3. POURQUOI FRAGMENTER ?
Amélioration des performances (placer les traitements
à l’endroit où se trouvent les données).
Favoriser les accès locaux.
Équilibrer la charge de travail entre les sites.
3
4. LES RÈGLES DE FRAGMENTATION
Les règles à appliquer sont : :
1. 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.
2. La reconstruction : pour toute relation décomposée en un
ensemble de fragments Ri, il existe une opération de
reconstruction.
1. Pour les fragmentations horizontales, l’opération de
reconstruction est l’ union.
2. Pour les fragmentations verticales c’est la jointure.
1. La Disjonction: assure que les fragments d’une relation
sont disjoints deux à deux 4
5. COMMENT FRAGMENTER ?
Possibilités de fragmentation d’une relation
Horizontale - basée sur des sélections
Verticale - basée sur des projections
5
7. TECHNIQUE DE FRAGMENTATION HORIZONTALE
Il existe deux types de fragmentation horizontale:
Primaire
Dérivée
Fragmentation horizontale primaire :
Fragments définis par sélection
Ex : Client( NClient, Nom, Ville)
Client1 = Ville = Paris (Client)
Client1= SELECT * FROM Client WHERE Ville = “Paris”
Client2 = Ville != Paris (Client)
Client2= SELECT * FROM Client WHERE Ville <> “Paris”
Reconstruction par union des fragments
Ex : Client = Client1 U Client2
7
10. FRAGMENTATION HORIZONTALE DÉRIVÉE
Fragments définis par (semi) jointure
Ex : Commande ( NC, NClient, Produit,Qté)
Commande1 = Commande Client1
Commande2 = Commande Client2
Reconstruction par union des fragments
Ex : Commande = Commande1 U Commande2
10
La Fragmentation d’une table en fonction des
fragments horizontaux d’une autre table.
11. EN SQL
Commande1= SELECT * FROM Commande
WHERE NCLient IN
(SELECT NCLient FROM CLIENT1)
Commande2= SELECT * FROM Commande
WHERE NCLient IN
(SELECT NCLient FROM CLIENT2)
11
14. FRAGMENTATION HORIZONTALE DÉRIVÉE -
EXEMPLE 2
Contexte:
On considère une base de données comprenant les tables
suivantes:
ETUDIANT (numE, nomE, pnomE, numC)
CENTRE (numC, villeC, adrC, telC)
avec : villeC ∈ {‘Paris’, ‘Lyon’, ‘Marseille’}
Hypothèses
Chaque site gère son centre
Chaque centre gère ses étudiants
14
15. FRAGMENTATION HORIZONTALE DÉRIVÉE -
SUITE EXEMPLE 2
Solution:
1) fragmente les centres horizontalement selon les sites:
Centre1 = σvilleC = ‘Paris’(Centre)
Centre2 = σvilleC = ‘Lyon’(Centre)
Centre3 = σvilleC = ‘Marseille’(Centre)
2) Réaliser une semi jointure de la relation Etudiant avec les
fragments de la relation centre :
Etudiant1 = Etudiant Centre1
Etudiant2 = Etudiant Centre2
Etudiant3 = Etudiant Centre3
15
16. EN SQL
centre1=select * from centre where villeC='Paris';
centre2=select * from centre where villeC='Lyon';
centre3=select * from centre where villeC='Marseille';
Etudiant1= SELECT * FROM Etudiant
WHERE numC IN
(SELECT numC FROM centre1);
Etudiant2= SELECT * FROM Etudiant
WHERE numC IN
(SELECT numC FROM centre2);
Etudiant3= SELECT * FROM Etudiant
WHERE numC IN
(SELECT numC FROM centre3)
16
17. EXERCICE
Soit la base de données suivante :
Fragmenter les agences avec leurs clients avec leurs
comptes.
17
18. SOLUTION
On fragmente les agences horizontalement selon les sites :
Agence1 = σAgence = ‘Lausanne’(Agence)
Agence2 = σAgence = ‘Genève’(Agence)
Puis on fragmente les comptes selon les fragments des
agences :
Compte1=Compte Agence1
Compte2=Compte Agence2
Puis on fragmente les Clients selon les fragments des
comptes :
Client1= Client compte 1
Client2= Client compte 2
18
19. FRAGMENTATION VERTICALE
Fragments définis par projection:
Ex : Commande( NC, NClient, Produit,Qté)
CommandeA= NC, NClient (Commande)
CommandeB= NC, Produit, Qté(Commande)
Reconstruction par jointure
Ex : Commande = CommandeA * CommandeB
Utile si forte affinité des attributs 19
20. RÉPARTITION DES ATTRIBUTS
(FRAGMENTATION VERTICALE)
Toutes les valeurs des occurrences pour un même
attribut se trouvent dans le même fragment. Une
fragmentation verticale est utile pour distribuer les
parties des données sur le site où chacune de ces
parties est utilisée.
L'opérateur de partitionnement est la projection (π)
L'opérateur de recomposition est la jointure
20
29. EXERCICE
Soit les 2 schémas suivants : client et code.
Question :
Les fragments suivants sont ils correctes ?
29
30. CORRIGÉ
il s’agit d’une fragmentation horizontale incorrecte
car l’union des deux fragments cde1 et cde2 ne
permet pas de reconstituer la table commande. On
a une perte d’information (exemple : les
informations de la commande D3 sont perdues).
Violation de la contrainte de complétude de la
fragmentation
il s’agit d’une fragmentation verticale incorrecte
car la clé de la table client (N°client) ne figure
pas dans le fragment client2. Violation de la règle
de reconstitution de la fragmentation.
30
31. DÉFINITION DES FRAGMENTS
Le principe est de baser la fragmentation sur l'ensemble des
requêtes d'interrogation ou de mise à jour prédéfinies. Il faut
extraire de ces requêtes toutes les conditions de sélections, les
attributs projetés et les jointures. Les opérations de sélection
sont à la base des fragmentations horizontales, les opérations
de projection sont à la base des fragmentations verticales.
On ne s'intéresse alors qu'aux requêtes les plus fréquentes ou
les plus sensibles.
31
49. FRAGMENTATION VERTICALE
Emp( Enum, Nom, Ville,Sal)
Emp1( Enum, Nom, Ville) Emp2( Enum,Sal)
Complétude et reconstruction:
Jointure sans perte d’information
Condition suffisante : répéter la clé dans chaque
fragment
Autre choix : utiliser une dépendance fonctionnelle
pour la décomposition (cf. normalisation)
Disjonction : seulement répéter la clé.
49
50. COMMENT FRAGMENTER VERTICALEMENT?
Utiliser le sens commun...essayer d’automatiser.
Heuristiques :
" Clustering (décrit des méthodes de
classification de données )- rapprochement en
partant d’un attribut par fragment.
" Splitting - décomposition en partant d’un fragment
unique pour obtenir une partition selon l’affinité des
attributs.
50
51. OUTIL - MATRICE D’AFFINITÉ (1)
Exemple Projet(Pnum, Pnom, Budget, Loc)
A1 A2 A3 A4
q1: budget d’un projet étant donné son numéro
q2: nom et budget de tous les projets
q3 : nom des projets d’une ville
q4 : budget total des projets d’une ville
51
53. MATRICE D’AFFINITÉ - DÉFINITION
Refs( qk ), pour deux attributs (Ai, Ak) = nombre
d’accès faits par une exécution de qk (sur le site s)
à Ai et Ak.
Accs( qk) = fréquence de qk sur le site s (mesurée
pendant une certaine période)
Matrice d’affinité:
53
57. FIN EXEMPLE
La relation Projet est fragmentée en
Projet1( Num, Budget)
Projet2( Num, Nom, Loc)
Dans l’exemple (simple) la clé est dans l’ensemble d’attributs
considéré.
Duplication de la clé pour garantir la reconstruction. 57
58. DÉFINITION DES FRAGMENTS
Fragmentation hybride:
On procède comme suit:
Extraire toutes les expressions de projection concernées par
les requêtes.
Ajouter à chacune d'elles le(s) attribut(s) de jointure si elle ne
les possède pas.
Générer le complément de chaque expression (c'est à dire les
autres attributs) en ajoutant le (ou les) attribut(s) de jointure.
L'étape suivante consiste, pour chaque fragment Fi produit par la
fragmentation horizontale, à rechercher toutes les requêtes qui
concernent ce fragment et à prendre les expressions de
projection de ces requêtes.
59. EXERCICES D’APPLICATION
Soit la relation Compte (NoClient, Agence,TypeCompte, Somme).
Proposer un schéma de fragmentation horizontale, puis verticale
en tenant compte des requêtes suivantes :
R1 = [NoClient, Agence] ([(TypeCompte = 'courant') (Somme > 100 000)] Compte)
R2 = [Agence = 'Lausanne'] Compte.
R3 = [NoClient, Somme] ([(Agence = 'Genève') (TypeCompte = 'courant')]
Compte)
Exercice 1
59
60. EXERCICES D’APPLICATION
Soit la base de donnée suivante :
Rémunération (Titre, salaire)
Employé (numE, nomE, Titre)
Projet (numP, nomP, budget, ville)
Affectation (numE, numP, responsabilité, durée)
1. Proposer un schéma de fragmentation horizontale pour la
relation Rémunération.
2. A partir des requêtes R1 et R2, proposer un schéma de
fragmentation horizontale pour la relation Projet.
R1 : SELECT nomP, budget FROM Projet WHERE ville =
Paris.
R2 : SELECT * FROM projet WHERE budget < 200 000.
3. Fragmenter Employé selon les fragments de Rémunération.
4. Quels sont les choix de fragmentation de « Affectation ».
Exercice 2
60