Beruflich Dokumente
Kultur Dokumente
Dfinitions Objectifs des systmes rpartis Conception dune base de donnes rpartie Techniques de fragmentations Mise en place dun systme rparti Outils de distribution Rplication Traitements des requtes rparties Transactions rparties
1 CLIENT ==> n SERVEURS : BD Rparties (un serveur peut tre client d'un autre serveur)
Remarque : Une base de donnes rpartie ne contient pas en principe de redondance, si les donnes sont copies dune base de donnes une autre, on parle de BD rpliques. Base de donnes fdre (Federated BD) : Plusieurs BD htrognes capables dinter-oprer via une vue commune (modle commun). Accs des donnes partir dun site central. Multibase : Plusieurs BD (htrognes ou non) capables dinter-oprer sans une vue commune (absence de modle commun).
Dfinitions
Base de donnes centralise : Une base de donnes centralise est gre par un seul SGBD, elle est stocke dans sa totalit un emplacement physique unique et ses divers traitements sont confis une seule et mme unit de traitement. Par opposition, une base de donnes distribue est gre par plusieurs processeurs, sites ou SGBD.
SGBD rparti ou SGBD distribu (Distributed DBMS) : Systme grant un ensemble de bases de donnes logiquement relies, stockes sur des serveurs diffrents en fournissant un moyen daccs rendant la distribution transparente.
1 CLIENT ==> n SERVEURS : Multi-Bases
L. KOUTTI
L. KOUTTI
Fragmentations :
Principe
La fragmentation consiste dcomposer en un sous-ensemble (fragments) obtenu par la slection de lignes et/ou de colonnes partir dune relation globale, localise sur un site unique. Techniques Dcoupage Horizontal Dcoupage Vertical Dcoupage Mixte
Problme Recomposer la relation initiale Fragmentation horizontale La fragmentation horizontale est la dcomposition dune table en sous tables par utilisation des prdicats permettant de slectionner les lignes appartenant chaque fragment. Lopration de recomposition est lunion des sous tables. Prdicats de slection disjoints Soit la relation R (pk, a1, a2, , an) = U FRi o FR1 o FR2 (pk, a1, a2, , an) = pred1 (R), (pk, a1, a2, , an) = pred2 (R), I =
UNION
L. KOUTTI
L. KOUTTI
o FR1
clinum clinom 1000 1002 1004 1008 1009 1021 Martin Durand Top cliadresse 31, rue dAlsace Paris 1, rue Louis Arago Metz 1, place dArmes Nancy clisecteur 1 2 2 1 1 Principe
= =
(pk.A1)(R), (pk.A2)(R),
o FR2
Dupond 27, rue des Colibris Drancy Hugel Petit 2, rue du coude Osny
PROJECTION
JOINTURE
La cl primaire doit tre duplique dans chaque fragment pour recomposer la relation initiale.
CLIENTS_1 clinum clinom 1000 1008 1009 Martin cliadresse 31, rue dAlsace Paris clinum clinom 1002 1004 1021
CLIENTS_2 cliadresse
Exemple : Soit la relation commandes : cdenum cdenumcli cdecodeart cdeqtite 1000 1001 1001 1002 1004 1001 4 3 12 9 7 8
Durand 1, rue Louis Arago Metz Top Petit 1, place dArmes Nancy 3, rue de luniversit Reims
Dupond 27, rue des Colibris Drancy Hugel 2, rue du coude Osny
CLIENTS_2
= 1 = 2
= secteur = secteur
(R), (R),
= 2
(R) I secteur
(R) =
COMMANDES_1 COMMANDES_2 cdenum 1706071 1706072 1706073 1706074 1706075 1706076 cdecodeart cdeqtite 1000 1001 1001 1002 1004 1001 4 3 12 9 7 8
L. KOUTTI
Fragmentation verticale La fragmentation verticale est le dcoupage dune table en sous tables par projections permettant de slectionner les colonnes composant chaque fragment. La relation initiale est recompose par jointure des fragments. Projection dattributs
cdenum
cdenumcli
1706071 20021 1706072 20021 1706073 20022 1706074 20022 1706075 20021
L. KOUTTI
1706076 20023
WHERE
secteur = 1
(commandes_1.cdenum=commandes_2.cdenum) cdenumcli
commandes_2
(commandes), (commandes)
Fragmentation verticale
COPY FROM user1/mdp1@connectStringBase1 -
cdecodeart, cdeqtite
La fragmentation mixte, cest la combinaison des fragmentations horizontale et verticale. Lopration de partitionnement est une combinaison de projections et de slections. Lopration de recomposition est une combinaison de jointures et dunions.
TO REPLACE USING
La fragmentation fait disparaitre les contraintes (primaires, trangres, check). Ces contraintes doivent tre recres par consquent. Si les fragments fils et pre ne sont pas sur le mme site. Les contraintes seront rtablies par triggers.
Outils de distributions
APPEND CREATE REPLACE INSERT : [CREATE] + INSERT : CREATE + INSERT : [DROP] + CREATE + INSERT : INSERT Liens de bases de donnes (Database link) Problme : On veut lister les clients du secteur 1 Un moyen est de se connecter la base qui contient le fragment clients_1 et dexcuter la requte ci-dessous :
connect user1/mdp1@aliasSite1; select * from clients_1 ;
A partir du site 1, priori vous ne pouvez pas listez les clients du secteur 2. Et pourtant il est possible daccder des donnes situes sur des sites diffrents. Pour se faire vous devez crer un lien dans la base de donnes du site source vers les bases de donnes cibles.
L. KOUTTI
L. KOUTTI
Un lien de base de donnes est un chemin de communication unidirectionnel dune base de donnes une autre.
En crant un lien de BD, on doit indiquer le nom du compte auquel on se connecte, le mot de passe de ce compte, et le nom de service associ la base distante. En labsence dun nom de compte, Oracle utilise le nom et le mot de passe du compte local pour la connexion la base distante. Syntaxe :
CREATE [PUBLIC|PRIVATE] DATABASE LINK nomLien CONNECT TO user IDENTIFIED BY mdp USING connect_string; BD1 BD2
Public database link : peut tre utilis pour tous les utilisateurs de la BD pour accder aux donnes de la BD distante. Private database link : ne peut tre utilis que pour le propritaire du lien. Un utilisateur connect la BD1 peut accder la BD2 via le lien de base de donnes stock dans les mta-donnes de la BD1. Pour que la BD1 et BD2 se connaissent mutuellement, il faut crer deux dabases links. Principe Avantages Disponibilit des donnes Augmentation du paralllisme en lecture Diminution du cot impos par les transmissions Une relation stocke sur un site est recopie sur un ou plusieurs sites
Inconvnients
BD1 BD2 BD2
Snapshots
Dans un modle rpartit, il se peut que des donnes soient momentanment inaccessibles. Afin de ne pas gner les ventuels utilisateurs, il vous est possible de rpliquer les donnes d'une base en crant un SNPASHOT.
Lorsquun lien est rfrenc par une instruction SQL, Oracle ouvre une session dans la base distante et y excute linstruction. La session demeure ouverte au cas o elle serait de nouveau ncessaire.
2. Les snapshots peuvent tre en lecture seule (read-only dfaut) ou mis jour (updateable). 3. Avant de crer un snapshot, il faut dabord crer un lien vers la base de donnes source.
L. KOUTTI
10
L. KOUTTI
4. Les snapshots peuvent tre rafrachis manuellement ou automatiquement, 5. Ils peuvent tre des copies compltes ou partielles de tables (partitionnement horizontal ou vertical), Modes de rafrachissement Initialement, un snapshot est une copie dune table matre. Pour garantir lintgrit des donnes, il est ncessaire de raliser un rafrachissement. Trois types de rafrachissement sont possibles : complet, rapide et forc. 1. Rafrachissement complet Pour raliser un rafrachissement complet dun snapshot, le site snapshot excute la requte dfinissant le snapshot. Le rsultat de la requte remplace toutes les donnes existantes du snapshot (ce type de rafraichissement dtruit toutes les lignes dun snapshot). 2. Rafrachissement rapide Pour raliser un rafrachissement rapide, le site snapshot commence par identifier les changements survenu depuis le dernier rafrachissement et les applique au snapshot. Le rafrachissement rapide est plus efficace lorsquil y a peu de changements sur le site matre. Moins de donnes sont transfres et remplaces. (Appel quelquefois rafrachissement incrmental). Pour identifier les lignes modifies depuis le dernier rafrachissement, Oracle utilise un snapshot log sur le site matre pour garder une trace des mises jour. 3. Rafrachissement forc Un rafrachissement forc accomplit un rafrachissement rapide si possible. En cas dchec, un rafrachissement complet est accompli. Vues Les exemples suivants dfinissent des snapshots de faon extraire les donnes dune table matre et renouveler lopration tous les jours. Syntaxe :
CREATE SNAPSHOT snapClients REFRESH COMPLETE
CREATE SNAPSHOT snapClients FOR UPDATE REFRESH COMPLETE START WITH sysdate NEXT sysdate + 1 AS SELECT * FROM clients@LienSite1;
snapshot Modifiable
Un REFRESH FAST utilise un snapshot log, pour actualiser le snapshot. Ce fichier se trouve sur le mme site que la table matre. Dans le snapshot log, sont stockes les modifications intervenues sur la table matre. Ainsi, pour chaque mise jour, seules les modifications qui sont envoyes, et non lensemble des donnes. Par contre, un REFRESH COMPLETE est obligatoire pour les snapshots complexes.
Aprs avoir cre les liens de bases de donnes, plusieurs objets : les vues, les synonymes peuvent servir cacher la distribution des donnes aux utilisateurs :
Les vues peuvent fournir une transparence par rapport aux tables locales et distantes. Par exemple, supposons que la table clients_1 est sur une BD locale et la table clients_2 est sur une BD distante, la liste de tous les clients (secteur 1 et secteur 2), peut tre obtenue laide de la requte suivante :
11
L. KOUTTI
12
L. KOUTTI
Pour rendre la fragmentation transparente aux utilisateurs. Nous pouvons crer une vue dans la BD locale qui fait la jointure des donnes locales et distantes, comme ci-dessous :
CREATE OR REPLACE VIEW clients AS SELECT * from clients_1@LienVersSite1 UNION SELECT * from clients_2@LienVersSite2; Requte globale formule sur le schma global SGBD Rparti rep1 SR1
SGBD local
Les utilisateurs accdant cette vue nont pas besoin de savoir o les donnes sont stockes. Synonymes Un synonyme est un autre nom donn une table, une vue, une squence, une procdure, une fonction stocke, un package, une vue matrialise, un schma de classe Java. Il permet didentifier de faon unique dans un systme distribu les objets quils nomment. Les synonymes permettent aux applications de fonctionner sans aucune modification quel que soit lutilisateur propritaire de lobjet et quelle que soit la base de donnes stockant lobjet. Les synonymes fournissent avec les liens bases de donnes la transparence de la localisation, exigence fondamentale des systmes distribus.
SR2
SGBD local
Rponse globale
SRn
repn
Exemple dvaluation simple Schma globale CLIENTS[CLINUM, CLINOM, CLIPRENOM, CLISECTEUR] Schma de fragmentation Clients_1 = CLINUM, CLINOM, CLIPRENOM (CLISECTEUR = 1, CLIENTS), Clients_2 = CLINUM, CLINOM, CLIPRENOM (CLISECTEUR <> 1, CLIENTS),
Dcomposition des requtes Schma de localisation Le fragment FR1 est sur le site 1 et FR2 sur le site 2 Reconstitution
13
L. KOUTTI
14
L. KOUTTI
Le protocole de validation en deux phases a pour objectif de cordonner lexcution des commandes commit par tous les sites qui participent une transaction. Il met en jeu un site coordinateur et les sites participants. Une transaction globale est valide si toutes les transactions locales qui la composent valident. En
clisecteur <> 1
effet, si au moins une transaction locale ne valide pas, toutes les transactions sont annules.
clisecteur <> 1
U
clients clients_1 clients_2
Le principe consiste diviser la validation en deux phases. Phase 1 (prparation) Prparer crire les rsultats des mises jour dans la base de donnes rpartie la demande du site coordinateur Phase 2 (validation) Intgre les rsultats des mises dans la base de donnes rpartie. Cette tape est ralise si la phase 1 est effectue avec succs.
Site 1
Site 2
U
clisecteur <>1 clisecteur <> 1 clisecteur <> 1 clients_2 clients_1 clients_2
Prt
Prt
Valider
Valider
Fin
Fin L. KOUTTI
15
L. KOUTTI
16
Prt
Prt
fin Coordinateur: Attendre les rponses (PRET ou ABANDONNER) des participants ou la Temporisation. Si chute de temporisation ou au moins une rponse ABANDONNER alors dbut Ecrire ABANDONNER_GLOBAL dans journal Envoyer ABANDONNER tous les participants fin sinon dbut Ecrire VALIDER_GLOBAL dans journal Envoyer VALIDER aux participants fin Participant: Attendre message de commande Ecrire ABANDONNER ou VALIDER dans journal Envoyer ACCUSE_DE_RECEPTION au coordinateur Excuter la commande Coordinateur: Attendre ACCUSE_DE_RECEPTION des participants Ecrire COMPLET dans journal
Valider
Valider panne
Fin
Prt
reprise
Valider
Fin
Rfrences
Cours de Mr O. Teste et C. Chrisment IRIT Toulouse. http://cedric.cnam.fr/vertigo/ http://ceria.dauphine.fr/Rim/SupportBDR.pdf
Protocole de validation deux phases Coordinateur: Ecrire PREPARE dans journal Envoyer message PREPARE aux participants et activer une temporisation Participant: Attendre message PREPARE Si le participant veut valider alors dbut Ecrire PRET dans journal Envoyer PRET au coordinateur fin sinon dbut Ecrire ABANDONNER dans journal Envoyer ABANDONNER au coordinateur
17
L. KOUTTI
18
L. KOUTTI