Réplication des données Christelle Pierkot FMIN 306 : Gestion de données distribuées Année 2009-2010
Echange d information distribuée Grâce à un serveur central Une seule copie cohérente Accès à distance Gestion centralisée Connexion permanente Par la réplication Une copie sur chaque machine Accès local Multimaîtres Mode déconnecté
Réplication des données Avantages Disponibilité des données Favorise le partage et le parallélisme Améliore les performances d accès aux données Inconvénients Gestion complexe des mises à jour Vérification de la cohérence entre les données répliquées et les données de référence => Echanges de messages entre sites
Organisation de la réplication Placement (Comment les copies sont situées sur le réseau?) Réplication Totale Réplication Partielle Configuration (Quelles sont les copies qui sont modifiables?) Mono-Maître ou copie primaire Multi-Maîtres
Propagation des mises à jour (1/2) Responsabilité (Qui déclenche la propagation des mises à jour?) Mode Push Mode Pull Déclenchement (Quand la propagation des maj sera déclenchée?) A la demande Dès que possible Périodiquement
Propagation des mises à jour (2/2) Communication (Comment la propagation est effectuée?) Point à point Multicast Contenu (Quelle est la nature du contenu propagé?) Données Opérations Transactions Message
Cohérence des répliques Cohérence transactionnelle A : Atomicité C : Cohérence I : Isolation D : Durabilité Cohérence mutuelle Convergence des répliques
Problème de la cohérence Copie de Paul Ecrire Lire Paul Copie de Jeanne Ecrire Lire Jeanne
Cohérence des répliques : solutions Cohérence forte : Réplication synchrone Lorsqu on veut que toutes les données réparties aient à chaque instant la même valeur Les mises à jour sont prises en compte immédiatement sur les autres sites Cohérence faible : Réplication asynchrone Lorsqu on veut pouvoir à tout instant, accéder, créer, modifier ou encore supprimer une données, quelque soit le site Transaction effectuée sur un site et propagée ensuite aux autres Les données peuvent diverger ponctuellement
Réplication synchrone (1/4) Lorsqu on veut que toutes les données réparties aient à chaque instant la même valeur Propagation intégrée à la transaction Données à jour Cohérence garantie A tout moment Sur tous les sites Nombreux échanges Utilisation de verrous
Exemple de réplication synchrone Copie de Paul Ecrire Ecrire Paul OK OK Non OK Copie de Jeanne Ecrire Jeanne
Réplication synchrone (2/4) Réplication mono-maitre synchrone Coté Maître Lecture =>Traitement local + Réponse Ecriture Traitement local Transmission Réponse Coté Esclaves (ou cibles) Lecture => Traitement local + Réponse Ecriture provenant d une application => Refus Ecriture provenant du maître => Traitement
Réplication synchrone (3/4) Réplication multimaîtres synchrone Lecture => Verrou local, lecture locale, réponse Ecriture provenant d une application Verrou local, écriture locale, transmission aux autres maîtres, attente des OK Ecriture venant d un autre maître Verrou local, écriture locale, réponse
Réplication synchrone (4/4)
Protocoles de réplication synchrone ROWA : Read Once, Write All Lire la copie sur le site i Transmettre écriture à tous les autres sites Attendre réponse sites OK validation de la transaction sur tous les sites Non OK, transaction annulée Bloquant dès qu un site est en panne ROWAA : ROW All Available Transmettre seulement aux sites disponibles Quorum Introduction de la notion de poids Généralisation de ROWA
Réplication asynchrone (1/6) Transaction validée sur un site Mises à jour propagées ensuite sur les autres sites dans une autre transaction Disponibilité des données Temps de réponse des transaction Non cohérence immédiate des copies Divergences possibles entre les répliques
Réplication asynchrone (2/6)
Réplication asynchrone (3/6) Réplication mono-maitre asynchrone Coté Maître Lecture locale + réponse Ecriture : locale + réponse Validation locale Transmission aux autres sites Coté Esclaves Lecture locale + réponse Ecriture venant d une application : Refus Ecriture venant du maitre : Traitement Validation locale Sérialisation des transactions Exécution selon un ordre compatible avec l ordre du site maitre Panne du site maitre => Données non disponibles Eloignement du site maitre =>cout de communication
Réplication asynchrone (4/6) Réplication multimaîtres asynchrone pessimiste Divergence ponctuelle des copies Données modifiées localement Contrôle des incohérences a priori Utilisation de contraintes et verrous appliqués sur les communications entre répliques Illusion pour l utilisateur qu il n existe qu une seule copie Difficilement utilisable en mode déconnecté Mort des verrous, latence
Exemple de protocole pessimiste
Réplication asynchrone (6/6) Réplication multimaîtres asynchrone optimiste Mise à jour libre sur chaque site Envoi des mises à jour aux autres répliques Intégration de toutes les écritures a priori Contrôle de cohérence a postériori sur chacune des répliques Détection des conflits lors de la synchronisation Utilisation de procédures de réconciliation des écritures divergentes Mode déconnecté, coopération N impose pas de contraintes entre les sites Difficulté de maintenir la cohérence entre répliques Explosion combinatoire des possibilités de réconciliation. Comment on réconcilie? Objectif : Cohérence et convergence à terme
Exemple de protocole optimiste??
Les conflits (1/8) Lecture sale E1(x), L2(x),a1 La transaction T2 a lu un état de x qui n existe pas Exemple x = 100 T1 = modifier(x,200) => x1= 200 T2 => x2= 200 a1 => x =100 x2 = 200 alors que x = 100
Les conflits (2/8) Lecture non répétable L1(x), E2(x), c2, L1(x) La transaction T1 lit deux valeurs différentes de x Exemple x=100 T1 => x1 = 100 T2 = modifier(x,200) => x2 = 200 c2 => x = 200 T1 => x1 = 200
Lecture fantôme Les conflits (3/8) Contrainte x=y L1(x), E2(x), E2(y), c2, L1(y) La contrainte n est pas respectée Exemple x = y = 100 L1(x) => x1 = 100 E2(x) = modifier(x,200) => x2 = 200 E2(y) = modifier(y,200) => y2 = 200 c2 => x, y = 200 L1(y) => y1 = 200 Contrainte non respectée pour T1
Les conflits (4/8) Ecriture fantôme Contrainte x =y L1(x), L2(y), E1(y), E2(x) Exemple x=y = 100 L1(x) => x1 = 100 L2(y) => y2 = 100 E1(y) = modifier(y,200) => y1 = 200 E2(x) = modifier(x, 200) => x2 = 200 Violation de contrainte : x1 y1 et x2 y2
Les conflits (5/8) Ecriture perdue L1(x), E2(x), E1(x), c1 T1 écrase la mise à jour de T2 Exemple x = 100 T2 = Modifier(x,200) => x 2 = 200 T1 = Modifier(x,300) => x 1 = 300 C1 => x=300 x = 300 Perte de x = 200
Les conflits (6/8) Ecriture sale E1(x), E2(x), a1, c2 Mauvaise valeur de x Exemple x = 100 T1 = Débiter(x,300) => x 1 = -200 T2 = Créditer(x,500) => x 2 = 300 a1 => x=100 c2 => x=300 x = 300 alors que x = 600
Les conflits (7/8) Détection des conflits Conflits de mise à jour Mise à jour simultanée du même objet Conflits d unicité Contrainte d intégrité non respectée Conflit de suppression Accès à un objet n existant plus
Les conflits (8/8) Résolution des conflits : Réconciliation Manuelle Administrateur de la BD Automatique Ecraser, ignorer Priorité de site Estampille Pour les types numériques : moyenne, min, max, Spécifique à l application Procédure stockée
Exemples : Oracle Réplication d un ensemble de tables sur plusieurs serveurs Asynchrone mono-maître ou multimaîtres selon la configuration Opérations : Mise à jour, Insertion, Suppression Propagation : Mode Push et Pull Gestion des conflits Détection automatique intra table Détection manuelle inter table Résolution automatique pour les conflits de mise à jour Résolution manuelle pour les autres
Exemples : POSTGRESQL Slony 1 réplication asynchrone mono-maitre Opérations : Mise a jour, Insertion, Suppression Gestion des conflits à la charge de l utilisateur Slony 2 Réplication synchrone multimaîtres Opérations : Mise à jour, Insertion, Suppression Gestion des conflits Laissée à la charge de l utilisateur Grâce à des règles prédéfinies
Exemples : MYSQL Tous les objets sont répliqués Réplication asynchrone mono-maître Opérations : Mise à jour, Insertion, Suppression Gestion des conflits à la charge de l utilisateur
Exemple : SQL SERVER 2000 Réplication asynchrone multimaîtres Opérations : Mise à jour, Insertion, Suppression Propagation : Push et Pull Gestion des conflits automatique mais résolution uniquement via un serveur dédié
C est fini pour aujourd hui ;-)