US20060106879A1 - Conflict resolution in a synchronization framework - Google Patents

Conflict resolution in a synchronization framework Download PDF

Info

Publication number
US20060106879A1
US20060106879A1 US10/989,565 US98956504A US2006106879A1 US 20060106879 A1 US20060106879 A1 US 20060106879A1 US 98956504 A US98956504 A US 98956504A US 2006106879 A1 US2006106879 A1 US 2006106879A1
Authority
US
United States
Prior art keywords
conflict
update
synchronization
wins
delete
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/989,565
Inventor
Quinton Zondervan
Stephen Auriemma
Sesha Baratham
Maria Corbett
Michael O'Brien
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=36387715&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US20060106879(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US10/989,565 priority Critical patent/US20060106879A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AURIEMMA, STEPHEN T., BARATHAM, SESHA S., CORBETT, MARIA M., O'BRIEN, MICHAEL R., ZONDERVAN, QUINTON Y.
Publication of US20060106879A1 publication Critical patent/US20060106879A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Definitions

  • the present invention relates to the field of data synchronization and more particularly to the use of a synchronization framework to provide data synchronization services.
  • Pervasive computing has been defined as referring to any non-constrained computing device not physically tethered to a data communications network.
  • pervasive computing devices refer not only to computers wirelessly linked to networks, but also to handheld computing devices, wearable systems, embedded computing systems and the like.
  • Data synchronization refers to the harmonization of data between two data sources such that the data contained in each data source can be reconciled notwithstanding changes to the data applied in either or both of the data sources.
  • Modern pervasive devices provide for a synchronization process through a direct cable link, a modem link, or a network link to a host computing device.
  • Wireless pervasive devices further can accommodate synchronization over infrared or radio frequency links.
  • synchronization frameworks like the framework specified by “SyncML” have been proposed.
  • a synchronization framework defines an interoperable protocol for data synchronization between heterogeneous data stores on pervasive devices and connected servers.
  • Such synchronization frameworks further define the message exchange between client and server to accomplish synchronization.
  • synchronization frameworks do not specify the actual process required to accomplish a synchronization.
  • synchronization frameworks do not dictate any particular methodology for detecting and resolving conflicts between client and server.
  • a synchronization framework which has been configured in accordance with the present invention can include a synchronization engine configured for coupling to an application utilizing a data set subject to synchronization with another application.
  • the framework further can include a synchronization adapter communicatively linked to the synchronization engine.
  • the framework can include conflict detection and resolution logic disposed within the synchronization framework and configured for communication with one of the synchronization engine and the synchronization adapter.
  • the conflict detection and resolution logic further can include a set of rules governing conflict resolution for data sets passed to the synchronization engine.
  • the rules can include a static mapping of conflict types to conflict resolutions.
  • the rules can include a dynamic mapping of conflict types to conflict resolutions.
  • the framework can include a sync server agent configured for communication with a sync client agent through the synchronization adapter.
  • the synchronization framework can implement a SYNCML framework.
  • a conflict detection and resolution method can include the steps of receiving an update from a client application for application in a server application; detecting and resolving conflicts for the received update in the synchronization framework; and, selectively applying the update in the server application.
  • the detecting step can include the step of determining whether a data set implicated by the received update exists in the server application.
  • the detecting step also can include the step of determining whether a data set implicated by the received update in the server application has been modified by the server application.
  • the resolving step can include the steps of determining a conflict type for the update, selecting a conflict resolution based upon the determined conflict type; performing the selected conflict resolution, and applying the update subsequent to performing the selected conflict resolution.
  • the conflict types can include replace-replace, replace-delete, delete-replace, replace-add, add-replace, add-add, add-delete, delete-add, and delete-delete.
  • the conflict types can be extended to include other conflict types.
  • the conflict resolution can include latest wins, client wins, server wins, update wins, delete wins, local wins, remote wins, duplicate, merge. merge else duplicate, no resolution, defer, error, and already exists.
  • the set of possible conflict resolutions can be extended to included other conflict resolutions.
  • a result of the conflict resolution can be presented to the client as a new update to the client. Additionally, a notification of the conflict and its resolution can be provided to the client.
  • the conflict resolution may produce a duplicate document containing the server update.
  • a copy of data set can be created at the server. The client update then can be applied to the copy of the data set at the server. Subsequently, in lieu of sending the resolved update to the client, the copy of the data set can be provided to the client and the client can be notified that the copy of the data set was created in response to a conflicting update. This allows the client to provide a user interface by which the user can manually resolve the conflict at the client after synchronization has completed.
  • An important aspect of the present invention can include the client always receiving the correct update from the server based upon the outcome of the conflict resolution, as well as a notification describing the result of the conflict resolution and identifying any new objects that were created during the conflict resolution. It will further be recognized that that client and server are used to describe roles, rather than physical entities. Finally, conflict resolution may take place on either or both systems participating in the synchronization.
  • FIG. 1 is a schematic illustration of a synchronization framework configured for conflict resolution in accordance with the present invention.
  • FIG. 2 is a flow chart illustrating a conflict resolution process for use in the synchronization framework of FIG. 1 .
  • conflict resolution logic can be disposed in a synchronization framework.
  • the conflict resolution logic can incorporate one or more conflict resolution rules.
  • the conflict resolution logic can include an interface to coupled applications. In this way, in the course of a synchronization operation, when a conflict is detected either internally within the framework, or externally in the coupled applications, the conflict resolution logic can apply the resolution rules in determining when and how to perform the synchronization.
  • the synchronization framework can be arranged to implement and extend the SyncML framework defined by Open Mobile Alliance Ltd.
  • the synchronization framework can provide the interfaces and common classes for conflict detection and conflict resolution on behalf of supported applications.
  • the synchronization framework further can accommodate conflict detection and resolution at both the server and client in a “heavy version”, and only at the server in a “light” version so as to keep the implementation of the client as thin and lightweight as possible.
  • FIG. 1 is a schematic illustration of a synchronization framework configured for conflict resolution.
  • the synchronization framework can support the synchronization of a data set 135 as between client and server applications 140 A, 140 B.
  • the client application 140 A can be hosted within a sync client 120
  • the server application 140 B can be hosted within a sync server 110 .
  • the sync client 120 can include a sync adapter 170 A and the sync server 110 also can include a sync adapter 170 B.
  • the sync adapters 170 A, 170 B can be arranged for communication over a computer communications medium 130 via sync agents 160 A, 160 B utilizing a common network transport 150 , such as the hypertext transfer protocol (HTTP).
  • the sync agents 160 A, 160 B can include a synchronization protocol layer such as a protocol layer based upon the SyncML protocol.
  • respective sync engines 180 A, 180 B can be coupled to the sync adapters 170 A, 170 B.
  • Each sync engine 180 A, 180 B can be an implementation of a data synchronization protocol corresponding to the framework, for instance a SyncML engine.
  • each sync engine 180 A, 180 B can manage a synchronization process between the client and server applications 140 A, 140 B for the data set 135 .
  • the sync engines 180 A, 180 B can access the network 130 through the sync agents 160 A, 160 B in order to communicate data synchronization operations to and from the client application 140 A.
  • the sync adapters 170 A, 170 B can provide a main entry point for call backs from the sync engines 180 A, 180 B.
  • the sync adapters 170 A, 170 B can be called when the synchronization process begins, and when the synchronization session ends.
  • the sync adapters 170 A, 170 B further can be called for each update received from the client application 140 A or the server application 140 B.
  • each of the sync adapters 170 A, 170 B can be configured to register with a respective one of the sync engines 180 A, 180 B to receive event notifications for synchronization events, including conflict detection events and conflict resolution events.
  • each of the sync engines 180 A, 180 B can include conflict resolution logic 200 .
  • the conflict resolution logic 200 can detect and resolve conflicts in synchronizing the data set 135 .
  • the conflict resolution logic 200 can be incorporated as part of either or both of the sync engines 180 A, 180 B and the sync adapters 170 A, 170 B.
  • the sync adapters 170 A, 170 B can perform conflict detection and resolution first, but the sync adapters 170 A, 170 B can defer to the respective one of the sync engines 180 A, 180 B.
  • the conflict resolution logic 200 associated with the sync adapters 170 A, 170 B can override the default behavior of the conflict resolution logic 200 associate with the sync engines 180 A, 180 B and the sync engines 180 A, 180 B can maintain an awareness of the outcome of conflict resolution when performed by the sync adapters 170 A, 170 B.
  • conflict resolution rules 190 can be applied by the conflict resolution logic 200 .
  • These conflict resolution rules 190 can specify both a conflict type such as replace, delete or add, and conflict resolution solutions, such as “client wins”, “last update wins”, “server wins” to name only a few.
  • Other conflict types can be defined within the applications 140 A, 140 B. More specifically, conflict detection can be performed the version of a data set 135 in the server application 140 B with the version of the data set 135 in the client application 140 A.
  • the conflict resolution logic 200 can determine the type of conflict implicated by the comparison based upon the type of update to be applied to the data set 135 .
  • Predefined conflict resolution types can include the following:
  • pre-defined conflict resolution types can include:
  • the adapters 170 A, 170 B can provide a common interface representing the data set 135 subject to synchronization.
  • the interface provided by the adapters 170 A, 170 B can be a wrapper interface 145 because the interface can logically wrap the actual data objects in the data set 135 which can be specific to the applications 140 A, 140 B.
  • the wrapper interface 145 can define how to determine whether or not a data object in the data set 135 has changed since a most recent synchronization, whether or not the object in the data set 135 has been added or deleted since a most recent synchronization, and how to marshal and un-marshal the object in the data set 135 for transmission over the network 130 .
  • FIG. 2 is a flow chart illustrating a conflict resolution process for use in the synchronization framework of FIG. 1 .
  • an update can be received for processing.
  • the update can include a modified data set, a new data set, or an indication of a deleted data set.
  • decision block 220 it can be determined whether the update exists in the server. If not, there can be no conflict. Accordingly, in block 300 the update can be performed. Otherwise, the process can proceed through decision block 230 .
  • decision block 230 it can be determined whether the server version of the update had been previously modified since the last synchronization.
  • the foregoing determination can be performed, for instance, by consulting time stamping information for the data set implicated by the update, versioning information for the data set implicated by the update, a modification history for the data set implicated by the update, or some other specific methodology associated with the application.
  • the update can be performed. Otherwise, the process can proceed through block 240 .
  • a conflict necessarily will have arisen as the update itself will indicate that the client version of the data set also has changed.
  • the conflict must be resolved before the update can be applied.
  • the conflict must be resolved in a way which is sensible to the application. Accordingly, as a first step, in block 240 a conflict type for the conflict can be identified. When a conflict type has been determined, in block 250 a conflict resolution rule can be selected.
  • a policy can pre-specify the conflict resolution rule to be applied based upon an identified conflict type supported by the application, or the application can implement a conflict resolution callback which can be invoked by the conflict resolution logic in the synchronization framework.
  • the conflict resolution policy can be a static table mapping of conflict type to conflict resolution, or a dynamic, formulaic mapping of conflict type to conflict resolution, or a combination of both.
  • the application can provide the conflict resolution policy, or the conflict resolution policy can be pre-specified within the framework.
  • the selected conflict resolution rule can be applied.
  • decision block 270 it can be determined whether an update is permitted. For example, if the server wins, the client update is not to be applied. In contrast, if the client wins, the client update should be applied to the data set in the server implicated by the update. Accordingly, depending upon the determination of decision block 270 , in block 300 the update can be performed. Otherwise, the update can be quashed in block 290 . In both cases, a result code can be returned to the application. If necessary, the resolution may also result in a modification of the server update that will be sent to the client during the next phase of the synchronization.
  • the present invention can be realized in hardware, software, or a combination of hardware and software.
  • An implementation of the method and system of the present invention can be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system, or other apparatus adapted for carrying out the methods described herein, is suited to perform the functions described herein.
  • a typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
  • the present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which, when loaded in a computer system is able to carry out these methods.
  • Computer program or application in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following a) conversion to another language, code or notation; b) reproduction in a different material form.

Abstract

A method, system and apparatus for detecting and resolving conflict resolution in a synchronization framework. In this regard, a synchronization framework which has been configured in accordance with the present invention can include a synchronization engine configured for coupling to an application utilizing a data set subject to synchronization with another application. The framework further can include a synchronization adapter communicatively linked to the synchronization engine. Finally, the framework can include conflict detection and resolution logic disposed within the synchronization framework and configured for communication with one of the synchronization engine and the synchronization adapter.

Description

    BACKGROUND OF THE INVENTION
  • 1. Statement of the Technical Field
  • The present invention relates to the field of data synchronization and more particularly to the use of a synchronization framework to provide data synchronization services.
  • 2. Description of the Related Art
  • Personal computers no longer are the most common vehicle through which users connect to data communications networks like the Internet. Now that computing can be viewed as being truly everywhere, computer scientists and information technologists have begun to rethink those services that can be provided to meet the needs of mobile computing users. In consequence, the study of pervasive computing has resulted in substantial innovation in the field of network connectivity. “Pervasive computing” has been defined as referring to any non-constrained computing device not physically tethered to a data communications network. Thus, pervasive computing devices refer not only to computers wirelessly linked to networks, but also to handheld computing devices, wearable systems, embedded computing systems and the like.
  • Most pervasive devices, including notebook computers, handheld computers and even data enabled cellular telephones permit data synchronization with a different computing device, for example a desktop computer. Data synchronization refers to the harmonization of data between two data sources such that the data contained in each data source can be reconciled notwithstanding changes to the data applied in either or both of the data sources. Modern pervasive devices provide for a synchronization process through a direct cable link, a modem link, or a network link to a host computing device. Wireless pervasive devices further can accommodate synchronization over infrared or radio frequency links.
  • To facilitate the synchronization of disparate devices hosting different applications, synchronization frameworks like the framework specified by “SyncML” have been proposed. Generally, a synchronization framework defines an interoperable protocol for data synchronization between heterogeneous data stores on pervasive devices and connected servers. Such synchronization frameworks further define the message exchange between client and server to accomplish synchronization. Yet, by design, synchronization frameworks do not specify the actual process required to accomplish a synchronization. In particular, synchronization frameworks do not dictate any particular methodology for detecting and resolving conflicts between client and server.
  • Because a record can be updated in both client and server versions of a data set during a window of time between synchronizations, update conflicts are common. Notwithstanding, as there is no generally accepted way to resolve conflicts, conflict detection and resolution has been relegated from the synchronization framework to the individual applications implementing the actual synchronization process for data sets managed and utilized within the individual applications. In fact, while the SyncML protocol can be cognizant of the fact that during synchronization, conflicts can occur between updates made at the server and updates made at the client, how to detect such conflicts and what to do with those conflicts is left entirely to the application.
  • SUMMARY OF THE INVENTION
  • The present invention addresses the deficiencies of the art in respect to data synchronization and provides a novel and non-obvious method, system and apparatus for detecting and resolving conflict resolution in a synchronization framework. In this regard, a synchronization framework which has been configured in accordance with the present invention can include a synchronization engine configured for coupling to an application utilizing a data set subject to synchronization with another application. The framework further can include a synchronization adapter communicatively linked to the synchronization engine. Finally, the framework can include conflict detection and resolution logic disposed within the synchronization framework and configured for communication with one of the synchronization engine and the synchronization adapter.
  • The conflict detection and resolution logic further can include a set of rules governing conflict resolution for data sets passed to the synchronization engine. The rules can include a static mapping of conflict types to conflict resolutions. Also, the rules can include a dynamic mapping of conflict types to conflict resolutions. In either case, the framework can include a sync server agent configured for communication with a sync client agent through the synchronization adapter. In a preferred aspect of the invention, the synchronization framework can implement a SYNCML framework.
  • In a synchronization framework, a conflict detection and resolution method can include the steps of receiving an update from a client application for application in a server application; detecting and resolving conflicts for the received update in the synchronization framework; and, selectively applying the update in the server application. The detecting step can include the step of determining whether a data set implicated by the received update exists in the server application. The detecting step also can include the step of determining whether a data set implicated by the received update in the server application has been modified by the server application.
  • The resolving step can include the steps of determining a conflict type for the update, selecting a conflict resolution based upon the determined conflict type; performing the selected conflict resolution, and applying the update subsequent to performing the selected conflict resolution. In this regard, the conflict types can include replace-replace, replace-delete, delete-replace, replace-add, add-replace, add-add, add-delete, delete-add, and delete-delete. Additionally, the conflict types can be extended to include other conflict types. By comparison, the conflict resolution can include latest wins, client wins, server wins, update wins, delete wins, local wins, remote wins, duplicate, merge. merge else duplicate, no resolution, defer, error, and already exists. As before, the set of possible conflict resolutions can be extended to included other conflict resolutions.
  • Once the conflict has been resolved in the server, a result of the conflict resolution can be presented to the client as a new update to the client. Additionally, a notification of the conflict and its resolution can be provided to the client. In another example, the conflict resolution may produce a duplicate document containing the server update. In this case, a copy of data set can be created at the server. The client update then can be applied to the copy of the data set at the server. Subsequently, in lieu of sending the resolved update to the client, the copy of the data set can be provided to the client and the client can be notified that the copy of the data set was created in response to a conflicting update. This allows the client to provide a user interface by which the user can manually resolve the conflict at the client after synchronization has completed.
  • An important aspect of the present invention can include the client always receiving the correct update from the server based upon the outcome of the conflict resolution, as well as a notification describing the result of the conflict resolution and identifying any new objects that were created during the conflict resolution. It will further be recognized that that client and server are used to describe roles, rather than physical entities. Finally, conflict resolution may take place on either or both systems participating in the synchronization.
  • Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein:
  • FIG. 1 is a schematic illustration of a synchronization framework configured for conflict resolution in accordance with the present invention; and,
  • FIG. 2 is a flow chart illustrating a conflict resolution process for use in the synchronization framework of FIG. 1.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • The present invention is a method, system and apparatus for conflict resolution in a synchronization framework. In accordance with the present invention, conflict resolution logic can be disposed in a synchronization framework. The conflict resolution logic can incorporate one or more conflict resolution rules. Additionally, the conflict resolution logic can include an interface to coupled applications. In this way, in the course of a synchronization operation, when a conflict is detected either internally within the framework, or externally in the coupled applications, the conflict resolution logic can apply the resolution rules in determining when and how to perform the synchronization.
  • In one aspect of the invention, the synchronization framework can be arranged to implement and extend the SyncML framework defined by Open Mobile Alliance Ltd. Specifically, the synchronization framework can provide the interfaces and common classes for conflict detection and conflict resolution on behalf of supported applications. The synchronization framework further can accommodate conflict detection and resolution at both the server and client in a “heavy version”, and only at the server in a “light” version so as to keep the implementation of the client as thin and lightweight as possible.
  • In more particular illustration, FIG. 1 is a schematic illustration of a synchronization framework configured for conflict resolution. The synchronization framework can support the synchronization of a data set 135 as between client and server applications 140A, 140B. The client application 140A can be hosted within a sync client 120, and the server application 140B can be hosted within a sync server 110. The sync client 120 can include a sync adapter 170A and the sync server 110 also can include a sync adapter 170B. The sync adapters 170A, 170B can be arranged for communication over a computer communications medium 130 via sync agents 160A, 160B utilizing a common network transport 150, such as the hypertext transfer protocol (HTTP). In this regard, the sync agents 160A, 160B can include a synchronization protocol layer such as a protocol layer based upon the SyncML protocol.
  • Importantly, respective sync engines 180A, 180B can be coupled to the sync adapters 170A, 170B. Each sync engine 180A, 180B can be an implementation of a data synchronization protocol corresponding to the framework, for instance a SyncML engine. In this regard, each sync engine 180A, 180B can manage a synchronization process between the client and server applications 140A, 140B for the data set 135. In furtherance of the synchronization management function, the sync engines 180A, 180B can access the network 130 through the sync agents 160A, 160B in order to communicate data synchronization operations to and from the client application 140A.
  • The sync adapters 170A, 170B can provide a main entry point for call backs from the sync engines 180A, 180B. The sync adapters 170A, 170B can be called when the synchronization process begins, and when the synchronization session ends. The sync adapters 170A, 170B further can be called for each update received from the client application 140A or the server application 140B. Finally, each of the sync adapters 170A, 170B can be configured to register with a respective one of the sync engines 180A, 180B to receive event notifications for synchronization events, including conflict detection events and conflict resolution events.
  • Significantly, each of the sync engines 180A, 180B can include conflict resolution logic 200. The conflict resolution logic 200 can detect and resolve conflicts in synchronizing the data set 135. Notably, the conflict resolution logic 200 can be incorporated as part of either or both of the sync engines 180A, 180B and the sync adapters 170A, 170B. To the extent that the conflict resolution logic 200 is included as part of both the sync engines 180A, 180B and the sync adapters 170A, 170B, the sync adapters 170A, 170B can perform conflict detection and resolution first, but the sync adapters 170A, 170B can defer to the respective one of the sync engines 180A, 180B. In this case, the conflict resolution logic 200 associated with the sync adapters 170A, 170B can override the default behavior of the conflict resolution logic 200 associate with the sync engines 180A, 180B and the sync engines 180A, 180B can maintain an awareness of the outcome of conflict resolution when performed by the sync adapters 170A, 170B.
  • To provide guidance in resolving detected conflicts, one or more conflict resolution rules 190 can be applied by the conflict resolution logic 200. These conflict resolution rules 190 can specify both a conflict type such as replace, delete or add, and conflict resolution solutions, such as “client wins”, “last update wins”, “server wins” to name only a few. Other conflict types can be defined within the applications 140A, 140B. More specifically, conflict detection can be performed the version of a data set 135 in the server application 140B with the version of the data set 135 in the client application 140A. The conflict resolution logic 200 can determine the type of conflict implicated by the comparison based upon the type of update to be applied to the data set 135.
  • Predefined conflict resolution types can include the following:
    • Replace-Replace: Both the client and server versions of the data set have been modified, each version intending to replace the other;
    • Replace-Delete: The client version of the data set has been modified and the server version of the data set has been deleted;
    • Delete-Replace: The server version of the data set has been modified and the client version of the data set has been deleted;
    • Add-Replace: The client application is not aware that the server version of the data set exists and the server version of the data set has been modified;
    • Replace-Add: The server application is not aware that the client version of the data set exists and the client version of the data set has been modified;
    • Add-Add: The client and server applications believe that the subject data set is new, albeit both versions of the data set have been assigned the same identifier;
    • Add-Delete: The client application is not aware that the server version of the data set exists and the server version of the data set has been deleted;
    • Delete-Add: The server application is not aware that the client version of the data set exists and the client version of the data set has been deleted;
    • Delete-Delete: The client version and the server version of the data set has been deleted.
      Of course, additional conflict types can be defined within the applications 140A, 140B.
  • By comparison, pre-defined conflict resolution types can include:
    • Latest wins;
    • Client wins;
    • Server wins;
    • Update wins (add or replace rather than performing a deletion);
    • Delete wins (delete rather than performing an add or replace);
    • Local wins;
    • Remote wins;
    • Duplicate;
    • Merge;
    • Merge else Duplicate (try to merge, but failing merger perform a duplication);
    • No resolution (do nothing);
    • Defer (allow the system to resolve the conflict);
    • Error (the conflict is an error condition); and,
    • Already exists (the new data set already exists, so do not add the new data set).
      Again, additional conflict resolutions can be defined with the applications 140A, 140B.
  • In order to generalize the operation of the conflict resolution logic 200, the adapters 170A, 170B can provide a common interface representing the data set 135 subject to synchronization. The interface provided by the adapters 170A, 170B can be a wrapper interface 145 because the interface can logically wrap the actual data objects in the data set 135 which can be specific to the applications 140A, 140B. The wrapper interface 145 can define how to determine whether or not a data object in the data set 135 has changed since a most recent synchronization, whether or not the object in the data set 135 has been added or deleted since a most recent synchronization, and how to marshal and un-marshal the object in the data set 135 for transmission over the network 130.
  • In further illustration of the foregoing inventive methodology, FIG. 2 is a flow chart illustrating a conflict resolution process for use in the synchronization framework of FIG. 1. Beginning in block 210, an update can be received for processing. The update can include a modified data set, a new data set, or an indication of a deleted data set. In decision block 220, it can be determined whether the update exists in the server. If not, there can be no conflict. Accordingly, in block 300 the update can be performed. Otherwise, the process can proceed through decision block 230.
  • In decision block 230, it can be determined whether the server version of the update had been previously modified since the last synchronization. The foregoing determination can be performed, for instance, by consulting time stamping information for the data set implicated by the update, versioning information for the data set implicated by the update, a modification history for the data set implicated by the update, or some other specific methodology associated with the application. In any case, if it is determined that the server version of the update had not been previously modified since the last synchronization, there can be no conflict. Accordingly, in block 300 the update can be performed. Otherwise, the process can proceed through block 240.
  • If the server version of the data set implicated by the update has been modified, a conflict necessarily will have arisen as the update itself will indicate that the client version of the data set also has changed. Thus, the conflict must be resolved before the update can be applied. In this regard, the conflict must be resolved in a way which is sensible to the application. Accordingly, as a first step, in block 240 a conflict type for the conflict can be identified. When a conflict type has been determined, in block 250 a conflict resolution rule can be selected.
  • The selection of a conflict resolution rule can be the responsibility of the application. To that end, a policy can pre-specify the conflict resolution rule to be applied based upon an identified conflict type supported by the application, or the application can implement a conflict resolution callback which can be invoked by the conflict resolution logic in the synchronization framework. In the former circumstance, the conflict resolution policy can be a static table mapping of conflict type to conflict resolution, or a dynamic, formulaic mapping of conflict type to conflict resolution, or a combination of both. In both cases, the application can provide the conflict resolution policy, or the conflict resolution policy can be pre-specified within the framework.
  • In any case, in block 260 the selected conflict resolution rule can be applied. Based upon the outcome of the application of the conflict resolution, in decision block 270 it can be determined whether an update is permitted. For example, if the server wins, the client update is not to be applied. In contrast, if the client wins, the client update should be applied to the data set in the server implicated by the update. Accordingly, depending upon the determination of decision block 270, in block 300 the update can be performed. Otherwise, the update can be quashed in block 290. In both cases, a result code can be returned to the application. If necessary, the resolution may also result in a modification of the server update that will be sent to the client during the next phase of the synchronization.
  • The present invention can be realized in hardware, software, or a combination of hardware and software. An implementation of the method and system of the present invention can be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system, or other apparatus adapted for carrying out the methods described herein, is suited to perform the functions described herein.
  • A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which, when loaded in a computer system is able to carry out these methods.
  • Computer program or application in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following a) conversion to another language, code or notation; b) reproduction in a different material form. Significantly, this invention can be embodied in other specific forms without departing from the spirit or essential attributes thereof, and accordingly, reference should be had to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.

Claims (20)

1. A synchronization framework comprising:
a synchronization engine configured for coupling to an application utilizing a data set subject to synchronization with another application;
a synchronization adapter communicatively linked to said synchronization engine; and,
conflict detection and resolution logic disposed within the synchronization framework and configured for communication with one of said synchronization engine and said synchronization adapter.
2. The synchronization framework of claim 1, wherein said conflict detection and resolution logic further comprises a set of rules governing conflict resolution for data sets passed to said synchronization engine.
3. The synchronization framework of claim 2, wherein said rules comprise a static mapping of conflict types to conflict resolutions.
4. The synchronization framework of claim 2, wherein said rules comprise a dynamic mapping of conflict types to conflict resolutions.
5. The synchronization framework of claim 2, wherein said set of rules further a configuration for extension by said application.
6. The synchronization framework of claim 1, wherein the synchronization framework implements a SYNCML framework.
7. In a synchronization framework, a conflict detection and resolution method comprising the steps of:
receiving an update from a client application for application in a server application;
detecting and resolving conflicts for said received update in the synchronization framework; and,
selectively applying said update in said server application. And altering the updates to be sent to the client if necessary, based on the outcome of the conflict resolution.
8. The method of claim 7, wherein said detecting step comprises the step of determining whether a data set implicated by said received update exists in said server application.
9. The method of claim 7, wherein said detecting step comprises the step of determining whether a data set implicated by said received update in said server application has been modified by said server application.
10. The method of claim 7, wherein said resolving step comprises the steps of:
determining a conflict type for said update;
selecting a conflict resolution based upon said determined conflict type; and,
performing said selected conflict resolution; and,
applying said update subsequent to performing said selected conflict resolution.
11. The method of claim 10, wherein said determining step comprises the step of determining a conflict type for said update selected from the group consisting of replace-replace, replace-delete, delete-replace, replace-add, add-replace, add-add, add-delete, delete-add, and delete-delete.
12. The method of claim 10, wherein said selecting step comprises the step of selecting a conflict resolution based upon said determined conflict type wherein said conflict resolution is selected from the group consisting of latest wins, client wins, server wins, update wins, delete wins, local wins, remote wins, duplicate, merge. merge else duplicate, no resolution, defer, error, and already exists.
13. The method of claim 7, further comprising the step of modifying an update to be sent to said client application if it is determined that a resolved one of said conflicts for said received update requires a modification to an update to be sent to said client.
14. A machine readable storage having stored thereon a computer program for conflict detection and resolution in a synchronization framework, the computer program comprising a routine set of instructions which when executed by a machine causes the machine to perform the steps of:
receiving an update from a client application for application in a server application;
detecting and resolving conflicts for said received update in the synchronization framework; and,
selectively applying said update in said server application.
15. The machine readable storage of claim 14, wherein said detecting step comprises the step of determining whether a data set implicated by said received update exists in said server application.
16. The machine readable storage of claim 14, wherein said detecting step comprises the step of determining whether a data set implicated by said received update in said server application has been modified by said server application.
17. The machine readable storage of claim 14, wherein said resolving step comprises the steps of:
determining a conflict type for said update;
selecting a conflict resolution based upon said determined conflict type; and,
performing said selected conflict resolution; and,
applying said update subsequent to performing said selected conflict resolution.
18. The machine readable storage of claim 17, wherein said determining step comprises the step of determining a conflict type for said update selected from the group consisting of replace-replace, replace-delete, delete-replace, replace-add, add-replace, add-add, add-delete, delete-add, and delete-delete.
19. The machine readable storage of claim 17, wherein said selecting step comprises the step of selecting a conflict resolution based upon said determined conflict type wherein said conflict resolution is selected from the group consisting of latest wins, client wins, server wins, update wins, delete wins, local wins, remote wins, duplicate, merge. merge else duplicate, no resolution, defer, error, and already exists.
20. The machine readable storage of claim 17, further comprising an additional set of instructions which when executed by the machine causes the machine to perform an additional step of modifying an update to be sent to said client application if it is determined that a resolved one of said conflicts for said received update requires a modification to an update to be sent to said client.
US10/989,565 2004-11-16 2004-11-16 Conflict resolution in a synchronization framework Abandoned US20060106879A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/989,565 US20060106879A1 (en) 2004-11-16 2004-11-16 Conflict resolution in a synchronization framework

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/989,565 US20060106879A1 (en) 2004-11-16 2004-11-16 Conflict resolution in a synchronization framework

Publications (1)

Publication Number Publication Date
US20060106879A1 true US20060106879A1 (en) 2006-05-18

Family

ID=36387715

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/989,565 Abandoned US20060106879A1 (en) 2004-11-16 2004-11-16 Conflict resolution in a synchronization framework

Country Status (1)

Country Link
US (1) US20060106879A1 (en)

Cited By (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161596A1 (en) * 2005-01-14 2006-07-20 Microsoft Corporation Method and system for synchronizing multiple user revisions to a balanced scorecard
US20070097992A1 (en) * 2005-11-03 2007-05-03 Cisco Technology, Inc. System and method for resolving address conflicts in a network
US20070143368A1 (en) * 2005-12-15 2007-06-21 Lundsgaard Soren K Conflict resolution in highly available network element
US20070282914A1 (en) * 2006-05-31 2007-12-06 Microsoft Corporation Resolving update-delete conflicts
US20070283049A1 (en) * 2006-06-02 2007-12-06 Google Inc. Resolving Conflicts While Synchronizing Configuration Information Among Multiple Clients
US20070283011A1 (en) * 2006-06-02 2007-12-06 Google Inc. Synchronizing Configuration Information Among Multiple Clients
WO2007143589A2 (en) * 2006-06-02 2007-12-13 Google Inc. Synchronizing configuration information among multiple clients
US20070294366A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Data Synchronization and Sharing Relationships
US20080027965A1 (en) * 2006-06-29 2008-01-31 Garrett Andrew J Multiple source data management using a conflict rule
US20080091687A1 (en) * 2005-02-25 2008-04-17 Sharp Kabushiki Kaisha Data Management System, Data Management Method, Server Apparatus, Receiving Apparatus, Control Program, and Computer-Readable Recording Medium Recording Same
US20080104206A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US20080103977A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Digital rights management for distributed devices
US20080109832A1 (en) * 2006-11-06 2008-05-08 Microsoft Corporation Clipboard Augmentation with References
US20080109464A1 (en) * 2006-11-06 2008-05-08 Microsoft Corporation Extending Clipboard Augmentation
US20080109744A1 (en) * 2006-11-06 2008-05-08 Microsoft Corporation Clipboard Augmentation
US20080133775A1 (en) * 2006-11-30 2008-06-05 Intellisync Corporation Method, Apparatus and Computer Program Product for Providing Intelligent Synchronization
US20080144669A1 (en) * 2006-12-18 2008-06-19 Microsoft Corporation Propagation of conflict knowledge
US20080195759A1 (en) * 2007-02-09 2008-08-14 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US20080212616A1 (en) * 2007-03-02 2008-09-04 Microsoft Corporation Services For Data Sharing And Synchronization
US20080256174A1 (en) * 2007-04-13 2008-10-16 Kaj Juhani Toivonen Exchanging data via a virtual field device
US20080270481A1 (en) * 2007-04-27 2008-10-30 Microsoft Corporation Item Management with Data Sharing and Synchronization
US20080267221A1 (en) * 2007-04-24 2008-10-30 Microsoft Corporation Data Sharing and Synchronization with Relay
US20090083210A1 (en) * 2007-09-25 2009-03-26 Microsoft Corporation Exchange of syncronization data and metadata
US7529780B1 (en) 2005-12-30 2009-05-05 Google Inc. Conflict management during data object synchronization between client and server
US20090138795A1 (en) * 2007-11-28 2009-05-28 International Business Machines Corporation Enforcing context model based policies with forward chaining
US20090282462A1 (en) * 2008-05-08 2009-11-12 Microsoft Corporation Controlling Access to Documents Using File Locks
US20090282041A1 (en) * 2008-05-08 2009-11-12 Microsoft Corporation Caching Infrastructure
EP2118764A2 (en) * 2007-02-01 2009-11-18 Microsoft Corporation Synchronization framework for occasionally connected applications
US20090315766A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Source switching for devices supporting dynamic direction information
US20090315776A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US20090319166A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US20090327294A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Structured Coauthoring
US20100008255A1 (en) * 2008-06-20 2010-01-14 Microsoft Corporation Mesh network services for devices supporting dynamic direction information
US20100281074A1 (en) * 2009-04-30 2010-11-04 Microsoft Corporation Fast Merge Support for Legacy Documents
US20100332324A1 (en) * 2009-06-25 2010-12-30 Microsoft Corporation Portal services based on interactions with points of interest discovered via directional device information
US20110004702A1 (en) * 2009-07-06 2011-01-06 Microsoft Corporation Automatic conflict resolution
US20110218964A1 (en) * 2010-03-02 2011-09-08 Hagan Cynthia M Automatic synchronization conflict resolution
US20120136921A1 (en) * 2010-11-30 2012-05-31 Google Inc. Event management for hosted applications
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
US8296671B2 (en) 2008-05-01 2012-10-23 Microsoft Corporation Enabling access to rich data by intercepting paste operations
US8301588B2 (en) 2008-03-07 2012-10-30 Microsoft Corporation Data storage for file updates
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8352418B2 (en) 2007-11-09 2013-01-08 Microsoft Corporation Client side locking
US8620861B1 (en) 2008-09-30 2013-12-31 Google Inc. Preserving file metadata during atomic save operations
US8700301B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US8751442B2 (en) 2007-02-12 2014-06-10 Microsoft Corporation Synchronization associated duplicate data resolution
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US8949179B2 (en) 2012-04-23 2015-02-03 Google, Inc. Sharing and synchronizing electronically stored files
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US9081975B2 (en) 2012-10-22 2015-07-14 Palantir Technologies, Inc. Sharing information between nexuses that use different classification schemes for information access control
US9189492B2 (en) 2012-01-23 2015-11-17 Palatir Technoogies, Inc. Cross-ACL multi-master replication
US9239846B2 (en) 2012-04-23 2016-01-19 Google Inc. Sharing and synchronizing electronically stored files
US9244934B2 (en) 2012-04-23 2016-01-26 Google Inc. Sharing and synchronizing electronically stored files
US9330157B2 (en) 2006-11-20 2016-05-03 Palantir Technologies, Inc. Cross-ontology multi-master replication
US20160224276A1 (en) * 2010-10-13 2016-08-04 International Business Machines Corporation Synchronization for initialization of a remote mirror storage facility
US9529818B2 (en) 2012-04-23 2016-12-27 Google Inc. Sharing and synchronizing electronically stored files
US9569070B1 (en) * 2013-11-11 2017-02-14 Palantir Technologies, Inc. Assisting in deconflicting concurrency conflicts
US9614932B2 (en) 2013-03-14 2017-04-04 Microsoft Technology Licensing, Llc Managing and implementing web application data snapshots
US9661468B2 (en) 2009-07-07 2017-05-23 Microsoft Technology Licensing, Llc System and method for converting gestures into digital graffiti
US20170337254A1 (en) * 2013-10-31 2017-11-23 Microsoft Technology Licensing, Llc Master data management
US9923925B2 (en) 2014-02-20 2018-03-20 Palantir Technologies Inc. Cyber security sharing and identification system
US9934240B2 (en) 2008-09-30 2018-04-03 Google Llc On demand access to client cached files
US10068002B1 (en) 2017-04-25 2018-09-04 Palantir Technologies Inc. Systems and methods for adaptive data replication
US10262053B2 (en) 2016-12-22 2019-04-16 Palantir Technologies Inc. Systems and methods for data replication synchronization
US10311081B2 (en) 2012-11-05 2019-06-04 Palantir Technologies Inc. System and method for sharing investigation results
US10380196B2 (en) 2017-12-08 2019-08-13 Palantir Technologies Inc. Systems and methods for using linked documents
US10430062B2 (en) 2017-05-30 2019-10-01 Palantir Technologies Inc. Systems and methods for geo-fenced dynamic dissemination
WO2019217481A1 (en) * 2018-05-07 2019-11-14 Microsoft Technology Licensing, Llc Conflict resolution for multi-master distributed databases
US10572496B1 (en) 2014-07-03 2020-02-25 Palantir Technologies Inc. Distributed workflow system and database with access controls for city resiliency
US10621198B1 (en) 2015-12-30 2020-04-14 Palantir Technologies Inc. System and method for secure database replication
US10762102B2 (en) 2013-06-20 2020-09-01 Palantir Technologies Inc. System and method for incremental replication
US10915542B1 (en) 2017-12-19 2021-02-09 Palantir Technologies Inc. Contextual modification of data sharing constraints in a distributed database system that uses a multi-master replication scheme
US10936548B2 (en) 2016-03-15 2021-03-02 Microsoft Technology Licensing, Llc File synchronization pausing for individual files
US11030494B1 (en) 2017-06-15 2021-06-08 Palantir Technologies Inc. Systems and methods for managing data spills
USRE48589E1 (en) 2010-07-15 2021-06-08 Palantir Technologies Inc. Sharing and deconflicting data changes in a multimaster database system
US11086757B1 (en) * 2019-06-12 2021-08-10 Express Scripts Strategic Development, Inc. Systems and methods for providing stable deployments to mainframe environments
US11720347B1 (en) 2019-06-12 2023-08-08 Express Scripts Strategic Development, Inc. Systems and methods for providing stable deployments to mainframe environments

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US19614A (en) * 1858-03-16 Photo-uitho
US25072A (en) * 1859-08-09 Improvement in preparations of glycerine
US55825A (en) * 1866-06-26 Improvement in churns
US97433A (en) * 1869-11-30 Improved railway-car wheel
US122870A (en) * 1872-01-16 Improvement in churns
US132428A (en) * 1872-10-22 Improvement in water-proof baskets
US172139A (en) * 1876-01-11 Improvement in the manufacture of cider and other beverages
US172113A (en) * 1876-01-11 Improvement in the construction of ships
US172175A (en) * 1876-01-11 Improvement in horse-powers
US212826A (en) * 1879-03-04 Improvement in toy pistols
US217239A (en) * 1879-07-08 Improvement in lamps
US220966A (en) * 1879-10-28 Improvement in heel-trimming machines
US5581754A (en) * 1994-12-07 1996-12-03 Xerox Corporation Methodology for managing weakly consistent replicated databases
US6343299B1 (en) * 1998-11-16 2002-01-29 International Business Machines Corporation Method and apparatus for random update synchronization among multiple computing devices
US6393434B1 (en) * 1999-09-14 2002-05-21 International Business Machines Corporation Method and system for synchronizing data using fine-grained synchronization plans
US6535892B1 (en) * 1999-03-08 2003-03-18 Starfish Software, Inc. System and methods for exchanging messages between a client and a server for synchronizing datasets
US20030220966A1 (en) * 2002-05-24 2003-11-27 International Business Machines Corporation System and method for dynamic content dependent conflict resolution
US20040122870A1 (en) * 2002-12-24 2004-06-24 Joong-Ki Park Method for data synchronization and update conflict resolution between mobile clients and server in mobile system
US20050125621A1 (en) * 2003-08-21 2005-06-09 Ashish Shah Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US6983293B2 (en) * 2002-07-24 2006-01-03 International Business Machines Corporation Mid-tier-based conflict resolution method and system usable for message synchronization and replication
US7149759B2 (en) * 2002-03-25 2006-12-12 International Business Machines Corporation Method and system for detecting conflicts in replicated data in a database network

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US217239A (en) * 1879-07-08 Improvement in lamps
US122870A (en) * 1872-01-16 Improvement in churns
US19614A (en) * 1858-03-16 Photo-uitho
US97433A (en) * 1869-11-30 Improved railway-car wheel
US220966A (en) * 1879-10-28 Improvement in heel-trimming machines
US132428A (en) * 1872-10-22 Improvement in water-proof baskets
US172139A (en) * 1876-01-11 Improvement in the manufacture of cider and other beverages
US172113A (en) * 1876-01-11 Improvement in the construction of ships
US172175A (en) * 1876-01-11 Improvement in horse-powers
US212826A (en) * 1879-03-04 Improvement in toy pistols
US55825A (en) * 1866-06-26 Improvement in churns
US25072A (en) * 1859-08-09 Improvement in preparations of glycerine
US5581754A (en) * 1994-12-07 1996-12-03 Xerox Corporation Methodology for managing weakly consistent replicated databases
US6343299B1 (en) * 1998-11-16 2002-01-29 International Business Machines Corporation Method and apparatus for random update synchronization among multiple computing devices
US6535892B1 (en) * 1999-03-08 2003-03-18 Starfish Software, Inc. System and methods for exchanging messages between a client and a server for synchronizing datasets
US6393434B1 (en) * 1999-09-14 2002-05-21 International Business Machines Corporation Method and system for synchronizing data using fine-grained synchronization plans
US7149759B2 (en) * 2002-03-25 2006-12-12 International Business Machines Corporation Method and system for detecting conflicts in replicated data in a database network
US20030220966A1 (en) * 2002-05-24 2003-11-27 International Business Machines Corporation System and method for dynamic content dependent conflict resolution
US6983293B2 (en) * 2002-07-24 2006-01-03 International Business Machines Corporation Mid-tier-based conflict resolution method and system usable for message synchronization and replication
US20040122870A1 (en) * 2002-12-24 2004-06-24 Joong-Ki Park Method for data synchronization and update conflict resolution between mobile clients and server in mobile system
US20050125621A1 (en) * 2003-08-21 2005-06-09 Ashish Shah Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system

Cited By (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US7440978B2 (en) * 2005-01-14 2008-10-21 Microsoft Corporation Method and system for synchronizing multiple user revisions, updating other strategy maps in the databases that are associated with the balanced scorecard
US20060161596A1 (en) * 2005-01-14 2006-07-20 Microsoft Corporation Method and system for synchronizing multiple user revisions to a balanced scorecard
US20080091687A1 (en) * 2005-02-25 2008-04-17 Sharp Kabushiki Kaisha Data Management System, Data Management Method, Server Apparatus, Receiving Apparatus, Control Program, and Computer-Readable Recording Medium Recording Same
US7979391B2 (en) * 2005-02-25 2011-07-12 Sharp Kabushiki Kaisha Data management system, data management method, server apparatus, receiving apparatus, control program, and computer-readable recording medium recording same
US7633855B2 (en) * 2005-11-03 2009-12-15 Cisco Technology, Inc. System and method for resolving address conflicts in a network
US20070097992A1 (en) * 2005-11-03 2007-05-03 Cisco Technology, Inc. System and method for resolving address conflicts in a network
US20070143368A1 (en) * 2005-12-15 2007-06-21 Lundsgaard Soren K Conflict resolution in highly available network element
US8311981B2 (en) 2005-12-30 2012-11-13 Google Inc. Conflict management during data object synchronization between client and server
US9131024B2 (en) 2005-12-30 2015-09-08 Google Inc. Conflict management during data object synchronization between client and server
US20090216815A1 (en) * 2005-12-30 2009-08-27 Braginsky David E Conflict Management During Data Object Synchronization Between Client and Server
US7529780B1 (en) 2005-12-30 2009-05-05 Google Inc. Conflict management during data object synchronization between client and server
US7769727B2 (en) * 2006-05-31 2010-08-03 Microsoft Corporation Resolving update-delete conflicts
US20070282914A1 (en) * 2006-05-31 2007-12-06 Microsoft Corporation Resolving update-delete conflicts
US20110113092A1 (en) * 2006-06-02 2011-05-12 Rakowski Brian D Resolving Conflicts While Synchronizing Configuration Information Among Multiple Clients
US8082316B2 (en) 2006-06-02 2011-12-20 Google Inc. Resolving conflicts while synchronizing configuration information among multiple clients
US20070283049A1 (en) * 2006-06-02 2007-12-06 Google Inc. Resolving Conflicts While Synchronizing Configuration Information Among Multiple Clients
US8341249B2 (en) 2006-06-02 2012-12-25 Google Inc. Synchronizing configuration information among multiple clients
WO2007143589A3 (en) * 2006-06-02 2008-03-20 Google Inc Synchronizing configuration information among multiple clients
US7912916B2 (en) 2006-06-02 2011-03-22 Google Inc. Resolving conflicts while synchronizing configuration information among multiple clients
WO2007143589A2 (en) * 2006-06-02 2007-12-13 Google Inc. Synchronizing configuration information among multiple clients
US20070283011A1 (en) * 2006-06-02 2007-12-06 Google Inc. Synchronizing Configuration Information Among Multiple Clients
US8086698B2 (en) * 2006-06-02 2011-12-27 Google Inc. Synchronizing configuration information among multiple clients
US8370423B2 (en) 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US9203786B2 (en) 2006-06-16 2015-12-01 Microsoft Technology Licensing, Llc Data synchronization and sharing relationships
US20070294366A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Data Synchronization and Sharing Relationships
US8918377B2 (en) 2006-06-29 2014-12-23 International Business Machines Corporation Multiple source data management using a conflict rule
US8359297B2 (en) 2006-06-29 2013-01-22 International Business Machines Corporation Multiple source data management using a conflict rule
US20080027965A1 (en) * 2006-06-29 2008-01-31 Garrett Andrew J Multiple source data management using a conflict rule
US20080103977A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Digital rights management for distributed devices
US20080104206A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US20080109832A1 (en) * 2006-11-06 2008-05-08 Microsoft Corporation Clipboard Augmentation with References
US10572582B2 (en) 2006-11-06 2020-02-25 Microsoft Technology Licensing, Llc Clipboard augmentation with references
US9747266B2 (en) 2006-11-06 2017-08-29 Microsoft Technology Licensing, Llc Clipboard augmentation with references
US8020112B2 (en) 2006-11-06 2011-09-13 Microsoft Corporation Clipboard augmentation
US20080109744A1 (en) * 2006-11-06 2008-05-08 Microsoft Corporation Clipboard Augmentation
US8453066B2 (en) 2006-11-06 2013-05-28 Microsoft Corporation Clipboard augmentation with references
US20080109464A1 (en) * 2006-11-06 2008-05-08 Microsoft Corporation Extending Clipboard Augmentation
US10061828B2 (en) 2006-11-20 2018-08-28 Palantir Technologies, Inc. Cross-ontology multi-master replication
US9330157B2 (en) 2006-11-20 2016-05-03 Palantir Technologies, Inc. Cross-ontology multi-master replication
US20080133775A1 (en) * 2006-11-30 2008-06-05 Intellisync Corporation Method, Apparatus and Computer Program Product for Providing Intelligent Synchronization
US20080144669A1 (en) * 2006-12-18 2008-06-19 Microsoft Corporation Propagation of conflict knowledge
US7778282B2 (en) 2006-12-18 2010-08-17 Microsoft Corporation Propagation of conflict knowledge
US7899917B2 (en) 2007-02-01 2011-03-01 Microsoft Corporation Synchronization framework for occasionally connected applications
EP2118764A2 (en) * 2007-02-01 2009-11-18 Microsoft Corporation Synchronization framework for occasionally connected applications
EP2118764A4 (en) * 2007-02-01 2010-05-26 Microsoft Corp Synchronization framework for occasionally connected applications
US7620659B2 (en) 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
EP2119127A4 (en) * 2007-02-09 2016-05-11 Microsoft Technology Licensing Llc Conflict resolution for multi-master synchronization of data for distributed devices
US20080195759A1 (en) * 2007-02-09 2008-08-14 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US8751442B2 (en) 2007-02-12 2014-06-10 Microsoft Corporation Synchronization associated duplicate data resolution
US20080212616A1 (en) * 2007-03-02 2008-09-04 Microsoft Corporation Services For Data Sharing And Synchronization
US7933296B2 (en) 2007-03-02 2011-04-26 Microsoft Corporation Services for data sharing and synchronization
US20080256174A1 (en) * 2007-04-13 2008-10-16 Kaj Juhani Toivonen Exchanging data via a virtual field device
US7917654B2 (en) * 2007-04-13 2011-03-29 Trimble Navigation Limited Exchanging data via a virtual field device
US20080267221A1 (en) * 2007-04-24 2008-10-30 Microsoft Corporation Data Sharing and Synchronization with Relay
US7900203B2 (en) 2007-04-24 2011-03-01 Microsoft Corporation Data sharing and synchronization with relay endpoint and sync data element
US20080270481A1 (en) * 2007-04-27 2008-10-30 Microsoft Corporation Item Management with Data Sharing and Synchronization
US7725456B2 (en) 2007-04-27 2010-05-25 Microsoft Corporation Item management with data sharing and synchronization
US20090083210A1 (en) * 2007-09-25 2009-03-26 Microsoft Corporation Exchange of syncronization data and metadata
US8095495B2 (en) 2007-09-25 2012-01-10 Microsoft Corporation Exchange of syncronization data and metadata
US10394941B2 (en) 2007-11-09 2019-08-27 Microsoft Technology Licensing, Llc Collaborative authoring
US9547635B2 (en) 2007-11-09 2017-01-17 Microsoft Technology Licensing, Llc Collaborative authoring
US8990150B2 (en) 2007-11-09 2015-03-24 Microsoft Technology Licensing, Llc Collaborative authoring
US8352418B2 (en) 2007-11-09 2013-01-08 Microsoft Corporation Client side locking
US10223650B2 (en) * 2007-11-28 2019-03-05 International Business Machines Corporation Enforcing context model based policies with forward chaining
US20090138795A1 (en) * 2007-11-28 2009-05-28 International Business Machines Corporation Enforcing context model based policies with forward chaining
US11080625B2 (en) * 2007-11-28 2021-08-03 International Business Machines Corporation Enforcing context model based policies with forward chaining
US20140373108A1 (en) 2007-12-14 2014-12-18 Microsoft Corporation Collaborative authoring modes
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US10057226B2 (en) 2007-12-14 2018-08-21 Microsoft Technology Licensing, Llc Collaborative authoring modes
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
US8301588B2 (en) 2008-03-07 2012-10-30 Microsoft Corporation Data storage for file updates
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US9760862B2 (en) 2008-04-28 2017-09-12 Microsoft Technology Licensing, Llc Conflict resolution
US9417933B2 (en) 2008-05-01 2016-08-16 Microsoft Technology Licensing, Llc Enabling access to rich data by intercepting paste operations
US8296671B2 (en) 2008-05-01 2012-10-23 Microsoft Corporation Enabling access to rich data by intercepting paste operations
US20090282462A1 (en) * 2008-05-08 2009-11-12 Microsoft Corporation Controlling Access to Documents Using File Locks
US20090282041A1 (en) * 2008-05-08 2009-11-12 Microsoft Corporation Caching Infrastructure
US8429753B2 (en) 2008-05-08 2013-04-23 Microsoft Corporation Controlling access to documents using file locks
US8825594B2 (en) 2008-05-08 2014-09-02 Microsoft Corporation Caching infrastructure
US8615257B2 (en) 2008-06-19 2013-12-24 Microsoft Corporation Data synchronization for devices supporting direction-based services
US8700301B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US8700302B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US20090319177A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Predictive services for devices supporting dynamic direction information
US9200901B2 (en) 2008-06-19 2015-12-01 Microsoft Technology Licensing, Llc Predictive services for devices supporting dynamic direction information
US10057724B2 (en) 2008-06-19 2018-08-21 Microsoft Technology Licensing, Llc Predictive services for devices supporting dynamic direction information
US20090315766A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Source switching for devices supporting dynamic direction information
US8200246B2 (en) 2008-06-19 2012-06-12 Microsoft Corporation Data synchronization for devices supporting direction-based services
US20090315776A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US20090319166A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US10509477B2 (en) 2008-06-20 2019-12-17 Microsoft Technology Licensing, Llc Data services based on gesture and location information of device
US9703385B2 (en) 2008-06-20 2017-07-11 Microsoft Technology Licensing, Llc Data services based on gesture and location information of device
US8868374B2 (en) 2008-06-20 2014-10-21 Microsoft Corporation Data services based on gesture and location information of device
US8467991B2 (en) 2008-06-20 2013-06-18 Microsoft Corporation Data services based on gesture and location information of device
US20090315775A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US20100008255A1 (en) * 2008-06-20 2010-01-14 Microsoft Corporation Mesh network services for devices supporting dynamic direction information
US20090327294A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Structured Coauthoring
US8417666B2 (en) 2008-06-25 2013-04-09 Microsoft Corporation Structured coauthoring
US8620861B1 (en) 2008-09-30 2013-12-31 Google Inc. Preserving file metadata during atomic save operations
US9934240B2 (en) 2008-09-30 2018-04-03 Google Llc On demand access to client cached files
US10289692B2 (en) 2008-09-30 2019-05-14 Google Llc Preserving file metadata during atomic save operations
US20100281074A1 (en) * 2009-04-30 2010-11-04 Microsoft Corporation Fast Merge Support for Legacy Documents
US8346768B2 (en) 2009-04-30 2013-01-01 Microsoft Corporation Fast merge support for legacy documents
US20100332324A1 (en) * 2009-06-25 2010-12-30 Microsoft Corporation Portal services based on interactions with points of interest discovered via directional device information
US10592496B2 (en) 2009-07-06 2020-03-17 Microsoft Technology Licensing, Llc Automatic conflict resolution
US8473543B2 (en) * 2009-07-06 2013-06-25 Microsoft Corporation Automatic conflict resolution when synchronizing data objects between two or more devices
US20110004702A1 (en) * 2009-07-06 2011-01-06 Microsoft Corporation Automatic conflict resolution
US9661468B2 (en) 2009-07-07 2017-05-23 Microsoft Technology Licensing, Llc System and method for converting gestures into digital graffiti
US20110218964A1 (en) * 2010-03-02 2011-09-08 Hagan Cynthia M Automatic synchronization conflict resolution
US8572022B2 (en) * 2010-03-02 2013-10-29 Microsoft Corporation Automatic synchronization conflict resolution
CN102770854A (en) * 2010-03-02 2012-11-07 微软公司 Automatic synchronization conflict resolution
US8965840B2 (en) 2010-03-02 2015-02-24 Microsoft Technology Licensing, Llc Automatic synchronization conflict resolution
USRE48589E1 (en) 2010-07-15 2021-06-08 Palantir Technologies Inc. Sharing and deconflicting data changes in a multimaster database system
US10031692B2 (en) * 2010-10-13 2018-07-24 International Business Machines Corporation Synchronization for initialization of a remote mirror storage facility
US20160224276A1 (en) * 2010-10-13 2016-08-04 International Business Machines Corporation Synchronization for initialization of a remote mirror storage facility
US8935392B2 (en) 2010-11-30 2015-01-13 Google Inc. Event management for hosted applications
US8239529B2 (en) * 2010-11-30 2012-08-07 Google Inc. Event management for hosted applications
US20120136921A1 (en) * 2010-11-30 2012-05-31 Google Inc. Event management for hosted applications
US11693877B2 (en) 2011-03-31 2023-07-04 Palantir Technologies Inc. Cross-ontology multi-master replication
US9189492B2 (en) 2012-01-23 2015-11-17 Palatir Technoogies, Inc. Cross-ACL multi-master replication
US9715518B2 (en) 2012-01-23 2017-07-25 Palantir Technologies, Inc. Cross-ACL multi-master replication
US9529818B2 (en) 2012-04-23 2016-12-27 Google Inc. Sharing and synchronizing electronically stored files
US9959287B2 (en) 2012-04-23 2018-05-01 Google Llc Sharing and synchronizing electronically stored files
US9244934B2 (en) 2012-04-23 2016-01-26 Google Inc. Sharing and synchronizing electronically stored files
US9239846B2 (en) 2012-04-23 2016-01-19 Google Inc. Sharing and synchronizing electronically stored files
US10846269B2 (en) 2012-04-23 2020-11-24 Google Llc Sharing and synchronizing electronically stored files
US8949179B2 (en) 2012-04-23 2015-02-03 Google, Inc. Sharing and synchronizing electronically stored files
US10891312B2 (en) 2012-10-22 2021-01-12 Palantir Technologies Inc. Sharing information between nexuses that use different classification schemes for information access control
US9081975B2 (en) 2012-10-22 2015-07-14 Palantir Technologies, Inc. Sharing information between nexuses that use different classification schemes for information access control
US9836523B2 (en) 2012-10-22 2017-12-05 Palantir Technologies Inc. Sharing information between nexuses that use different classification schemes for information access control
US10846300B2 (en) 2012-11-05 2020-11-24 Palantir Technologies Inc. System and method for sharing investigation results
US10311081B2 (en) 2012-11-05 2019-06-04 Palantir Technologies Inc. System and method for sharing investigation results
US9614932B2 (en) 2013-03-14 2017-04-04 Microsoft Technology Licensing, Llc Managing and implementing web application data snapshots
US10762102B2 (en) 2013-06-20 2020-09-01 Palantir Technologies Inc. System and method for incremental replication
US20170337254A1 (en) * 2013-10-31 2017-11-23 Microsoft Technology Licensing, Llc Master data management
US9569070B1 (en) * 2013-11-11 2017-02-14 Palantir Technologies, Inc. Assisting in deconflicting concurrency conflicts
US10873603B2 (en) 2014-02-20 2020-12-22 Palantir Technologies Inc. Cyber security sharing and identification system
US9923925B2 (en) 2014-02-20 2018-03-20 Palantir Technologies Inc. Cyber security sharing and identification system
US10572496B1 (en) 2014-07-03 2020-02-25 Palantir Technologies Inc. Distributed workflow system and database with access controls for city resiliency
US10621198B1 (en) 2015-12-30 2020-04-14 Palantir Technologies Inc. System and method for secure database replication
US10936548B2 (en) 2016-03-15 2021-03-02 Microsoft Technology Licensing, Llc File synchronization pausing for individual files
US11163795B2 (en) 2016-12-22 2021-11-02 Palantir Technologies Inc. Systems and methods for data replication synchronization
US11829383B2 (en) 2016-12-22 2023-11-28 Palantir Technologies Inc. Systems and methods for data replication synchronization
US10262053B2 (en) 2016-12-22 2019-04-16 Palantir Technologies Inc. Systems and methods for data replication synchronization
US11604811B2 (en) 2017-04-25 2023-03-14 Palantir Technologies Inc. Systems and methods for adaptive data replication
US10068002B1 (en) 2017-04-25 2018-09-04 Palantir Technologies Inc. Systems and methods for adaptive data replication
US10915555B2 (en) 2017-04-25 2021-02-09 Palantir Technologies Inc. Systems and methods for adaptive data replication
US11099727B2 (en) 2017-05-30 2021-08-24 Palantir Technologies Inc. Systems and methods for geo-fenced dynamic dissemination
US11775161B2 (en) 2017-05-30 2023-10-03 Palantir Technologies Inc. Systems and methods for geo-fenced dynamic dissemination
US10430062B2 (en) 2017-05-30 2019-10-01 Palantir Technologies Inc. Systems and methods for geo-fenced dynamic dissemination
US11030494B1 (en) 2017-06-15 2021-06-08 Palantir Technologies Inc. Systems and methods for managing data spills
US11580173B2 (en) 2017-12-08 2023-02-14 Palantir Technologies Inc. Systems and methods for using linked documents
US11921796B2 (en) 2017-12-08 2024-03-05 Palantir Technologies Inc. Systems and methods for using linked documents
US10380196B2 (en) 2017-12-08 2019-08-13 Palantir Technologies Inc. Systems and methods for using linked documents
US10915542B1 (en) 2017-12-19 2021-02-09 Palantir Technologies Inc. Contextual modification of data sharing constraints in a distributed database system that uses a multi-master replication scheme
US11321303B2 (en) 2018-05-07 2022-05-03 Microsoft Technology Licensing, Llc Conflict resolution for multi-master distributed databases
US10970270B2 (en) 2018-05-07 2021-04-06 Microsoft Technology Licensing, Llc Unified data organization for multi-model distributed databases
US11379461B2 (en) 2018-05-07 2022-07-05 Microsoft Technology Licensing, Llc Multi-master architectures for distributed databases
US11397721B2 (en) 2018-05-07 2022-07-26 Microsoft Technology Licensing, Llc Merging conflict resolution for multi-master distributed databases
WO2019217481A1 (en) * 2018-05-07 2019-11-14 Microsoft Technology Licensing, Llc Conflict resolution for multi-master distributed databases
US10970269B2 (en) 2018-05-07 2021-04-06 Microsoft Technology Licensing, Llc Intermediate consistency levels for database configuration
US10885018B2 (en) 2018-05-07 2021-01-05 Microsoft Technology Licensing, Llc Containerization for elastic and scalable databases
US10817506B2 (en) 2018-05-07 2020-10-27 Microsoft Technology Licensing, Llc Data service provisioning, metering, and load-balancing via service units
US11030185B2 (en) 2018-05-07 2021-06-08 Microsoft Technology Licensing, Llc Schema-agnostic indexing of distributed databases
US11720347B1 (en) 2019-06-12 2023-08-08 Express Scripts Strategic Development, Inc. Systems and methods for providing stable deployments to mainframe environments
US11086757B1 (en) * 2019-06-12 2021-08-10 Express Scripts Strategic Development, Inc. Systems and methods for providing stable deployments to mainframe environments

Similar Documents

Publication Publication Date Title
US20060106879A1 (en) Conflict resolution in a synchronization framework
US8255359B2 (en) System and methods for asynchronous synchronization
US11036754B2 (en) Database table conversion
US6393434B1 (en) Method and system for synchronizing data using fine-grained synchronization plans
JP4405812B2 (en) Method and apparatus for synchronizing between a first data storage unit and a second data storage unit
US8290908B2 (en) Synchronization server process
US6694335B1 (en) Method, computer readable medium, and system for monitoring the state of a collection of resources
AU2009296436B2 (en) Trickle sync protocol
US6973463B2 (en) Replication architecture for a directory server
US8751442B2 (en) Synchronization associated duplicate data resolution
US20070250645A1 (en) Mobile phone data backup system
US20150195338A1 (en) File fetch from a remote client device
US20170161291A1 (en) Database table conversion
JP2002101120A (en) Communication method and information processing apparatus
JP5613295B2 (en) Storage medium for providing system, method and program for managing distribution of contents to apparatus
US7313598B1 (en) Method and apparatus for partial replication of directory information in a distributed environment
JP2002251309A (en) Shared file management system
Nixon et al. Dynamic Reconfiguration Of FPGA Nodes In A Distributed Computing System: A Preliminary Investigation
JP2013218670A (en) Computer mounting method, computer system and computer readable recording medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ZONDERVAN, QUINTON Y.;AURIEMMA, STEPHEN T.;BARATHAM, SESHA S.;AND OTHERS;REEL/FRAME:015470/0518

Effective date: 20041115

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION