Brevet FR2950991A1 — publié le 20110408

La présente invention concerne un procédé de synchronisation d'ensembles de données, appelés éléments, dont une version est stockée par un premier dispositif et une version est stockée par un second dispositif d'une paire de dispositifs communiquant entre eux selon un système de communication entre dispositifs de type paire à paire. De nombreux systèmes de communication entre dispositifs permettent à des utilisateurs de partager des éléments de tout type tels que par exemple des fichiers, des données etc. tout en autorisant ces mêmes utilisateurs à consulter et modifier de manière concurrente ces éléments. Pour cela, un procédé de synchronisation des différentes versions de chaque élément partagé est mis en oeuvre pour détecter, en particulier, des conflits entre les versions d'un même élément. Un procédé de synchronisation de versions d'éléments est mis en oeuvre soit de manière centralisée, soit de manière décentralisée. Dans le cas d'une mise en oeuvre centralisée, la dernière version des éléments est stockée dans une mémoire hébergée par un serveur et ces versions sont utilisées comme référence pour synchroniser les données stockées par différents dispositifs. C'est le cas, par exemple, du protocole syncML (http://fr,wikipedia.org/wiki/SyncML) dans lequel les modifications faites sur un dispositif sont reportées vers un serveur. Ainsi, le serveur doit héberger une mémoire de stockage importante pour le stockage des différentes versions des éléments. De plus, ce protocole nécessite le transfert entre dispositifs des versions d'un élément à synchroniser. La mise en oeuvre de type paire à paire d'un procédé de synchronisation permet d'éviter l'usage d'une mémoire de stockage importante sur l'un des dispositifs du système. En effet, la synchronisation de deux versions d'un même élément, stockées chacune sur un dispositif du système, est propagée aux autres dispositifs du système qui stockent également une version de cet élément. Pour cela, lorsque deux versions d'un élément stockées par deux dispositifs d'une paire de dispositifs du système sont synchronisées entre elles, une autre paire de dispositifs est formée à partir de l'un des dispositifs de la précédente paire de dispositifs et d'un nouveau dispositif du système, et le procédé de synchronisation est à nouveau mis en oeuvre pour synchroniser les versions des éléments stockées sur les deux dispositifs de cette nouvelle paire de dispositifs. Par exemple, dans le domaine du logiciel, il existe un procédé de synchronisation de fichiers, connu sous le nom de Git (http://fr,wikipedia,org/wiki/(sit), qui permet à des développeurs de logiciel de partager entre eux des fichiers sources de leur projet tout en modifiant ces fichiers de manière concurrente. Ce procédé de synchronisation de fichiers, bien que mis en oeuvre de manière décentralisée, requiert toutefois que chaque dispositif comporte une mémoire importante car l'historique de toutes les versions de chaque élément stockées par le dispositif est conservé dans une mémoire du dispositif. Par la suite, nous nous placerons dans le cas d'un procédé de synchronisation mis en oeuvre dans un système de communication entre dispositifs de type paire à paire. Il est également connu que la synchronisation entre elles de deux versions d'un même élément, l'une stockée par un premier dispositif d'une paire de dispositifs et l'autre stockée par un second dispositif de ladite paire est basée sur une référence temporelle commune aux deux dispositifs de ladite paire. C'est le cas, par exemple, du brevet EP 1 594 286 et de la demande de brevet internationale WO 2006/115521. En effet, ces documents présentent un système de communication entre dispositifs de type paire à paire dans lequel est mis en oeuvre un procédé de synchronisation d'éléments (fichiers/répertoires) basé sur une référence temporelle commune à deux dispositifs d'une paire de dispositifs du système. Plus précisément, des règles sont tout d'abord prédéterminées pour définir les éléments dont les versions doivent être synchronisées. Une version de ces éléments est, bien évidemment, stockée par chacun des deux dispositifs de la paire de dispositifs. Une fois les éléments identifiés, les deux versions de chaque élément sont synchronisées entre elles selon une référence temporelle qui doit être impérativement commune aux deux dispositifs de la paire afin de déterminer quelle est la version qui est antérieure, dans le temps, à l'autre. Ce type de procédé de synchronisation nécessite que la référence temporelle soit commune aux deux dispositifs de la paire car tout décalage temporel de cette référence entre les deux dispositifs peut engendrer des erreurs de synchronisation entre les deux versions d'un même élément. Le problème résolu par la présente invention est de déterminer un procédé de synchronisation mis en oeuvre dans un système de communication de type paire à paire qui ne requiert pas de transfert entre dispositifs des versions des éléments à synchroniser, qui n'est pas basé sur une référence temporelle et qui ne requiert pas qu'une mémoire importante soit hébergée par un dispositif du système. A cet effet, la présente invention concerne un procédé décrit ci-dessus qui est caractérisé en ce que des identifiants sont générés selon une relation d'ordre définie dans un référentiel et, à la version de chaque élément stockée par chaque dispositif est associé un couple d'identifiants dont l'un des identifiants, dit identifiant racine, identifie l'élément de manière unique dans le système et l'autre, dit identifiant de version, identifie la version de cet élément qui est stockée sur le dispositif. Ainsi, en associant un couple d'identifiants à chaque version d'un élément stockée par un dispositif du système et en définissant un ordre hiérarchique de chaque identifiant utilisé pour former les différents couples d'identifiants, une logique basée sur ces identifiants peut être mise en oeuvre pour, d'une part, synchroniser deux versions d'un même élément stockées sur deux dispositifs d'une paire de dispositifs du système et, d'autre part, pour que cette synchronisation se propage aux autres versions de cet élément stockées sur les autres dispositifs du système. Un tel procédé est avantageux car il ne requiert pas, d'une part, l'usage de référence temporelle pour synchroniser deux versions d'un élément stockées sur deux dispositifs, et d'autre part, que chaque dispositif du système héberge une mémoire de stockage importante du fait qu'une seule version par élément est stockée par chaque dispositif, et que seuls les identifiants sont échangés entre les dispositifs. De plus, le procédé est avantageux car la suppression d'un dispositif du système ou l'apparition d'un nouveau dispositif n'impose pas une synchronisation complète de l'ensemble des versions des éléments stockées par les dispositifs du système. L'un des autres avantages du procédé est qu'il permet la détection de conflit entre deux versions d'un élément stockées sur deux dispositifs du système. Selon un mode de réalisation du procédé, chaque nouvel identifiant généré, sous-entendu chaque identifiant de version et racine, est une valeur entière postérieure à une valeur entière précédemment générée pour définir un autre identifiant. Comme on le verra par la suite, une logique est décrite et revendiquée selon ce mode de réalisation du procédé. Selon un autre de ses aspects, la présente invention concerne un programme 30 d'ordinateur mettant en oeuvre ledit procédé. Selon l'un de ses aspects matériels, la présente invention concerne un dispositif prévu pour mettre en oeuvre le procédé et, selon un autre de ses aspects, elle concerne un système de communication de type paire à paire dont chaque dispositif prévu pour mettre en oeuvre le procédé. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels: La Fig. 1 représente un exemple de système de communication de type paire à paire selon l'invention, Les Fig. 2 et 3 représentent un diagramme des étapes du procédé de synchronisation selon un mode de réalisation de la présente invention, et La Fig. 4 représente un synoptique de la structure interne d'un dispositif prévu pour mettre en oeuvre le procédé selon la présente invention. En référence à la Fig. 1, est représenté un exemple de système de communication entre dispositifs de type paire à paire. Selon cet exemple, le système comporte trois dispositifs Dl, D2 et D3 qui communiquent entre eux par paire pour la mise en oeuvre du procédé de synchronisation. Un dispositif Di (i=1 à 3) peut désigner un appareil, tel qu'un terminal, ordinateur, téléphone, etc. ou un ensemble d'appareils. Un dispositif Di comporte des moyens COMM pour communiquer avec un autre dispositif du système via un réseau de communication soit filaire, soit sans fil. Par exemple, les dispositifs communiquent via un réseau de type DECT. Par la suite, on utilisera le terme « élément » pour désigner un ensemble de données cohérent tel que par exemple une fiche de contact téléphonique relative à un usager qui comporte, notamment son nom, son adresse, son numéro de téléphone, son adresse de messagerie électronique, etc. On utilisera également l'expression «version d'un élément » pour désigner une copie locale d'un élément stockée sur un dispositif. L'une des fonctions d'un dispositif Di est de stocker au moins un élément afin de le mettre à disposition d'un autre dispositif du système via le réseau de communication ou d'un utilisateur via une interface hébergée par ce dispositif. Plus précisément, lorsqu'un dispositif stocke un élément, il ne stocke qu'une seule version de cet élément qui peut être identique, antérieure, ou postérieure à une autre version de cet élément stockée par un autre dispositif du système. De manière générale, le procédé de synchronisation selon la présente invention est mis en oeuvre par paire de dispositifs du système de la Fig. 1. Cela sous-entend que chaque dispositif du système connaît les dispositifs du système avec qui ils forment des paires. Chaque dispositif peut alors contacter un dispositif de l'une de ses paires, soit par l'intermédiaire d'une entité du système, telle que par exemple une base DECT, soit par le biais d'une liste préexistante éventuellement obtenue d'un autre dispositif, soit par une action manuelle d'un opérateur. Par la suite, on considérera que les dispositifs Dl et D2 stockent plusieurs éléments, c'est-à-dire que chacun stocke une version de chacun de ces éléments. Les dispositifs Dl et D2 forment alors une paire de dispositifs. On peut noter que le procédé peut s'appliquer à une paire formée par les dispositifs Dl et D3 ou D2 et D3 selon l'exemple de la Fig. 1. Les Fig. 2 et 3 représentent un diagramme des étapes du procédé de synchronisation selon un mode de réalisation de la présente invention. Selon une caractéristique de ce procédé, des identifiants sont générés selon une relation d'ordre définie par une entité du système, dite référentielle, et à la version de chaque élément stockée par chaque dispositif Di du système est associé un couple d'identifiants (R,V) dont l'un des identifiants, dit identifiant racine R, identifie l'élément de manière unique dans le système et l'autre, dit identifiant de version V, identifie la version de cet élément qui est stockée sur le dispositif Di. Dans le système, des référentiels locaux et un référentiel global sont utilisés. Un référentiel local est défini par chaque dispositif Di, c'est-à-dire que chaque dispositif Di comporte des moyens pour générer des identifiants selon une relation d'ordre qui lui est propre, et des moyens pour associer un couple d'identifiants (R,V) à la version d'un élément qu'il stocke. Ainsi, un dispositif Di peut créer un nouvel élément ou modifier une version d'un élément qu'il stocke sans que ce dispositif n'ait à communiquer avec une autre entité du système. L'identifiant généré par un dispositif Di est dit local. Un référentiel global est défini par une entité dite entité centrale, qui est connue et accessible par tous les dispositifs Di du système, tels qu'un dispositif du système de communication, par exemple D3, qui peut être, par exemple, une base DECT ou un serveur sous la responsabilité d'un opérateur. Cette entité centrale comporte des moyens pour générer des identifiants selon une relation d'ordre qui lui est propre et qui permet d'assurer l'unicité des identifiants au sein du système. Un identifiant généré par cette entité centrale est dit global. Ainsi, lorsqu'un nouvel élément a été créé par un dispositif, ce dispositif émet une requête à l'entité centrale. Cette entité centrale génère alors un identifiant racine global et un identifiant de version global de cet élément et retourne au dispositif ce couple d'identifiants globaux. La version locale du nouvel élément est alors dite publiée. Cet échange entre l'entité centrale et un dispositif du système est mise en oeuvre par un protocole de communication connu. Lorsqu'une version d'un élément stockée par un dispositif Di est déjà identifiée par un couple d'identifiants globaux et qu'une modification locale de cette version de l'élément est destinée à être connue des autres dispositifs Dj qui stockent également une version de cet élément, le dispositif Di génère un identifiant de version local. Ensuite, ce dispositif Di émet une requête à l'entité centrale. Cette entité centrale génère alors un identifiant de version global de cet élément et retourne au dispositif ce nouvel identifiant de version global. Le dispositif Di remplace alors l'identifiant de version local de cet élément par ce nouvel identifiant de version global reçu. La version modifiée de l'élément est alors dite publiée. Un identifiant, de version ou racine, peut être une valeur entière par exemple, ou une chaîne de caractères représentant par exemple une date indiquant éventuellement une heure, minute et seconde. Dans le cas d'une valeur entière, la représentation de ces valeurs entières par des 20 machines numériques est bornée car elle utilise des registres 32 ou 64 bits par exemple. Il est alors avantageux d'obtenir une infinité d'identifiants malgré l'utilisation d'une valeur entière bornée. Pour cela, ces valeurs entières sont gérées de manière circulaire avec recalage de la valeur minimum. 25 Selon un mode de réalisation relatif au cas où un élément est une fiche, le recalage de la valeur minimum est réalisé par le biais d'une fiche de version particulière afin que la prise en compte de cette nouvelle valeur respecte l'ordre temporel des versions. Par exemple, dans le cas où chaque valeur entière appartient à un ensemble 30 prédéterminé de valeurs entières postérieures d'une valeur initiale 0 à une valeur finale N, la valeur 1 est postérieure à la valeur 0, la valeur 2 est postérieure et la valeur 0 est postérieure à la valeur N établissant ainsi une relation d'ordre. De plus, pour que chaque identifiant généré soit unique, une valeur logique est associée à chaque valeur entière choisie dans l'ensemble (0 ;N). L'introduction d'une valeur logique permet donc d'augmenter artificiellement le nombre d'identifiants uniques générés. Par la suite, nous parlerons toutefois de valeurs entières croissantes (supérieures) sans pour cela limiter la portée de la présente invention qui peut également être mise en oeuvre par d'autres types d'identifiants générés selon un ordre établi tels que par exemple des chaînes de caractères représentant une date telle que 2009-09-02 12:20:30. L'entité responsable de la génération d'identifiant (dispositif Di ou entité centrale) génère des valeurs entières croissantes et mémorise, pour cela, la dernière valeur entière générée. Ainsi les identifiants racines et les identifiants de version sont générés de manière croissante. Selon une variante, l'entité responsable de la génération d'identifiant génère des valeurs entières croissantes pour les identifiants racines et indépendamment des valeurs entières croissantes pour les identifiants de version. Ainsi les identifiants racines et les identifiants de version sont générés de manière croissante mais indépendamment les uns des autres. Selon une autre caractéristique du procédé, un marqueur, dit de synchronisation S,,, est associé à chaque paire de dispositifs (Di, Dj). Ce marqueur de synchronisation est connu des deux dispositifs Di et Dj pour indiquer l'état de synchronisation entre la version des éléments stockée par le dispositif Di et la version de ces éléments stockée par le dispositif Dj. Un marqueur de synchronisation S,,, associé à une paire de dispositifs (Di, Dj) est le plus grand identifiant de version des éléments stockés par chacun des dispositifs Di et Dj d'une paire de dispositifs lorsque les versions de ces éléments sont synchronisées. Par la suite, le procédé de synchronisation est décrit en considérant la paire de dispositifs (Dl, D2) du système de la Fig. 1. Il est évident d'extrapoler ce procédé pour toute autre paire d'un système de communication paire à paire. Le dispositif Dl est appelé premier dispositif et le dispositif D2 est appelé second dispositif en référence aux deux dispositifs de la paire (Dl, D2). En référence à la Fig. 2, le procédé comporte en outre une étape 1 d'émission par le premier dispositif Dl et à destination du second dispositif D2 d'un couple d'identifiants, dit premier couple d'identifiants (Ra, Vim). Au cours de l'étape 1, un ensemble, dit premier ensemble Vii, est formé par au moins un couple d'identifiants (R, V) dont l'identifiant de version R identifie un élément qui est à la fois stocké par le premier dispositif Dl et par le second dispositif D2. Par exemple, le premier ensemble VD1 comprend trois couples d'identifiants {(RI,V)(R2,V2.)(R3,V3)l lorsqu'une version des éléments R1, R2 et R3 est stockée par le premier dispositif Dl et par le second dispositif D2. On peut noter que les identifiants Ri et Vi pour i=l à 3 sont des valeurs entières croissantes selon un mode de réalisation du procédé, ce qui ne signifie pas obligatoirement que Ri+1 > Ri et/ou que Vi+1 > Vi et/ou que Ri+1 > V;. Les indices étant utilisés pour distinguer les trois éléments. Le premier couple d'identifiants (Ra, Vim) est alors déterminé parmi le premier ensemble (VD1) comme étant le couple d'identifiants qui comprend le plus petit identifiant de version Vim strictement supérieur au marqueur de synchronisation S1,2. En d'autres termes, V. = arg min (S1 2 Le procédé comporte en outre une étape 2 d'émission par le second dispositif D2 et à destination du premier dispositif Dl d'un couple d'identifiants, dit second couple d'identifiants (Rb, V2m). Au cours de l'étape 2, un ensemble, dit second ensemble VD2, est formé par au moins un couple d'identifiants (R, V) dont l'identifiant de version R identifie un élément qui est à la fois stocké par le premier dispositif Dl et par le second dispositif D2. Par exemple, le premier ensemble VD2 comprend trois couples d'identifiants {(RI , V4 ) (R2 , Vs ) (R3 , V6 )} qui correspondent aux trois éléments stockés par le premier dispositif Dl. On peut noter que les identifiants Rj pour j= 1 à 3 et Vi pour i=4 à 6 sont des valeurs entières croissantes selon le mode de réalisation du procédé, ce qui ne signifie pas obligatoirement que Ri+i > Ri et/ou que Vi+1 > Vi et/ou que Ri+i > Vi et/ou que les identifiants de version des éléments sont différentes avec celles des trois couples d'identifiants du premier ensemble VD1. Les indices des identifiants de version étant utilisés pour distinguer les versions des éléments stockées sur les deux dispositifs qui peuvent toutefois être identiques. Le second couple d'identifiants (Rb, V2m) est alors déterminé parmi le second ensemble VD2 comme étant le couple d'identifiants qui comprend le plus petit identifiant de version V2m strictement supérieur au marqueur de synchronisation S1,2. En d'autres termes, Vzm = arg min (S1 2 Il peut se produire le cas où le plus grand identifiant de version Vi parmi les identifiants de version des couples d'identifiants du premier ensemble VD1, respectivement du second ensemble VD2, soit égal au marqueur de synchronisation S1,2. Dans ce cas, l'identifiant de version Vim, respectivement V2m, est égal au marqueur de synchronisation S1,2. En référence à la Fig. 3, le procédé comporte une étape 3 de comparaison d'identifiants de version qui requiert qu'un premier ensemble VD1 et qu'un second ensemble VD1 soient formés à partir des étapes 1 et 2. Ainsi, les étapes 1 et 2 peuvent être exécutées l'une après l'autre ou l'une sans l'autre comme on le verra par la suite. Au cours de l'étape 3 de comparaison d'identifiants, l'identifiant de version Vim et l'identifiant de version V2m sont comparés entre eux. Si l'identifiant de version Vim est égal à l'identifiant de version Vzm et que ces identifiants sont strictement supérieurs au marqueur de synchronisation Si,2, c'est-à-dire que Vim = Vzm > Si 2, l'étape 3 est suivie par une première étape 4 de mise à jour du marqueur de synchronisation S1,2. Au cours de l'étape 4, le marqueur de synchronisation S1,2 devient égal à l'identifiant de version Vim (qui est alors égal à V2m). Cette mise à jour est alors connue des deux dispositifs Dl et D2. L'étape 4 est suivie par ladite étape 1 qui est elle-même suivie de l'étape 2. Un nouveau premier ensemble VD1 et nouveau second ensemble VD2 sont alors formés, et le premier et second identifiant de version Vim et V2m sont comparés entre eux. Ces identifiants Vim et V2m sont alors égaux au marqueur de synchronisation S1,2 et le procédé de synchronisation s'arrête assurant alors que les versions des éléments stockées sur les deux dispositifs Dl et D2 sont synchronisées entre elles. Selon une autre caractéristique du procédé, un autre marqueur, dit de conflit, est associé à chaque couple d'identifiants du premier ensemble VD1. Chaque marqueur de conflit associé à un couple d'identifiants du premier ensemble VD1 indique si la version de l'élément qui est identifié par ce couple et qui est stocké par le premier dispositif Dl est en conflit avec la version de cet élément qui est stockée par le second dispositif D2. De même, un autre marqueur de conflit, est associé à chaque couple d'identifiants du second ensemble VD2. Deux versions d'un même élément sont dites en conflit lorsque des modifications sont faites en concurrence sur les deux dispositifs qui stockent ces deux versions. Il peut également y avoir conflit lorsqu'une version d'un élément est supprimée par un dispositif et qu'une version de cet élément est modifiée par un autre dispositif. Le procédé de synchronisation de la présente invention ne traite que de la détection de conflit entre versions d'un même élément. Dans le cas d'une telle détection, il est alors possible d'adjoindre un autre procédé de gestion de conflit qui peut être basé, par exemple, sur des critères pré-établis pour effacer l'une des deux versions de l'élément ainsi que le couple d'identifiants qui lui est associé. De retour à la Fig. 3, si l'identifiant de version Vim n'est pas égal à l'identifiant de version V2m (étape 3), le couple d'identifiants qui comprend l'identifiant de version le plus grand est appelé couple d'identifiants supérieur (Rs, Vsm) ((Vsm max(Vim , V2m)). Le couple d'identifiants qui comprend alors le plus petit identifiant de version (Vfn=min(Vim , V2m)) est appelé couple d'identifiants inférieur (Rf, Vfm). De même, le dispositif qui mémorise le couple d'identifiants inférieur est dit dispositif inférieur Df, et le dispositif qui mémorise le couple d'identifiants supérieur est dit dispositif supérieur Ds. Ces notations sont introduites pour décrire à la fois le cas où l'identifiant de version Vim est supérieur à l'identifiant de version V2m et le cas où l'identifiant de version V2m est supérieur à l'identifiant de version Vim. Dans le cas où l'identifiant de version Vfm est égal au marqueur de synchronisation Si,2, l'étape 3 est suivie par une étape 5 d'émission par le dispositif supérieur et à destination du dispositif inférieur d'un couple d'identifiants (R;,V;), dit troisième couple d'identifiants. Au cours de l'étape 5, un couple d'identifiants parmi l'ensemble du dispositif supérieur est déterminé comme étant un troisième couple d'identifiants (R;,V;) si ce couple d'identifiants comprend le plus petit identifiant de version Vi qui est strictement supérieur au marqueur de synchronisation Si,2 et qui est supérieur ou égal à l'identifiant de version du couple d'identifiants supérieur (Rs, Vsm). En d'autres termes, V. = arg min (V. >_ V m > Si z pour tout i variant de 1 à 3 dans le cas où le dispositif supérieur est le dispositif Dl. L'étape 5 est suivie d'une étape 6 de mise à jour du marqueur de synchronisation Si,2 au cours de laquelle le marqueur de synchronisation Si,2 devient égal à un identifiant de version Vima. déterminé comme étant l'identifiant de valeur maximale parmi les identifiants de version Vi des troisièmes couples d'identifiants ainsi déterminés à l'étape 5. Cette mise à jour est alors connue des deux dispositifs Dl et D2 et le procédé est terminé. Le procédé de synchronisation s'arrête assurant alors que les versions des éléments stockées sur les deux dispositifs Dl et D2 sont synchronisées entre elles. Dans le cas où l'identifiant de version Vfm n'est pas égal au marqueur de synchronisation S1,2, l'étape 3 est suivie d'une étape 7 d'émission par le dispositif inférieur et à destination du dispositif supérieur d'un couple d'identifiants (R,,,Vä), dit quatrième couple d'identifiants. Au cours de l'étape 7, un couple d'identifiants parmi l'ensemble du dispositif inférieur est déterminé comme étant un quatrième couple d'identifiants (Rn, Vä) si ce couple d'identifiants comprend le plus petit identifiant de version Vä qui est strictement supérieur au marqueur de synchronisation S1,2 et qui est strictement inférieur à l'identifiant de version du couple d'identifiants supérieur (Rs, Vsm). En d'autres termes, V = argmin (SI 2 le cas où le dispositif supérieur est le dispositif Dl. L'étape 7 est suivie d'une étape 8 de mise à jour par le dispositif supérieur des marqueurs de conflit de chaque couple d'identifiants, dit cinquième couple d'identifiants (Rk,Vk), et d'émission par le dispositif supérieur et à destination du dispositif inférieur de chaque cinquième couple d'identifiants (Rk,Vk). Au cours de l'étape 8, un couple d'identifiants parmi l'ensemble du dispositif supérieur est considéré comme étant un cinquième couple d'identifiants lorsqu'il comprend un identifiant racine Rk qui est égal à l'identifiant racine Rä d'un quatrième couple d'identifiants. De plus, si l'identifiant de version Vk d'un cinquième couple d'identifiants est strictement supérieur au marqueur de synchronisation S1,2, les marqueurs de conflit C;, respectivement Ck, qui sont associés au quatrième, (R,,,Vä) respectivement cinquième (Rk,Vk), couple d'identifiants sont mis à jour (par exemple en positionnant un bit à 1 si ces marqueurs de conflit sont des valeurs binaires) pour indiquer un conflit entre la version de l'élément Rk identifiée par le cinquième couple d'identifiants et stockée par le dispositif supérieur et celle identifiée par le quatrième couple d'identifiants (Rk,Vä) et stockée par le dispositif inférieur. Le procédé ci-dessus permet d'assurer que les ajouts, les modifications et les effacements de version d'éléments sont propagés dans le système par des échanges paire à paire. En revanche, il ne permet pas de supprimer définitivement les versions d'éléments du système. A cet effet, selon une autre caractéristique du procédé, un autre marqueur, dit d'effacement E; est associé à chaque couple d'identifiants (R;, V;) du premier ensemble VD1, respectivement du second ensemble VD2, pour indiquer si la version d'un élément qui est stockée sur le premier dispositif Dl, respectivement le second dispositif D2, peut être effacée. La suppression d'un élément intervient lorsqu'il n'existe plus de version de cet élément stockée par les dispositifs du système. Une caractéristique du procédé, un dispositif ne peut supprimer la version Vi qu'il stocke d'un élément Ri que lorsque le marqueur d'effacement Ei associé à cette version indique qu'il peut l'effacer, que le marqueur de conflit Ci associé à ce couple d'identifiants (Ri,Vi) n'indique pas un conflit avec une autre version de cet élément et que l'identifiant de version Vi de ce couple d'identifiants est inférieur ou égal au marqueur de synchronisation Si,2 associé à une paire de dispositifs du système. Ainsi, le procédé assure que la suppression d'un élément a été propagée à tout le système avant d'en perdre la trace. Cette phase d'effacement peut être mise en oeuvre à chaque exécution du procédé de synchronisation, mais peut aussi être exécutée périodiquement ou lors d'un événement comme le manque d'espace de stockage, ou d'une action manuelle d'un opérateur. La fonction de cette phase est de supprimer définitivement les versions qui n'ont plus lieu d'être stockées sur un dispositif du système. De retour à la Fig. 3, au cours de l'étape 8, si l'identifiant de version Vk est inférieur ou égal au marqueur de synchronisation S1,2, l'étape 8 est suivie d'une étape 9 de remplacement de l'identifiant de version Vk de chaque cinquième couple d'identifiants (Rk,Vk) par un nouvel identifiant de version généré Vd, le marqueur d'effacement Ek associé au couple d'identifiants (Rk,Vd) indique alors que la version de l'élément Rk qui est stockée sur le dispositif supérieur peut être effacée . Les étapes 8 et 9 sont suivies par une second étape 10 de mise à jour du marqueur de synchronisation S1,2. Au cours de l'étape 10, le marqueur de synchronisation S1,2 devient égal à l'identifiant de version Vä du quatrième couple d'identifiants (Rn,Vä). Cette mise à jour est connue des deux dispositifs Dl et D2. Si un quatrième couple d'identifiants (Rn, Vä) doit être considéré, l'étape 9 est suivie par le test en entrée de l'étape 5 et dans le cas contraire, l'étape 9 est suivie soit par l'étape 2 si le premier dispositif Dl est le dispositif supérieur, soit par l'étape 1 si le second dispositif D2 est le dispositif supérieur. Dans ce dernier cas, l'étape 1 est suivie de l'étape 3. Selon une autre caractéristique du procédé, lorsqu'un dispositif Di du système disparaît du système, soit volontairement, soit sur décision du système sur non présentation de ce dispositif au-delà d'un temps prédéterminé, toutes les relations entre chaque dispositif Di de ce système et ce dispositif supprimé D; sont effacées et tous les marqueurs de synchronisation S,,k entre deux dispositifs d'une paire deviennent égaux au minimum des marqueurs de synchronisation Si,; entre n'importe lequel des dispositifs présents dans le système et le dispositif D; supprimé. Selon une autre caractéristique du procédé, le procédé est prévu pour gérer les changements de référentiels. Cela se produit lorsqu'un dispositif change de lieu, de domaine ou de réseau ou bien lorsque ce dispositif disparaît définitivement pour un remplacement par exemple. Un dispositif peut très bien appartenir à plusieurs systèmes simultanément puisque l'unicité des identifiants est garantie référentiel par référentiel. Selon un mode de réalisation, le changement de référentiel d'un dispositif est réalisé en supprimant toutes les données de ce dispositif et en synchronisant ensuite ce dispositif dans le nouveau référentiel. Selon un autre mode de réalisation, le changement de référentiel d'un dispositif est réalisé en basculant les identifiants de l'ancien référentiel en version locale au dispositif puis en synchronisant l'ensemble. Ce principe est assimilable à une création de nouveaux identifiants sur le dispositif avant une synchronisation. Selon une variante de ce mode de réalisation, les doublons d'éléments survenant éventuellement lors du basculement sont supprimés par discrimination des contenus de ces éléments. La version de l'élément appartenant déjà à un référentiel de destination sera alors conservée et l'autre supprimée. Si l'élément final est altéré suite à la mise en commun de deux éléments similaires selon les critères de discrimination, cet élément est considéré modifié localement et devient candidat à la synchronisation. La Fig. 4 représente un exemple de synoptique d'un dispositif Di prévu pour mettre en oeuvre l'un des procédés de synchronisation décrit en relation avec les Figs. 2 et 3. Le dispositif Di comporte des moyens COMM de communication, par exemple radiofréquence, une mémoire M et des moyens de calcul UC, tel qu'un microprocesseur ou un ensemble de composants câbles, communiquant avec la mémoire et les moyens COMM pour mettre en oeuvre le procédé de synchronisation. La mémoire M mémorise un programme PROG mettant en oeuvre l'invention et plus particulièrement le procédé décrit en référence aux Figs. 2 et 3. La mémoire M est par exemple un disque dur. De manière plus générale, le programme selon la présente invention est mémorisé dans un moyen de stockage. Ce moyen de stockage est lisible par le microprocesseur. Ce moyen de stockage est intégré ou non au dispositif Di, et peut être amovible. Lors de la mise sous tension du dispositif Di, le programme est transféré dans une mémoire vive (non représentée) qui contient alors le code exécutable de l'invention ainsi que les données nécessaires à la mise en oeuvre de l'invention. La mémoire M est prévue, en particulier, pour mémoriser au moins un couple d'identifiants (R,V) qui identifie une version V d'un élément R, un marqueur de synchronisation par paire de dispositifs (Di, Dj), un marqueur de conflit (C) par couple d'identifiants, et un marqueur d'effacement (Ee,1,Ee,2) par couple d'identifiants. Les moyens de calcul UC sont prévus pour former un ensemble de couple d'identifiants et pour comparer un identifiant avec soit un autre identifiant, soit un marqueur de synchronisation. REVENDICATIONS1) Procédé de synchronisation d'au moins un ensemble de données, appelé élément, dont une version est stockée par un premier dispositif (Dl) et une version est stockée par un second dispositif (D2), le premier et second dispositif formant une paire de dispositifs communiquant entre eux selon un système de communication entre dispositifs de type paire à paire, caractérisé en ce que des identifiants sont générés selon une relation d'ordre définie dans un référentiel et, à la version de chaque élément stockée par chaque dispositif (Dl, D2) est associé un couple d'identifiants (R,V) dont l'un des identifiants, dit identifiant racine (R), identifie l'élément de manière unique dans le système et l'autre, dit identifiant de version (V), identifie la version de cet élément qui est stockée sur le dispositif (Dl, D2). 2) Procédé selon la revendication 1, dans lequel un marqueur, dit de synchronisation (S1,2), est associé à la paire de dispositifs (Dl, D2) et connu du premier et second dispositif pour indiquer l'état de synchronisation entre la version des éléments stockée par le premier dispositif (Dl) et la version de ces éléments stockée par le second dispositif (D2). 3) Procédé selon la revendication 2, qui comporte en outre une étape (1) d'émission par le premier dispositif (Dl) et à destination du second dispositif (D2) d'un couple d'identifiants, dit premier couple d'identifiants (Ra, Vim), au cours de laquelle un ensemble, dit premier ensemble (VD1), est formé par au moins un couple d'identifiants dont l'identifiant de version identifie un élément qui est à la fois stocké par le premier dispositif et par le second dispositif, et au cours de laquelle ledit premier couple d'identifiants (Ra, Vim) est déterminé parmi le premier ensemble (VD1) comme étant le couple d'identifiants qui comprend le plus petit identifiant de version strictement supérieur au marqueur de synchronisation (S1,2). 4) Procédé selon la revendication 3 qui comporte en outre une étape (2) d'émission par le second dispositif (D2) et à destination du premier dispositif (Dl) d'un couple d'identifiants, dit second couple d'identifiants (Rb, V2m), au cours de laquelle un ensemble, dit second ensemble (VD2), est formé par au moins un coupled'identifiants dont l'identifiant de version identifie un élément qui est à la fois stocké par le premier dispositif et par le second dispositif, et au cours de laquelle ledit second couple d'identifiants (Rb, V2m) est déterminé parmi le second ensemble (VD2) comme étant le couple d'identifiants qui comprend le plus petit identifiant de version strictement supérieur au marqueur de synchronisation (S1,2). 5) Procédé selon la revendication 4, dans lequel l'identifiant de version du premier couple d'identifiants (Ra,Vim), respectivement du second couple d'identifiants (Rb,V2m), est égal au marqueur de synchronisation (S1,2) lorsque le plus grand identifiant de version parmi les identifiants de version des couples d'identifiants du premier ensemble (VD1), respectivement du second ensemble (VD2), est égal au marqueur de synchronisation (S1,2). 6) Procédé selon la revendication 5, dans lequel une fois qu'un premier ensemble (VD1) et un second ensemble (VD2) sont formés, ledit procédé se poursuit par une première étape (3) de comparaison d'identifiants de version au cours de laquelle l'identifiant de version (Vim) du premier couple et l'identifiant de version (V2m) du second couple d'identifiants sont comparés entre eux. 7) Procédé selon la revendication 6, dans lequel si l'identifiant de version du premier (Vim) et second (V2m) couple d'identifiants sont égaux entre eux et sont strictement supérieurs au marqueur de synchronisation (S1,2), ladite étape (3) de comparaison d'identifiants de version est suivie par une première étape (4) de mise à jour du marqueur de synchronisation (S1,2) au cours de laquelle le marqueur de synchronisation (S1,2) devient égal à l'identifiant de version du premier ou second couple d'identifiants, et cette mise à jour est connue du premier et second dispositif. 8) Procédé selon la revendication 7, dans lequel ladite première étape (4) de mise à jour du marqueur de synchronisation est suivie par ladite étape (1) d'émission par le premier dispositif (Dl). 9) Procédé selon la revendication 8, dans lequel un autre marqueur, dit de conflit, est associé à chaque couple d'identifiants du premier ensemble (VD1) et à chaque couple d'identifiants du second ensemble (VD2) pour indiquer si la versiond'un élément qui est stockée sur le premier dispositif (Dl), respectivement sur le second dispositif (D2), est en conflit avec la version de cet élément stockée par le second dispositif (D2), respectivement le premier dispositif (Dl). 10) Procédé selon la revendication 9, dans lequel - si l'identifiant de version (Vim) du premier couple d'identifiants (Ra,Vim) n'est pas égal à l'identifiant de version (V2m) du couple second d'identifiants (Rb,V2m), le couple d'identifiant qui comprend l'identifiant de version le plus grand étant appelé couple d'identifiants supérieur (Rs, Vsm), et le couple d'identifiants qui comprend alors le plus petit identifiant de version étant appelé couple d'identifiants inférieur (Rf, Vfm), le dispositif qui mémorise le couple d'identifiants inférieur étant appelé dispositif inférieur (Df), et le dispositif qui mémorise le couple d'identifiants supérieur étant appelé dispositif supérieur (Ds), si l'identifiant de version du couple d'identifiants inférieur (Rf, Vfm) est égal au marqueur de synchronisation (S1,2), l'étape (3) de comparaison d'identifiants de version est suivie par une étape (5) d'émission par le dispositif supérieur et à destination du dispositif inférieur d'un couple d'identifiants ((R;,V;)), dit troisième couple d'identifiants, un couple d'identifiants parmi l'ensemble du dispositif supérieur étant déterminé comme étant un troisième couple d'identifiants ((R;,V;)) si ce couple d'identifiants comprend le plus petit identifiant de version (V;) qui est strictement supérieur au marqueur de synchronisation (Si,2) et qui est supérieur ou égal à l'identifiant de version du couple d'identifiants supérieur ((Rs, Vsm)), - l'étape (5) d'émission par le dispositif supérieur et à destination du dispositif inférieur d'un troisième couple d'identifiants ((R;,V;)) est suivie d'une autre étape (6) de mise à jour du marqueur de synchronisation (S1,2) au cours de laquelle le marqueur de synchronisation (Si,2) devient égal à un identifiant de version (Vimax) déterminé comme étant l'identifiant de valeur maximale parmi les identifiants de version (V;) des troisièmes couples d'identifiants ainsi déterminés, et - si l'identifiant de version (Vfm) du couple d'identifiants inférieur n'est pas égal au marqueur de synchronisation (Si,2), l'étape (3) de comparaison d'identifiants de version est suivie d'une étape (7) d'émission par le dispositif inférieur et à destination du dispositif supérieur d'un couple d'identifiants ((Rn,Vä)), dit quatrième couple d'identifiants, un couple d'identifiants parmi l'ensemble du dispositif inférieur étant déterminé comme étant un quatrième couple d'identifiants ((Ra, Vä)) si ce couple d'identifiants comprend le plus petit identifiant de version (Vä) qui est strictementsupérieur au marqueur de synchronisation (S1,2) et qui est strictement inférieur à l'identifiant de version du couple d'identifiants supérieur ((Rs, Vsm)). 11) Procédé selon la revendication 10, dans lequel l'étape (7) d'émission par le dispositif inférieur et à destination du dispositif supérieur d'un quatrième couple d'identifiants ((Rn,Vä)) est suivie d'une étape (8) de mise à jour par le dispositif supérieur des marqueurs de conflit de chaque couple d'identifiants, dit cinquième couple d'identifiants ((Rk,Vk)), et d'émission par le dispositif supérieur et à destination du dispositif inférieur de chaque cinquième couple d'identifiants ((Rk,Vk)), un couple d'identifiants parmi l'ensemble du dispositif supérieur étant considéré comme étant un cinquième couple d'identifiants lorsqu'il comprend un identifiant racine (Rk) qui est égal à l'identifiant racine (Rn) d'un quatrième couple d'identifiants, si l'identifiant de version (Vk) d'un cinquième couple d'identifiants est strictement supérieur au marqueur de synchronisation (S1,2) les marqueurs de conflit (C;, CO qui sont associés au quatrième ((Rn,Vä)) et cinquième ((Rk,Vk)) couples d'identifiants sont mis à jour pour indiquer un conflit entre la version de l'élément (Rk) identifiée par le cinquième couple d'identifiants et stockée par le dispositif supérieur et celle identifiée par le quatrième couple d'identifiants ((Rk,Vä)) et stockée par le dispositif inférieur. 12) Procédé selon l'une des revendications précédentes, dans lequel un autre marqueur, dit d'effacement (E;) est associé à chaque couple d'identifiants ((R;, V;)) du premier ensemble (VD1) et du second ensemble (VD2) pour indiquer si la version d'un élément qui est stockée sur le premier dispositif (Dl) et du second dispositif (D2), peut être effacée. 13) Procédé selon la revendication 12, dans lequel un dispositif ne peut supprimer la version (Vi) qu'il stocke d'un élément (Ri) que lorsque le marqueur d'effacement (Ei) associé à cette version indique qu'il peut l'effacer, que le marqueur de conflit (Ci) associé à ce couple d'identifiants ((Ri,Vi)) n'indique pas un conflit avec une autre version de cet élément et que l'identifiant de version (Vi) de ce couple d'identifiants est inférieur ou égal au marqueur de synchronisation (Si,2) associé à une paire de dispositifs du système. 14) Procédé selon la revendication 13, dans lequel au cours de l'étape (8) de mise à jour par le dispositif supérieur des marqueurs de conflit de chaque cinquième couple d'identifiants ((Rk,Vk)), si l'identifiant de version (Vk) est inférieur ou égal au marqueur de synchronisation (S1,2), cette étape (8) est suivie d'une étape (9) de remplacement de l'identifiant de version (Vk) de chaque cinquième couple d'identifiants ((Rk,Vk)) par un nouvel identifiant de version généré (Vd), le marqueur d'effacement (Ek) associé au couple d'identifiants ((Rk,Vd)) indique alors que la version de l'élément (Rk) qui est stockée sur le dispositif supérieur peut être effacée . 15) Procédé selon la revendication 14, dans lequel les étapes (8) de mise à jour par le dispositif supérieur des marqueurs de conflit de chaque couple d'identifiants, dit cinquième couple d'identifiants ((Rk,Vk)) et (9) de remplacement de l'identifiant de version (Vk) de chaque cinquième couple d'identifiants ((Rk,Vk)) sont suivies par une second étape (10) de mise à jour du marqueur de synchronisation (Si,2), au cours de laquelle, le marqueur de synchronisation (Si,2) devient égal à l'identifiant de version (Vä) du quatrième couple d'identifiants ((Rn,Vä)). 16) Procédé selon la revendication 15, dans lequel si un quatrième couple d'identifiants ((Rn, Vä)) doit être considéré, l'étape (9) de remplacement de l'identifiant de version (Vk) de chaque cinquième couple d'identifiants ((Rk,Vk)) est suivie par le test en entrée de l'étape (5) d'émission par le dispositif supérieur et à destination du dispositif inférieur d'un troisième couple d'identifiants ((R;,V;)) et dans le cas contraire, l'étape (9) de remplacement de l'identifiant de version (Vk) de chaque cinquième couple d'identifiants ((Rk,Vk)) est suivie soit par l'étape 2 si le premier dispositif Dl est le dispositif supérieur, soit par l'étape 1 si le second dispositif D2 est le dispositif supérieur. Dans ce dernier cas, l'étape 1 est suivie de l'étape 3. 17) Procédé selon l'une des revendications précédentes, dans lequel lorsqu'un dispositif du système disparaît du système, soit volontairement, soit sur décision du système sur non présentation de ce dispositif au-delà d'un temps prédéterminé, toutes les relations entre chaque dispositif de ce système et ce dispositif supprimé sont effacées et tous les marqueurs de synchronisation entre deux dispositifs d'une paire deviennent égaux au minimum des marqueurs de synchronisation entre n'importe lequel des dispositifs présents dans le système et le dispositif D; supprimé. 18) Procédé selon l'une des revendications précédentes, dans lequel le procédé est prévu pour changer de référentiel soit supprimant toutes les données de ce dispositif et en synchronisant ensuite ce dispositif dans le nouveau référentiel, soit en basculant les identifiants de l'ancien référentiel en version locale au dispositif puis en synchronisant l'ensemble. 19) Dispositif d'un système de communication entre dispositifs de type paire à paire, ledit dispositif comportant une mémoire destinée à mémoriser une version d'au moins un élément, ledit dispositif formant une paire avec un autre dispositif qui mémorise également une version de cet élément, les dispositifs de ladite paire comportant des moyens de communication (COMM) pour communiquer entre via un réseau de communication, caractérisé en ce qu'il comporte - une mémoire (M) destinée à mémoriser au moins un couple d'identifiants (R,V), l'un des identifiants, dit identifiant racine (R), identifie l'élément de manière unique dans le système et l'autre, dit identifiant de version (V), identifie la version de cet élément qui est stockée dans la mémoire, et - des moyens de calcul (UC) prévus pour former un ensemble de couple d'identifiants et pour comparer un identifiant avec soit un autre identifiant soit un 20 marqueur de synchronisation. 22) Dispositif selon la revendication 19, caractérisé en ce qu'il comporte des moyens pour générer des identifiants selon une relation d'ordre hiérarchique entre eux, et des moyens pour associer un couple d'identifiants (R,V) à la version d'un 25 élément stockée par la mémoire (M). 23) Programme d'ordinateur stocké sur un support d'informations, ledit programme comportant des instructions permettant de mettre en oeuvre le procédé selon l'une des revendications 1 à 18, lorsqu'il est chargé et exécuté par un dispositif 30 conforme à la revendication 19 ou 20. 24) Système de communication paire à paire entre dispositifs stockant des versions d'éléments à synchroniser entre eux, caractérisé en ce qu'au moins deux dispositifs du système sont conformes à la revendication 19 ou 20 et une entité dusystème accessible de chacun de ces dispositifs comporte des moyens pour générer des identifiants selon une relation d'ordre hiérarchique entre eux, et des moyens pour associer un couple d'identifiants (R,V) à la version d'un élément stockée par chacun de ces dispositifs, l'un des identifiants, dit identifiant racine (R), identifie l'élément de manière unique dans le système et l'autre, dit identifiant de version (V), identifie la version de cet élément qui est stockée par l'un des deux dispositifs.