Un modèle sûr et générique pour la synchronisation de données
Transcription
Un modèle sûr et générique pour la synchronisation de données
. Un modèle sûr et générique pour la synchronisation de données divergentes Gérald Oster, Pascal Molli, Hala Skaf-Molli et Abdessamad Imine LORIA-INRIA Lorraine Projets ECOO & CASSIS 1 Contexte ■ Mobilité Cycles de travail connecté / déconnecté Réplication (avant la déconnection) ➔ Copies divergent en mode déconnecté ➔ Réconciliation/Synchronisation (à la reconnection) ➔ ■ Problème : Réconcilier les copies divergentes à la reconnection (mises à jour conflictuelles) 2 Réconciliation/Synchronisation ■ ■ Copies identiques après synchro… Perdu d'avance ➔ ■ (fusion de codes, fusion de BD, ...) Mais quel état de convergence ? Vide ? ➔ Plus harmonieux... ➔ ■ Compliqué : ■ Situations ambigües : ■ Combinatoire (dénombrement des cas?) Semi-automatique Automatique + Compensation Application critique : Pertes de maj : ➔ granularité, généricité Corruption des données ➔ Sûreté de fonctionnement, déterminisme de la synchro 3 Objectif ■ Proposer “une méthode” pour construire un synchroniseur Sûr : qui garantit la convergence dans tous les cas Convergence vers un état qui contient des conflits ➔ Résolution a-posteriori par compensation ➔ Généricité/Granularité : qui réconcilie à tous les niveaux de granularités pour tous les types de données 4 Etat de l'art ■ Synchroniseurs de fichiers ■ Synchroniseurs de données ■ CODA, Bayou, Ficus, IceCube Systèmes de gestion de configuration ■ ActiveSync, Hotsync, I-Sync Systèmes distribués ■ Unison, IntelliSync, Microsoft Synchronizer Gestion de versions et outils de fusion (diff3) Bases de données répliquées Réplication symétrique (Oracle) 5 Transformées Opérationnelles ■ Issue “du monde” des éditeurs synchrones ■ ■ ■ dOpt [Ellis89], GOTO[Sun98], aDopted[Ressel96], SOCT2,3,4[Suleiman97,Vidot00] N sites Chaque site a une copie des données partagées Une opération : Générée sur un site Propagée aux autres sites Reçue par les autres Ré-executée 6 Transformées Opérationnelles état de réception ≠ état de génération 7 Fonctions de transformation ■ Pour chaque couple d'opérations (op1, op2), une opération T(op1,op2) est définie : ■ Spécifiques au type de données manipulées : ■ Sur l'état résultant de l'exécution d'op1 Qui a le même effet qu'op2 T(AddFile, AddFile) = ... Problème plus simple : uniquement deux opérations (Divide-and-Conquer) effet cascade pris en compte par l'algorithme 8 Correction des transformations ■ Repose sur la satisfaction de la condition C1: ■ Problème : vérification longue et coûteuse ■ Explosion du nombre de transformations Processus itératif Proposition : Utilisation d'un “prouveur de thérorème” En entrée : la spécification des fonctions de transformation ➔ En sortie : ➔ - Ok Contre-exemple de la vérification de C1 9 Exemple de spécification type nat, char; observator char car(nat); nat length(); auxiliary operation p > 0 and p <= length() : Ins(nat p, char c, nat u); p > 0 and p <= length() : Del(nat p, nat u); transform T(Ins(p1, c1, u1), Ins(p2, c2, u2)) = if (p1 < p2) then return Ins(p1, c1, u1) elseif (p1==p2 and u1<u2) then return Ins(p1, c1, u1) else return Ins(p1+1, c1, u1) endif; T(Ins(p1, c1, u1), Del(p2, u2)) = if (p1 <= p2) then return Ins(p1, c1, u1) else return Ins(p1-1, c1, u1) endif; definition car'(n)/Ins(p, c, pr) = if (n == p) then return c elseif (n > p) then return car(n-1) else return car(n) endif; car'(n)/Del(p, pr) = if (n >= p) then return car(n+1) else return car(n) endif; length'()/Ins(p, c, pr) = return length()+1; length'()/Del(n, pr) = return length()-1; lemma T(Del(p1, u1), Ins(p2, c2, u2)) = if (p1 < p2) then return Del(p1, u1) else return Del(p1+1, u1) endif; T(Del(p1, u1), Del(p2, u2)) = if (p1 < p2) then return Del(p1, u1) elseif (p1 > p2) then return Del(p1-1, u1) else return nop endif; 10 Exemple de spécification 11 Exemple de spécification ■ Contre-exemple à C1 12 Algorithme d'intégration ■ Basé sur SOCT4 [Vidot00] Opérations executées Opérations locales non publiées Transformation de op par rapport aux opérations locales Transformation des opérations locales par rapport à op op à intégrer 13 Algorithme d'intégration ■ Généralisation de T pour des séquences d'ops... ■ Diffusion diffèrée ■ Réception séquentielle ■ Une opération peut être diffusée si toutes les opérations publiées ont été intégrées Les opérations sont intégrées selon leur ordre de diffusion Ordre global continu : Assurée par un séquenceur (une queue d'opération) 14 Exemple : synchroniseur de fichiers ■ Qui synchronise : le système de fichiers : ➔ les contenus de types texte : ➔ AddFile, MoveFile AddBlock, DeleteBlock les contenus XML : ➔ InsNode, DelNode, AddAttribute, DelAttribute, UpdateAttribute, ... 15 Exemple : synchroniseur de fichiers c U1 U2 U3 Mv(/a,/b) Mf(b) Ab(a,3,abdou) Db (b,2, melchior, balthazar) Ab(b,0,zidane) synchronize synchronize synchronize synchronize synchronize 16 Exemple : état de convergence c 17 Intégration dans LibreSource ■ Intégré dans la plateforme RNTL LibreSource http://libresource.loria.fr/ 18 Conclusions et Perspective ■ TO: Méthodologie... : Définir les types d'objets / leurs opérations Ecrire les fonctions de transformation ➔ ■ Tâche créative Prouver la satisfaction de C1 ...Pour construire un synchroniseur : Générique (donc extensible) : ➔ dont l'algorithme est applicable à différents types de donneés Prouvé cohérent sur une base formelle: Modèle des transformées opérationnelles ➔ Utilisation d'un prouveur automatique ➔ ■ Ajout de Contraintes sémantiques : Empêcher les incohérences sémantiques Simplier les fonctions de transformations 19 .... 20 .... 21 .... 22 .... 23 .... 24 .... 25 Réconciliation/Synchronisation ■ Copies identiques après synchro… ■ Mais quel état de convergence ? Vide ? ■ Quelle granularité de réconciliation ? ■ Pour quels types d’objets ? ■ Qui résout les conflits? ■ Entier, texte, XML, tables… même synchroniseur ? Système ? Utilisateur ? administrateur ? Quand résoudre les conflits ? Pendant la synchro ou après ?? 26