WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Synchronization of disparate databases    
United States Patent5684990   
Link to this pagehttp://www.wikipatents.com/5684990.html
Inventor(s)Boothby; David J. (Nashua, NH)
AbstractA data processing method for synchronizing the data records of a plurality of disparate databases, in which a status file is provided containing data records representative of the contents of data records existing in the disparate databases at a prior synchronization. Data records from at least a first and a second of the plurality of databases are compared to corresponding data records of the status file to determine whether data records of the plurality of databases have changed or been deleted since the prior synchronization, or whether there are new data records since the earlier synchronization. Based on the outcome of the comparing step, decisions are made as to how to update the data records of the first and second databases. Finally, the status file is updated so that its data records are representative of the contents of the data records of the first and second databases after they have been updated.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5684990
Synchronization of disparate databases - US Patent 5684990 Drawing
Synchronization of disparate databases
Inventor     Boothby; David J. (Nashua, NH)
Owner/Assignee     Puma Technology, Inc. (San Jose, CA)
Patent assignment
All assignments
Publication Date     November 4, 1997
Application Number     08/371,194
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     January 11, 1995
US Classification     707/203
Int'l Classification     G06F 017/30
Examiner     Black; Thomas G.
Assistant Examiner     Min; Donald D.
Attorney/Law Firm     Fish & Richardson P.C.
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/600 395/610 395/619 395/620
Patent Tags     synchronization disparate databases
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5519606
Frid-Nielsen
705/9
May,1996

[0 after 0 votes]
5475833
Dauerer

Dec,1995

[0 after 0 votes]
5434994
Shaheen

Jul,1995

[0 after 0 votes]
5392390
Crozier

Feb,1995

[0 after 0 votes]
5355476
Fukumura
707/1
Oct,1994

[0 after 0 votes]
5339392
Risberg
715/762
Aug,1994

[0 after 0 votes]
5339434
Rusis
709/246
Aug,1994

[0 after 0 votes]
5333252
Brewer, III
715/506
Jul,1994

[0 after 0 votes]
5327555
Anderson

Jul,1994

[0 after 0 votes]
5315709
Alston, Jr.
707/6
May,1994

[0 after 0 votes]
5301313
Terada
707/4
Apr,1994

[0 after 0 votes]
5283887
Zachery
715/513
Feb,1994

[0 after 0 votes]
5272628
Koss
715/503
Dec,1993

[0 after 0 votes]
5261045
Scully
715/751
Nov,1993

[0 after 0 votes]
5261094
Everson
707/201
Nov,1993

[0 after 0 votes]
5251291
Malcolm
715/539
Oct,1993

[0 after 0 votes]
5237678
Kuechler
707/5
Aug,1993

[0 after 0 votes]
5210868
Shimada
707/5
May,1993

[0 after 0 votes]
5187787
Skeen
719/314
Feb,1993

[0 after 0 votes]
5142619
Webster, III
715/803
Aug,1992

[0 after 0 votes]
5065360
Kelly

Nov,1991

[0 after 0 votes]
4956809
George
707/101
Sep,1990

[0 after 0 votes]
4875159
Cary
707/203
Oct,1989

[0 after 0 votes]
4866611
Cree
708/112
Sep,1989

[0 after 0 votes]
4807182
Queen
715/511
Feb,1989

[0 after 0 votes]
4432057
Daniell
707/8
Feb,1984

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A data processing method for synchronizing the data records of a plurality of disparate databases, the method comprising the steps of:

providing a status file containing data records reflecting the contents of data records existing in at least one of the disparate databases at the time of a prior synchronization;

comparing data records from at least one of a first and a second of the plurality of databases to corresponding data records of the status file to determine whether data records of the database have changed or been deleted since the prior synchronization or whether there are new data records since the earlier synchronization;

updating the first and second databases based on the outcome of the comparing step; and

updating the status file so that its data records reflect the contents of the data records after they have been updated.

2. The method of claim 1 wherein the comparing step further comprises deciding whether to delete a data record from the first database based on the comparing step having determined that the corresponding record of the second database has been deleted since the earlier synchronization.

3. The method of claim 2 wherein the comparing step comprises three steps:

a first comparing step comprising comparing data records from the first database to corresponding data records of the status file to determine whether any of the data records of the plurality of databases have changed or been deleted since the prior synchronization or whether there are new data records since the earlier synchronization;

storing new status file data records representative of new data records found in the first comparing step; and

a second comparing step comprising comparing data records from the second database to corresponding data records of the status file and to the new status file data records.

4. The method of claim 3 wherein status indicators for each of the first and second databases are produced on the basis of the outcome of the first and second comparing steps.

5. The method of claim 4 wherein the status indicators comprise indicators indicative of the following outcomes of the comparisons performed in the first and second comparing steps: (1) the database record is unchanged relative to the corresponding status file data record; (2) the database record is changed relative to the corresponding status file data record; (3) the database record is absent from the status file data records; (4) the database record is new, meaning it is not among the status file data records.

6. The method of claim 5 wherein the status file has a single set of data records, one corresponding to each data record of the first and second databases at the prior synchronization.

7. The method of claim 6 wherein the data records of the first and the second databases are without unique identification codes.

8. The method of claim 11 wherein data records of the status file are identified by at least one key field of the first database.

9. The method of claim 7 wherein the correspondence between data records of the first and second databases is achieved by comparing key fields of the databases.

10. The method of claim 4 wherein the status indicators comprise indicators indicative of the following outcomes of the comparisons performed in the comparing step: (1) the database record is unchanged relative to the corresponding status file data record; (2) the database record is changed relative to the corresponding status file data record; (3) the database record is absent from the status file data records; (4) the database record is new, meaning it is not among the status file data records.

11. The method of claim 3 wherein the second comparing step further comprises storing further new status file data records representative of new data records found in the second comparing step.

12. The method of claim 11 wherein a set of workspace data records are used during synchronization, the workspace data records each having an identifier corresponding to the identifier of the data records in the status file, and status indicator for each of the first and second databases.

13. The method of claim 12 wherein the new status file data records are stored first as workspace data records.

14. The method of claim 13 wherein following completion of the first and second comparing steps, the workspace data records are processed by comparing each pair of stored status indicators to a decision matrix to determine an action to be taken in updating the first and second databases.

15. The method of claim 11 wherein the second comparing step further comprises examining for unused exact matches in the data records of the second database.

16. The method of claim 11 wherein the second comparing step further comprises examining for key field matches in the data records of the second database.

17. The method of claim 2 wherein the status file has a single set of data records, one corresponding to each data record of the first and second databases at the prior synchronization.

18. The method of claim 2 wherein at least the data records of the first database are each identified by unique identification codes.

19. The method of claim 18 wherein data records of the status file are identified by the unique identification code of the first database.

20. The method of claim 18 wherein the correspondence between data records of the first and second databases is achieved by comparing key fields of the databases.

21. A data processing system for synchronizing the data records of a plurality of disparate databases, the system comprising:

means for providing a status file containing data records reflecting the contents of data records existing in at least one of the disparate databases at the time of a prior synchronization;

means for comparing data records from at least one of a first and a second of the plurality of databases to corresponding data records of the status file to determine whether data records of the database have changed or been deleted since the prior synchronization or whether there are new records since the prior synchronization;

means for updating the first and second databases based on the outcome of the comparing step; and

means for updating the status file so that its data records reflect the contents of the data records after they have been updated.

22. The system of claim 21 wherein the deciding further comprises deciding whether to delete a data record from the first database based on the comparing having determined that the corresponding record of the second database has been deleted since the earlier synchronization.

23. The system of claim 22 wherein the means for comparing comprises:

a first comparing comprising comparing data records from the first database to corresponding data records of the status file to determine whether any of the data records of the plurality of databases have changed or been deleted since the prior synchronization or whether there are new data records since the earlier synchronization;

storing new status file data records representative of new data records found in the first comparing; and

a second comparing comprising comparing data records from the second database to corresponding data records of the status file and to the new status file data records.

24. The system of claim 23 wherein status indicators for each of the first and second databases are produced on the basis of the outcome of the first and second comparing.

25. The system of claim 24 wherein the status indicators comprise indicators indicative of the following outcomes of the comparisons performed in the first and second comparing: (1) the database record is unchanged relative to the corresponding status file data record; (2) the database record is changed relative to the corresponding status file data record; (3) the database record is absent from the status file data records; (4) the database record is new, meaning it is not among the status file data records.

26. The system of claim 25 wherein the status file has a single set of data records, one corresponding to each data record of the first and second databases at the prior synchronization.

27. The system of claim 26 wherein the data records of the first and the second databases are without unique identification codes.

28. The system of claim 27 wherein data records of the status file are identified by at least one key field of the first database.

29. The system of claim 27 wherein the correspondence between data records of the first and second databases is achieved by comparing key fields of the databases.

30. The system of claim 24 wherein the status indicators comprise indicators indicative of the following outcomes of the comparisons performed in the comparing: (1) the database record is unchanged relative to the corresponding status file data record; (2) the database record is changed relative to the corresponding status file data record; (3) the database record is absent from the status file data records; (4) the database record is new, meaning it is not among the status file data records.

31. The system of claim 23 wherein the second comparing further comprises storing further new status file data records representative of new data records found in the second comparing.

32. The system of claim 31 wherein a set of workspace data records are used during synchronization, the workspace data records each having an identifier corresponding to the identifier of the data records in the status file, and status indicator for each of the first and second databases.

33. The system of claim 32 wherein the new status file data records are stored first as workspace data records.

34. The system of claim 33 wherein following completion of the first and second comparing, the workspace data records are processed by comparing each pair of stored status indicators to a decision matrix to determine an action to be taken in updating the first and second databases.

35. The system of claim 32 wherein the second comparing further comprises examining for unused exact matches in the data records of the second database.

36. The system of claim 32 wherein the second comparing further comprises examining for key field matches in the data records of the second database.

37. The system of claim 22 wherein the status file has a single set of data records, one corresponding to each data record of the first and second databases at the prior synchronization.

38. The system of claim 22 wherein at least the data records of the first database are each identified by unique identification codes.

39. The system of claim 38 wherein data records of the status file are identified by the unique identification code of the first database.

40. The system of claim 38 wherein the correspondence between data records of the first and second databases is achieved by comparing key fields of the databases.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

This invention relates to programs that synchronize databases.

There are many situations in which it is important for a user to be able to synchronize databases among computers. For instance, many users have handheld computers, which typically weigh less than a pound, fit in a pocket, and provide some combination of personal information management functions, database functions, word processing functions, and spreadsheet functions. Many users of handheld computers also own desktop computers used for applications that manage databases similar to the databases carried in handheld computers. Typically the user adds data to the two computers independently, e.g., one enters data into the handheld computer when out at a customer site but enters data into the desktop computer when in the office. In such cases, the user normally would at some point want to synchronize the databases on the handheld and desktop databases, i.e., automatically review changes made to the databases on the two computers, and revise the data in both databases so that both have the same and most current data.

Databases are collections of data organized as data records, each composed of a number of data fields. For example, in an address database, a very simple data record might be "John, Smith, Smith Co.", where "John" is the information content of a FIRSTNAME field, "Smith" is the information content of a LASTNAME field, and "Smith Co." is the information content of a COMPANYNAME field.

Databases are managed by two broad classes of programs, database managers and special-purpose application programs (both referred to herein as database programs). A database manager is a program for managing general databases, that is, databases in which the structure of the data records can be specified at creation time by the user. Other databases are managed by special-purpose application programs, e.g., a telephone directory program of a handheld computer. Unlike the record structures of general databases, the record structures of these special-purpose databases typically are not specified by the user.

There are generally two ways in which software can specify a record in these databases. One or more of the fields of a record can be designated as a key, with particular records being specified by the contents of the key (e.g., the above-mentioned address database might use the LASTNAME field as a key, so that records could be specified by the contents of that field). Records can also be specified using unique identification numbers ("unique IDs"), assigned by the database program at the time the record is created.

There are known techniques for synchronizing databases, but they generally depend on the databases having been specially designed to facilitate synchronization. For example, MICROSOFT.TM. Schedule+ permits multiple Schedule+ databases to be synchronized, but this is only possible because Schedule+ was specially designed with synchronization in mind. Similarly, directory databases built in conformance with the CCITT X.500 international standard can be synchronized by virtue of conforming to this standard. One way in which synchronization is achieved in such products is by the use of unique IDs assigned when a record is created. During synchronization, the software is able to use the unique IDs to compare the contents of corresponding data records in the two databases (e.g., corresponding data records for the same dinner appointment can be compared even if the date, time, or description for the appointment has been changed in one or both databases).

Another feature available for synchronizing databases specially designed for synchronization are not-yet-synchronized flags, which are set whenever a record is changed (e.g., when a dinner appointment is moved to a new date and time). If the software finds a discrepancy during synchronization, the program then checks each record's not-yet-synchronized flag and, if one flag is set and the other is not, the data in the record with the set flag prevails because it is assumed to be newer. If both flags are set, the data transfer program resorts to using a trump rule (e.g., handheld always prevails over desktop) or interacting with the user because the program does not have enough information to choose one over the other. After synchronization all of the flags are reset.

Also available when databases have been specially designed for synchronization is a time-and-date-of-last-modification stamp for every record stored in the databases. Assuming sufficiently accurate synchronization of the time-and-date clocks of the computers running the databases, the synchronization program can always determine, even if both of the corresponding items have been changed since last synchronization, which change is the most recent, and assume that the more recent record prevails. But such time and date stamping of records will typically be impracticable owing to the scarcity of memory and file space, especially on a handheld computer.

With databases not specially designed for synchronization, there has not heretofore been any practical technique for synchronization. It has been necessary to use either (1) brute force replacement of all of the records of one database with all of the records of the other (e.g., using software such as LapLink) or (2) a reconciliation technique developed by IntelliLink Corp., of Nashua, N.H. (described in U.S. patent application Ser. No. 07/867,167, now U.S. Pat. No. 5,392,390 filed on Apr. 10, 1992; incorporated by reference).

IntelliLink's reconciliation technique uses key fields (e.g., the date and time of appointments in a calendar database) to establish a correspondence between records of the two databases, and then examines the records for differences (e.g., a different appointment description for the same date and time). The differences are reconciled either by invoking one or more trump rules (e.g., handheld always prevails over desktop) or by interacting with the user (e.g., by displaying the relevant mismatching information and asking the user to choose).

An advantage of the reconciliation technique is its ability to handle disparate databases (e.g., databases with different data structures, designed for use with different application software and on different computer platforms). To do its job, the IntelliLink reconciliation technique does not require the presence of special synchronization-enabling features such as unique IDs, not-yet-synchronized flags, or time-and-date-of-last-modification stamps. It can work with databases of radically different design, by first translating the differently structured databases into a common intermediate format, and then using key fields to establish correspondence between records. Yet despite those advantages, and the fact that the reconciliation technique was a huge improvement over the brute force replacement technique that existed before it, reconciliation still falls short of real synchronization.

One difficulty with the existing reconciliation technique is that unless a trump rule such as "handheld always prevails over desktop" is employed, the user is interrogated every time there is a data mismatch, and that interrogation necessarily takes up a lot of time.

In addition, the reconciliation technique does not handle data deletions well, because it inherently assumes that if an item on one computer is empty and its corresponding item on the other computer is not, the empty item should be updated with the non-empty item. This means, e.g., that when a user deletes an appointment from a calendar database on one computer, that appointment could be restored during reconciliation, defeating the user's attempt to delete it.

SUMMARY OF THE INVENTION

The invention makes possible synchronization of disparate databases, overcoming the shortcomings of the prior reconciliation technique. It does so by providing a status file which allows the synchronization program to determine if data records in one or more databases have been changed or deleted since the last synchronization, or whether new data records have been added.

Preferably, the status file contains the data present in the two databases after the most recent synchronization. Corresponding sets of records are chosen from each of the two databases and from the status file, and a comparison is made of the information content of the records. Based on that comparison, updating decisions are made for each set of records, for example, decisions are made whether to select the information content of one database record over the information content of the other, and finally the selected information is written to the status file as well as the databases.

The invention makes it possible to synchronize databases of radically different design, operating on different computer platforms. E.g., a calendar database proprietary to a particular handheld computer or personal digital assistant (PDA) can now be synchronized with a calendar database running on a user's desktop (e.g., LOTUS Organizer.TM., or MICROSOFT.TM. Schedule+).

With the invention, it becomes quite practical for a person to use both a PDA and a desktop calendar database in a group scheduling environment, i.e., one in which calendar databases are interconnected between users so that appointments may be added and deleted automatically. Now if an appointment is added or deleted on one database, for example, the user's desktop, the synchronization process of the invention can recognize that such has occurred and automatically update the other during a synchronization.

Synchronization of disparate databases can be performed with much less user interaction than was necessary with the prior reconciliation technique. E.g., by applying a rule that newer database changes prevail over older changes, in connection with a preferred decision matrix, the user can allow synchronization to occur with minimal or no interaction.

The invention permits databases that were specially designed for synchronization to be synchronized with databases that were not so designed. Embodiments of the invention can work with databases that provide time-and-date-of-last-modification stamps, not-yet-synchronized flags, or unique IDs, but also with databases that provide no such stamps, flags, or IDs.

The invention also provides a backup function for information in a database because the status file can be used to reconstruct a complete, earlier version of the database.

The invention may be used to synchronize two or more databases on the same computer or on different computers.

Other features and advantages of the invention will be apparent from the following description of preferred embodiments, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates both a handheld and a desktop computer, and shows, diagrammatically, a database and data records for each.

FIG. 2 shows a handheld database, status file, desktop database, and temporary workspace of a preferred embodiment of the invention.

FIG. 3 is a flowchart of the preferred embodiment.

FIGS. 4-6 are three sections of a flowchart showing the preferred embodiment in more detail.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Shown in FIG. 1 are two computers on which disparate databases reside, a database 7 in a handheld computer 1 and a database 11 in a desktop computer 3. Synchronization depends on knowledge of: (1) how records 5 in one database 7 correspond to records 9 in the other 11 and (2) the history of updates in each database. For correspondence, the synchronization program relies on the basic translation and mapping capabilities of the prior IntelliLink reconciliation technique (e.g., as described in U.S. patent application Ser. No. 07/867,167, now U.S. Pat. No. 5,392,390 filed on Apr. 10, 1992, referred to earlier).

The synchronization program is typically run repeatedly over time. E.g., the user may choose to run synchronization daily, weekly, or on an irregular "as needed" basis.

When conflicts are detected during synchronization (i.e., differences in the content of key fields), they may be resolved automatically or interactively, depending on user preference. The user may select among different automatic rules, including:

1. Always propagate deletions even if that means deleting a recently changed item.

2. Let handheld changes override desktop changes.

3. Let desktop changes override handheld changes.

4. Keep both versions and no longer attempt to reconcile them.

5. Leave the conflict unresolved.

If a conflict is to be resolved interactively, the user is presented with a dialog box that allows the user to select one of these rules.

Since it is possible that a user may enter the same new information into both the handheld and the desktop computer, the synchronization program checks for this possibility in order to avoid duplication of data. The program compares all new desktop records with all new handheld records, and, when matches are found, the matches