Réconciliation de données dans un environnement mobile Gérald Oster, Doctorant Pascal Molli, Maître de Conférence {oster, LORIA, INRIA-Lorraine Equipe ECOO
Introduction Mobilité: Cycles travail connecté/déconnecté Réplication des données Copies divergent en mode déconnecté Problème: Réconcilier les copies à la reconnection…
État de l’art Synchroniseurs fichiers/données : 2 copies, réconciliation grossière et peu sûre, gestion des conflits primaire (HotSync, ActiveSync, Intellisync…) Gestionnaires de configuration : Gestion de versions et outils de fusions (diff3, Flexible merge, XmlMerge…) Système distribués: Cohérence causale, linéarisabilité… Base de données Réplication et consistance faible… Éditeurs collaboratifs temps réels : Approche transformationnelle (dOPT, adOPTed, GOT, GOTO, SOCTx…)
Approche transformationnelle Object O operations {op 1, op 2,.., op n } O Site 1 op i (O) OOO Site 2Site 3Site n... op i (O) execution reception broadcast generation
Approche transformationnelle Propriétés de cohérence : Respect de la causalité, Respect de l’intention, Convergence
Causalité op 1 op 2 Site 1Site 2 op 1 précède op 2 op 1 op 2 Site 3 Danger Risque d’incohérence
Convergence et Intention… "effecst" insert(6,'s') insert(2,'f') Site 1 : user 1 "efect" "effect" Site 2 : user 2 "efect" "efects" "effects" insert(6,'s') insert(2,'f') "effects" insert(7,'s') insert(2,'f') Site 1 : user 1 "efect" "effect" Site 2 : user 2 "efect" "efects" "effects" insert(6,'s') insert(2,'f') T(insert(6,’s’), insert(2,’f’))
Problématique Approche transformationnelle Conçu pour des divergences faibles : Côté arbitraire des transformations « Feedback » synchrone insuffisant Adaptations actuelles de l’approche transformationnelle: Intégration de gestion de versions (MOVIC) : Explosion combinatoire N’abordent pas le problème de la résolution
Proposition Converger vers un état contenant des Conflits Nouvel objet typé « Conflit » Résolution négociée des conflits Questions Comment définir les Objets Conflit ? Quand les créer ? Quand les détruire ? Comment les représenter ?
Un nouvel objet typé : Conflit CreateConflict : CC(cid, op1, op2) AddInConflict : AC(cid, op) RemoveInConflict : RC(cid, op) RemoveConflict : IC(cid) Détruit le conflit/Confirme le choix arbitraire du système ChooseOpInConflict : COIC(cid, op) Elit une nouvelle opération comme choix
État initial Opérations concurrentes : EditFile(‘/Dir/SubDir/File2’) Remove(‘/Dir/SubDir’) Initialement File2 Dir SubDir File1
État de convergence Convergence File2* Dir SubDir File1 Conflit : C = { op1 = EditFile(‘/Dir/SubDir/File2’), op2 = Remove(‘/Dir/SubDir’) } Histoire : op1 = EditFile('/Dir/SubDir/File2') op2' = CreateConflict(c, op1, Remove('/Dir/SubDir'))
État après résolution Résolution : Alternative 1 File2* Dir SubDir File1 Conflit : C = { op1 = EditFile(‘/Dir/SubDir/File2’), op2 = Remove(‘/Dir/SubDir’) } Histoire : op1 = EditFile('/Dir/SubDir/File2') op2' = CreateConflict(c, op1, Remove('/Dir/SubDir')) op3 = RemoveConflict(c)
État après résolution Résolution : Alternative 2 File2* Dir SubDir File1 Conflit : C = { op1 = EditFile(‘/Dir/SubDir/File2’), op2 = Remove(‘/Dir/SubDir’) } Histoire : op1 = EditFile('/Dir/SubDir/File2') op2' = CreateConflict(c, op1, RemoveDir('/Dir/SubDir')) op3 = ChooseOpInConflict(c, op2) Annuler(op1), op2, RemoveConflict(c)
Conclusions et Perspectives Réconciliation des copies en milieu mobile: Approche transformationnelle Ajout des objets conflits pour supporter les divergences fortes… Perspectives Preuve des propriétés de causalité, convergence et intention en présence d’objet Conflits… Comment représenter les conflits ?