Vous êtes sur la page 1sur 2

Base de données répartie (BDR) 5) Hétérogénéité : - Capacité d’unifier des modèles Conception ascendante : - Intégration des BD locales

Une BDR est un ensemble de bases de données gérées et langages afin de générer des bases fédérées. - existantes dans une base fédérée ==> intégration des
par des sites différents et apparaissant à l’utilisateur Intégration sémantique des bases. schémas locaux existants afin de constituer un
comme une base unique. Architecture des SGBDR schéma global.

Fonctions d'un SGBDR => Traitement des requêtes Les 12 règles d’un SGBD : Autonomie locale / Pas de
SGBD réparti (SGBDR)
site fédérateur / Exploitation en continue /
Un SGBDR est un système qui gère une collection de BDs référençant des objets d’une BDR.
Indépendance à la localisation / Règles de
logiquement reliées, distribuées sur un réseau, en - Assurer la décomposition de la requête distribuée fragmentation / Duplication multiple / Requêtes
fournissant un mécanisme d’accès qui rend la répartition en sous-requêtes locales envoyées à chaque site. - distribuées / Transactions distribuées / Indépendance
transparente aux utilisateurs. Prendre en compte les règles de localisation lors de la du matériel, des systèmes d’exploitation et du réseau
Avantages : - Prendre en compte la répartition décomposition. - Evaluer globalement la requête / Indépendance du SGBD.
géographique des données. - Prendre en compte la distribuée en minimisant le transfert de données et
en maximisant le parallélisme. - Traduire les requêtes Transactions distribuées : Propriétés des
distribution fonctionnelle des données. - Une meilleure transactions : - Atomicité : Une transaction doit
exprimées dans un langage Pivot (ex. SQL) en
disponibilité des données en présence de panne ou de effectuer toutes ses mises à jour ou ne rien faire du
dysfonctionnement des applications. - Une plus grande requêtes compréhensibles par le SGBD local (dans un
contexte de BD hétérogènes). - Router les mises à tout. // - Cohérence : Une transaction doit faire
flexibilité afin d’assurer le partage des données passer la BD d’un état cohérent à un autre. // -
hétérogènes et réparties. - Meilleures performances jour vers les sites concernés en assurant la gestion
Isolation : Les résultats d’une transaction ne doivent
(données réparties sur plusieurs bases gérées par des des transactions réparties (vérification des règles
d’intégrité, contrôle des accès concurrents, gestion être visibles aux autres transactions qu’une fois la
serveurs différents mieux adaptés). transaction validée. // - Durabilité : Dès qu’une
de l’atomicité des transactions distribuées).
Inconvénients : - Complexité des SGBDRs. - Problèmes de transaction valide ses modifications, le système doit
Organisation des schémas : Une BDR est décrite par garantir que ces modifications seront conservées en
cohérence dus à la distribution du contrôle de données
entre plusieurs sites. - Difficulté de changement (ex. différents niveaux de schémas cas de panne. ------ Dans le cadre d’un système
intégration d’un nouveau type de SGBD). réparti, chaque site peut décider de valider ou
d’annuler une transaction ==> il faut donc
Objectifs des SGBDR
coordonner les validations.
1) Multiclients multiserveurs
- Fournir un mécanisme de contrôle des accès
concurrents adapté. - Garantir que l’effet de l’exécution
simultanée des transactions est le même que celui d’une
exécution séquentielle (sérialisabilité des transactions). Schéma local : Schéma décrivant les données d’une
BD locale gérée par le SGBD local. // Schéma exporté
- Permettre l’exécution des requêtes distribuées. : Schéma décrivant les données exportées par un site
-> Une requête distribuée est une requête émise par un vers les sites clients. // Schéma importé : Schéma
client dont l’exécution nécessite l’exécution de N sous- exporté reçu par un site client. // Schéma global :
requêtes sur N serveurs avec N>1 . L’ensemble des schémas exportés par tous ou
-> Une transaction distribuée est une transaction qui met certains sites clients exprimé dans le modèle de
référence du SGBDR et décrivant globalement la base Les synonymes : - Création d’un synonyme : CREATE
en oeuvre plusieurs serveurs.
répartie (le schéma global est non matérialisée dans SYNONYM Client FOR Client@lien_base2; // -
les sites clients). // Vue intégrée : Schéma décrivant
Suppression d’un synonyme : DROP SYNONYM
dans le modèle du SGBDR les données de la BDR
Client; // - Synonyme d’une séquence distante :
accédées par une application. CREATE SYNONYM Sequence_Client FOR
Architecture de référence Sequence_Client@lien_base2;
Architecture s’articulant autour de 3 niveaux de Distribution : - Bases de données distribuées ou
fonctionnalités : réparties. -Sans redondance.
2) Transparence à la localisation des données
- Niveau local : présent sur chaque serveur permet Duplication : - Duplication locale d’un fragment
- Propriété d’un SGBDR permettant d’écrire des requêtes d’exporter les données locales selon le modèle pivot éloigné maître. - Fragment locale en lecture seule. -
avec des noms d’objets ne contenant pas la localisation du SGBDR. - Niveau communication : permet de Utilisation de la notion de cliché. - Duplication
des données. transmettre les sous-requêtes en provenance d’un synchrone ou asynchrone. - Duplication synchrone :
Avantages : - Simplifier la vue utilisateur et l’écriture de site client au serveur dans le langage pivot d’échange. propager immédiatement les modifications
ses requêtes. - Introduire la possibilité de déplacer les Ces sous-requêtes référencent le schéma exporté apportées aux données sources vers les copies ->
objets sans modifier les requêtes. Inconvénient : - vers ce site client. - Niveau interopérabilité : permet Utilisation des Trigger ou Trigger instead of. -
Contraindre le SGBDR à rechercher les sites capables de de formuler des requêtes mettant en jeu des vues Duplication asynchrone : propager les modifications
générer des éléments de réponse à une requête pour intégrées de la base. Il assure la décomposition des apportées aux données sources vers les copies à des
l’exécuter (fonction pas évidente). Solution : Utilisation requêtes en sous-requêtes et le passage des vues intervalles prédéfinis. -> Utilisation d’un
d’un nom hiérarchique pour les objets : intégrées aux différents schémas importés. programmateur, Oracle utilise la notion de
<objet>@<base>. -Utilisation d’un alias pour retrouver SNAPSHOT ou vues matérialisées.
l’indépendance à la localisation. Réplication : - Pas de fragment maître. - Réplication
3) Meilleure disponibilité : - Disponibilité des données : synchrone : utilisation de jetons. - Réplication
une des justifications essentielles des SGBDR. - La asynchrone : problèmes de cohérence. Avantages : -
répartition permet de ne plus dépendre d’un site central. Améliorer les performances (Utilisation de la copie la
- Gestion des copies : se replier sur une copie lorsqu’une plus proche du client => évite des transferts inutiles).
autre est indisponible (site en panne) ==> Réplication. - - Augmenter la disponibilité des données (Lors d’une
Assurer une meilleure disponibilité, c’est aussi garantir panne d’un serveur, on peut se replier sur un autre
l’Atomicité des transactions. Conception des BDR disposant d’une copie des données). Avec N copies
sur des serveurs différents => Disponibilité = 1 –
4) Autonomie locale : - Garder une administration locale Conception descendante : - Utilisée lors de la probabilité_panne N. Inconvénients : - Assurer la
séparée et indépendante pour chaque serveur constitution de nouvelles bases de données. - Un convergence des copies. - Offrir une transparence de
participant à la base de données répartie (pas schéma conceptuel est tout d’abord élaboré puis les gestion aux clients : les clients doivent croire à
d’administration globale) ==> les reprises après panne et diverses entités de ce schéma sont distribuées sur les l’existence d’une seule copie. -> Le SGBD doit assurer
les mises à niveau des logiciels doivent être accomplies sites ==> définition des schémas locaux. la diffusion des mises à jour aux copies et le choix de
localement et ne pas impacter les autres sites. la meilleure copie lors des accès.
Client (#No, Nom, Prénom, Adresse, Ville) Création du lien inter – base (database link) Création de la base répartie : Créer les objets virtuels répartis
Agence (#No, Nom, Adresse, Ville) CREATE DATABASE LINK dbl_ensias1 CONNECT TO CONNECT Inwis/azerty@ensias1; CREATE VIEW Client (No,
Compte (#No, Type_Compte_No, DateOuverture, Inwis IDENTIFIED BY azerty USING 'ensias1'; Nom, Prenom, Adresse, Ville) AS SELECT No, Nom, Prenom,
Decouvert_autorise, Solde, Client_No, Agence_No) Adresse, 'Casablanca' FROM Client_1 UNION SELECT
CREATE DATABASE LINK dbl_ensias2 CONNECT TO
No,Nom,Prenom,Adresse,'Rabat' FROM Client_2@dbl_ensias2;
Type_Compte (#No, Nom, Description) Inwis IDENTIFIED BY azerty USING 'ensias2';
CONNECT Inwis/azerty@ensias2; CREATE VIEW Client (No,
Operation (#No, Type_Operation_No, Compte_No) Test des liens :
Nom, Prenom, Adresse, Ville) AS SELECT No, Nom, Prenom,
Type_Operation (#No, Description) CONNECT Inwis/azerty@ensias2; SELECT * FROM Adresse, 'Casablanca' FROM Client_1@dbl_ensias1 UNION
Client_1@dbl_ensias1; SELECT No,Nom,Prenom,Adresse,'Rabat' FROM Client_2;
CONNECT Inwis/azerty@ensias1; SELECT * FROM
Fragmentation horizontale pour la table Client Client_2@dbl_ensias2; Mise en œuvre de la réplication synchrone

Serveur1 : Client_1 des clients de Casablanca sans 'Ville'. CONNECT Inwis/azerty@ensias1; CREATE TABLE
Ajout des contraintes de base Appareil(no_appareil number(7) PRIMARY KEY,
CREATE TABLE Client_1 (No, Nom, Prénom, Adresse designation varchar(30), prix number(7,2),
CONSTRAINT pk1 PRIMARY KEY(No) ) AS SELECT No,Nom, Les contraintes de clé primaire :
caracteristiques_techniques varchar(50));
Prénom, Adresse FROM Client WHERE ville = 'Casablanca'; ALTER TABLE Client_2 ADD PRIMARY KEY (No);
Copier la table centrale APPAREIL dans le Serveur 2.
Serveur2 : Client_2 des clients de Rabat sans 'Ville'. ALTER TABLE Agence_2 ADD PRIMARY KEY (No);
CONNECT Inwis/azerty@ensias2; CREATE TABLE
COPY FROM Inwis/azerty@ensias1 TO ALTER TABLE Compte_2 ADD PRIMARY KEY (No); Appareil_Copy AS SELECT * FROM
Inwis/azerty@ensias2 REPLACE Client_2 (No,Nom, Prénom, Appareil@dbl_ensias1;
Adresse) USING SELECT No,Nom, Prénom, Adresse FROM ALTER TABLE Type_Compte_2 ADD PRIMARY KEY (No);
Client WHERE ville = 'Rabat'; ALTER TABLE Operation_2 ADD PRIMARY KEY (No); Ecrire un trigger sur la base du siège (Serveur1) qui
permet d’assurer que toute modification au niveau
Fragmentation horizontale pour la table Compte : ALTER TABLE Type_Operation_2 ADD PRIMARY KEY de la table centrale APPAREIL soit répercutée
Serveur1 : Compte_1 des comptes des clients de (No); immédiatement vers l’image de cette table à Rabat.
Casablanca. Les contraintes de références si la table mère est sur CREATE TRIGGER app
CREATE TABLE Compte_1 (No, Type_Compte_No, le même site : (+ Compte_1 (2 FK) + Operation_1 (1 FK) )
AFTER INSERT OR DELETE OR UPDATE ON Appareil
DateOuverture, Decouvert_autorise, Solde, Client_No, ALTER TABLE Compte_2 ADD CONSTRAINT fk1
Agence_No, CONSTRAINT pk2 PRIMARY KEY(No)) AS SELECT FOREIGN KEY(Client_No) REFERENCES Client_2(No); FOR EACH ROW
No, Type_Compte_No, DateOuverture, BEGIN
ALTER TABLE Operation_2 ADD CONSTRAINT fk2
Decouvert_autorise, Solde, Client_No, Agence_No FROM
FOREIGN KEY(Compte_No) REFERENCES IF INSERTING THEN
Compte WHERE Client_No IN (SELECT No FROM Client_1);
Compte_2(No);
INSERT INTO Appareil_Copy@dbl_ensias2
Serveur2 : Compte_2 des comptes des clients de Rabat.
Les contraintes de références par trigger si la table VALUES(:NEW.no_appareil, :NEW.designation,
COPY FROM Inwis/azerty@ensias1 TO 'mère' est sur un site distant => Deux triggers : :NEW.prix, :NEW.caracteristiques_techniques);
Inwis/azerty@ensias2 REPLACE TABLE Compte_2 (No,
- un trigger sur la fille remplaçant la FOREIGN KEY, ELSE IF DELETING THEN
Type_Compte_No, DateOuverture, Decouvert_autorise,
Solde, Client_No, Agence_No) USING SELECT No, - un trigger sur la mère interdisant de supprimer une DELETE FROM Appareil_Copy@dbl_ensias2 WHERE
Type_Compte_No, DateOuverture, Decouvert_autorise, ligne référencée. no_appareil = :OLD.no_appareil;
Solde, Client_No, Agence_No FROM Compte WHERE CONNECT Inwis/azerty@ensias1; ELSE IF UPDATING THEN
Client_No IN (SELECT No FROM Client WHERE ville =
CREATE OR REPLACE TRIGGER trig_agence_mother UPDATE Appareil_Copy @dbl_ensias2
'Rabat');
BEFORE DELETE OR UPDATE OF No ON Agence SET no_appareil = :NEW.no_appareil, designation =
Fragmentation horizontale pour la table Operation :
FOR EACH ROW :NEW.designation, prix = :NEW.prix,
Serveur1 : Operation_1 des opérations des comptes de caracteristiques_techniques =
DECLARE x number := 0; :NEW.caracteristiques_techniques WHERE
Compte_1. CREATE TABLE Operation_1 (No,
Type_Operation_No, Compte_No, CONSTRAINT pk3 BEGIN no_appareil = :OLD.no_appareil;
PRIMARY KEY(No)) AS SELECT No, Type_Operation_No, SELECT count(*) INTO x from Compte_2@dbl_ensias2 END IF;
Compte_No FROM Operation WHERE Compte_No IN
WHERE Agence_No = :OLD.No; END;
(SELECT Compte_No FROM Compte_1);
IF x>0 THEN /
Serveur2 : Operation_2 des opérations des comptes de
RAISE_APPLICATION_ERROR(-20175,'Cette agence est Mise en œuvre de la réplication asynchrone
Compte_2. COPY FROM Inwis/azerty@ensias1 TO
Inwis/azerty@ensias2 REPLACE Operation_2 (No, utilisée.'); Créer une image (cliché) de la table centrale
Type_Operation_No, Compte_No) USING SELECT No, END IF; END; / APPAREIL dans chacun des autres sites. Le
Type_Operation_No, Compte_No FROM Operation Where
CONNECT Inwis/azerty@ensias2; rafraîchissement doit être rapide et sa mise à jour
Compte_No IN (SELECT Compte_No FROM Compte WHERE
Client_No IN (SELECT No FROM Client WHERE ville = CREATE OR REPLACE TRIGGER trig_agence_daughter doit être effectuée toutes les 30 jours.
'Rabat') ); (ou bien par jointures). BEFORE INSERT OR UPDATE OF Agence_No ON
Compte_2 CREATE SNAPSHOT LOG ON Appareil;
Déplacement complet de la table Type_Compte sur
Serveur2 : COPY FROM Inwis/azerty@ensias1 TO FOR EACH ROW CREATE SNAPSHOT image_appareil REFRESH FAST
Inwis/azerty@ensias2 REPLACE Type_Compte_2(no, DECLARE x number := 0;
libelle_compte, description) USING SELECT no, START WITH SYSDATE NEXT SYSDATE + 30
BEGIN
libelle_compte, description FROM Type_Compte; DROP
AS SELECT * FROM Appareil@dbl_ensias1;
TABLE Type_Compte; SELECT count(*) INTO x FROM Agence@dbl_ensias1
Déplacement complet de la table Type_Operation sur WHERE No = :NEW.Agence_No; Syntaxe générale :
Serveur2 : COPY FROM Inwis/azerty@ensias1 TO IF x=0 THEN CREATE SNAPSHOT [nom_schéma.]Nom_image
Inwis/azerty@ensias2 REPLACE Type_Operation_2(no, [Spécification de stockage] [REFRESH
libelle_operation, decription) USING SELECT no, RAISE_APPLICATION_ERROR(-20175,'Cette agence est
[FAST|COMPLETE|FORCE][START WITH date1]
libelle_operation, description from Type_Operation; DROP inexistante.');
[NEXT date2] AS Requête;
TABLE Type_Operation; END IF; END; /

Vous aimerez peut-être aussi