Vous êtes sur la page 1sur 9

Bases de donnes rparties Mise en uvre avec Oracle

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.

1 CLIENT ==> 1 SERVEUR : BD Centralise

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

M1 : support de cours BDR

L. KOUTTI

M1 : support de cours BDR

L. KOUTTI

Base de donnes rpliques :


Une base de donnes rplique reprsente une base de donnes qui est recopie de faon identique ou non sur plusieurs sites.

Fragmentations :
Principe

Objectifs de la distribution et de rpartitions de donnes :


- Limiter le transfert d'information (en nombre et en volume) en rpartissant les donnes l o elles sont le plus utilises. Ceci est particulirement important pour une base de donnes dont les diffrents utilisateurs sont gographiquement disperss comme dans l'exemple des agences d'une banque nationale, ou encore des guichets de rservation d'une compagnie arienne ou ferroviaire. - Accrotre les performances par la rpartition de la charge de travail sur plusieurs units de traitement oprant en parallle. - Augmenter la fiabilit en faisant effectuer le mme traitement par plusieurs ordinateurs et en dupliquant les donnes sur diffrents sites, lorsque la BD concerne un domaine sensible o la moindre erreur peut avoir des consquences catastrophiques (comptes bancaires, centrales nuclaires, lancement de fuses spatiales). - Etendre la disponibilit des informations, en les dupliquant sur plusieurs sites. L'exemple type est l'annuaire tlphonique national dont chaque ville importante possderait un exemplaire. - Faire crotre en souplesse une BD ou mme tout le systme de base de donnes. Le but est ici de ne pas modifier l'existant lorsque l'on dsire transformer la structure des informations (volution du schma conceptuel), utiliser un nouveau support ou une nouvelle technologie pour le stockage en mmoire secondaire, ou plus radicalement utiliser un nouveau SGBD. L'volution progressive est alors assure en faisant cooprer l'existant avec le "nouveau" au sein d'une BD rpartie. - Fusionner en douceur deux systmes d'information en faisant cooprer leurs bases de donnes. Le principe est ici de maintenir les applications existantes tout en permettant l'interoprabilit des deux systmes d'information.

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

Slection Projection Slection et projection

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 =

o avec pred1 (R) I pred2 (R) Principe


SELECTION

UNION

Possibilit de ne pas projeter lattribut servant dfinir la slection. Exemple :

Soit la relation clients (TP N3)

M1 : support de cours BDR

L. KOUTTI

M1 : support de cours BDR

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

o avec Ai {a1,a2, ,an} o A1 I A2 =

Dupond 27, rue des Colibris Drancy Hugel Petit 2, rue du coude Osny

3, rue de luniversit Reims 2

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

1706071 20021 1706072 20021 1706073 20022 1706074 20022

CLIENTS = CLIENTS_1 U CLIENTS_1 CLIENTS_2 secteur


= 1

CLIENTS_2
= 1 = 2

1706075 20021 1706076 20023

= 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

Soit la relation R(pk,a1,a2, ,an)=FR1


(FR1.pk=FR2.pk)FR2 (FR2.pk = )

L. KOUTTI

1706076 20023

M1 : support de cours BDR

M1 : support de cours BDR

WHERE

secteur = 1

commandes=commandes_1 commandes_1= cdenum, commandes_2= cdenum,


Fragmentation mixte

(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

user1/mdp1@connectStringBase1 commandes_1 SELECT cdenum, cdenumcli FROM commandes

Mise en uvre de la fragmentation avec Oracle


Remarque : Commande COPY
COPY FROM base1 TO base2 -

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.

{APPEND | CREATE | REPLACE | INSERT} nom_fragment [(liste_colonnes)] USING SELECT

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 ;

Remarque: Les contraintes ne sont pas dupliques. Exemples : Fragmentation horizontale


COPY FROM user1/mdp1@connectStringBase1 TO REPLACE USING user1/mdp1@connectStringBase1 clients_1 SELECT clinum, clinom, cliadresse FROM clients -

Pour lister les clients du secteur 2:


connect user1/mdp1@aliasSite2; select * from clients_2 ;

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

M1 : support de cours BDR

M1 : support de cours BDR

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

La rplication des donnes

Inconvnients
BD1 BD2 BD2

Cohrence des diffrentes copies Propagation des mises a jour

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.

1. Un snpashot est limage dune table matre.

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.

M1 : support de cours BDR

L. KOUTTI

10

M1 : support de cours BDR

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

START WITH sysdate NEXT sysdate + 1 AS SELECT * FROM clients@LienSite1;


snapshot Read-Only

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.

Le snapshot log est crer avant le snapshot:

CREATE SNAPSHOT LOG ON clients;

Transparence la localisation des donnes

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

M1 : support de cours BDR

L. KOUTTI

12

M1 : support de cours BDR

L. KOUTTI

SELECT * from clients_1 UNION SELECT * from clients_2@LienVersSite2;

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

Rep2 SGBD local

SRn

repn

CREATE [PUBLIC] nom-synonyme FOR [schma.]nom-objet[@nom-lien-BD] ;

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),

CREATE SYNONYM seq_clients FOR seq_clients@LienVersSite1;

Dcomposition des requtes Schma de localisation Le fragment FR1 est sur le site 1 et FR2 sur le site 2 Reconstitution

13

M1 : support de cours BDR

L. KOUTTI

14

M1 : support de cours BDR

L. KOUTTI

Clients = clients_1 U clients_2 SELECT clinum, clinom, cliprenom FROM clients

WHERE clisecteur <> 1;

Protocole de validation en deux phases


Arbre algbrique
clinum, clinom, cliprenom

Objectif : Excuter COMMIT pour une transaction rpartie

clinum, clinom, cliprenom

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.

Rduction pour la fragmentation horizontale

Rgle : liminer l'accs aux fragments inutiles

clinum, clinom, cliprenom

clinum, clinom, cliprenom

Cas de validation normal

Site 1

Coordinateur Prparer Prparer

Site 2

U
clisecteur <>1 clisecteur <> 1 clisecteur <> 1 clients_2 clients_1 clients_2

Prt

Prt

Valider

Valider

Fin

Fin L. KOUTTI

15

M1 : support de cours BDR

L. KOUTTI

16

M1 : support de cours BDR

Cas de panne (un participant)


Site 1 Prparer Coordinateur Prparer Site 2

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

M1 : support de cours BDR

L. KOUTTI

18

M1 : support de cours BDR

L. KOUTTI