WO2011039317A1 - Procede de synchronisation d'elements stockes par des dispositifs d'un systeme de communication de type paire a paire - Google Patents

Procede de synchronisation d'elements stockes par des dispositifs d'un systeme de communication de type paire a paire Download PDF

Info

Publication number
WO2011039317A1
WO2011039317A1 PCT/EP2010/064576 EP2010064576W WO2011039317A1 WO 2011039317 A1 WO2011039317 A1 WO 2011039317A1 EP 2010064576 W EP2010064576 W EP 2010064576W WO 2011039317 A1 WO2011039317 A1 WO 2011039317A1
Authority
WO
WIPO (PCT)
Prior art keywords
identifiers
pair
version
identifier
stored
Prior art date
Application number
PCT/EP2010/064576
Other languages
English (en)
Inventor
Hoel Guilcher
Cédric Le Dillau
Original Assignee
Sagemcom Broadband Sas
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sagemcom Broadband Sas filed Critical Sagemcom Broadband Sas
Publication of WO2011039317A1 publication Critical patent/WO2011039317A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases

Definitions

  • the present invention relates to a method of synchronization of data sets, called elements, a version of which is stored by a first device and a version is stored by a second device of a pair of devices communicating with each other according to a communication system between peer-to-peer devices.
  • inter-device communication systems allow users to share items of any type, such as files, data, and so on. while allowing these same users to concurrently view and edit these items.
  • a method of synchronizing the different versions of each shared element is implemented to detect, in particular, conflicts between the versions of the same element.
  • a method of synchronization of element versions is implemented either centrally or in a decentralized manner.
  • the latest version of the elements is stored in a memory hosted by a server and these versions are used as a reference for synchronizing data stored by different devices.
  • the server must host a large storage memory for storing different versions of the elements.
  • this protocol requires the transfer between devices of the versions of an element to be synchronized.
  • the peer-to-peer implementation of a synchronization method makes it possible to avoid the use of a large storage memory on one of the devices of the system. Indeed, the synchronization of two versions of the same element, each stored on a device of the system, is propagated to the other devices of the system which also store a version of this element. For this, when two versions of an element stored by two devices of a pair of devices of the system are synchronized with each other, another pair of devices is formed from one of the devices of the previous pair of devices and devices. a new device of the system, and the synchronization method is again implemented to synchronize the versions of the elements stored on the two devices of this new pair of devices.
  • This type of synchronization method requires that the time reference be common to both devices of the pair because any time offset of this reference between the two devices can cause synchronization errors between the two versions of the same element.
  • the problem solved by the present invention is to determine a synchronization method implemented in a peer-to-peer communication system that does not require transfer between devices of the versions of the elements to be synchronized, which is not based on a time reference and which does not require that a large memory be hosted by a device of the system.
  • the present invention relates to a method described above which is characterized in that identifiers are generated according to a defined order relation in a repository and, to the version of each element stored by each device is associated a pair identifiers one of whose identifiers, called root identifier, identifies the element uniquely in the system and the other, said version identifier, identifies the version of this element that is stored on the device.
  • a logic based on these identifiers can be set. to synchronize two versions of the same element stored on two devices of a pair of devices of the system and, on the other hand, for this synchronization to spread to other versions of this element stored on the other devices in the system.
  • Such a method is advantageous because it does not require, on the one hand, the use of time reference to synchronize two versions of an element stored on two devices, and on the other hand, that each device of the system hosts a memory of important storage because only one version per element is stored by each device, and that only the identifiers are exchanged between the devices.
  • the method is advantageous because the removal of a device from the system or the appearance of a new device does not require a complete synchronization of all the versions of the elements stored by the devices of the system.
  • Another of the advantages of the method is that it allows the detection of conflict between two versions of an element stored on two devices of the system.
  • each new identifier generated, implied by each version identifier and root is an integer value subsequent to an integer value previously generated to define another identifier.
  • the present invention relates to a computer program implementing said method.
  • the present invention relates to a device intended to implement the method and, according to another of its aspects, it relates to a peer-to-peer communication system of which each device intended to implement the process.
  • Fig. 1 represents an example of a peer-to-peer communication system according to the invention
  • Figs. 2 and 3 show a diagram of the steps of the synchronization method according to an embodiment of the present invention.
  • Fig. 4 is a block diagram of the internal structure of a device provided for implementing the method according to the present invention.
  • FIG. 1 With reference to FIG. 1 is shown an example of a communication system between peer-to-peer devices.
  • the system comprises three devices D1, D2 and D3 which communicate with each other in pairs for the implementation of the synchronization method.
  • a device Di comprises means COMM to communicate with another device of the system via a communication network either wired or wireless.
  • the devices communicate via a DECT type network.
  • the term "element” will be used to designate a coherent data set such as, for example, a telephone contact card relating to a user that includes, in particular, his name, his address, his telephone number, his e-mail address electronic, etc.
  • a coherent data set such as, for example, a telephone contact card relating to a user that includes, in particular, his name, his address, his telephone number, his e-mail address electronic, etc.
  • version of an element to designate a local copy of an element stored on a device.
  • One of the functions of a device Di is to store at least one element in order to make it available to another device of the system via the communication network or a user via an interface hosted by this device.
  • a device when a device stores an item, it stores only one version of that item that may be the same, prior, or subsequent to another version of that item stored by another device in the system.
  • the synchronization method according to the present invention is implemented by pair of devices of the system of FIG. 1.
  • each device in the system knows the devices of the system with which they form pairs. Each device can then contact a device of one of its pairs, either via an entity of the system, such as for example a DECT base, or through a pre-existing list possibly obtained from another device, either by a manual action of an operator.
  • entity of the system such as for example a DECT base
  • the devices D 1 and D 2 store several elements, that is to say that each stores a version of each of these elements.
  • the devices D 1 and D 2 then form a pair of devices. It may be noted that the method can be applied to a pair formed by devices D1 and D3 or D2 and D3 according to the example of FIG. 1.
  • Figs. 2 and 3 show a diagram of the steps of the synchronization method according to an embodiment of the present invention.
  • identifiers are generated according to a relation of order defined by a system entity, called referential, and to the version of each element stored by each device Di of the system is associated with a pair identifiers (R, V) one of whose identifiers, called root identifier R, identifies the element uniquely in the system and the other, said version identifier V, identifies the version of this element that is stored on the device Di.
  • a local repository is defined by each device Di, that is to say that each device Di comprises means for generating identifiers according to an order relationship of its own, and means for associating a pair of identifiers ( R, V) to the version of an element that it stores.
  • R, V identifiers
  • a device Di can create a new element or modify a version of an element that it stores without this device having to communicate with another entity of the system.
  • the identifier generated by a device Di is called local.
  • a global repository is defined by a so-called central entity, which is known and accessible by all the devices Di of the system, such as a device of the communication system, for example D3, which may be, for example, a DECT base or a server under the responsibility of an operator.
  • This central entity comprises means for generating identifiers in an order relationship that is unique to it and that ensures the uniqueness of the identifiers within the system.
  • An identifier generated by this central entity is called global.
  • this device issues a request to the central entity.
  • This central entity then generates a global root identifier and a global version identifier of this element and returns to the device this pair of global identifiers.
  • the local version of the new element is then called published.
  • This exchange between the central entity and a device of the system is implemented by a known communication protocol.
  • an identifier, version or root may be an integer value for example, or a string representing for example a date possibly indicating an hour, minute and second.
  • the registration of the minimum value is carried out by means of a particular version form so that the taking into account of this new value respects the temporal order of the versions .
  • each integer value belongs to a predetermined set of posterior integer values from an initial value 0 to a final value N
  • the value 1 is greater than the value 0
  • the value 2 is posterior and the value 0 is posterior to the value N thus establishing a relation of order.
  • a logical value is associated with each integer value chosen from the set (0; N). The introduction of a logical value therefore makes it possible to artificially increase the number of unique identifiers generated.
  • the entity responsible for the generation of identifier (device Di or central entity) generates increasing integer values and stores, for this, the last generated integer value. Thus root identifiers and version identifiers are increasingly generated.
  • the entity responsible for generating the identifier generates increasing integer values for the root identifiers and independently of the increasing integer values for the version identifiers.
  • the root identifiers and the version identifiers are generated increasingly but independently of each other.
  • a synchronization marker Sj j is associated with each pair of devices (Di, Dj). This synchronization marker is known from the two devices Di and Dj to indicate the synchronization status between the version of the elements stored by the device Di and the version of these elements stored by the device Dj.
  • a synchronization marker Sj j associated with a pair of devices is the largest version identifier of the elements stored by each of the devices Di and Dj of a pair of devices when the versions of these elements are synchronized.
  • the synchronization method is described by considering the pair of devices (D1, D2) of the system of FIG. 1. It is obvious to extrapolate this method for any other pair of a peer-to-peer communication system.
  • the device D1 is called the first device and the device D2 is called the second device with reference to the two devices of the pair (D1, D2).
  • the method further comprises a step 1 of transmission by the first device D1 and to the second device D2 of a pair of identifiers, said first pair of identifiers (R a , V lm ).
  • a set, said first set V DI is formed by at least one pair of identifiers (R, V) whose version identifier R identifies an element that is both stored by the user.
  • the first set is formed by at least one pair of identifiers (R, V) whose version identifier R identifies an element that is both stored by the user.
  • V DI has three pairs of identifiers
  • the first pair of identifiers (R a , Vi m ) is then determined among the first set (V DI ) as being the pair of identifiers which comprises the smallest version identifier Vi m strictly greater than the synchronization marker S li2 .
  • V lm i varying from 1 to 3 according to the example
  • the identifier R a then designates the element a whose version is identified by the version identifier V LM .
  • the method further comprises a step 2 of transmission by the second device D2 and to the first device D1 of a pair of identifiers, said second pair of identifiers (Rb, V 2m ).
  • a set, said second set V D2 is formed by at least one pair of identifiers (R, V) whose version identifier R identifies an element that is both stored by the first device D1 and the second device D2.
  • the first set V D2 comprises three pairs of identifiers ⁇ R ⁇ ) ⁇ " ⁇ ) ⁇ " ⁇ ) ⁇ which correspond to the three elements stored by the first device Dl.
  • the second pair of identifiers (Rb, V 2m ) is then determined from the second set V D2 as being the pair of identifiers which comprises the smallest version identifier V 2m strictly greater than the synchronization marker S li2 .
  • V 2m argmin (S ' 1 2 ⁇ F ⁇ with i varying from 4 to 6 according to the given example of the second set VDI -
  • the identifier R b then designates the element b whose version is identified by the version identifier V 2m .
  • the method comprises a step 3 of comparison of version identifiers which requires a first set V DI and a second set V DI are formed from steps 1 and 2.
  • steps 1 and 2 can be executed one after the other or one without the other as will be seen later.
  • step 4 the synchronization marker Si , 2 becomes equal to the version identifier V lm (which is then equal to V 2m ). This update is then known from the two devices D1 and D2.
  • Step 4 is followed by said step 1 which is itself followed by step 2.
  • a new first set V DI and new second set V D2 are then formed, and the first and second version identifier V lm and V 2m are compared with each other.
  • These identifiers Vi m and V 2m are then equal to the synchronization marker Si, 2 and the synchronization process stops ensuring that the versions of the elements stored on the two devices D1 and D2 are synchronized with each other.
  • another marker is associated with each pair of identifiers of the first set V DI -
  • Each conflict marker associated with a pair of identifiers of the first set V DI indicates whether the version of the element which is identified by this pair and which is stored by the first device D1 is in conflict with the version of this element which is stored by the second device D2.
  • another conflict marker is associated with each pair of identifiers of the second set V D2 .
  • Two versions of the same element are said to conflict when changes are made in competition on the two devices that store these two versions. There may also be conflict when a version of an item is deleted by one device and a version of that item is changed by another device.
  • the synchronization method of the present invention deals only with the detection of conflict between versions of the same element. In the case of such detection, it is then possible to add another conflict management method which can be based, for example, on pre-established criteria to erase one of the two versions of the element as well as than the pair of identifiers associated with it.
  • device which stores the lower pair of identifiers is said lower device Df
  • the device which stores the upper pair of identifiers is said higher device Ds.
  • step 3 is followed by a step 5 of transmission by the upper device and to the lower device of a pair of pairs. identifiers (Ri, Vi), said third pair of identifiers.
  • a pair of identifiers from the entire upper device is determined as being a third pair of identifiers (Ri, Vi) if this pair of identifiers comprises the smallest version identifier Vi which is strictly greater than the synchronization marker Si, 2 and which is greater than or equal to the version identifier of the upper pair of identifiers (R s , V sm ).
  • V. argmin ⁇ F. > V sm > S l 2 ⁇ for all i varying from 1 to 3 in the case where the upper device is the device Dl.
  • Step 5 is followed by a step 6 of updating the synchronization marker Si, 2 during which the synchronization marker Si, 2 becomes equal to a version identifier Vi max determined as being the value identifier. maximum of the version identifiers Vi of the third pairs of identifiers thus determined in step 5.
  • This update is then known from the two devices D1 and D2 and the process is completed.
  • the synchronization process stops ensuring that the versions of the elements stored on the two devices D 1 and D 2 are synchronized with each other.
  • step 3 is followed by a step 7 of transmission by the lower device and to the upper device of a pair of identifiers (R n , V n ), said fourth pair of identifiers.
  • a pair of identifiers from the entire lower device is determined to be a fourth pair of identifiers (R n , V n ) if this pair of identifiers includes the smallest version identifier V n which is strictly greater than the synchronization marker Si, 2 and which is strictly lower than the version identifier of the upper pair of identifiers (R s , V sm ).
  • V n ⁇ V n ⁇ V sm J for all i varying from 1 to 3 in
  • Step 7 is followed by a step 8 of updating by the upper device of the conflict markers of each pair of identifiers, said fifth pair of identifiers (R k , V k ), and transmission by the upper device and to the lower device of each fifth pair of identifiers (R k , V k ).
  • a pair of identifiers among the entire upper device is considered to be a fifth pair of identifiers when it comprises a root identifier R k which is equal to the root identifier R n d a fourth pair of identifiers.
  • the conflict markers Ci respectively C k , which are associated with the fourth, (R n , V n ) respectively fifth (R k , V k ), pair of identifiers are updated (for example by setting a bit to 1 if these conflict markers are binary values) to indicate a conflict between the version of the element R k identified by the fifth pair of identifiers and stored by the upper device and that identified by the fourth pair of identifiers (R k , V n ) and stored by the lower device.
  • the above method ensures that additions, modifications, and item version deletions are propagated in the system by peer-to-peer exchanges. On the other hand, it does not allow to permanently delete the versions of elements of the system.
  • another erase marker Ei is associated with each pair of identifiers (Ri, Vi) of the first set V DI , respectively of the second set V D2 , to indicate whether the version of an element that is stored on the first device D1, respectively the second device D2, can be erased.
  • the deletion of an element occurs when there is no more version of this element stored by the devices of the system.
  • a device can only delete the Vi version it stores of an element Ri when the erase marker Ei associated with this version indicates that it can erase it, that the conflict marker Ci associated this pair of identifiers (Ri, Vi) does not indicate a conflict with another version of this element and that the version identifier Vi of this pair of identifiers is less than or equal to the synchronization marker S 1 , 2 associated with a pair of system devices.
  • This erasure phase can be implemented at each execution of the synchronization method, but can also be performed periodically or during an event such as lack of storage space, or a manual action of an operator.
  • the function of this phase is to permanently delete the versions that no longer need to be stored on a system device.
  • step 8 if the version identifier V k is less than or equal to the synchronization flag S li2 , step 8 is followed by a step 9 of replacing the version identifier V k of each fifth pair of identifiers (R k , V k ) by a new generated version identifier Va, the erase marker E k associated with the pair of identifiers (R k , Vd) then indicates that the version of the element R k which is stored on the upper device can be erased.
  • Steps 8 and 9 are followed by a second step 10 of updating the synchronization marker S li2 .
  • the synchronization marker S li2 becomes equal to the version identifier V n of the fourth pair of identifiers (R n , V n ). This update is known from the two devices D1 and D2.
  • step 9 is followed by the input test of step 5 and if not, step 9 is followed by either step 2 if the first device Dl is the upper device, or by step 1 if the second device D2 is the upper device. In the latter case, step 1 is followed by step 3.
  • the method is provided for managing the repository changes. This happens when a device changes location, domain, or network, or when that device disappears for a replacement, for example.
  • a device can very well belong to several systems simultaneously since the uniqueness of the identifiers is guaranteed referential by reference.
  • the repository change of a device is performed by deleting all the data of this device and then synchronizing this device in the new repository.
  • the repository change of a device is achieved by switching the identifiers of the old repository local version to the device and then synchronizing the set. This principle can be likened to creating new identifiers on the device before synchronization.
  • duplicate elements possibly occurring during the switchover are removed by discrimination of the contents of these elements.
  • the version of the element already belonging to a destination repository will then be retained and the other deleted. If the final element is altered following the sharing of two similar elements according to the discrimination criteria, this element is considered modified locally and becomes a candidate for synchronization.
  • Fig. 4 represents an example of a block diagram of a device Di intended to implement one of the synchronization methods described in relation with FIGS. 2 and 3.
  • the device Di comprises communication means COMM, for example radiofrequency, a memory M and calculation means UC, such as a microprocessor or a set of cable components, communicating with the memory and the means COMM to implement the method synchronization.
  • the memory M stores a program PROG implementing the invention and more particularly the method described with reference to FIGS. 2 and 3.
  • the memory M is for example a hard disk.
  • the program according to the present invention is stored in storage means. This storage means is readable by the microprocessor. This storage means is integrated or not to the device Di, and can be removable. When powering on the device Di, the program is transferred to a random access memory (not shown) which then contains the executable code of the invention as well as the data necessary for the implementation of the invention.
  • the memory M is provided, in particular, for storing at least one pair of identifiers (R, V) which identifies a version V of an element R, a synchronization marker Sy per pair of devices (Di, Dj), a conflict marker (C) by pair of identifiers, and an erase marker (E e , i, E e , 2) by a pair of identifiers.
  • the calculation means UC are designed to form a set of pairs of identifiers and to compare an identifier with either another identifier or a synchronization marker.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

La présente invention concerne un procédé et dispositif de synchronisation d'éléments stockés par des dispositifs d'un système de communication de type pair à pair. Ce procédé et dispositif sont particuliers car ils ne requièrent pas de référence temporelle et ils ne requièrent pas qu'une mémoire importante soit hébergée par un dispositif du système. Le procédé 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.

Description

Procédé de synchronisation d'éléments stockés par des dispositifs d'un système de communication de type paire à paire
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 pair à pair.
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 œuvre 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 œuvre soit de manière centralisée, soit de manière décentralisée.
Dans le cas d'une mise en œuvre 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/wikL/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 œuvre de type pair à pair 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 œuvre 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/Git), 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 œuvre dans un système de communication entre dispositifs de type pair à pair.
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/1 15521. En effet, ces documents présentent un système de communication entre dispositifs de type pair à pair dans lequel est mis en œuvre 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 œuvre dans un système de communication de type pair à pair 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 œuvre 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 d'ordinateur mettant en œuvre ledit procédé.
Selon l'un de ses aspects matériels, la présente invention concerne un dispositif prévu pour mettre en œuvre le procédé et, selon un autre de ses aspects, elle concerne un système de communication de type pair à pair dont chaque dispositif prévu pour mettre en œuvre 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 pair à pair 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 œuvre 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 pair à pair.
Selon cet exemple, le système comporte trois dispositifs Dl, D2 et D3 qui communiquent entre eux par paire pour la mise en œuvre du procédé de synchronisation. Un dispositif Di (i=l à 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 œuvre 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 D l et D2 stockent plusieurs éléments, c'est-à-dire que chacun stocke une version de chacun de ces éléments. Les dispositifs D l 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 œuvre 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 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.
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 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 œuvre 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 Sjj 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 Sjj 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 pair à pair. 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, Vlm). Au cours de l'étape 1, un ensemble, dit premier ensemble VDI, 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
VDI comprend trois couples d'identifiants
Figure imgf000010_0001
version des éléments RI , 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+i > Ri et/ou que Vi+i > Vi et/ou que Ri+i > Vi. 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 (VDI) comme étant le couple d'identifiants qui comprend le plus petit identifiant de version Vim strictement supérieur au marqueur de synchronisation Sli2.
En d'autres termes, Vlm = i variant de 1 à 3 selon l'exemple
Figure imgf000010_0002
donné du premier ensemble VDI et le signe < désignant le plus petit entier strictement supérieur.
L'identifiant Ra désigne alors l'élément a dont la version est identifiée par l'identifiant de version VL M. 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 ^R ^ )^»^ )^»^)} 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 Rj+i > Rj et/ou que Vi+i > Vi et/ou que Rj+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 VDI- 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 S li2. En d'autres termes, V2m = argmin(S'1 2 < F^avec i variant de 4 à 6 selon l'exemple donné du second ensemble VDI -
L'identifiant Rb désigne alors l'élément b dont la version est identifiée par l'identifiant de version V2m.
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 VDI , respectivement du second ensemble VD2, soit égal au marqueur de synchronisation Si,2- Dans ce cas, l'identifiant de version Vlm, respectivement V2m, est égal au marqueur de synchronisation S li2.
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 VDI et qu'un second ensemble VDI 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 Vlm et l'identifiant de version V2m sont comparés entre eux. Si l'identifiant de version Vlm est égal à l'identifiant de version V2m et que ces identifiants sont strictement supérieurs au marqueur de synchronisation Si,2, c'est-à- dire que Vlm = V2m > Sl 2 , l'étape 3 est suivie par une première étape 4 de mise à jour du marqueur de synchronisation Si,2. Au cours de l'étape 4, le marqueur de synchronisation Si,2 devient égal à l'identifiant de version Vlm (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 VDI et nouveau second ensemble VD2 sont alors formés, et le premier et second identifiant de version Vlm et V2m sont comparés entre eux. Ces identifiants Vim et V2m sont alors égaux au marqueur de synchronisation Si,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 VDI- Chaque marqueur de conflit associé à un couple d'identifiants du premier ensemble VDI 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 Vlm 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 (Vfm=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 Vlm est supérieur à l'identifiant de version V2m et le cas où l'identifiant de version V2m est supérieur à l'identifiant de version Vlm.
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 (Ri,Vi), 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 (Ri,Vi) 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. = argmin^F. > Vsm > Sl 2^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 Vimax 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 D l et D2 sont synchronisées entre elles.
Dans le cas où l'identifiant de version Vfm n'est pas égal au marqueur de synchronisation Si,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 (Rn,Vn), 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, Vn) si ce couple d'identifiants comprend le plus petit identifiant de version Vn qui est strictement supérieur au marqueur de synchronisation Si,2 et qui est strictement inférieur à l'identifiant de version du couple d'identifiants supérieur (Rs, Vsm). En d'autres termes, V n = < V n < V sm Jpour tout i variant de 1 à 3 dans
Figure imgf000013_0001
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 Rn 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 Sli2, les marqueurs de conflit Ci, respectivement Ck, qui sont associés au quatrième, (Rn,Vn) 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,Vn) 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 pair à pair. 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 Ei est associé à chaque couple d'identifiants (Ri, Vi) du premier ensemble VDI, 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 S 1,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 œuvre à 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 Sli2, 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é Va, 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 Sli2. Au cours de l'étape 10, le marqueur de synchronisation S li2 devient égal à l'identifiant de version Vn du quatrième couple d'identifiants (Rn,Vn). Cette mise à jour est connue des deux dispositifs Dl et D2.
Si un quatrième couple d'identifiants (Rn, Vn) 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 Dj de ce système et ce dispositif supprimé Di sont effacées et tous les marqueurs de synchronisation Sj,k entre deux dispositifs d'une paire deviennent égaux au minimum des marqueurs de synchronisation Sj,; entre n'importe lequel des dispositifs présents dans le système et le dispositif Di 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 œuvre 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 œuvre le procédé de synchronisation.
La mémoire M mémorise un programme PROG mettant en œuvre 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 œuvre 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 Sy par paire de dispositifs (Di, Dj), un marqueur de conflit (C) par couple d'identifiants, et un marqueur d'effacement (Ee,i,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.

Claims

REVENDICATIONS
1) 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 pair à pair,
des identifiants étant 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 de version (V), identifie la version de cet élément qui est stockée sur le dispositif (Dl, D2), ledit dispositif comportant 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 (VDI), 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,un marqueur, dit de synchronisation (S 1,2), étant 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),
caractérisé en ce que l'autre identifiant d'un couple d'identifiant, dit identifiant racine (R), identifie l'élément de manière unique dans le système et l'autre, et en ce qu'au cours de ladite étape d'émission (1), ledit premier couple d'identifiants (Ra, Vim) est déterminé parmi le premier ensemble (VDI) comme étant le couple d'identifiants qui comprend le plus petit identifiant de version strictement supérieur au marqueur de synchronisation (S 1,2).
2) Procédé selon la revendication 1 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 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 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 (S li2).
3) Procédé selon la revendication 2, dans lequel l'identifiant de version du premier couple d'identifiants (Ra,Vlm), respectivement du second couple d'identifiants
(Rb,V2m), est égal au marqueur de synchronisation (Sli2) lorsque le plus grand identifiant de version parmi les identifiants de version des couples d'identifiants du premier ensemble (VDI), respectivement du second ensemble (Vm), est égal au marqueur de synchronisation (S li2).
4) Procédé selon la revendication 3, dans lequel une fois qu'un premier ensemble (VDI) 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 (VL M) du premier couple et l'identifiant de version (V2m) du second couple d'identifiants sont comparés entre eux.
5) Procédé selon la revendication 4, dans lequel si l'identifiant de version du premier (VLM) et second (V2M) couple d'identifiants sont égaux entre eux et sont strictement supérieurs au marqueur de synchronisation (S li2), ladite étape (3) de comparaison d'identifiants de version est suivie par une première étape (4) de mise à jour du marqueur de synchronisation (S li2) au cours de laquelle le marqueur de synchronisation (Sli2) devient égal à l'identifiant de version du premier ou second couple d'identifiants, et cette mise à jour est connue du premier et second dispositif. 6) Procédé selon la revendication 5, 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).
7) Procédé selon la revendication 6, dans lequel un autre marqueur, dit de conflit, est associé à chaque couple d'identifiants du premier ensemble (VDI) et à chaque couple d'identifiants du second ensemble (Vm) pour indiquer si la version d'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). 8) Procédé selon la revendication 7, dans lequel
- si l'identifiant de version (Vlm) du premier couple d'identifiants (Ra,Vlm) 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 (S li2), 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 ((Ri,Vi)), 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 ((Ri,Vi)) si ce couple d'identifiants comprend le plus petit identifiant de version (V;) qui est strictement supérieur au marqueur de synchronisation (S li2) 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 ((Ri,Vi)) est suivie d'une autre étape (6) de mise à jour du marqueur de synchronisation (S li2) au cours de laquelle le marqueur de synchronisation (S li2) 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 (Sli2), 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,Vn)), 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 ((Rn, Vn)) si ce couple d'identifiants comprend le plus petit identifiant de version (Vn) qui est strictement supérieur au marqueur de synchronisation (S li2) et qui est strictement inférieur à l'identifiant de version du couple d'identifiants supérieur ((Rs, Vsm)). 9) Procédé selon la revendication 8, 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,Vn)) 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 (S 1,2) les marqueurs de conflit (Ci, Ck) qui sont associés au quatrième ((Rn,Vn)) 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,Vn)) et stockée par le dispositif inférieur.
10) Procédé selon l'une des revendications précédentes, dans lequel un autre marqueur, dit d'effacement (Ei) est associé à chaque couple d'identifiants ((Ri, Vi)) du premier ensemble (VDI) 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.
11) Procédé selon la revendication 10, 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.
12) Procédé selon la revendication 11, 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 (S 1,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é (Va), 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 .
13) Procédé selon la revendication 12, 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 (S 1,2), au cours de laquelle, le marqueur de synchronisation (Sli2) devient égal à l'identifiant de version (Vn) du quatrième couple d'identifiants ((Rn,Vn)). 14) Procédé selon la revendication 13, dans lequel si un quatrième couple d'identifiants ((Rn, Vn)) 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;,Vi)) 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. 15) 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 Di supprimé.
16) 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.
17) Programme d'ordinateur stocké sur un support d'informations, ledit programme comportant des instructions permettant de mettre en œuvre le procédé selon l'une des revendications 1 à 16, lorsqu'il est chargé et exécuté par un dispositif.
PCT/EP2010/064576 2009-10-01 2010-09-30 Procede de synchronisation d'elements stockes par des dispositifs d'un systeme de communication de type paire a paire WO2011039317A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0956863A FR2950991A1 (fr) 2009-10-01 2009-10-01 Procede de synchronisation d'elements stockes par des dispositifs d'un systeme de communication de type paire a paire
FR0956863 2009-10-01

Publications (1)

Publication Number Publication Date
WO2011039317A1 true WO2011039317A1 (fr) 2011-04-07

Family

ID=42146552

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2010/064576 WO2011039317A1 (fr) 2009-10-01 2010-09-30 Procede de synchronisation d'elements stockes par des dispositifs d'un systeme de communication de type paire a paire

Country Status (2)

Country Link
FR (1) FR2950991A1 (fr)
WO (1) WO2011039317A1 (fr)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1594286A1 (fr) 2004-05-03 2005-11-09 Microsoft Corporation Systèmes et méthodes pour l'implémentation d'un système de synchronisation autonome basé sur la technologie "peer to peer", l'utilisation de règles et l'accès en mode "pull"
WO2006115521A1 (fr) 2005-04-22 2006-11-02 Microsoft Corporation Systeme et procede de synchronisation de fichiers poste a poste
US20060288053A1 (en) * 2005-06-21 2006-12-21 Apple Computer, Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
WO2007113836A2 (fr) * 2006-04-03 2007-10-11 Beinsync Ltd. Système et procédé de synchronisation entre homologues
US20080005195A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Versioning synchronization for mass p2p file sharing
US20090006498A1 (en) * 2005-06-21 2009-01-01 Apple Inc. Peer-to-Peer Syncing in a Decentralized Environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1594286A1 (fr) 2004-05-03 2005-11-09 Microsoft Corporation Systèmes et méthodes pour l'implémentation d'un système de synchronisation autonome basé sur la technologie "peer to peer", l'utilisation de règles et l'accès en mode "pull"
WO2006115521A1 (fr) 2005-04-22 2006-11-02 Microsoft Corporation Systeme et procede de synchronisation de fichiers poste a poste
US20060288053A1 (en) * 2005-06-21 2006-12-21 Apple Computer, Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US20090006498A1 (en) * 2005-06-21 2009-01-01 Apple Inc. Peer-to-Peer Syncing in a Decentralized Environment
WO2007113836A2 (fr) * 2006-04-03 2007-10-11 Beinsync Ltd. Système et procédé de synchronisation entre homologues
US20080005195A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Versioning synchronization for mass p2p file sharing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MALKHI D ET AL: "P2P replica synchronization with vector", OPERATING SYSTEMS REVIEW ACM USA, vol. 41, no. 2, April 2007 (2007-04-01), pages 70 - 76, XP002594068, ISSN: 0163-5980 *
YUN-WU HUANG ET AL: "Lightweight version vectors for pervasive computing devices", PROCEEDINGS 2000. INTERNATIONAL WORKSHOP ON PARALLEL PROCESSING IEEE COMPUT. SOC LOS ALAMITOS, CA, USA, 2000, pages 43 - 48, XP002594067, ISBN: 0-7695-0771-9 *

Also Published As

Publication number Publication date
FR2950991A1 (fr) 2011-04-08

Similar Documents

Publication Publication Date Title
FR2851866A1 (fr) Procede d&#39;allocation par un premier pair d&#39;un service a un second pair d&#39;un reseau de communication
CN108769153B (zh) 一种网络应用的数据处理方法及系统
FR3017725A1 (fr) Procede de deploiement d&#39;un ensemble d&#39;application (s) logicielle (s)
CN110244951A (zh) 应用发布方法及装置
WO2021043599A1 (fr) Migration d&#39;une chaîne de blocs de données
EP1703404A1 (fr) Méthode et système pour maintenir la cohérence d&#39;une mémoire cache utilisée par de multiples processus indépendants
WO2006016085A1 (fr) Procede de sauvegarde distribuee sur des postes clients dans un reseau informatique
EP2300944A1 (fr) Procede et systeme de synchronisation de modules logiciels d&#39;un systeme informatique distribue en grappe de serveurs, application au stockage de donnees
EP2109979B1 (fr) Procédé et dispositif de gestion de connexions dans un réseau de télécommunications
WO2011039317A1 (fr) Procede de synchronisation d&#39;elements stockes par des dispositifs d&#39;un systeme de communication de type paire a paire
EP3903210A1 (fr) Reseau de communication securisee et tracee
WO2018234656A1 (fr) Gestion de l&#39;unicité des identifiants de modules de communication dans un réseau de communication
FR3015071A1 (fr) Procede de synchronisation de donnees entre un ensemble de terminaux
BE1023607B1 (fr) Methode et systeme de collecte de documents numeriques a partir d’une pluralite de source
FR2797967A1 (fr) Dispositif et procede de decouverte de peripheriques connectes a un reseau informatique
FR3060791A1 (fr) Procede et dispositif de mise a jour
WO2024083978A1 (fr) Procédé de traitement d&#39;une requête d&#39;exécution d&#39;un service dans un réseau de communication, procédé de validation de la requête, entité intermédiaire, entité de validation, système et programme d&#39;ordinateur correspondants
EP4113297A1 (fr) Procédé de gestion des travaux dans un système informatique et système associé
EP3080706A1 (fr) Procédé de sauvegarde de données stockées sur un terminal
WO2022254117A1 (fr) Procede de gestion d&#39;un registre local d&#39;un noeud appartenant a un ensemble de noeuds contribuant a un registre distribue
WO2019197482A1 (fr) Récupération d&#39;effacement dans un système de stockage distribué
FR2876816A1 (fr) Procede et systeme de synchronisation asymetrique de donnees
FR3145627A1 (fr) Procédé de gestion de données concernées par des obligations contradictoires de conservation et de mise à jour
FR3121240A1 (fr) Procédé permettant de garantir l’intégrité des données informatiques gérées par une application tout en préservant leur confidentialité
FR3094509A1 (fr) Système de stockage redondant de données, procédé et programme d’ordinateur correspondants.

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10759676

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10759676

Country of ref document: EP

Kind code of ref document: A1