Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

Systems and methods for synchronizing multiple copies of data in a network environment that includes servers and clients so that incremental changes made to one copy of the data can be identified, transferred, and incorporated into all other copies of the data. The synchronization can be accomplished regardless of whether modifications to the data have been made by a client while the client is in an on-line or off-line mode of operation. The clients cache data locally as data are modified and downloaded. The caching enables the clients to access the data and allows the synchronization so be performed without transmitting a particular version more than once between a client and a server. Such elimination of redundant data transmission results in an efficient use of time and network bandwidth.

InventorsAlexander I. Hopmann, Rebecca L. Anderson, Brian J. Deen
Original AssigneeMicrosoft Corporation
Primary Examiner: Meng-Al T. An
Secondary Examiner: Kenny Lin
Attorney: Workman, Nydegger & Seeley
Current U.S. Classification707/625; 707/691; 707/695; 707/758; 707/959; 707/999.201; 707/999.202; 707/E17.005; 709/203
International Classification: G06F/1200

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US5600834Apr 5, 1995Feb 4, 1997Mitsubishi Electric Information Technology Center America, Inc.Method and apparatus for reconciling different versions of a file
US5737601Jan 16, 1997Apr 7, 1998Oracle CorporationMethod and apparatus for peer-to-peer data replication including handling exceptional occurrences
US5787262Jun 26, 1996Jul 28, 1998Microsoft CorporationSystem and method for distributed conflict resolution between data objects replicated across a computer network
US5812773Jul 12, 1996Sep 22, 1998Microsoft CorporationSystem and method for the distribution of hierarchically structured data
US5812793Jun 26, 1996Sep 22, 1998Microsoft CorporationSystem and method for asynchronous store and forward data replication
US5884325Oct 9, 1996Mar 16, 1999Oracle CorporationSystem for synchronizing shared data between computers
US5884328Aug 29, 1997Mar 16, 1999Tandem Computers, Inc.System and method for sychronizing a large database and its replica
US5924094Nov 1, 1996Jul 13, 1999Current Network Technologies CorporationIndependent distributed database system
US5924096Oct 15, 1997Jul 13, 1999Novell, Inc.Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
US5991771Jul 3, 1997Nov 23, 1999Novell, Inc.Transaction synchronization in a disconnectable computer and network
US6058401May 20, 1998May 2, 2000Oracle CorporationMethod for data replication with conflict detection
US6405218Oct 9, 1998Jun 11, 2002Pumatech, Inc.Synchronizing databases

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US6694335Oct 4, 1999Feb 17, 2004Microsoft CorporationMethod, computer readable medium, and system for monitoring the state of a collection of resources
US6754696Mar 24, 2000Jun 22, 2004Micosoft CorporationExtended file system
US6944642Oct 4, 1999Sep 13, 2005Microsoft CorporationSystems and methods for detecting and resolving resource conflicts
US6959331Aug 14, 2000Oct 25, 2005Sun Microsystems, Inc.System and method for operating a client network computer in a disconnected mode by establishing a connection to a fallover server implemented on the client network computer
US6996817Dec 11, 2002Feb 7, 2006Valve CorporationMethod and system for upgrading and rolling back versions
US7032033Nov 30, 2001Apr 18, 2006Microsoft CorporationHandling collisions during synchronization of data between client and server computers
US7143419Jun 5, 2002Nov 28, 2006SAP AGDevice for running offline applications and synchronizing with a central computer system
US7162543Jun 5, 2002Jan 9, 2007SAP AGProcess for synchronizing data between remotely located devices and a central computer system
US7203708Nov 6, 2003Apr 10, 2007Microsoft CorporationOptimizing file replication using binary comparisons
US7243226Dec 11, 2002Jul 10, 2007Valve CorporationMethod and system for enabling content security in a distributed system
US7275105Mar 25, 2002Sep 25, 2007Laszlo Systems, Inc.Enabling online and offline operation
US7290040Dec 11, 2002Oct 30, 2007Valve CorporationMethod and system for load balancing an authentication system
US7373406Dec 11, 2002May 13, 2008Valve CorporationMethod and system for effectively communicating file properties and directory structures in a distributed file system
US7392390Dec 11, 2002Jun 24, 2008Valve CorporationMethod and system for binding kerberos-style authenticators to single clients
US7447745Jan 5, 2003Nov 4, 2008Flash Networks, LtdSystem and a method for accelerating communication between a client and an email server
US7505921Mar 3, 2000Mar 17, 2009Finali CorporationSystem and method for optimizing a product configuration
US7526561Dec 8, 2006Apr 28, 2009Laszlo Systems, Inc.Enabling online and offline operation
US7542999Apr 7, 2004Jun 2, 2009Microsoft CorporationExtended file system
US7558773May 10, 2007Jul 7, 2009Convergys CMG Utah, Inc.Expert supported interactive product selection and recommendation
US7571224Oct 29, 2004Aug 4, 2009International Business Machines CorporationMethod for using presence in a system management environment
US7580972Dec 11, 2002Aug 25, 2009Valve CorporationMethod and system for controlling bandwidth on client and server
US7680941Dec 8, 2006Mar 16, 2010Laszlo Systems, Inc.Enabling online and offline operation
US7685416Apr 19, 2007Mar 23, 2010Valve CorporationEnabling content security in a distributed system
US7857701Mar 12, 2004Dec 28, 2010Microsoft CorporationSilent sign-in for offline games
US7885820Jul 19, 2001Feb 8, 2011Convergys CMG Utah, Inc.Expert system supported interactive product selection and recommendation
US7895261Dec 12, 2002Feb 22, 2011Valve CorporationMethod and system for preloading resources
US7899917Feb 1, 2007Mar 1, 2011Microsoft CorporationSynchronization framework for occasionally connected applications
US7908178Jul 31, 2009Mar 15, 2011Methods for interactive and synchronous displaying session
US7979055Dec 5, 2001Jul 12, 2011NTT DoCoMo, Inc.Apparatus and method for providing contents
US8027953Mar 8, 2002Sep 27, 2011Intellisync CorporationSystem and methods for synchronizing datasets using cooperation among multiple synchronization engines
US8069087Feb 16, 2010Nov 29, 2011Methods for interactive and synchronous display session
US8108687Dec 11, 2002Jan 31, 2012Valve CorporationMethod and system for granting access to system and content
US8200623Mar 19, 2007Jun 12, 2012Microsoft CorporationOptimizing file replication using binary comparisons
US8219527Mar 3, 2011Jul 10, 2012Kabushiki Kaisha ToshibaFile processing apparatus, file processing method, and computer program product

Claims

1. In a networked system including a server and a client, wherein the server stores a resource, a method of enabling a client to access the resource, comprising the steps of:

transmitting, from the server to the client, resource state information that represents the state of the resource stored at the server at a selected moment;
transmitting, from the server to the client, a copy of the resource as it exists at the server at the selected moment;
storing the copy of the resource in a local store associated with the client;
modifying the copy of the resource stored in the local store;
transmitting the modified copy and the resource state information from the client to the server;
based on the resource state information transmitted to the server, determining whether the resource stored at the server has changed since the selected moment; and
if it is determined that the resource stored at the server has not changed, replacing the resource stored at the server with the modified copy.

2. A method as recited in claim 1, wherein the local store is a nonvolatile storage device that is used as a cache.

3. A method as recited in claim 1, wherein the step of modifying is conducted by the client while the client is off-line with respect to the server.

4. A method as recited in claim 1, further comprising, after the step of replacing, the step of transmitting new resource state information to the client.

5. A method as recited in claim 1, wherein the step of transmitting the modified copy comprises the step of storing the modified copy at the local store without transmitting the modified copy from the server to the client.

6. A method as recited in claim 1, wherein the step of determining whether the resource stored at the server has changed since the selected moment comprises the step of comparing, at the server, the resource state information transmitted to the server with a current version of the resource state information, wherein the current version of the resource state information represents the state of a version of the resource stored at the client at the time of the step of comparing.

7. A method as recited in claim 6, wherein the step of comparing results in a determination that the resource state information transmitted to the server and the current version of the resource state information are the same, thereby determining that the resource stored at the server has not changed.

8. A method as recited in claim 6, wherein the step of comparing results in a determination that the resource state information transmitted to the server and the current version of the resource state information are different, thereby determining that the resource stored at the server has changed, the method further comprising the step of performing a conflict resolution operation in response to the resource stored at the server having changed.

9. A method as recited in claim 1, further comprising the step of storing, in the local store, the resource state information.

10. A method as recited in claim 1, wherein step of transmitting the copy of the resource from the server to the client is performed only once.

11. In a client associated with a networked system that includes a server that stores a resource, a method for accessing the resource and then interacting off-line with the resource in a manner such that it appears, from the standpoint of the client, that the client is on-line, comprising the steps of:

while the client is on-line with the server, receiving from the server a copy of the resource and resource state information representing the state of the resource stored at the server at a selected moment;
storing the copy of the resource in a local store associated with the client;
placing the client in an off-line condition with respect to the server; and
performing a data operation on the copy of the resource while the client is off-line by accessing the copy of the resource in the local store, the data operation resulting in a modified copy of the resource; and
synchronizing the resource stored at the server with the modified copy of the resource while the client is subsequently on-line after the step of performing the data operation, the synchronization being performed at least in part by transmitting to the server the copy or the resource stored at the client, and the resource state information.

12. A method as recited in claim 11, further comprising the steps of:

determining whether the resource stored at the server has changed since the selected moment based on the resource state information transmitted to the server; and
if it is determined that the resource stored at the server has not changed, replacing the resource stored at the server with the modified copy.

13. A method as recited in claim 11, wherein the data operation includes a read operation.

14. A method as recited in claim 11, wherein the data operation includes a write operation.

15. A method as recited in claim 11, wherein the data operation includes a delete operation.

16. A computer program product for implementing, in a server included in a network that also includes at least a first client and a second client, a method for synchronizing multiple copies of a resource that are stored at various locations in the network, the computer program product comprising:

a computer-readable medium carrying computer-executable instructions for implementing the method, the computer-executable instructions comprising:
program code means for generating resource state information that represents the current state of a resource stored at the server;
program code means for transmitting, from the server to the first client, a copy of the resource state information as it exists at the server at the selected moment and a copy of the resource as it exists at the selected moment;
program code means for receiving a request to update the resource stored at the server with a modified copy of the resource generated by the first client, the request including the copy of the resource state information;
program code means for determining whether a conflict exists in response to the request by comparing the copy of the resource state information received from the first client with the resource state that represents the current state of the resource stored at the server; and
program code means for replacing the resource stored at the server with the modified copy if it is determined that no conflict exists.

17. A computer-readable medium as recited in claim 16, wherein the computer-executable instructions further comprise program code means for performing conflict resolution if it is determined that a conflict exists.

18. A computer-readable medium as recited in claim 16, wherein the request to update the resource is encoded in an XML language.

19. A computer program product for implementing, in a server included in a network that also includes at least a first client and a second client, a method for synchronizing multiple copies of a resource that are stored at various locations in the network, the computer program product comprising:

a computer-readable medium carrying computer-executable instructions for implementing the method, the computer-executable instructions comprising:
program code means for generating resource state information that represents the current state of a resource stored at the server;
program code means for transmitting, from the server to the first client, a copy of the resource state information as it exists at the server at the selected moment and a copy of the resource as it exists at the selected moment;
program code means for receiving a request to update the resource stored at the server with a modified copy of the resource generated by the first client, the request including the copy of the resource state information;
program code means for determining whether a conflict exists in response to the request by comparing the copy of the resource state information received from the first client with the resource state that represents the current state of the resource stored at the server; and
program code means for performing conflict resolution if it is determined that a conflict exists.

20. A computer-readable medium as recited in claim 19, wherein the request to update the resource is encoded in an XML language.