Download - Bases de données réparties
Bases de Données Réparties (BDRé)
Abdelouahed Sabri 2011/2012
Clients, Distributeurs
Clients habitants Tétouan
Clients habitants Tanger
Distributeurs (Nom, Télé)
Plan
Introduction
C’est quoi une base de données répartie
Avantages et Inconvénients
Objectifs
Modélisation et conception
Fragmentation
Allocation
Répartition avancée
La pratique
Abdelouahed Sabri 2011/2012
2
Introduction
Architectures
Architecture centralisée:
• Programme d'application et SGBD sur même machine (même site),
Architecture client-serveur, notée 2-tiers:
• Programme d’application sur le client et SGBD sur le serveur,
Architecture 3-tiers:
• Interface utilisateur sur le client, programme d’application sur le serveur
d’application et le SGBD sur le serveur de données.
Bases de données
Centralisées
Réparties ou distribuées
Fédérées
Multi-bases Abdelouahed Sabri 2011/2012
3
Introduction
BD centralisée:Gérée par un seul SGDB,
Stockée dans un emplacement physique unique,
Les traitements sont confiés à une seule et même unité.
Multi-base:Plusieurs SGBD, hétérogènes ou non, capables d’inter-opérer sans modèle
commun (vue commune),
BD Fédérée:Plusieurs SGBD hétérogènes sont utilisés comme un seul via un modèle commun
(vue commune)
Ex: Utilisés dans la fusion ou acquisition des bases de données de compagnies
BD Répartie:Un seul système gérant une collection de bases de données logiquement reliées
qui sont réparties sur différents sites accessible via un modèle commun (vue
commune)
Abdelouahed Sabri 2011/2012
4
Introduction
Différence entre bases de données réparties et le modèle
client-serveur
Abdelouahed Sabri 2011/2012
5
Client-Serveur Bd Répartie
Plusieurs bases vues par le client Une base logique vue par l’utilisateur
Plusieurs connexions Une seule connexion
Localisation explicite des bases (« connection
string » ou DSN)
Indépendance à la localisation
Règles de localisation dans l’application Règles de localisation dans le dictionnaire
1 ordre SQL 1 seule BD 1 ordre SQL plusieurs BD
n transactions mono-base 1 transaction logique
Synchronisation des transactions dans
l’application
Synchronisation automatique des n sous-
transactions
Plusieurs COMMIT mono-base 1 COMMIT généralisé
Introduction
Pourquoi répartir?
Besoin de décentralisation des organisations,
Partage de données géographiquement reparties.
Principe de la répartition:
Les données et traitements sont répartis sur différents
sites interconnectés par un réseau de communication.
La défaillance d'un site ne peut pas entraîner
l'indisponibilité totale du système et sa probabilité peut
être négligée grâce à la tolérance aux fautes, assurée par
la redondance des informations et des traitements.
Abdelouahed Sabri 2011/2012
6
Introduction
Système de Gestion de Bases de Données Réparties
Constitué d'un ensemble de processeurs autonomes
«appelés sites » (stations de travail, micro-ordinateurs, …)
reliés par un réseau de communication qui leur permet
d'échanger des données.
Un SGBDRé suppose que les données soient stockées sur
au moins deux sites.
• Chaque site est doté de son propre SGBD.
Abdelouahed Sabri 2011/2012
7
Introduction Avantages de répartir les données
Limiter le transfert d'information (en nombre et en volume)
en répartissant les données là où elles sont le plus utilisées.
Ceci est particulièrement important pour une base de données dont
les différents utilisateurs sont géographiquement dispersés
Exemple: Des agences d'une banque
La répartition de charge de travail sur plusieurs unités de
traitement opérant en parallèle permet d’accroître les
performances.
Augmenter la fiabilité et la disponibilité en dupliquant les
données sur plusieurs sites
Exemple: Comptes bancaires
Abdelouahed Sabri 2011/2012
8
Introduction Inconvénients de répartir les données
Inconvénients
Complexité des SGBDs,
Problème de concurrence d’accès,
Surcoût du traitement: la distribution de données
entraine des communications inter-sites,
Sécurité.
Abdelouahed Sabri 2011/2012
9
Introduction
Exemple 1:
Abdelouahed Sabri 2011/2012
10
Clients, Distributeurs
Clients habitants Tétouan
Clients habitants Tanger
Distributeurs (Nom, Télé)
Introduction
Exemple 2: Une banque peut avoir des agences à Casa, à Rabat et à Fès.
BD centralisée:
1. Le siège principal de la banque gérerait tous les comptes des clients,
2. Les agences devraient communiquer avec le siège social pour avoir accès
aux données.
BD répartie:
• Les informations sur les comptes sont distribuées dans les agences et celles-ci
sont interconnectées (entièrement ou partiellement) afin qu'elles puissent
avoir accès aux données externes.
Cependant, la répartition de la base de données bancaire est invisible aux
agences en tant qu'utilisateurs, et la seule conséquence directe pour elles est
que l'accès à certaines données est beaucoup plus rapide.
Abdelouahed Sabri 2011/2012
11
Objectifs d’une base de données repartie
Les 12 principaux objectifs définis par C.J. Date[1] sont:
Abdelouahed Sabri 2011/2012
12
1) Transparence pour l’utilisateur,
2) Autonomie de chaque site,
3) Absence de site privilégié,
4) Continuité de service,
5) Transparence vis-à-vis de la
localisation de données,
6) Transparence vis-à-vis de la
fragmentation,
7) Transparence vis-à-vis de la
réplication,
8) Traitement réparti des requêtes,
9) Indépendance vis-à-vis du
matériel,
10) Indépendance vis-à-vis du
système d’exploitation,
11) Indépendance vis-à-vis du
réseau,
12) Indépendance vis-à-vis du
SGBD
[1] C.J. Date: auteur du livre An Introduction to Database Systems (8th Edition)
Objectifs d’une base de données repartie (suite)
Transparence de localisation:
Les utilisateurs accèdent au schéma conceptuel via des
vues. Un utilisateur ne sait pas sur quel site se trouvent
physiquement les données
• Exemple: un client peut ouvrir un compte à Fès et effectuer
régulièrement des opérations à Rabat C'est le système qui
recherche le site où sont mémorisées ses informations et non
l'utilisateur qui doit l'indiquer.
Abdelouahed Sabri 2011/2012
13
Objectifs d’une base de données repartie (suite)
Transparence de partitionnement:l’utilisateur ne sait pas comment la base est partitionnée.
Transparence de duplication:l’utilisateur ne sait pas s’il existe plusieurs copies d'une même
information ou non.Lors de la modification d'une information, c'est le système qui doit se
préoccuper de mettre à jour toutes les copies.
Exemple: Un client possède des comptes (courant, épargne logement, ...) à
Fès mais effectue régulièrement des retraits d'argent à Rabat, les
informations le concernant soient réparties entre Fès à Rabat: l'historique
des opérations du compte courant est conservé à Rabat, la gestion de ses
autres comptes est assurée à Fès, et le solde du compte courant est dupliqué
à Fès et Rabat.Abdelouahed Sabri 2011/2012
14
Objectifs d’une base de données repartie (suite)
Indépendance vis-à-vis du SGBD:
Un système réparti ne doit pas être dépendant en aucun cas des
différents SGBDs, la relation globale doit être exprimée dans un
langage normalisé indépendant des constructeurs.
Autonomie de chaque site:
Vise à garder une administration locale séparée et indépendante
pour chaque serveur participant à la base de données répartie afin
d'éviter une administration centralisée.
• Toute manipulation sur un site (reprise après panne, mises à jour des
logiciels) ne doit pas altérer le fonctionnement des autres sites.
Abdelouahed Sabri 2011/2012
15
Modélisation d’une base de données réparties
Une base de données est généralement modélisée en 3 niveaux:
Externe, Conceptuel et Interne.
Schéma interne: Description de l’organisation physique des données
Stockage physique
Schéma conceptuel: Description d’univers à modéliser avec
éventuellement les contraintes liés à ces objets (contraintes d’intégrités)
Domaine des concepteurs de Bases de données
Schéma externe: Application accédant aux données : des vues (accès
limités) Domaine des créateurs d’applications
L’avantage de se découpage est de permettre des modifications à un
niveau sans que cela interfère (le moins possible) sur les autres
niveauxAbdelouahed Sabri 2011/2012
16
Modélisation d’une base de données réparties
Pour une base de données réparties, la répartition a lieu dans les
trois niveaux:
Abdelouahed Sabri 2011/2012
17
les vues des utilisateurs sont présentées
sur leur site (site utilisateur); elles
correspondent au niveau externe.
Il y a donc répartition des vues.
le schéma conceptuel (global) est associé
aux schémas locaux des sites physiques
via un schéma de fragmentation (la
manière dont la base est découpée) et un
schéma d'allocation (la manière dont les
fragments sont répartis).
il n'y a pas de schéma interne global,
mais des schémas locaux internes.
Conception d’une base de données répartie
La définition du schéma de répartition est la partie la plus
délicate de la phase de conception d'une base de données
répartie:Il n y’a pas de méthode standard on se base sur les besoins,
L'administrateur (le concepteur) doit prendre des décisions sur
comment la répartition doit être faite.
L'objectif est de minimiser:
• le nombre de transferts entre sites,
• les temps de transfert,
• le volume de données transférées,
• les temps moyens de traitement des requêtes,
• le nombre de copies de fragments.
Abdelouahed Sabri 2011/2012
18
Conception d’une base de données répartie
Méthodes de conception:
Deux approches fondamentales sont à l'origine de la
conception des bases de données réparties :
1. La conception descendante (Top down design),
2. La conception ascendante (Bottom up design).
NB: Pour les deux approches il faut recueillir l'expression
des besoins des utilisateurs afin de créer un schéma
conceptuel unique et en déduire les vues externes à prévoir.
Abdelouahed Sabri 2011/2012
19
Conception d’une base de données répartie
Conception descendante
Conception du schéma conceptuel global de la base de données
répartie,
Création du schéma de fragmentation :
• la base de données sera découpée en fragments distincts constituant
une partition de la base l'intersection de ces fragments doit être
vide et leur réunion doit redonner le schéma global.
Création du schéma d'allocation :
• les fragments doivent être distribués entre les différents sites.
Création d'un schéma local pour chaque site, relatif aux fragments
dévolus à ce site,
Création des schémas internes :
• implémentation des données des fragments sur les supports physiques
de stockage. Abdelouahed Sabri 2011/2012
20
Conception d’une base de données répartie
Conception ascendante
Il existe plusieurs bases de données disjointes (plusieurs schémas
conceptuels locaux) qu’il faut réunir en un schéma conceptuel
global
• Intégration (fédération) des BD existantes
Abdelouahed Sabri 2011/2012
21
Fragmentation
Définition:
On définit la fragmentation comme étant le processus de décomposition
d'une base de donnée logique (telle que la voient les utilisateurs) en un
ensemble de « sous »-bases de données appelés fragments.
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)
Dans le cas contraire on parle de duplication il faut affiner la fragmentation
Abdelouahed Sabri 2011/2012
22
Fragmentation
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 à
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, ValeursAbdelouahed Sabri 2011/2012
23
Fragmentation
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 définis à partir des "classes" de la base de données.
Toutes les occurrences d'une même classe appartiennent au même fragment.
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.
Abdelouahed Sabri 2011/2012
24
Fragmentation
Fragmentation par relation (suivant)
Exemple: Banque
• Trois tables: Agence, Clients, Compte
Abdelouahed Sabri 2011/2012
25
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
Client
NoClient NomClient Prénom Age
174 723 Villard Jean 29
177 498 Cattell Blaise 38
201 639 Tesllis Alan 51
203 446 Kovalsky Validmir 36
Agence
Agence Adresse
Lausanne Rue du Lac, 3, 1002 Lausanne
Genève Avenue du Mont Blanc, 21, 1200 Genève
• Cette base peut être fragmentée en deux
fragments: {Compte, Client} et
{Agence}.
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.
Abdelouahed Sabri 2011/2012
26
Fragmentation
Fragmentation horizontale (suivant)
Exemple: Banque
• La table 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)
Abdelouahed Sabri 2011/2012
27
Compt1
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
203 446 Genève courant 274 882.95
Compt2
NoClient Agence TypeCompte Somme
201 639 Lausanne dépôt 325 100.00
• La recomposition est réalisée par une opération d’union
Compte = Compt1 ∪ Compt2
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.Abdelouahed Sabri 2011/2012
28
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)
• Compt1 = ∏ Noclient, Agence, TypeCompte(Compte)
Abdelouahed Sabri 2011/2012
29
Compt1
NoClient Somme
174 723 123 345.89
177 498 34 564.00
201 639 45 102.50
201 639 325 100.00
203 446 274 882.95
Compt2
NoClient Agence TypeCompte
174 723 Lausanne courant
177 498 Genève courant
201 639 Lausanne courant
201 639 Lausanne dépôt
203 446 Genève courant
• La recomposition est réalisée
par une opération de jointure
Compte = Compt1 |x| Compt2
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
30
Fragmentation
Fragmentation hybride (par valeurs)Exemple: Banque
• Compt1 = ∏ NoClient, Somme (σ TypeCompte = courant(Compte))
• Compt2 = ∏ NoClient, Somme ( σ TypeCompte = dépôt (Compte))
• Compt3 = ∏ NoClient, AgenceCompte)
• Compt4 = ∏ Noclient, TypeCompte(Compte)
Abdelouahed Sabri 2011/2012
31
Compt1
NoClient Somme
174 723 123 345.89
177 498 34 564.00
201 639 45 102.50
203 446 274 882.95
Compt2
NoClient Somme
201 639 325 100.00
Compt4
NoClient TypeCompte
174 723 courant
177 498 courant
201 639 courant
201 639 dépôt
203 446 courant
• La reconstruction
Compte= (Compt1 ∪ Compt2 ) |x| Compt3 |x| Compt4
Compt3
NoClient Agence
174 723 Lausanne
177 498 Genève
201 639 Lausanne
201 639 Lausanne
203 446 Genève
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
Abdelouahed Sabri 2011/2012
32
• On ôte de cet ensemble les conjonctions de condition qui sont toujours
fausses, et on simplifie les autres.
Fragmentation Méthodologie de la fragmentation horizontale
Exemple:
On considère une table CUISINIER que l'on se propose de répartir
en fragments horizontaux
Abdelouahed Sabri 2011/2012
33
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';
Cuisinier
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 134 DUPONT Jeanne 217 DUBOIS Robert 122 DUBALAI Aline 126 DUGENOU Jean 211 DURAND Aline 238 DURACUIRE ROBERT 29 DURALUMIN Roberte 113 DURDUR Jean 220 DURALEX Jean 1
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 :
Abdelouahed Sabri 2011/2012
34
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}
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
Abdelouahed Sabri 2011/2012
35
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ʌ CF2 = SELECT *FROM cuisinier WHERE prenom='Jean' AND nom LIKE '%R%'
AND numeq ='1’
• CC3 = ¬C1ʌ ¬C2ʌ C3 = Aʌ ¬Bʌ DF3 = SELECT *FROM cuisinier WHERE prenom='Jean' AND nom NOT LIKE
'%R%' AND numeq ='2'
• CC4 = ¬C1ʌ C2ʌ ¬C3 = (¬A ∪ ¬B)ʌ CF4 = SELECT *FROM cuisinier WHERE (prenom !='Jean' OR nom NOT LIKE
'%R%' ) AND numeq ='1'
• CC5 = ¬ C1 ʌ ¬ C2 ʌ ¬ C3 = ¬ A ʌ DF4 = SELECT *FROM cuisinier WHERE prenom !='Jean' AND numeq ='2'
Abdelouahed Sabri 2011/2012
36
Fragmentation Méthodologie de la fragmentation horizontale
Exemple (suite):Ces 5 conditions définissent les fragments horizontaux (exclusifs) :
Abdelouahed Sabri 2011/2012
37
Cuisinier
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 134 DUPONT Jeanne 217 DUBOIS Robert 122 DUBALAI Aline 126 DUGENOU Jean 211 DURAND Aline 238 DURACUIRE ROBERT 29 DURALUMIN Roberte 113 DURDUR Jean 220 DURALEX Jean 1
F1
NUMERO NOM PRENOM NUMEQ13 DURDUR Jean 2F2
NUMERO NOM PRENOM NUMEQ20 DURALEX Jean 1
F3
NUMERO NOM PRENOM NUMEQ26 DUGENOU Jean 2
F4
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 117 DUBOIS Robert 122 DUBALAI Aline 19 DURALUMIN Roberte 1F5
NUMERO NOM PRENOM NUMEQ34 DUPONT Jeanne 211 DURAND Aline 238 DURACUIRE ROBERT 2
Fragmentation
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))
Abdelouahed Sabri 2011/2012
38
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
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).
Abdelouahed Sabri 2011/2012
42
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.
Abdelouahed Sabri 2011/2012
43
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.
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
Abdelouahed Sabri 2011/2012
44
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';
Cuisinier
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 134 DUPONT Jeanne 217 DUBOIS Robert 122 DUBALAI Aline 126 DUGENOU Jean 211 DURAND Aline 238 DURACUIRE ROBERT 29 DURALUMIN Roberte 113 DURDUR Jean 220 DURALEX Jean 1
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 :
Abdelouahed Sabri 2011/2012
45
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}
Fragmentation Méthodologie de la fragmentation verticale
Exemple (suite):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)
Abdelouahed Sabri 2011/2012
46
Fragmentation Méthodologie de la fragmentation hybride
C’est la combinaison des deux fragmentations: horizontale et verticale.
Abdelouahed Sabri 2011/2012
47
F1
NUMERO NOM PRENOM NUMEQ13 DURDUR Jean 2F2
NUMERO NOM PRENOM NUMEQ20 DURALEX Jean 1
F3
NUMERO NOM PRENOM NUMEQ26 DUGENOU Jean 2
F4
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 117 DUBOIS Robert 122 DUBALAI Aline 19 DURALUMIN Roberte 1F5
NUMERO NOM PRENOM NUMEQ34 DUPONT Jeanne 211 DURAND Aline 238 DURACUIRE ROBERT 2
Fragments
horizontaux
Pour chaque fragment horizontal, on
regarde quelles sont les requêtes qui
les concernent (sélection):
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‘;
Fragmentation Méthodologie de la fragmentation hybride
Les intersections de projection de chacun des fragments
horizontaux, avec les fragments correspondants sont donc:
Abdelouahed Sabri 2011/2012
48
F1
NUMERO NOM PRENOM NUMEQ13 DURDUR Jean 2F2
NUMERO NOM PRENOM NUMEQ20 DURALEX Jean 1
F3
NUMERO NOM PRENOM NUMEQ26 DUGENOU Jean 2
F4
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 117 DUBOIS Robert 122 DUBALAI Aline 19 DURALUMIN Roberte 1F5
NUMERO NOM PRENOM NUMEQ34 DUPONT Jeanne 211 DURAND Aline 238 DURACUIRE ROBERT 2
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';
R1 R3
R1 R2
R3
R2
Aucune
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 attributsIP4 = {(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)}
Abdelouahed Sabri 2011/2012
49
Fragmentation Méthodologie de la fragmentation hybride
Les différents fragments:
Abdelouahed Sabri 2011/2012
50
F21
NUMERO NUMEQ20 1
F32
NUMERO PRENOM NUMEQ26 Jean 2
F41
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 117 DUBOIS Robert 122 DUBALAI Aline 19 DURALUMIN Roberte 1
F51
NUMERO NOM PRENOM NUMEQ34 DUPONT Jeanne 211 DURAND Aline 238 DURACUIRE ROBERT 2
F11
NUMERO13
F12
NUMERONOM13 DURDUR
F13
NUMERO NUMEQ13 2
F14
NUMERO PRENOM13 Jean
F22
NUMERO NOM PRENOM20 DURALEX Jean
F31
NUMERONOM26 DUGENOU
Cuisinier
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 134 DUPONT Jeanne 217 DUBOIS Robert 122 DUBALAI Aline 126 DUGENOU Jean 211 DURAND Aline 238 DURACUIRE ROBERT 29 DURALUMIN Roberte 113 DURDUR Jean 220 DURALEX Jean 1
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 à jourAbdelouahed Sabri 2011/2012
51
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';
Abdelouahed Sabri 2011/2012
52
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 sitesAbdelouahed Sabri 2011/2012
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 fragments 21, 22 et 41
• R3 fragments 12 et 31
Pour les sites:
• 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
Abdelouahed Sabri 2011/2012
54
• Le fragment 21 peut appartenir à la requête R1 ou R2
• Le fragment 11 peut appartenir a toutes les Requêtes
• Les fragments 51, 32 et 14 n’appartiennent à aucune requête
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.
Abdelouahed Sabri 2011/2012
55
F32
NUMERO PRENOM NUMEQ26 Jean 221 Jean 2
F31
NUMERONOM26 DUGENOU21 DUBOUT
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
Abdelouahed Sabri 2011/2012
56
F41
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 117 DUBOIS Robert 122 DUBALAI Aline 19 DURALUMIN Roberte 1
F32
NUMERO PRENOM NUMEQ26 Jean 221 Jean 2
F31
NUMERONOM26 DUGENOU21 DUBOUT
F41
NUMERO NOM PRENOM NUMEQ12 DUPONT Jean 117 DUBOIS Robert 122 DUBALAI Aline 19 DURALUMIN Roberte 1
F32
NUMERO PRENOM NUMEQ26 Jean 2
F31
NUMERONOM26 DUGENOU
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
Abdelouahed Sabri 2011/2012
57
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.
Abdelouahed Sabri 2011/2012
58
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.
Abdelouahed Sabri 2011/2012
60
Répartition avancéeAllocation avec duplication
Certains fragments peuvent être dupliquées sur plusieurs sites
(éventuellement sur tous les sites)
Avantages: Elle permet 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:moins un fragment est sujet à des modifications et plus il est prédisposé à
la duplication.Abdelouahed Sabri 2011/2012
61
Répartition avancéeAllocation 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)
Abdelouahed Sabri 2011/2012
62
Répartition avancéeAllocation 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.
Abdelouahed Sabri 2011/2012
63
Répartition avancéeFragmentation 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.
Abdelouahed Sabri 2011/2012
64