Patent ID: 7974947

Claim:
A computer readable storage medium containing program instructions for synchronizing data stored on a client device with data stored on a server, wherein execution of program instructions by one or more processors of a computer system causes the one or more processors to carry out the steps of: the server determining a pre-image of the data stored on the client device, the pre-image being data stored on the client device as of a time of previous synchronization with the data stored on the server, the pre-image further being a subset of the data stored on the server as defined by a filter; the server determining a current image of the data stored on the server, the current image being data stored on the server that satisfies the filter as of a time of a current synchronization, the current image further being data that is to be stored on the client device as of the time of the current synchronization; the server determining a delta of the current image, the delta comprising data that exists in the current image and which has changed since the time of the previous synchronization; the server instructing the client device to delete data that exists in the pre-image but not in the current image; and the server instructing the client device to UPSERT a union of the data that exists in the delta and the data that exists in the current image but not the pre-image, the USPERT being an operation that is logically equivalent to a SQL update operation for rows of data that already exist within a table of the client device at the time of the current synchronization, the UPSERT further being an operation that is logically equivalent to a SQL insert operation for rows of data that are not within a table of the client device at the time of the current synchronization.