Data processing: database and file management or data structures – Database design – Data structure types
Reexamination Certificate
2000-12-14
2003-09-23
Mizrahi, Diane D. (Department: 2175)
Data processing: database and file management or data structures
Database design
Data structure types
C707S793000
Reexamination Certificate
active
06625621
ABSTRACT:
COPYRIGHT NOTICE
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
BACKGROUND OF THE INVENTION
The present invention relates generally to information processing. More particularly, the present invention relates to systems and methods for processing messages at a centralized processing node (e.g., server) according to some protocol. Even more particularly, the present invention relates to systems and methods for processing, at a server, messages for synchronizing independently modifiable user datasets, for example, for multiple users having user accounts at the server.
Increasingly, people are discovering the power of computer-based personal information managers (PIMs) for managing appointments and other personal information such as tasks (“to-do's”) and addresses. Individuals employ PIMs, for example, on personal computers (PCs), handheld electronic devices, and World Wide Web servers accessed via browsers. Examples of PC-based PIMs include the Sidekick® software application, which is available from Starfish® Software, Inc. (“Starfish”), the present assignee. Examples of handheld-device-based PIMs include the StarTAC® clipOn Organizer device and the REX PRO™ organizer device—both of which include licensed technology from Starfish—as well as the popular Palm family of organizer devices. Examples of “Web-based” PIMs include an online PIM provided by Starfish at the World Wide Web site of truesync.com. Starfish®, Sidekick®, and TrueSync® are registered trademarks of Starfish. StarTAC® is a registered trademark of Motorola, Inc. of Schaumburg, Ill. Starfish is a wholly owned subsidiary of Motorola, Inc. REX™ and REX PRO™ are trademarks of Franklin Electronic Publishers of Burlington, N.J. Palm organizers are produced by Palm Computing, Inc., a subsidiary of 3Com Corp. of Santa Clara, Calif.
The use of PIMs is ever expanding, and it has become common for an individual person to keep multiple “copies” of the same information on separate devices. For example, a user may keep his or her appointments in a dataset (i.e., collection of data) on a desktop PC at work, in a dataset on a handheld device for use in the field, and in a dataset on a remotely-accessible server (e.g., a World Wide Web server) for use anywhere in the world. Such a user is free to change the information in any one of these datasets independently of the other datasets. By doing so, the user typically spoils the equivalence between the datasets. Therefore, the user would typically synchronize these personal datasets occasionally to bring them back into equivalence. To perform such synchronization, the user generally uses a synchronization system, for example, one that is described in commonly owned U.S. Pat. No. 5,519,606, which is hereby incorporated by reference.
In synchronizing data among datasets, speed is helpful. In particular, the amount of time that a user perceives is being spent or “tied up” on synchronization should be minimized. This need to minimize perceived synchronization time is especially important if the user is using a dataset that, during synchronization, is not capable of being used in an ordinary fashion (e.g., is not capable of being viewed or is not capable of being altered). Even more particularly, when the user synchronizes with a dataset that is on a remotely-accessible server, the synchronization speed should remain high even if the server is handling a large number of synchronizations per unit of time, for example, for a large number of datasets maintained by the server for a large number of users. In short, a synchronization scheme is needed that is both fast and scalable for handling large numbers of synchronizations per unit of time, especially when used for server-based synchronization. Furthermore, the integrity of synchronization should be maintained such that, for example, loss of synchronization messages in transit is properly handled. The present invention satisfies these and other needs.
SUMMARY OF THE INVENTION
One embodiment of the present invention comprises a method of synchronizing a client dataset of a synchronization client with a reference dataset of a synchronization server. In this method, a plurality of synchronization messages are received at the synchronization server from the synchronization client and the messages are queued according to a set of rules. Under these rules, if a message is a change message, a change identifier is read from the message, the change identifier is written into a change ID list, the message is placed in a queue for possible non-sequential processing, and another message is received. Also, under these rules, if a message is not a change message, the message is made available for immediate processing as an unqueued message, and the message is processed before another message is received. Also in the method, the plurality of synchronization messages is processed according to another set of rules. Under this other set of rules, if there is at least one queued message and there is no unqueued message, the next queued message is processed. If there is an unqueued message and there is no queued message, the unqueued message is processed. If there is at least one queued message and there is an unqueued message, and if processing the unqueued message requires that the reference dataset be up-to-date, then the next queued message is processed. If there is at least one queued message and there is an unqueued message, and if processing the unqueued message does not require that the reference dataset be up-to-date, then the unqueued message is processed. Also in the method, processing a change confirmation request message involves reading change identifiers from the change ID list and generating a change confirmation message.
In another embodiment of the invention, the above method further comprises the step of sending change messages to the synchronization client to indicate changes to be made to the client dataset. In another embodiment, processing a change message involves performing a conflict resolution and entering the change into a reference dataset if the change survives the conflict resolution. In another embodiment, messages are sent between the synchronization client and the synchronization server in the form of action objects. In another embodiment, a change message may comprise an update to an existing data record, an addition of a new data record or a deletion of an existing data record.
A different embodiment of the present invention involves a method for processing a plurality of synchronization messages received from a synchronization client. Here, the method comprises the steps of receiving the plurality of synchronization messages from the synchronization client and controlling the queuing of the messages according to a set of rules. Under these rules, if a message is queueable, the message is placed on a queue for possible nonsequential processing and another message is received. If a message is nonqueueable, the message is made available for immediate processing as an unqueued message and the message is processed before proceeding to receive another message. Also in the method, the plurality of synchronization messages is processed according to another set of rules. Under this set of rules, if there is at least one queued message and there is no unqueued message, the next queued message is processed. If there is an unqueued message and there is no queued message, the unqueued message is processed. If there is at least one queued message and there is an unqueued message, and if the unqueued message requires that the queue be cleared before processing the unqueued message, the next queued message is processed. If there is at least one queued message and there is an unqueued message, and if the unqueued message doe
LaRue Chris
Liu Quowong Peter
Tan Chong-Kwan
Beffel, Jr. Ernest J.
Haynes Beffel & Wolfeld LLP
Mizrahi Diane D.
Starfish Software, Inc.
LandOfFree
System and methods for a fast and scalable synchronization... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with System and methods for a fast and scalable synchronization..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and System and methods for a fast and scalable synchronization... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3005957