The present invention relates to a method of synchronizing. In particular but not exclusively, the present invention relates to synchronizing data between devices such as computers, palm devices, personal digital assistants, music devices and mobile telephones. The data to be synchronized may comprise any data but commonly includes calendars, music files, photo files, emails, contact lists, bookmarks and any other such data. The present invention also encompasses synchronization of applications. The present invention envisages that such synchronization may occur between applications on the same device or on different devices.
Hereinafter references to data includes data used by different applications and so the term devices includes applications stored on and run by an electronic device. Moreover, synchronization between devices includes synchronizing data used by different applications on the same electronic device.
Hitherto, synchronization of a number of devices has involved a large number of comparison steps between actual data or changes in data. Such comparison has potentially involved extensive redundant comparison steps. Another problem with the existing synchronization methods is that such synchronization has been effected based on the systems clocks defined by the devices. Those systems clocks can be modified either intentionally or malevolently with disastrous consequences for subsequent synchronization of the devices.
Synchronization between devices may be effected in a number of ways. Once such system is disclosed in one of our co-pending U.S. patent applications holding Ser. No. 10/453,051 filed on 2 Jun. 2003. However, to assist in the appreciation of a synchronization method, a brief description will now be given with reference to
The synchronization engine 6 includes a synchronizer 12, mingler 16, Truth Table 20 and schema 22.
The conduits act as a liaison between the synchronization engine and the respective device. The conduits principally translate data between the devices data format and the synchronization engine's canonical format. That is to say, the conduit receives data to be synchronized from the respective device and puts it into a canonical format and submits the same to the synchronization engine 6. Conversely, the conduits receive canonical formatted data which is to be used to update the device and converts the same into the format of the respective device.
The device specific areas 8a, 10a, of each of conduits contain a static description of the devices' capabilities and indicates what types of records or fields can be synchronized and the list of fields for each record type which is supported by the respective device.
The structured deltas 8b, 10b retrieve the record or field which has been modified in the device and compares it with that stored in the conduit store 14. The structured delta effects the comparison and passes the change in the form known as a delta to the synchronized engine 6.
The mingler 16 receives the stream of deltas from each device in turn through the respective conduit and updates the Truth Table 20. The Truth Table is an amalgamated copy of the records from all of the devices involved in the synchronization system. Thus, during synchronization, each device is synchronized serially one at the time with the Truth Table and each record of the device being synchronized is synchronized with each record of the Truth Table. Hence, having obtained an amalgamation of all of the updated records from all of the devices, only then are the devices synchronized with the Truth Table, again serially.
Should any conflicts occur, then such conflicts are passed for conflict resolution through a user interface (not shown). The synchronization engine 6 also includes a synchronizer for effecting the functions of the mingler 16 and its affect on the Truth Table 20. In addition, the synchronizer 12 manages the communications to and from the conduits 8, 10. Finally, the schema 22 enables a user of the synchronization system to define the data to be synchronized, again through the user interface.
As discussed above, synchronization of data involves a large number of comparison steps. The excessively large number of comparison steps can be exacerbated when any device involved in the synchronization system is absent when the others are undergoing synchronization.
Hitherto, synchronization methods have been effected based upon the systems clocks defined by the devices. As noted earlier, those systems clocks can be modified either intentionally or malevolently. Thus, some devices, whose systems clocks have been changed, may be synchronized needlessly or, indeed, some data may not be included in the synchronization.
Thus, the present invention seeks to improve methods of synchronizing by optimally identifying only those comparison steps which need to be made. Accordingly, the present invention relates to a method of synchronizing between three or more devices, said method comprising:
Embodiments of the present invention will now be described by way of further example only and with reference to the accompanying drawings, in which:
The present invention relates to a method of synchronization which includes not only storing the actual data which has been changed but also together with logging the synchronization events and the devices involved in those events. Hence, as shown in
In
In
Since all of the clients were present during the third synchronization event and that all of the clients were updated with all of the changes indicated in the Truth Table, then it is possible to delete those changes from the Truth Table. This is shown in
In
In
In
In
In
In any case, having identified whether a conflict exists and having resolved that conflict, the Truth Table is then updated with the resolved conflict. Subsequent synchronization events and updating steps are then effected, as discussed previously.
As a consequence of storing the actual data changes together with the log of synchronization events and the devices involved, it is possible to optimally identify only those comparison steps which need to be effected. Moreover, since the base line upon which the synchronization method relies is the log of synchronization events and clients involved, any modification of the systems clocks will not affect the optimal efficiency of the synchronization method.
The present invention is applicable to any known synchronization system, device or data. In particular, the synchronization method according to the present invention is particularly useful to not only attribute data but also relationship data. In the example where the data comprises contact lists, a persons contact details may include home telephone number, work telephone number and mobile telephone number as well as various addresses including e-mail addresses of both work and home, and postal address and work address. Each of the contact details would be considered a field, whereas all of the contact details for a particular person would be considered the record. Either the field or the record may be considered attribute data. The contact list may also include the relationships between that person and other persons held in the contact list. This could include the fact that the first person is a brother to a second person. A third person's details may also be given together with the relationship that he is a father to both the first and second person. Any types of relationships may be given, not just relative relationships but also relationship information such as girlfriend, boyfriend or partner, work colleague or other contact relationships.
The Relationship Table includes details of the relationship from source record number 1 to target record number 2, to indicate that the relationship is a parent relationship. Conversely, record number 2 is indicated as having a relationship as a child from record number 2 to both record number 1 and record number 3.
In
The foregoing description has been given by way of example only and it will be appreciated by a person skilled in the art that modifications can be made without departing from the scope of the present invention.
Number | Name | Date | Kind |
---|---|---|---|
4937743 | Rassman et al. | Jun 1990 | A |
5129057 | Strope et al. | Jul 1992 | A |
5247438 | Subas et al. | Sep 1993 | A |
5323314 | Baber et al. | Jun 1994 | A |
5423023 | Batch et al. | Jun 1995 | A |
5457476 | Jenson | Oct 1995 | A |
5500938 | Cahill et al. | Mar 1996 | A |
5528745 | King et al. | Jun 1996 | A |
5621458 | Mann et al. | Apr 1997 | A |
5621876 | Odam et al. | Apr 1997 | A |
5634100 | Capps | May 1997 | A |
5659768 | Forbes et al. | Aug 1997 | A |
5664063 | Johnson et al. | Sep 1997 | A |
5761646 | Frid-Nielsen et al. | Jun 1998 | A |
5805163 | Bagnas | Sep 1998 | A |
5838889 | Booker | Nov 1998 | A |
5842009 | Borovoy et al. | Nov 1998 | A |
5855006 | Huemoeller et al. | Dec 1998 | A |
5860067 | Onda et al. | Jan 1999 | A |
5895451 | Yamade et al. | Apr 1999 | A |
5899979 | Miller et al. | May 1999 | A |
5960406 | Rasansky et al. | Sep 1999 | A |
6039355 | Durand | Mar 2000 | A |
6064975 | Moon et al. | May 2000 | A |
6085166 | Beckhardt et al. | Jul 2000 | A |
6101480 | Conmy et al. | Aug 2000 | A |
6167379 | Dean et al. | Dec 2000 | A |
6222549 | Hoddie | Apr 2001 | B1 |
6243325 | Tomono | Jun 2001 | B1 |
6278456 | Wang et al. | Aug 2001 | B1 |
6369840 | Barnett et al. | Apr 2002 | B1 |
6380959 | Wang et al. | Apr 2002 | B1 |
6397075 | Sastrodjojo et al. | May 2002 | B1 |
6421685 | Nishikawa | Jul 2002 | B1 |
6430576 | Gates et al. | Aug 2002 | B1 |
6456614 | Guan et al. | Sep 2002 | B1 |
6466236 | Pivowar et al. | Oct 2002 | B1 |
6604079 | Ruvolo et al. | Aug 2003 | B1 |
6728530 | Heinonen et al. | Apr 2004 | B1 |
6738789 | Multer et al. | May 2004 | B2 |
6785868 | Raff | Aug 2004 | B1 |
6868426 | Mankoff | Mar 2005 | B1 |
6889333 | Lawrence et al. | May 2005 | B2 |
6910052 | Gates et al. | Jun 2005 | B2 |
7006242 | Smith, II et al. | Feb 2006 | B2 |
7006484 | Hayama et al. | Feb 2006 | B2 |
7007041 | Multer et al. | Feb 2006 | B2 |
7024428 | Huang et al. | Apr 2006 | B1 |
7039596 | Lu | May 2006 | B1 |
7047011 | Wikman | May 2006 | B1 |
7143117 | Wolfgang et al. | Nov 2006 | B2 |
7213039 | Ramanujam et al. | May 2007 | B2 |
7280996 | Hayakawa et al. | Oct 2007 | B2 |
7584468 | Gates et al. | Sep 2009 | B2 |
20010002822 | Watters et al. | Jun 2001 | A1 |
20010014890 | Liu et al. | Aug 2001 | A1 |
20010044805 | Multer et al. | Nov 2001 | A1 |
20010049617 | Berenson et al. | Dec 2001 | A1 |
20020003787 | Hayama et al. | Jan 2002 | A1 |
20020010807 | Multer et al. | Jan 2002 | A1 |
20020131565 | Scheuring et al. | Sep 2002 | A1 |
20020184321 | Fishman et al. | Dec 2002 | A1 |
20020191035 | Selent | Dec 2002 | A1 |
20020196280 | Bassett et al. | Dec 2002 | A1 |
20030045301 | Wollrab | Mar 2003 | A1 |
20030050986 | Matthews et al. | Mar 2003 | A1 |
20030065677 | Culp et al. | Apr 2003 | A1 |
20030065742 | Culp et al. | Apr 2003 | A1 |
20030130984 | Quinlan et al. | Jul 2003 | A1 |
20040023634 | Jeong et al. | Feb 2004 | A1 |
20040039779 | Amstrong et al. | Feb 2004 | A1 |
20040054763 | Teh et al. | Mar 2004 | A1 |
20040073615 | Darling | Apr 2004 | A1 |
20040125142 | Mock et al. | Jul 2004 | A1 |
20040136404 | Mahonen et al. | Jul 2004 | A1 |
20050125737 | Allen et al. | Jun 2005 | A1 |
20050210104 | Torvinen | Sep 2005 | A1 |
20050222971 | Cary | Oct 2005 | A1 |
20060173917 | Kalmick et al. | Aug 2006 | A1 |
20080288578 | Silfverberg | Nov 2008 | A1 |
20090300221 | Gates et al. | Dec 2009 | A1 |
Number | Date | Country |
---|---|---|
0276427 | Aug 1988 | EP |
WO 0062146 | Oct 2000 | WO |
WO 0062201 | Oct 2000 | WO |
WO 0149051 | Jul 2001 | WO |
WO 0244958 | Jun 2002 | WO |
WO 02089026 | Nov 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20060031587 A1 | Feb 2006 | US |