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