Bases de Données Réparties



Documents pareils
Notes de cours : bases de données distribuées et repliquées

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Administration des bases de données. Jean-Yves Antoine

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

Réplication des données

Module BDR Master d Informatique (SAR)

Intégrité des données

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Base de données II Module 3b

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Cours Bases de données 2ème année IUT

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bases de données avancées

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

TP Contraintes - Triggers

Bases de Données relationnelles et leurs systèmes de Gestion

//////////////////////////////////////////////////////////////////// Administration bases de données

Configurer la supervision pour une base MS SQL Server Viadéis Services

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Master Exploration Informatique des données DataWareHouse

Cours Bases de données

Cours 6. Sécurisation d un SGBD. DBA - M1ASR - Université Evry 1

Bases de données et sites WEB Licence d informatique LI345

Devoir Data WareHouse

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Systèmes d informations nouvelles générations. Répartition, Parallèlisation, hétérogénéité dans les SGBD. Exemple d application d un futur proche

Chapitre Introduction : Notion de Bases de données. 2. Définition : BD Répartie. 3. Architecture des SGBD. 4. Conception des bases réparties

Bases de données et sites WEB

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Cours Bases de données 2ème année IUT

Le langage SQL (première partie) c Olivier Caron

Langage SQL : créer et interroger une base

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Auto-évaluation Oracle: cours de base

Olivier Mondet

SQL Historique

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Bases de données réparties: Fragmentation et allocation

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Présentation du module Base de données spatio-temporelles

Les bases de données

Le Langage SQL version Oracle

OpenPaaS Le réseau social d'entreprise

Chapitre 10. Architectures des systèmes de gestion de bases de données

A QUOI SERVENT LES BASES DE DONNÉES?

Partie II Cours 3 (suite) : Sécurité de bases de données

Du 10 Fév. au 14 Mars 2014

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Bases de Données Avancées PL/SQL

Gestion des utilisateurs et de leurs droits

CHAPITRE 1 ARCHITECTURE

A QUOI SERVENT LES BASES DE DONNÉES?

Automatisation de l administration système

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

CREATION WEB DYNAMIQUE

Implémentation des SGBD

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

TP Bases de données réparties

Bases de données relationnelles

Qui est Sybase ianywhere?

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Cours Bases de données 2ème année IUT

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Module BDR Master d Informatique (SAR)

1. Introduction. Bases de données Réparties, Fédérées et Réplication. Plan. Bibliographie du cours

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Gestion de base de données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Intégrité sémantique dans les bases de données relationnelles

Bases de données cours 1

PHP 5. La base de données MySql. A. Belaïd 1

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Quelques aspects du Relationnel-Objet du SGBD Oracle

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Les déclencheurs. Version 1.0. Grégory CASANOVA

Corrigés détaillés des exercices

Données Réparties. Thibault BERNARD.

TP11 - Administration/Tuning

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

I/ Présentation. On considère une BD CIRQUE dont le schema conceptuel : PERSONNEL _CIRQUE (NOM, ROLE) ;

La replication dans PostgreSQL

Secteur Tertiaire Informatique Filière étude - développement. Accueil. Apprentissage. Période en entreprise. Evaluation.

Le Langage De Description De Données(LDD)

Administration des bases de données relationnelles Part I

BTS/CGO P10 SYSTEME INFORMATION Année

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

Compétences Business Objects

Transcription:

Bases de Données Réparties Architecture Mise en œuvre Duplication et Réplication Michel Tuffery

BDR : Définition Ensemble de bases de données gérées par des sites différents et apparaissant à l utilisateur comme une base unique Les 4 universités Toulousaines : SELECT * FROM etudiant WHERE date_naissance=1994; UTM UPS USS INP BD réparties Michel Tuffery 2

Architecture d une BD répartie Gérant d applications Gérant d applications Gérant de données réparties Gérant de communication Réseau Gérant de communication Gérant de données réparties SGBD SGBD Site 1 Base 1 Site 2 Base 2 BD réparties Michel Tuffery 3

Fonctions d un SGBD réparti Gestion d un dictionnaire de données global Dictionnaire centralisé, dupliqué ou réparti Définition des données réparties Règles de localisation des données réparties Évaluation des requêtes réparties optimisation Gestion des transactions réparties COMMIT réparti Graphe local des transactions réparties BD réparties Michel Tuffery 4

Comparatif Client-Serveur et BD répartie Plusieurs bases vues par le client Plusieurs connexions Localisation explicite des bases ( connect string ou DSN) Règles de localisation dans l application 1 ordre SQL 1 seule BD N transactions mono-base Synchronisation des transactions dans l application Plusieurs COMMIT mono-base CLIENT SERVEUR Une base logique vue par le client Une seule connexion Indépendance à la localisation Règles de localisation dans le dictionnaire 1 ordre SQL plusieurs BD 1 transaction logique Synchronisation automatique des n sous-transactions 1 COMMIT généralisé BD REPARTIE BD réparties Michel Tuffery 5

Les 12 règles d un SGBD (1) Autonomie locale (2) Pas de site fédérateur (3) Exploitation en continue (4) Indépendance à la localisation (5) Règles de fragmentation (6) Duplications multiples (7) Requêtes distribuées (8) Transactions distribuées (9) Indépendance du matériel (10) Indépendance des systèmes d exploitation (11) Indépendance du réseau (12) Indépendance du SGBD BD réparties Michel Tuffery 6

(1) Autonomie locale Les données locales sont gérées localement Administration locale des données locales Site autonome pour ses propres opérations L administration de la BDR est décentralisée Administrateurs locaux coordonnés Pas d administration globale Possibilité d autoriser ou non un accès réparti à une base locale Accès local possible simultanément aux accès répartis BD réparties Michel Tuffery 7

(2) Pas de site fédérateur Pas de dépendance d un site par rapport à un autre Avantages : Architecture non vulnérable en cas de panne Pas de goulot d étranglement Inconvénients : Pas de contrôle centralisé des accès concurrents Pas de dictionnaire central Pas de recovery central Pas d exécution des requêtes centralisée BD réparties Michel Tuffery 8

(3) Exploitation en continue Pas d arrêt de la BDR pour la modification d un site Modification de la structure d une BD locale (LDD) Modification d un SGBD (Release, Upgrade, ) Extensibilité Ajout, suppression ou modification d un site Opération locale et non globale (règle 1) Propriété importante : évolution permanente BD réparties Michel Tuffery 9

(4) Indépendance à la localisation Objectif le plus important : changement de la localisation des données sans changer les programmes Nécessité d un dictionnaire réparti Avantages attendus : Illusion, pour l utilisateur, de travailler sur un seul site avec BD centralisée Évolution des règles de localisation sans impact sur l application Invisibilité du ou des réseaux (règle 11) Inconvénient majeur : Attention aux performances après un changement de localisation de données BD réparties Michel Tuffery 10

(5) Règles de fragmentation Découpage d une relation pour des raisons fonctionnelles Mémorisation des règles de localisation (optimisation des requêtes) Transparent pour l utilisateur Trois types de fragmentation Horizontal, Vertical et Mixte Opérateurs SQL utilisés projection et restriction pour fragmenter UNION et JOINTURE pour reconstituer BD réparties Michel Tuffery 11

Fragmentation horizontale ETUDIANT_L ETUDIANT_M ETUDIANT ETUDIANT_D Projection et Sélection UNION BD réparties Michel Tuffery 12

Fragmentation verticale SCOLARITE S T A G E PROJECTION JOINTURE ETUDIANT Duplication de la clé primaire sur chaque fragment BD réparties Michel Tuffery 13

Fragmentation mixte EMPLOYE NOM AGE NO SAL DPT E2 E3 E1 E1 ( NO, SAL, DPT) E2 (NOM, AGE, NO) E3 (NOM, AGE, NO) AGE<=30 AGE>30 Prise en compte des règles de fragmentation pour optimiser les requêtes : SELECT. FROM e3 WHERE. AND age <28 SELECT e3.* FROM e2,e3 WHERE e2.no=e3.no BD réparties Michel Tuffery 14

Fragmentation : construction de la BDR Construction descendante : la base centralisée est distribuée sur plusieurs sites (BDD) C est le cas le plus fréquent La base centralisée devient trop importante : elle est distribuée avec des règles Construction ascendante : les diverses bases locales sont restructurées et assemblées, la base est répartie sur plusieurs sites (BDR) Cas du rachat ou du regroupement d entreprises Principe : "ne pas dupliquer les données" BD réparties Michel Tuffery 15

Faire une bonne fragmentation Horizontale Fragments (prédicats) disjoints Fréquence d accès uniforme (complétude) aux fragments Verticale Regroupement des attributs accédés souvent ensemble Calcul de "l affinité" entre deux attributs BD réparties Michel Tuffery 16

(6) Duplications multiples (indépendance à la localisation) Duplication des données sur des sites distants Gain de temps pour les accès en lecture (interdit en modification) augmentation des performances Mises à jour par rafraîchissements périodiques à partir du site qui possède le fragment initial Inconvénient : pas de mise à jour immédiate Intéressant pour les données stables BD réparties Michel Tuffery 17

Duplication : le principe des clichés ou "snapshots" Duplication en "cohérence faible" Rafraîchissements périodiques Plusieurs solutions techniques "estampillage" des lignes modifiées avec la date et heure de sa dernière MAJ Utilisation d une "table différentielle" contenant uniquement les lignes modifiées Oracle a choisi la deuxième technique avec un "journal" de transactions sur le fragment initial (voir plus loin) BD réparties Michel Tuffery 18

(7) Requêtes distribuées Évaluation des requêtes distribuées ou réparties plan d exécution réparti Le SGBD comprend que la requête traite avec des objets physiques distants La requête est reconstruite en tenant compte de la localisation des objets Les opérateurs de restriction (sélection, projection) qui réduisent la taille sont appliqués au plus tôt Utilisation du parallélisme BD réparties Michel Tuffery 19

Évaluation d une requête répartie DECOMPOSITION SQL ALGEBRE LOCALISATION Reconstruction de la requête avec le dictionnaire réparti OPTIMISATION EXECUTION Ordonnancement et algorithme d accès : règles de localisation choix du site de transfert semi - jointure BD réparties Michel Tuffery 20

Optimisation d une requête répartie : la semi - jointure Site 1 : Client (IdCli, nomcli,.) Site 2 : Emprunt (IdCli,IdOuv,.) Site 3 : Ouvrage (IdOuv, titre,.) SELECT c.nomcli, o.titre FROM client c, emprunt e, ouvrage o WHERE c.idcli=e.idcli AND e.idouv=o.idouv AND c.adrcli= Tlse AND o.auteur= Michel ; BD réparties Michel Tuffery 21

Requête répartie avec jointures Jointure (Site 3) Jointure (Site 2) Sélection adrcli= Tlse Emprunt (Site 2) Sélection auteur= Michel Client (Site 1) Ouvrage (Site 3) BD réparties Michel Tuffery 22

Requête répartie avec semi-jointures Jointure (Site 3) Jointure (Site 1) O Semi-Jointure (Site 2) Semi-Jointure (Site 2) C O (idouv, titre) Emprunt (Site 2) Projection Idouv Projection IdCli C (idcli, nomcli) Sélection auteur= Michel Sélection adrcli= Tlse Client (Site 1) Ouvrage (Site 3) BD réparties Michel Tuffery 23

(8) Transactions distribuées Sécurité, fiabilité et continuité quoi qu il arrive Différents types de pannes Panne d une transaction en exécution Panne simple d un site Panne catastrophique d un site Notion de transaction Atomicité Cohérence Isolation Durabilité BD réparties Michel Tuffery 24

Panne d une transaction ou panne simple PANNE Garantir l atomicité des transactions en utilisant les mécanismes de journalisation et le protocole de validation en deux étapes Transactions réparties : commit généralisé Commit normal Le site initiateur d une transaction décide du commit Les sites exécutants obéissent SITE 1 SITE 0 SITE 2 COMMIT Rollback effectué!! Solution insuffisante COMMIT Commit effectué BD réparties Michel Tuffery 25

Commit à deux phases (2PC) Le site initiateur envoie, à tous les sites touchés par la transaction, un "prêt à commettre? " Chaque site répond "prêt" Le site initiateur envoie les commit à tous les sites Chaque site répond "ok" La transaction est validée quand tous les sites ont fait le commit Tous les cas d erreur sont traités grâce aux journaux sur chaque site BD réparties Michel Tuffery 26

Commit à deux phases SITE 1 Prêt à commettre? SITE 0 SITE 2 Prêt à commettre? Prêt Prêt Commit Commit OK État? Commit OK BD réparties Michel Tuffery 27

Exemples de validation en deux étapes (1) Validation normale S1 S0 S2 Prêt? Prêt? Prêt Prêt Commit Commit OK OK BD réparties Michel Tuffery 28

Exemples de validation en deux étapes (2) Panne de S2 avant d être prêt S1 S0 S2 Prêt? Prêt? Prêt Défaire TIMEOUT Défaire OK Reprise à chaud (rollback) BD réparties Michel Tuffery 29

Exemples de validation en deux étapes (3) Panne de S2 après envoi de prêt S1 S0 S2 Prêt? Prêt? Prêt Prêt Commit OK Commit Prêt Commit OK Reprise BD réparties Michel Tuffery 30

Exemples de validation en deux étapes (4) Panne du coordinateur S1 S0 S2 Prêt? Prêt? Prêt Prêt? Prêt Commit OK Prêt Prêt? Prêt Commit OK BD réparties Michel Tuffery 31

Reprise à froid après une panne catastrophique Restauration de la base à partir de la sauvegarde et du journal ("Recovery de la base") Une reprise est toujours locale Retour à un état stable de l ensemble du système réparti Le site coordinateur décide : Le site en panne peut restaurer la transaction ("prêt") et la séquence se poursuit (processus "Reco") Le site en panne ne peut restaurer la transaction : Demande à tous les sites de défaire les transactions Risque d effet domino BD réparties Michel Tuffery 32

Problème des accès concurrents verrou mortel global Pose de verrous sur des objets répartis Gestion d un graphe d attente réparti Graphe Qui Attend Quoi (QAQ) réparti Chaque site gère son propre graphe local et communique l information sur ses propres transactions bloquées Site 1 Site 2 T1 T3 T2 T4 BD réparties Michel Tuffery 33

(9), (10), (11) Indépendance du matériel, des systèmes d exploitation et du réseau Une base est "cliente" d une autre base et vice versa : architecture client - serveur C est le "connect string" ou "chaîne hôte" qui permet cette indépendance Contenu du "connect string" Protocole réseau Serveur hôte (n port) Nom de l instance de la base BD réparties Michel Tuffery 34

(12) Indépendance du SGBD Très difficile d arriver à cette indépendance Interfaces communes minimum : Protocole d échange Lecture et traduction des dictionnaires, types de données. Fonctions réciproques client serveur Système de mise à jour cohérent Verrouillage cohérent,.. Noyau standard avec SQL ANSI BD réparties Michel Tuffery 35

Création des fragments dans les bases distantes SQL-ANSI propose un ordre CREATE FRAGMENT permettant de créer les tables distantes Cet ordre permettra de conserver les règles de fragmentation dans le dictionnaire réparti Cet ordre n est pas encore implémenté Oracle propose l ordre COPY COPY est un ordre SQL+ permettant de Duplicationr un fragment d une base vers une autre en utilisant les connect string COPY possède 2 variables d environnement configurables COPYCOMMIT : intervalle du nombre de lignes transférées entre 2 COMMIT (0 : COMMIT à la fin) ARRAYSIZE : nombre de lignes transférées par chaque FETCH BD réparties Michel Tuffery 36

Commande COPY Syntaxe de la commande COPY FROM spécification_base1 - TO spécification_base2 - {APPEND CREATE REPLACE INSERT} - fragment [(colonnes)] - USING SELECT. APPEND : [CREATE] + INSERT Caractère ligne suite CREATE : CREATE + INSERT REPLACE : [DROP] + CREATE + INSERT INSERT : INSERT BD réparties Michel Tuffery 37

Exemples de COPY Création ou remplacement du fragment COPY FROM michel/michel@vers_base1 - TO michel/michel@vers_base2 - REPLACE enseignants_info - USING SELECT * FROM enseignants - WHERE ufr='info' Création d un fragment initial avec restriction verticale COPY FROM michel/michel@vers_base1 - TO michel/michel@vers_base2 - CREATE etudiant_scol(ine,nom,adr) - USING SELECT inet,nomet,adret - FROM etudiant BD réparties Michel Tuffery 38

Contraintes des fragments La commande COPY n exporte pas les contraintes (sauf NOT NULL) Il faut les recréer Clés primaires Clés étrangères Contraintes autres Problème pour les clés étrangères distantes Impossible d utiliser les DB LINKS (voir plus loin) Créer deux TRIGGERS : Sur le fragment fils : le père doit exister Sur le fragment père : suppression impossible si des fils sont présents BD réparties Michel Tuffery 39

Bases réparties : travail de compte à compte Ne pas travailler avec les véritables comptes propriétaires des données Chaque site distant doit créer un compte ayant accès aux objets répartis locaux Ces comptes 'miroir' sont crées par le DBA et reçoivent les droits d accès par les propriétaires des données réparties Chaque responsable local de la BDR ne connaît que le password des comptes 'miroir' distants BD réparties Michel Tuffery 40

Organisation de l ensemble base1 base2 OWNER 1 OWNER 2 GRANT GRANT DB LINK Compte miroir bdr/bdr Compte miroir bdr/bdr BD réparties Michel Tuffery 41

Lien inter-bases : Database Link Lien défini par un utilisateur pour relier deux bases Connaissance du user/password du compte miroir distant Utilisation du 'connect string' du serveur local pour accéder à l instance distante CREATE DATABASE LINK dbl_base2 CONNECT TO bdr IDENTIFIED by bdr USING 'vers_base2'; Nom du connect string User/password BD réparties Michel Tuffery 42

Manipulation des DataBase Link Suppression d un lien DROP DATABASE LINK dbl_base2; Dictionnaire de données : USER_DB_LINKS SQL> col DB_LINK format a8 SQL> col USERNAME format a8 SQL> col PASSWORD format a8 SQL> col HOST format a8 SQL> col CREATED format a8 SQL> select * from user_db_links; DB_LINK USERNAME PASSWORD HOST CREATED -------- -------- -------- -------- -------- DB_ORA MICHEL MICHEL oracle 14/01/03 BD réparties Michel Tuffery 43

Utilisation des DataBase Link Sélection d un fragment distant SQL> select * from etudiant@db_ora; INE NOM DIPLO CYCLE ---------- -------------------- ----- ---------- 100 étudiant 100 miag3 2 200 étudiant 200 stri3 2 300 étudiant 300 miag3 2 400 étudiant 400 stri2 2 Manipulation distante SQL> update etudiant@db_ora SET cycle=3; 4 ligne(s) mise(s) à jour. BD réparties Michel Tuffery 44

Indépendance à la localisation les SYNONYMS Création d un synonyme CREATE SYNONYM etudiant FOR etudiant@db_ora; Suppression d un synonyme DROP SYNONYM etudiant; BD réparties Michel Tuffery 45

Constructions des objets virtuels Reconstitution d un objet fragmenté : VIEW CREATE VIEW etudiant (ine,nom,adr,cycle) AS SELECT inet,nomet,adret, L FROM etud_licence UNION SELECT inet,nomet,adret, M FROM etud_mastere; Reconstitution d un objet non éclaté : SYNONYM CREATE SYNONYM sequence_client FOR sequence_client@db_link; BD réparties Michel Tuffery 46

Manipulation d une base répartie les Procédures stockées Les procédures stockées ou packages se comportent comme de véritables méthodes Les données réparties sont encapsulées et ne sont pas accessibles directement aux développeurs clients Les règles de fragmentation sont dans les procédures La localisation des données est transparente aux utilisateurs : appel des procédures sans connaissance de la base La transaction est traitée dans la procédure (COMMIT / ROLLBACK) BD réparties Michel Tuffery 47

Manipulation d une base répartie les Triggers INSTEAD OF Ces triggers s appliquent sur des vues Les développeurs clients connaissent les objets virtuels et exécutent les ordres du LMD Les triggers INSTEAD OF prennent la main et font les mises à jour sur les fragments distants Les développeurs serveur connaissent les règles de distribution Ces triggers lèvent éventuellement des erreurs applicatives (raise_application_error) La transaction n est pas dans le Trigger mais dans le programme client BD réparties Michel Tuffery 48

Exemple de Trigger INSTEAD OF CREATE TRIGGER insert_etudiant INSTEAD OF INSERT ON etudiant FOR EACH ROW BEGIN IF :NEW.cycle= L THEN INSERT INTO etudiant_licence@db_l VALUES (:NEW.ine,:NEW.nom,:NEW.adresse); INSERT INTO stage@db_s VALUES (:NEW.ine,:NEW.nomstage,:NEW.adstage); ELSIF :NEW.cycle= M THEN... Idem pour M et D... ELSE RAISE_APPLICATION_ERROR (-20455, Entrer M, L ou D ); END IF; END; / BD réparties Michel Tuffery 49

Duplication et Réplication des données réparties

Distribution, Duplication et Réplication Distribution BD distribuée ou répartie Sans redondance Duplication Duplication locale d un fragment éloigné maître Fragment local en lecture seule Notion de cliché ou snapshot (materialized view) Duplication synchrone (maj instantannée) ou asynchrone (maj en différé) Réplication Pas de fragment maître Duplications en miroir Réplication synchrone (emploi de jetons) ou asynchrone (problèmes de cohérence) BD réparties Michel Tuffery 51

Duplication de données : différentes possibilités Duplication d une base entière EXPORT IMPORT programmé Duplication d une table Create ou Copy Duplication synchrone : trigger ou trigger instead of Duplication asynchrone programmée par programmateur Duplication asynchrone assurée par Oracle : les snapshot ou vues matérialisées BD réparties Michel Tuffery 52

Exportation et Importation d une base Base maître Fichier de paramètres Log EXPORT Fichier export Base dupliquée IMPORT Automatisation par shell OS Fichier de paramètres Log BD réparties Michel Tuffery 53

Duplication d une table distante Processus simple, rapide et fiable (PUSH ou PULL) Duplication complète (sans les contraintes) CREATE TABLE copie AS SELECT * FROM maître@dblink; Duplication d un fragment CREATE TABLE Duplication AS SELECT col1, col3, col5 FROM maître@dblink WHERE prédicat_de_resriction; BD réparties Michel Tuffery 54

Duplication d une table distante (2) Table locale existante DELETE FROM copie; INSERT INTO copie SELECT * FROM maître@dblink; COMMIT; Marquage des lignes transférées INSERT INTO copie SELECT * FROM maître@dblink WHERE jeton='pas transféré' FOR UPDATE; UPDATE maître SET jeton='transféré' WHERE jeton='pas transféré'; COMMIT; BD réparties Michel Tuffery 55

Duplication d une table distante (3) COPY La Duplication peut être 'pilotée' à partir d un site tiers Plusieurs cas de Duplication (page 37) Duplication des données sans les contraintes Fortement utilisé pour créer les fragments répartis initiaux BD réparties Michel Tuffery 56

Duplication Synchrone Mise à jour instantanée de la Duplication pour toute modification de la table maître La duplication synchrone fait partie de la transaction Maître Cliché Ordre de MAJ Ordre de MAJ déclenché instantanément BD réparties Michel Tuffery 57 Duplication Synchrone

Duplication Synchrone : mise en œuvre avec les trigger Trigger de type 'before' qui répercute l ordre exécuté sur la table maître dans la table cliché La transaction est gérée par le client : exceptions possibles Insertion, mise à jour et suppression de données Plusieurs clichés possibles Méthode 'PUSH' Cliché 1 Maître TRIGGER Ordre de synchronisation Cliché 2 Ordre de MAJ BD réparties Michel Tuffery 58 Duplication Synchrone

Duplication Asynchrone par programmateur La mise à jour du cliché est différée Utilisation d un programmateur et d une file d attente Maître TRIGGER Cliché Mise de l ordre en attente Ordre de MAJ File d attente Ordre déclenché sur horloge (programmateur) BD réparties Michel Tuffery 59 Duplication Asynchrone par programmateur

Exemple de mise en attente d un ordre Un trigger de type 'before' est posé sur la table maître Important de conserver la séquence des ordres de mise à jour Utilisation du dblink CREATE TRIGGER mise_attente BEFORE INSERT ON maître FOR EACH ROW vordre VARCHAR(200); BEGIN vordre:='insert INTO cliché@dblink VALUES '; INSERT INTO attente(numéro,ordre) VALUES (seq_ordre.nextval,vordre); END; BD réparties Michel Tuffery 60 Duplication Asynchrone par programmateur

Exemple de mise en attente d ordres Ordres de mise à jour dans maître INSERT INTO maitre VALUES('ligne1'); INSERT INTO maitre VALUES('ligne2'); INSERT INTO maitre VALUES('ligne3'); DELETE FROM maitre WHERE nom='ligne2'; UPDATE maitre SET nom='ligne33' WHERE nom='ligne3'; Table Maître SQL> SELECT * FROM maitre; NOM ---------- ligne1 ligne33 BD réparties Michel Tuffery 61 Duplication Asynchrone par programmateur

Exemple de mise en attente d ordres (2) Table attente SQL> select * from attente; NUMERO ORDRE ------ ---------------------------------------------- 1 insert into cliché@db_ora values('ligne1') 2 insert into cliché@db_ora values('ligne2') 3 insert into cliché@db_ora values('ligne3') 4 delete from cliché@db_ora where nom = 'ligne2' 5 update cliché@db_ora set nom = 'ligne33' where nom = 'ligne3' BD réparties Michel Tuffery 62 Duplication Asynchrone par programmateur

Notion de Programmateur Service de déclenchement d un processus par ordre d une horloge Logiciel installé extérieur (OS) ou interne à la base de données La table d attente peut être sur le site maître ou de Duplication Le programmateur peut être sur le site maître ou de Duplication Programmateur interne à la BD : JOBS BD réparties Michel Tuffery 63 Duplication Asynchrone par programmateur

Programmateur avec Oracle Processus (Unix) ou Service de type SNP Vérifier l état du service sur NT (activé) Le processus ouvre une session dans la base à intervalle régulier (programmé) et consulte les tâches Exécution en tâche de fond Utilisation multiple : sauvegarde, export, duplication, MAJ d attributs dérivés,. Exécution asynchrone BD réparties Michel Tuffery 64 Duplication Asynchrone par programmateur

Mise en service du programmateur (DBA) Vérification du nombre de jobs autorisés SQL> SELECT name,value FROM v$parameter 2 WHERE name LIKE '%job%'; NAME VALUE ------------------------------ --------- job_queue_processes 10 Si = 0, modifier le paramètre (init.ora, pfile) ou la commande système : ALTER SYSTEM SET job_queue_processes=10; -- 1000 au maximum Droits d exécution du package CONNECT system GRANT EXECUTE ON dbms_job TO user; BD réparties Michel Tuffery 65 Duplication Asynchrone par programmateur

Package DBMS_JOB Ce package permet de manipuler des taches ou JOBS Il contient des procédures : REMOVE CHANGE WHAT RUN SUBMIT BD réparties Michel Tuffery 66 Duplication Asynchrone par programmateur

Procédure SUBMIT Spécification PROCEDURE submit ( job OUT BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE DEFAULT sysdate, interval IN VARCHAR2 DEFAULT 'null', no_parse IN BOOLEAN DEFAULT FALSE, instance IN BINARY_INTEGER DEFAULT 0, force IN BOOLEAN DEFAULT FALSE ); -- Submit a new job.chooses JOB from the -- sequence sys.jobseq. -- For example, -- variable x number; -- execute dbms_job.submit(:x,'pack.proc(''arg1'');' --,sysdate,'sysdate+1'); BD réparties Michel Tuffery 67 Duplication Asynchrone par programmateur

Autres Procédures REMOVE WHAT PROCEDURE remove( job IN BINARY_INTEGER ); -- Remove an existing job from the job queue. -- This currently does not stop a running job. -- execute dbms_job.remove(14144); PROCEDURE what( job IN BINARY_INTEGER, what IN VARCHAR2 ); -- Change what an existing job does, and --replace its environment NEXT_DATE PROCEDURE next_date ( job IN BINARY_INTEGER, next_date IN DATE ); -- Change when an existing job will next execute BD réparties Michel Tuffery 68 Duplication Asynchrone par programmateur

Exemple de manipulation de job Procédure d insertion d une ligne avec horaire drop table testjob; create table testjob (t varchar(50)); create or replace procedure test_job is heure varchar(20); begin heure:=to_char(sysdate,'hh24-mi-ss'); insert into testjob values('ajout : ' heure) ; end; / execute test_job; SQL> select * from testjob; T ------------------------- ajout : 14-23-51 BD réparties Michel Tuffery 69 Duplication Asynchrone par programmateur

Exemple de manipulation de job (2) variable numjob number; execute dbms_job.submit(:numjob,'test_job;', sysdate,'sysdate+1/1440'); SQL>print numjob NUMJOB ---------- Attention au ; 3 SQL> select * from testjob T ------------------ ajout : 14-44-28 ajout : 14-45-30 ajout : 14-46-31 SQL>select job,what from user_jobs; JOB WHAT ---------- ------------ 3 test_job; execute dbms_job.remove(3); BD réparties Michel Tuffery 70 Duplication Asynchrone par programmateur

Exemple de job d extraction de la file d attente Sans traiter les exceptions CREATE PROCEDURE exeordres IS CURSOR c1 is SELECT ordre FROM attente ORDER BY numero FOR UPDATE; BEGIN FOR c1rec IN c1 LOOP EXECUTE IMMEDIATE c1rec.ordre; DELETE FROM attente WHERE CURRENT OF c1; END LOOP; COMMIT; END; Le job qui lance le programmateur variable numjob number; execute dbms_job.submit(:numjob,'exeordres;', sysdate,'sysdate+1'); print numjob BD réparties Michel Tuffery 71 Duplication Asynchrone par programmateur

Placement du programmateur Gestion lourde pour la base (et l OS) Gestion des processus de fond Placé dans la base la moins chargée Deux types de propagations possibles PUSH Le programmateur "pousse" les ordres de MAJ PULL Le programmateur "tire" les ordres de MAJ BD réparties Michel Tuffery 72 Duplication Asynchrone par programmateur

Propagation par PUSH La base maître pousse vers le répliqua Maître Cliché Ordre de MAJ Mise de l ordre en attente Ordre déclenché sur horloge (programmateur) BD réparties Michel Tuffery 73 Duplication Asynchrone par programmateur

Propagation par PULL Le répliqua tire les modifications Maître Cliché Ordre de MAJ Mise de l ordre en attente Ordre déclenché sur horloge (programmateur) BD réparties Michel Tuffery 74 Duplication Asynchrone par programmateur

Gestion des erreurs Obligation de gérer les erreurs de façon autonome Plusieurs types d erreur Erreur de connexion vers le site de répliqua Violation de contraintes (?) Panne du réplicateur. Création d un journal (log) des erreurs Certaines erreurs sont irrattrapables Actions ponctuelles pour ramener à un état stable BD réparties Michel Tuffery 75 Duplication Asynchrone par programmateur

Duplication par Oracle Les vues matérialisées ou snapshots Technique d Oracle pour la duplication asynchrone Un cliché ou snapshot est un fragment de données en lecture seule Le cliché est rafraîchi à intervalles réguliers (refresh) ou à la demande Les rafraichissements sont complets (complete) ou différentiels (fast) Le cliché (fragment dupliqué) peut être le résultat de : Restriction verticale d une table Restriction horizontale Une jointure de plusieurs tables BD réparties Michel Tuffery 76 Duplication Asynchrone par Oracle

Principe général C est le site du cliché qui tire les MAJ (pull) On crée une vue matérialisée pour créer le cliché avec les méthodes de rafraîchissement et le contenu choisis Pour chaque table maître qui alimente un cliché, il faut créer un journal de vue matérialisée Ce journal contient les mises à jour différées gérées selon deux techniques possibles Par rowid (pas conseillé en cas de réorganisation de blocs) Par clé primaire (utilisé par défaut) table maître avec une clé primaire obligatoire Une table maître (un même journal) peut alimenter plusieurs fragments dupliqués BD réparties Michel Tuffery 77 Duplication Asynchrone par Oracle

Mise en œuvre d un rafraîchissement complet exécuté volontairement Création de la table maître sur le site maître DROP TABLE maitre; CREATE TABLE maitre (idm NUMBER PRIMARY KEY, texte varchar(20)); Création du journal de vue matérialisée sur le site maître DROP MATERIALIZED VIEW LOG ON maitre; CREATE MATERIALIZED VIEW LOG ON maitre; BD réparties Michel Tuffery 78 Duplication Asynchrone par Oracle

Journal de vue matérialisée De nom MLOG$_nom_de_table_maître SQL> DESC mlog$_maitre Clé primaire Nom Type ----------------------- --------------- IDM NUMBER Ordre du LMD SNAPTIME$$ DATE DMLTYPE$$ VARCHAR2(1) OLD_NEW$$ VARCHAR2(1) CHANGE_VECTOR$$ RAW(255) Old ou New Pour les copies multiples BD réparties Michel Tuffery 79 Duplication Asynchrone par Oracle

Ordre de création de vue matérialisée (1) Création sans intervalles de rafraîchissements CREATE MATERIALIZED VIEW copie REFRESH [NEVER COMPLETE FAST FORCE] AS SELECT FROM maître@dblink ; 4 méthodes de rafraîchissement NEVER : jamais rafraîchie COMPLETE : transfert complet FAST : transferts différentiels FORCE : FAST si possible, COMPLETE sinon BD réparties Michel Tuffery 80 Duplication Asynchrone par Oracle

Ordre de création de vue matérialisée (2) Création avec intervalles de rafraîchissements CREATE MATERIALIZED VIEW copie REFRESH FAST START WITH sysdate NEXT sysdate + 1 WITH PRIMARY KEY AS SELECT FROM maître@dblink ; Début du transfert Intervalle de rafraîchissement BD réparties Michel Tuffery 81 Duplication Asynchrone par Oracle

Mise en œuvre : cliché par rafraîchissement manuel Création du cliché CREATE MATERIALIZED VIEW cliché REFRESH FAST AS SELECT * FROM maitre@db_tuf; On utilisera la procédure refresh du package dbms_mview pour rafraîchir DBMS_MVIEW.REFRESH('nom_mv','F',NULL); F (fast) ou C (complète) BD réparties Michel Tuffery 82 Duplication Asynchrone par Oracle

Mises à jour sur la table maître Ordres de mise à jour INSERT INTO maitre VALUES(1,'ligne 1'); INSERT INTO maitre VALUES(2,'ligne 2'); INSERT INTO maitre VALUES(3,'ligne 3'); UPDATE maitre SET texte = 'LIGNE 1' WHERE idm=1; UPDATE maitre SET texte = 'LIGNE 3' WHERE idm=3; DELETE FROM maitre WHERE idm=2; SQL> SELECT * FROM maitre; IDM TEXTE ---------- -------------------- 1 LIGNE 1 3 LIGNE 3 BD réparties Michel Tuffery 83 Duplication Asynchrone par Oracle

Contenu du journal de MV La date indique qu aucun rafraîchissement n a eu lieu à partir de ce journal (pour un éventuel autre cliché) SQL> COL CHANGE_VECTOR$$ FORMAT a10 SQL> SELECT * FROM mlog$_maitre; IDM SNAPTIME D O CHANGE_VEC ---------- -------- - - ---------- 1 01/01/00 I N FE 2 01/01/00 I N FE 3 01/01/00 I N FE 1 01/01/00 U U 04 3 01/01/00 U U 04 2 01/01/00 D O 00 BD réparties Michel Tuffery 84 Duplication Asynchrone par Oracle