CN101573923B - 用于传播数字同步冲突的知识的传播方法 - Google Patents
用于传播数字同步冲突的知识的传播方法 Download PDFInfo
- Publication number
- CN101573923B CN101573923B CN2007800464199A CN200780046419A CN101573923B CN 101573923 B CN101573923 B CN 101573923B CN 2007800464199 A CN2007800464199 A CN 2007800464199A CN 200780046419 A CN200780046419 A CN 200780046419A CN 101573923 B CN101573923 B CN 101573923B
- Authority
- CN
- China
- Prior art keywords
- synchronization
- synchronization endpoints
- change
- endpoints
- knowledge
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
同步社区可以包括一组同步端点。在同步社区的两个同步端点彼此同步时,在该两个同步端点对同一特定数据项做出变更并且在做出这些变更时该两个同步端点不知道另一相应的同步端点对该同一数据项所做出的变更时,可以检测到同步数据冲突。可以延迟所检测到的同步数据冲突的解决,并且指示所检测到的同步数据冲突的数据可以在同步操作期间被传播到其它同步端点。
Description
背景
同步端点可以在处理设备上实现并可以表示各种数据存储或设备,这些存储或设备可以包括但不限于,计算机、笔记本计算机、个人数字助理、蜂窝电话或其它无线设备、存储设备上的具有一个或多个文件的文件夹、存储器中的一组存储器位置、服务器计算机、在线服务、可以将数据电子地存储到其中或可以从中电子地检索数据的任何其它设备或容器、或其任何组合。同步社区可以是可彼此同步的一组同步端点。在双向多主同步技术中,同步端点对可以用以下方式来彼此同步数据:同步端点对的第一同步端点可请求与该同步端点对的第二同步端点进行同步并且第二同步端点可请求与第一同步端点进行同步。在双向多主同步技术中,可能在不同的端点处对特定数据项进行并发或几乎并发的修改,使得在端点尝试同步时可能发生冲突。
现有同步应用程序使用多种技术来解决冲突。一些同步应用程序通过在同步时显示用户界面(UI)并要求用户选择冲突解决方案来解决冲突。该方法的缺点是在同步过程期间迫使用户在场以便他们可以响应该UI或不完成该同步过程的风险。其它同步应用程序推迟冲突解决并准许用户稍后经由UI解决该冲突解决。在某些情况下,所推迟的冲突解决可能从未解决,因为该冲突可能是在不具有解决冲突的设施的端点上检测到的。其它同步应用程序可以实现自动冲突解决策略。例如,同步应用程序可以通过总是选择具有更晚的写入时间的修订作为冲突的胜者来解决冲突。在这种同步应用程序中,所丢弃的修订可被保存在进行撤消操作,该操作在被执行时可使得所丢弃的修订被声明为是冲突的胜者并可以相应地修订数据。然而,这种同步应用程序的缺点是该撤消操作用作对一项的新修订而非退清对该项所执行的一个或多个动作。
概述
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
在根据本发明的主题的各实施例中,同步社区内的同步端点可以彼此同步,以使各同步端点可以包括一致的最新数据。然而,两个同步端点在每一相应的同步端点不知道另一相应的同步端点所做出的变更时变更同一数据项是可能的。在对同一数据项做出这样的变更时,可存在同步数据冲突。该同步数据冲突的解决可以延迟,并且该同步数据冲突的知识可在与其它同步端点同步时被传播到其它同步端点。
附图
为了描述能够获得上述和其它优点和特征的方式,以下将描述更为具体的描述并通过参考附图中示出的各具体实施例来呈现。可以理解,这些附图仅描述各典型实施例,从而不被认为是对其范围的限制,将通过使用附图用附加特征和细节来描述和说明各个实现。
图1是可在其上实现同步端点的处理设备的功能框图。
图2示出用于同步端点的同步社区的示例性操作环境。
图3示出同步社区的示例性拓扑结构。
图4是在根据本发明的主题的实施例中如何在同步端点中管理变更的示例性时间级(timewise)图示。
图5是在根据本发明的主题的实施例中在同步期间使用知识来枚举变更的示例性时间级图示。
图6A-6C示出用于检测同步冲突的示例性实施例。
图7示出在同步操作期间的变更ID和知识跟踪的示例性实施例。
图8、10和12示出在根据本发明的主题的实施例中使用例外列表的同步。
图9、11和13分别示出在图8、10和12所示的同步之后更新知识的示例性方法。
详细描述
以下详细描述各实施例。尽管讨论各个具体实现,但应当理解,这仅是出于说明的目的。相关领域技术人员将认识到,可以使用其它组件和配置而不背离本发明的主题的精神和范围。
示例性操作环境
根据本发明的主题的各实施例涉及同步社区的同步端点之间的数据同步。同步端点可以在处理设备上实现并可以表示各种数据存储或设备,这些存储或设备可以包括但不限于,计算机、笔记本计算机、个人数字助理、蜂窝电话或其它无线设备、存储设备上的具有一个或多个文件的文件夹、存储器中的一组存储器位置、服务器计算机、在线服务、可以将数据电子地存储到其中或可以从中电子地检索数据的任何其它设备或容器、或其任何组合。在一些实施例中,实现同步端点的设备可以包括多个同步端点。两个同步端点之间发生的同步操作的示例可以包括但不限于,两个处理设备的同步、一个存储设备上的或两个不同的存储设备上的两个文件夹的同步、或一个存储器中的或两个不同的存储器中的两组存储器位置的同步。
图1是可用于实现同步社区中的一个或多个同步端点的处理设备100的功能框图。处理设备100可以包括总线110、处理器120、存储器130、只读存储器(ROM)140、存储设备150、输入设备160、输出设备170和通信接口180。总线110可以是准许处理设备100的各组件之间的通信的通信接口。
处理器120可以包括解释和执行指令的至少一个常规处理器或微处理器。存储器130可以是随机存取存储器(RAM)或存储供处理器120执行的信息和指令的另一种类型的动态存储设备。存储器130还可以存储在处理器120执行指令期间使用的临时变量或其它中间信息。ROM 140可以包括常规ROM设备或为处理器120存储静态信息和指令的另一种类型的静态存储设备。存储设备150可以包括用于存储数据和/或指令的任何类型的有形介质。在一些实施例中,存储设备150可以包括一个或多个文件夹,每一文件夹都可以包括一个或多个文件。
输入设备160可以包括准许用户向处理设备100输入信息的一个或多 个常规机制,诸如例如,键盘、鼠标、或其它输入设备。输出设备170可以包括向用户输出信息的一个或多个常规机制,包括显示器、打印机、或其它输出设备。通信接口180可以包括使处理设备100能够与其它设备或网络进行通信的任何收发器类机制。
处理设备100可以响应于处理器120执行诸如,例如存储器130或其它有形介质等机器可读介质中所包含的指令序列来执行这些功能。这些指令可从诸如存储设备150等另一有形机器可读介质或经由通信接口180从单独的设备读入存储器130中。
图2示出用于同步端点的同步社区的示例性操作环境200。示例性操作环境200可以包括网络202、同步端点204和同步端点206。
网络202可以是有线或无线网络并可以包括经由有线或无线手段连接的多个设备。网络202可以只包括一个网络或包括多个不同的网络,该不同网络中的一些可以是不同类型的网络。
同步端点204和同步端点206可以在两个不同的处理设备上实现,在该示例性实施例中,如在处理设备100上实现。在示例性实施例200中,同步端点204和同步端点206可以经由网络202彼此通信。
操作环境200是示例性的。可以在其它操作环境中实现根据本发明的主题的其它实施例。例如,网络202可以不包括在一些操作环境中,如其中同步端点可被包括在单个设备中的操作环境。
同步
在根据本发明的主题的各实施例中,同步端点可以彼此同步,以使各同步端点可以包括一致的最新数据。在同步端点的同步期间,在一个同步端点包括对特定数据项的变更、另一同步端点包括对该特定数据项的另一变更、并且任一同步端点都不知道另一相应同步端点对该特定数据项所做出的变更时,可发生冲突。例如,同步端点1可能更新地址簿数据库中的John Smith的电话号码,而同步端点2可能删除该地址簿数据库中的JohnSmith的电话号码。如果同步端点1和同步端点2在不知道另一相应同步端点所做出的变更的情况下做出上述变更,则在这两个同步端点彼此同步时,可能发生冲突。在根据本发明的主题的各实施例中,在同步端点不能够解 决冲突时,可以延迟冲突解决并且该冲突的知识可以在同步操作期间被传播到其它同步端点。
同步通常发生在形成同步社区的一组参与的同步端点之间。任何给定的同步端点在任何给定时刻可能不知道同步社区的全体成员。此外,任何给定的同步端点在任何给定时刻可能不知道同步社区的拓扑结构。在一个实施例中,同步社区中的每一同步端点可以具有ID,如全局唯一标识符(GUID)或在该同步社区中唯一的其它ID。
每一同步端点可以维护方便同步端点之间的高效且改进的同步的“知识”。在一个实施例中,知识可以是表达给定同步端点所知道的变更的元数据。知识可被表示为变更ID的向量,其中每一变更ID表示一个同步端点ID和最大版本(同步端点ID,最大版本)。特定知识向量中的多个变更ID可以随着向同步社区添加或从中移除同步端点而变更。尽管知识向量也可被不同地表达,但是简明地表示特定同步端点知道的变更是有利的。特定知识可以或可以不特别包含同步社区中的每一同步端点的变更ID。同步端点可无需跟踪其它同步端点已知的信息,因为该信息有效地由该同步端点的知识来表示。
同步社区中的同步端点可以通过向它们与之同步的同步端点提供它们自己的知识来同步。为减少表示可在同步同步端点之间所发送的知识的数据量,知识可如上所述地被表达为知识向量。因此,在同步端点之间所发送的知识不必包括每一变更ID,而是可以采用表示多个变更ID的向量的形式。例如,如果一同步端点知道同步端点A所做的从第一个变更到第十个变更的所有变更以及标为B的同步端点所做的从第一个变更到第五个变更的所有变更,则该同步端点可发送指示该同步端点知道对应于变更ID A1到A10的所有变更以及对应于变更ID B1到B5的所有变更的知识向量A10B5。尽管知识可被表达为知识向量,但是其它实施例也构想了知识的其它表达。例如,一些实施例使用任何知识表达式来表达知识,其中能够(1)向知识表达式添加变更,(2)检查知识表达式中是否包括了变更,以及(3)将两个知识表达式合并在一起。
图3示出具有所示的拓扑结构的同步社区300的一个示例。同步社区 300包括多个同步端点,并且是用于实现根据本发明的主题的各实施例的环境的一个示例。同步社区300中的同步端点可以在诸如处理设备100等设备上实现并可以表示各种数据存储或设备,这些存储或设备可以包括但不限于,计算机、笔记本计算机、个人数字助理、蜂窝电话或其它无线设备、存储设备上的具有一个或多个文件的文件夹、存储器中的一组存储器位置、服务器计算机、在线服务、可以将数据电子地存储到其中或可以从中电子地检索数据的任何其它设备或容器、或其任何组合。
图3示出示例性同步社区300。在图3中,同步端点A 302可以通过通信链路306电子地耦合到同步端点B 304。同步端点A 302可以通过通信链路308连接到同步端点C 310。同步端点C 310可以通过通信链路312连接到同步端点B 304。同步端点C 310可以通过通信链路316连接到同步端点D 314。在同步社区300中,尽管并非所有的同步端点都通过通信链路直接连接,但是任何同步端点中的变更可被同步到同步社区300中的其它同步端点中的任一个。
例如,为将同步端点A 302与同步端点D 314进行同步,同步端点A 302和C 310可通过通信链路308进行同步。因此,同步端点C 310可包括在同步端点A 302上做出的变更。同步端点C 310和D 314随后可以通过通信链路316进行同步,并且如此,同步端点D 314可包括来自同步端点A 302的变更。以此方式,同步端点A 302可在没有任何种类的直接链接的情况下与同步端点D 314进行同步。实际上,同步端点A 302和D 314甚至可能不知道彼此在同步社区300内的存在。所示的通信链路可以是有线和/或无线链路。
现在参考图4,根据本发明的主题的一个实施例示出如何在同步端点中管理变更。图4示出同步端点A 400的时间级进展。同步端点A 400可包括知识402(在此情况下标记为KA)和变更404(在此情况下标记为ΔA)。变更404中的每一变更可以是项的当前数据内容。变更可以是新项被添加到同步端点(即使本质上没有任何项变更)、项的删除等。变更404的每一个都与在一个实施例中可以是变更ID的版本相关联。在时刻(1)处,同步端点A 400处于稳定状态。在时刻(2)处,用户将标记为X的变更输入到同 步端点A 400中。图4示出变更X作为变更404的成员来添加。在时刻(3)处,更新知识402以包括与变更X相关联并可标识向变更404添加变更X的变更ID,即ChangeID(X)(变更ID(X))。该实施例示出对同步端点的变更可与特定变更ID相关联的一种方式。知识404可以是知识向量并可以表示同步端点A 400所知道的变更。在一个实施例中,对数据库中的项或对象维护版本或变更ID,并且版本可被用来标识需要同步什么。或者,也可维护变更日志。
图5示出在同步期间使用知识来枚举变更。图5示出两个同步端点,即同步端点A 502和同步端点B 504。同步端点A 502可包括变更集合506,在该示例中被标记为ΔA。同步端点A 502还可以包括知识508,在该示例中被标记为KA。知识508可包括诸如上述列表等变更ID的列表。类似地,同步端点B 504可包括变更集合510,其中的每一变更与一作为变更ID的版本相关联。为开始同步,在时刻(1)处,同步端点A 502可向同步端点B504发送包括知识508的同步请求。同步端点B 504通过将知识508与同变更集合510中的每一变更相关联的版本进行比较,可作出关于同步端点A502在其变更506中已经具有了同步端点B的变更510中的哪些以及同步端点A 502知道哪些变更的判定。另选地,同步端点B 504可以将知识508与每一项的版本进行比较。因此,同步端点B 504可以在时刻(2)处仅枚举并向同步端点A 502发送同步端点B的变更510中与没有包括在同步端点A 502的知识508中的版本相关联的部分,如变更514所示。例如,如果同步端点A 502的知识向量是A3B12,并且同步端点B 504具有与作为变更ID B13和B14的版本相关联的当前变更,则发送给同步端点A 502的变更将包括与变更ID B13和B14相关联的那些变更。在一个实施例中,如果B13和B14都是对同一项做出的,则仅发送B14。
另外,同步端点B 504还可以向同步端点A 502发送同步端点B的知识512。因为同步端点B 504向同步端点A 502发送了同步端点B 504中可用的、尚不在同步端点A 502中的所有变更510,所以同步端点A 502现在具有最初在同步端点A 502中的所有变更506,加上最初在同步端点B 504中的变更510,只要变更510尚未被同步端点B 504所发送的变更代替。同 步端点A 502还具有关于同步端点B 504知道的所有变更的信息。因此,同步端点A 502可更新其知识508以反映变更510的添加。这只需通过将同步端点A的知识508添加到同步端点B的知识512并如图5中的时刻(3)处所示将该值定义为同步端点A的知识508来完成。
由此,执行了高效的同步,其中仅同步了所需变更并且其中各个同步端点只需维护关于驻留在特定同步端点上的变更以及其所知道的先前变更的信息。尽管该示例示出同步端点B 504上的所有变更向同步端点A 502的完整同步,但是也存在仅同步部分变更的情况。由此,只有对应于所同步的变更的变更ID才被添加到接收更新的同步端点的知识。
除枚举变更之外,同步端点的知识也可用于冲突检测。现在参考图6A和6B,本发明的一个实施例示出如何可实现冲突检测。图6A示出两个同步端点通过用于通信和同步的通信链路(无线和/或有线)来连接。同步端点A 602可包括知识608和变更集合606。如图5中的示例一样,知识608可包括与变更606相关联的和与先前变更相关联的变更ID的集合。出于本示例的目的,同步端点A 602还可包括在同步端点A 602中对项所做的变更。在图6A中该变更被标记为X,且X是变更606的成员。类似地,同步端点B 604可包括知识612、变更集合610和对项做出的被标记为Y的作为变更610的成员的变更。
说明性地,在图6B的动作620处,同步端点A 602可以向同步端点B604发送被标记为X的变更X。与变更X相关联并与其一起发送的可以是两个其它值,即与变更X相关联的、被标记为ChangelD(X)的变更ID和作为在对同步端点A 602做出变更X时同步端点A 602中所存在的知识的、被标记为KA(X)的生成知识(made-with-knowledge)值(动作620)。另选地,在根据本发明的主题的一些实施例中,生成知识可以是在发送变更时同步端点中所存在的知识。同步端点A 602的当前知识608也可被发送给同步端点B 604。同步端点B 604随后可以将变更X所变更的项IX与变更Y所变更的项IY进行比较(动作622)。如果变更X和变更Y对应于不同的项,则没有冲突(动作624)。
如果变更涉及同一项的不同版本,则进一步分析可以确定冲突的出现。 同步端点B 604随后可以检查来查看在同步端点B 604中做出变更Y时同步端点B 604是否知道变更X(动作626)。变更Y具有与其相关联的变更ID ChangeID(Y)和生成知识值KB(Y)。如果ChangeID(X)是变更Y的生成知识KB(Y)的成员,则没有冲突。换言之,变更Y是在具有同步端点A 602中所做出的变更X的知识的情况下在同步端点B 604中做出的。由此,变更Y现在表示同步端点A 602和B 604的最新且有效的数据。尽管未在图6B所示的示例中示出,但是在下一时刻,变更Y有可能被发送到同步端点A 602,并且与变更X和Y相关联的项以图5所描述的方式更新为同步端点A 602上的变更Y。
如果变更X和Y是针对同一项的,并且ChangeID(X)没有出现在KB(Y)中,则进行检查来查看在做出变更X时同步端点A 602是否已知变更Y(动作628)。这通常是通过检查来查看示为ChangeID(Y)的对变更Y的变更枚举在做出变更X的时刻是否包括在同步端点A的知识608KA(X)中来完成。如果ChangeID(Y)是KA(X)的成员,则变更X是变更Y的生成知识,并且没有冲突(动作624)。否则,确定存在冲突(动作630)。在该示例中,变更X是对特定项的最新且有效的变更。由此,同步端点B 604可能以图5所描述的方式用变更X来更新。
如果变更X和Y是针对同一项的,ChangeID(Y)没有出现在KA(X)中,且ChangeID(X)没有出现在KB(Y)中,则存在真正的冲突。换言之,变更X和Y是彼此独立地做出的。在这种情况下,将检测到冲突,并且可应用各种冲突解决规则来确定哪一变更,即X还是Y是最新且有效的变更。这些规则可包括检查时间戳来确定哪一变更是最近做出的、始终有利于某些类型的同步端点(诸如储存在服务器上的)来解决冲突、和/或任何其它合适的冲突解决。或者,在一种形式的冲突解决中,具有冲突的变更的项可被更新,使得冲突的变更被合并以形成新的变更。
图6C是示出在图6B的动作630期间检测到冲突时可在诸如同步端点B 604等同步端点中发生的示例性处理的流程图。在确定存在冲突之后,同步端点B 604可以确定用于解决所确定的冲突的冲突解决策略或规则是否存在(动作632)。如果确定冲突解决策略或规则存在,则同步端点B 604 可根据冲突解决策略或规则解决该冲突,且其可以如参考图5所述地应用这些变更。
如果在动作632同步端点B 604确定用于解决所确定的冲突的冲突解决策略或规则不存在,则同步端点B 604可以将冲突的变更X和Y作为同步端点B 604的知识的一部分来保存(动作638)。在后续时间点处,在同步端点B 604与另一同步端点同步时,同步端点B 604可以向该另一同步端点发送其包括冲突的变更的知识的知识。另一同步端点可以确定冲突存在并且在该另一同步端点具有用于解决该冲突的冲突解决策略或规则的情况下可以解决该冲突,或该另一同步端点可以将冲突的变更作为其知识的一部分来保存,如参考图6C所述。
现在参考图7,示出变更ID和知识跟踪的一个示例性实施例。图7示出同步端点702。同步端点702可包括变更集合706和知识708。变更集合706可包括若干单独的变更710,在该示例中被示为X、Y和Z。在图7所示的示例中,同步端点702的知识的当前状态由知识向量712(在该情况中为A4)来表示。知识向量712可以表示同步端点702的所有知识708。
图7中还示出了多个变更ID 714。在图7的示例中,同步端点702可包括对应于变更710的三个经变更的项716,即IX、IY和IZ。使用变更ID,可以辨别具有变更ID A1的项IX是在第一时刻在同步端点702中做出的。具有变更ID A2的项IY是在变更IX之后的时刻在同步端点702中做出的。具有变更ID A4的项IZ是在变更项IY之后的时刻在同步端点702中做出的。尽管未在图7中直接示出,但A3可对应于一先前的变更,诸如在一个示例中,对项IZ做出的被标为A4的变更所代替的变更。
同步端点702的变更ID A4和也被标记为A4的知识向量702之间有差别。在该示例中,知识向量A4表示知识708包括对应于标记为A4、A3、A2和A1的变更ID的变更。换言之,知识向量可包括由等于该知识向量的变更ID 718所表示的变更,以及在该知识向量中表示的变更ID 718之前所做出的具有同一同步端点ID的所有变更。另一方面,在本示例中,标记为A4的变更ID 718仅表示对项IZ做出的变更Z。
在向特定同步端点添加变更时,变更ID可作为例外添加到例外列表。 在接受了例外列表中包括的来自同步端点的变更的连续版本并且在与同步端点的知识向量组合时版本号中没有间隙的情况下,例外列表可被合并到知识向量中。这参考图8进一步解释。
现在参考图8,示出在包含多个同步端点的拓扑结构中进行同步的两个同步端点的示例。同步端点A 802包含变更集合804、知识806以及作为知识806的速记表示的知识向量808。说明性地,同步端点A 802的知识向量808 A5B3C1D8示出同步端点A的知识806包括在同步端点A 802中所做出的直到第五个变更的变更、同步端点B 810中的直到第三个变更的知识、同步端点C中的直到第一个变更的知识、以及同步端点D中的直到第八个变更的知识。在图8的示例中,同步端点B 810包括变更集合812、包括知识向量816和例外列表817的知识814,知识向量816是同步端点B的知识814的至少一部分的速记表示。同步端点B的知识向量816A3B3C3D8示出同步端点B 802具有知识,该知识包括直到同步端点A 802所做出的第三个变更的知识、直到同步端点B 810所做出的第三个变更的知识、直到同步端点C所做出的第三个变更的知识、以及直到同步端点D所做出的第八个变更的知识。上述知识向量可包括由同步端点做出的从第一个变更到某一后续变更的变更枚举的连续表示。例外列表817包括同步端点C所做出的第四个变更、同步端点C所做出的第五个变更和同步端点D所做出的第九个变更。在该示例中,来自同步端点C的第四个变更C4和来自同步端点D的第九个变更D4包括对同一数据项的冲突的变更。即,变更C4和D9是尚未被接受的变更并且是同步端点C和同步端点D之间的延迟的冲突解决的结果。因为变更C4和D9尚未被接受,所以它们未被合并到同步端点B 810的知识向量816中。此外,因为变更C4可能未被合并到知识向量816中,所以诸如C5等来自同步端点C的稍后的变更也可能未被合并到知识向量816中。
同步端点A 802与同步端点B 810的同步的时间级图示在图8中示出。在时刻(1)处,同步端点A 802向同步端点B 810发送同步请求818以及同步端点A的知识806,该知识可以由同步端点A的知识向量808来表示。如果同步端点A 802包括例外列表(在该示例中不包括),则该例外列表 将包括在同步端点A的知识806中。此外,在一些实施例中,同步端点A 802可不发送分开的同步请求。在这种实施例中,同步端点A 802可发送还可以用作同步请求的知识806。
同步端点B 810在时刻(2)处通过将同步端点A的知识806与同同步端点B中的变更相关联的变更ID进行比较来检查同步端点A的知识806。同步端点B 810可发现同步端点A 802不知道同步端点C所做出的被标记为变更ID C2和C3的变更。此外,同步端点B 810可发现同步端点A 802不知道来自同步端点B的例外列表817的变更C4、C5和D9。因此,同步端点B 810可发送同步端点B的对应于这些变更ID的变更,只要用这些变更ID标记的变更被认为是适用于同步端点B 810中的项的当前变更。如果变更ID对应于先前的过期变更,则不发送对应于该ID的变更。例如,如果具有版本C3的项被更新并且被分配了新版本,则与C3相关联的变更不再存在于同步端点B 810中且不被发送到同步端点A 802。随后或同时,如在时刻(3)所示,同步端点B 810可以向同步端点A 802发送同步端点B的知识814,该知识可被表示为知识向量816和例外列表817。在一些实施例中,同步端点B 810在时刻(3)处发送知识814可被认为等效于发送同步请求。
在时刻(4)处,同步端点A 802通过将同步端点B 810所发送的知识814与对应于同步端点A 802中的变更的变更ID进行比较来对其进行检查。同步端点A 802发现同步端点B 810既没有变更ID A4和A5所表示的变更,也没有关于这些变更的知识。因此,同步端点A 802发送同步端点A的变更804或例外列表(其在该示例中不存在)中存在的、对应于这些变更ID的任何当前变更(除了在变更ID表示过期的变更而使得不发送任何变更时)。同步端点A 802稍后可以向同步端点B 810发送消息,指示已经发送所有变更以使同步端点A 802和同步端点B 810现在分别能够更新它们的知识向量808和816以包括最近的变更,如果这些变更已被接受并且不是与一个或多个未解决的冲突相关联的变更的话。如图8在时刻(5)处所示,同步端点A的知识包括知识向量A5B3C3D8,该知识向量等于同步端点B的知识向量并包括同步端点A 802所做出的直到第五个变更枚举的所有变更、同步端点B所做出的直到第三个变更枚举的所有变更、同步端点C所 做出的直到第三个变更枚举的所有变更、同步端点D所做出的直到第八个变更枚举的所有变更、以及存储在例外列表中的变更C4、C5和D9。注意,在该示例中,变更C4和D9包括关于同步端点C和D之间的冲突的信息。
图9示出在如图8所示的同步之后更新知识的方法。具体地,图9示出用于使用存储在同步端点A 802上的例外列表902和存储在同步端点B810中的例外列表903来更新知识向量的方法。在同步端点之间发送变更时,这些变更是用与该变更相关联的变更ID来发送的。在向同步端点添加变更时,变更ID可作为例外添加到例外列表902或903。检查图9中的同步端点A 802的知识,该知识包括知识向量808和包括从同步端点B 810接收到的例外C2、C3、C4、C5和D9的例外列表902。在该示例中,变更C4和D9涉及对于同一数据项的变更,并且与变更C4和变更D9相关联的生成知识指示相应变更是在没有对于该同一数据项的冲突的变更的知识的情况下做出的。在该示例中,例外列表902的变更C2和C3不具有冲突的数据,并且它们可应用于同步端点A 802的数据。因此,变更C2和C3随后可以从例外列表902中移除并且知识向量808可被更新来提供经更新的知识904,经更新的知识904可包括指示同步端点A 802已经应用了来自同步端点A 802的直到第五个变更的所有变更、来自同步端点B的直到第三个变更的所有变更、来自同步端点C的直到第三个变更的所有变更和来自同步端点D的直到第八个变更的所有变更的知识向量。经更新的知识904还可包括具有变更C4、C5和D9的例外列表。在该示例中,变更C4和D9是冲突的变更并且C5是来自同步端点C的可被应用的变更。
对于同步端点B 810,从同步端点A 802接收到的变更A4和A5可被添加到例外列表903。变更C4、C5和D9已被包括在例外列表中,并且是在同步端点B 810与同步端点A 802同步之前已知的知识816的一部分。在与同步端点A 802同步之后,经更新的知识906可包括知识向量A5B3C3D8,指示来自同步端点A 802的直到第五个变更、来自同步端点B810的直到第三个变更、来自同步端点C的直到第三个变更和来自同步端点D的直到第八个变更都已被应用于同步端点B 810的数据。知识906还可包括具有变更C4、C5和D9的例外列表。在该示例中,C4和D9是尚未 被应用的冲突的变更,而C5是来自同步端点C的可被应用于同步端点B810的数据的第五个变更。
在图8和图9所示的示例中,来自另一同步端点的冲突的知识可被传播,并且同步端点A 802和同步端点B 810可以维护该冲突的知识并还可以在后续同步期间传播该知识。如果接收冲突的知识的同步端点包括解决策略或规则,则该同步端点可以解决该冲突。
图10示出两个同步端点同步的另一示例。同步端点A 1002包含变更集合1004、知识1006以及作为知识1006的速记表示的知识向量1008。同步端点A 1002的知识向量1008 A5B3C5D9示出同步端点A的知识1006包括在同步端点A 1002中所做出的直到第五个变更的变更、同步端点B1010中的直到第三个变更的知识、同步端点C中的直到第五个变更的知识、以及同步端点D中的直到第九个变更的知识。在图10的示例中,同步端点B 1010包括变更集合1012、包括知识向量1016和例外列表1017的知识1014,其中知识向量1016是同步端点B的知识1014的至少一部分的速记表示。同步端点B的知识向量1016 A3B4C3D8示出同步端点B具有知识,该知识包括直到由同步端点A 1002所做出的第三个变更的知识、直到由同步端点B 1010所做出的第四个变更的知识、直到由同步端点C所做出的第三个变更的知识、以及直到由同步端点D所做出的第八个变更的知识。例外列表1017包括同步端点C所做出的第四个变更、同步端点C所做出的第五个变更和同步端点D所做出的第九个变更。在该示例中,来自同步端点C的第四个变更C4和来自同步端点D的第九个变更D4包括对同一数据项的冲突的变更。即,变更C4和D9是尚未被接受的变更并且是同步端点C和同步端点D之间的延迟的冲突解决的结果。因为变更C4和D9尚未被接受,所以它们未被合并到同步端点B 1010的知识向量1016中。此外,因为变更C4可能未被合并到知识向量1016中,所以诸如C5等来自同步端点C的稍后的变更也可能未被合并到知识向量1016中。
同步端点A 1002与同步端点B 1010的同步的时间级图示在图10中示出。在时刻(1)处,同步端点A 1002可向同步端点B 1010发送同步请求1018以及同步端点A的知识1006,该知识可以由同步端点A的知识向量1008 来表示。如果同步端点A 802包括例外列表(在该示例中不包括),则该例外列表将包括在同步端点A的知识1006中。如前所述,在一些实施例中,同步端点A 1002可以不发送分开的同步请求。在这种实施例中,同步端点A 1002可发送还可以用作同步请求的知识1006。
同步端点B 1010在时刻(2)处可通过将同步端点A的知识1006与同同步端点B 1010中的变更相关联的变更ID进行比较来检查同步端点A的知识1006。同步端点B 1010可发现同步端点A 1002不知道同步端点B所做出的被标记为变更ID B4的变更。因此,同步端点B 1010发送同步端点B的对应于变更ID B4的变更,只要该变更被认为是适用于同步端点B 1010中的项的当前变更。如果变更ID对应于先前的过期变更,则不发送对应于该ID的变更。随后或同时,如在时刻(3)所示,同步端点B 1010可以向同步端点A 1002发送同步端点B的知识1014,该知识可被表示为知识向量1016和例外列表1017。在一些实施例中,同步端点B 1010在时刻(3)处发送知识1014可被认为等效于发送同步请求。
在时刻(4)处,同步端点A 1002通过将同步端点B 1010所发送的知识1014与对应于同步端点A 802中的变更的变更ID进行比较来对其进行检查。同步端点A 802可发现同步端点B 810既没有变更ID A4和A5所表示的变更,也没有关于这些变更的知识。因此,同步端点A 1002可发送同步端点A的变更1004或例外列表(其在该示例中不存在)中存在的、对应于这些变更ID的任何当前变更(除了在变更ID表示过期的变更而使得不发送任何变更时)。
在该示例中,变更ID A5所表示的变更变更了与变更ID C4和D9所表示的变更所变更的相同的数据项。因此,在同步端点B 1010接收关于变更ID A5所表示的变更的信息时,同步端点B 1010可以确定在变更A5、C4和D9之间存在潜在冲突。然而,在该示例中,对应于变更ID A5的生成知识指示变更ID A5所表示的变更是在具有变更ID C4和D9所表示的变更的知识的情况下做出的。因此,在该示例中,变更ID A5所表示的变更是对变更ID C4和D9所表示的冲突的解决。
同步端点A 1002稍后可以向同步端点B 1010发送消息,指示已经发 送所有变更以使同步端点A 1002和同步端点B 1010现在分别能够更新它们的知识向量1008和1016以包括最近的变更,如果这些变更已被接受并且不是与一个或多个未解决的冲突相关联的变更的话。如图10在时刻(5)处所示,同步端点A的知识包括知识向量A5B4C5D9,该知识向量等于同步端点B的知识向量并包括同步端点A 1002所做出的直到第五个变更枚举的所有变更、同步端点B所做出的直到第四个变更枚举的所有变更、同步端点C所做出的直到第五个变更枚举的所有变更、以及同步端点D所做出的直到第九个变更枚举的所有变更。
图11示出在如图10所示的同步之后更新知识的方法。具体地,图11示出用于使用存储在同步端点A 1002上的例外列表1102和存储在同步端点B 1010上的例外列表1103来更新知识向量的方法。在同步端点之间发送变更时,这些变更可用与该变更相关联的变更ID来发送。在向同步端点添加变更时,变更ID可作为例外添加到例外列表1102。检查图11中的同步端点A 1002的知识,该知识包括知识向量1008和包括从同步端点B 810接收到的例外B4的例外列表1102。在该示例中,例外列表1102的变更B4不具有冲突的数据,并且可应用于同步端点A 1002的数据。因此,变更B4随后可以从例外列表1102中移除并且知识向量1008可被更新来提供经更新的知识1104,经更新的知识1104可包括指示同步端点A 802已经应用了来自同步端点A 802的直到第五个变更的所有变更、来自同步端点B的直到第四个变更的所有变更、来自同步端点C的直到第五个变更的所有变更和来自同步端点D的直到第九个变更的所有变更的知识向量。
对于同步端点B 810,从同步端点A 1002接收到的变更A4和A5可被添加到例外列表1103。变更C4、C5和D9已被包括在例外列表中,并且可以是在同步端点B 1010与同步端点A 1002同步之前已知的知识1016的一部分。在与同步端点A 1002同步之后,经更新的知识1106可包括知识向量A5B4C5D9,指示来自同步端点A 802的直到第五个变更、来自同步端点B 810的直到第四个变更、来自同步端点C的直到第五个变更和来自同步端点D的直到第九个变更都已被应用于同步端点B 810的数据。因此,在该示例中,在对同一数据项的变更是在具有变更ID C4和D9所表示的冲 突的知识情况下做出的时候,可以通过接收该变更来解决该未解决的冲突。
图12示出两个同步端点同步的又一示例。同步端点A 1202包含变更集合1204、知识1206以及作为知识1206的速记表示的知识向量1208。同步端点A 1208的知识向量1008 A5B3C3D8示出同步端点A的知识1206包括在同步端点A 1202中所做出的直到第五个变更的变更、同步端点B1010中的直到第三个变更的知识、同步端点C中的直到第三个变更的知识、以及同步端点D中的直到第八个变更的知识。在图12的示例中,同步端点B 1210包括变更集合1212、包括知识向量1216和例外列表1217的知识1214,其中知识向量1216是同步端点B的知识1214的至少一部分的速记表示。同步端点B的知识向量1216 A3B4C3D8示出同步端点B具有知识,该知识包括同步端点A 1202所做出的直到第三个变更的知识、同步端点B1210所做出的直到第四个变更的知识、同步端点C所做出的直到第三个变更的知识、以及同步端点D所做出的直到第八个变更的知识。例外列表1217包括同步端点C所做出的第四个变更、同步端点C所做出的第五个变更和同步端点D所做出的第九个变更。在该示例中,来自同步端点C的第四个变更C4和来自同步端点D的第九个变更D9包括对同一数据项的冲突的变更。即,变更C4和D9是尚未被接受的变更并且是同步端点C和同步端点D之间的延迟的冲突解决的结果。因为变更C4和D9尚未被接受,所以它们未被合并到同步端点B 1210的知识向量1216中。此外,因为变更C4可能未被合并到知识向量1216中,所以诸如C5等来自同步端点C的稍后的变更也可能未被合并到知识向量1216中。
同步端点A 1202与同步端点B 1210的同步的时间级图示在图12中示出。在时刻(1)处,同步端点A 1202可向同步端点B 1210发送同步请求1218以及同步端点A的知识1206,该知识可以由同步端点A的知识向量1208来表示。如果同步端点A 1202包括例外列表(在该示例中不包括),则该例外列表将包括在同步端点A的知识1206中。如前所述,在一些实施例中,同步端点A 1202可不发送分开的同步请求。在这种实施例中,同步端点A1202可发送还可以用作同步请求的知识1206。
同步端点B 1210在时刻(2)处可通过将同步端点A的知识1206与同同 步端点B 1210中的变更相关联的变更ID进行比较来检查同步端点A的知识1206。同步端点B 1210可发现同步端点A 1202不知道同步端点B所做出的被标记为变更ID B4、C4、C5和D9的变更。因此,同步端点B 1210可以发送同步端点B的对应于变更ID B4、C4、C5和D9的变更,只要这些变更被认为是当前的。如果变更ID对应于先前的过期变更,则不发送对应于该变更ID的变更。随后或同时,如在时刻(3)所示,同步端点B 1210可以向同步端点A 1202发送同步端点B的知识1214,该知识可被表示为知识向量1216和例外列表1217。在一些实施例中,同步端点B 1210在时刻(3)处发送知识1214可被认为等效于发送同步请求。
在时刻(4)处,同步端点A 1202通过将同步端点B 1210所发送的知识1214与对应于同步端点A 1202中的变更的变更ID进行比较来对其进行检查。同步端点A 1202可发现同步端点B 1210没有变更ID A4和A5所表示的变更中的任一个的知识。因此,同步端点A 1202可发送同步端点A的变更1204或例外列表(其在该示例中不存在)中存在的、对应于这些变更ID的任何当前变更(除了在变更ID表示过期的变更而使得不发送任何变更时)。
在该示例中,变更ID A5所表示的变更变更了与变更ID C4和D9所表示的变更所变更的相同的数据项。因此,在同步端点B 1210接收关于变更ID A5所表示的变更的信息时,同步端点B 1010可以确定在变更A5、C4和D9之间存在潜在冲突。在该示例中,对应于变更ID A5的生成知识指示变更ID A5所表示的变更是在不具有C4和D9所表示的变更的知识的情况下做出的。此外,对应于变更ID C4和D9的生成知识指示变更ID C4和D9所表示的变更是在不具有变更ID A5所表示的变更的知识的情况下做出的。因此,在该示例中,变更ID A5所表示的变更是涉及与变更ID C4和D9所表示的变更相同的数据项的附加冲突。
同步端点A 1202稍后可以向同步端点B 1210发送消息,指示已经发送所有变更以使同步端点A 1202和同步端点B 1210现在分别能够更新它们的知识向量1208和1216以包括最近的变更,如果这些变更已被接受并且不是与一个或多个未解决的冲突相关联的变更的话。如图12在时刻(5) 处所示,同步端点A的知识包括知识向量A4B4C3D8,该知识向量等于同步端点B的知识向量并包括同步端点A 1202所做出的直到第四个变更枚举的所有变更、同步端点B所做出的直到第四个变更枚举的所有变更、同步端点C所做出的直到第三个变更枚举的所有变更、以及同步端点D所做出的直到第八个变更枚举的所有变更。此外,同步端点A 1202和同步端点B1210在其各自的知识中包括例外列表(A5,C4,C5,D9)。在该示例中,A5、C4和D9表示对于同一数据项的未解决的冲突的变更。由于所确定的冲突,可以不接受对应于同步端点A 1202先前接受的变更ID A4的变更,并可将其添加到同步端点A的知识1406中所包括的例外列表。
图13示出在如图12所示的同步之后更新知识的方法。具体地,图13示出用于使用存储在同步端点A 1202上的例外列表1302和存储在同步端点B 1210上的例外列表1303来更新知识向量的方法。在同步端点之间发送变更时,这些变更可用与该变更相关联的变更ID来发送。在向诸如同步端点A 1202等同步端点添加变更时,变更ID可作为例外添加到例外列表1302。检查图13中的同步端点A 1202的知识,该知识包括知识向量1208和包括从同步端点B 1210接收到的例外B4、C4、C5和D9的例外列表1302。在该示例中,例外列表1302的变更ID B4所表示的变更不具有冲突的变更,并且可应用于同步端点A 1202的数据。然而,与变更ID C4和D9相关联的变更确实具有冲突的数据,且不可应用于同步端点A 1202的数据。因此,变更ID B4随后可以从例外列表1302中移除并且知识向量1208可被更新来提供经更新的知识1304,经更新的知识1304可包括指示同步端点A 1202已经应用了来自同步端点A 1202的直到第四个变更的变更、来自同步端点B的直到第四个变更的所有变更、来自同步端点C的直到第三个变更的所有变更和来自同步端点D的直到第八个变更的所有变更的知识向量。知识1304还可以包括例外A5、C4、C5和D9,其中变更ID A5、C4、和D9所表示的变更具有对于同一数据项的冲突的变更。在该示例中,因为与变更ID A5相关联的变更是冲突的一部分,所以同步端点A 1202可不接受该变更并且表示该变更的变更ID A5可被添加到知识1304中包括的例外列表。
对于同步端点B 1210,从同步端点A 1202接收到的变更A4和A5可 被添加到例外列表1303。变更C4、C5和D9已被包括在例外列表中,并且可以是在同步端点B 1210与同步端点A 1202同步之前已知的知识1216的一部分。在与同步端点A 1202同步之后,经更新的知识1306可包括知识向量A4B4C3D8,指示来自同步端点A 1202的直到第四个变更、来自同步端点B 1210的直到第四个变更、来自同步端点C的直到第三个变更和来自同步端点D的直到第八个变更都已被应用于同步端点B 1210的数据。经更新的知识1306还可以包括对应于变更ID A5、C4、C5和D9的例外,其中ID A5、C4和D9所表示的变更是对同一数据项的冲突的变更。因此,在该示例中,指示对于同一数据项的多个冲突的变更的信息可传播到其它同步端点。
结论
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
虽然以上描述可能包含具体细节,但决不应将其解释为是对权利要求的限制。所述各实施例的其它配置也是本发明的范围的一部分。此外,根据本发明主题的各个实现可以具有比所描述的更多或更少动作,或可以按与所示出的顺序不同的顺序来实现各个动作。因此,只有所附权利要求书及其合法的等效技术方案才应限定本发明,而非任何给出的具体示例。
Claims (20)
1.一种用于在包括多个同步端点(302、304、310、314)的同步社区(300)中传播数据同步冲突的知识的方法,所述同步社区是彼此同步的一组同步端点,所述知识是表达给定同步端点所知道的变更的元数据,所述方法包括:
在第一同步端点处接收第二同步端点的知识信息,所述知识信息表示所述第二同步端点所知道的对所述同步社区内的数据的变更(620);
将来自所述第二同步端点的知识信息与所述第一同步端点的知识信息进行比较,所述第一同步端点的知识信息表示所述第一同步端点所知道的对所述同步社区内的数据的变更(622);
在所述第一同步端点处基于来自所述第二同步端点的知识信息与来自所述第一同步端点的知识信息的比较来枚举变更信息,所述变更信息包括指示第三同步端点与所述多个同步端点中的另一个同步端点之间的未解决的同步数据冲突的数据(514、图8的2);以及
将所述变更信息从所述第一同步端点发送到所述第二同步端点(514)。
2.如权利要求1所述的方法,其特征在于,还包括:
从所述第一同步端点发送所述第一同步端点的知识信息;
在所述第一同步端点处响应于发送所述第一同步端点的知识信息,接收来自所述第二同步端点的枚举的变更信息,所枚举的变更信息包括指示第二未解决的同步数据冲突的数据;以及
在所述第一同步端点包括对与所述第二未解决的同步数据冲突相关联的数据项做出的变更的知识时,所述第一同步端点解决所述第二未解决的同步数据冲突,所述第一同步端点所包括的该知识具有相关联的生成知识,所述生成知识包括所述第二未解决的同步数据冲突的冲突的变更的知识。
3.如权利要求1所述的方法,其特征在于,来自所述第二同步端点的知识信息包括知识向量。
4.如权利要求1所述的方法,其特征在于,还包括:
从所述第一同步端点发送所述第一同步端点的知识信息。
5.如权利要求1所述的方法,其特征在于,所述未解决的同步数据冲突是在所述第一同步端点与第三同步端点的同步期间发生的。
6.如权利要求1所述的方法,其特征在于,所述未解决的同步数据冲突是在第三同步端点与第四同步端点的同步期间发生的。
7.一种传播数据同步冲突的知识的方法,所述知识是表达给定同步端点所知道的变更的元数据,所述方法包括:
从第一同步端点向第二同步端点发送第一同步请求,所述第一同步请求包括表示所述第一同步端点所知道的、对包括多个同步端点的同步社区内的数据的变更的知识信息(620),所述同步社区是彼此同步的一组同步端点;
在所述第一同步端点处响应于发送所述第一同步请求,接收来自第二同步端点的变更信息,所述来自第二同步端点的变更信息包括表示所述第二同步端点所知道的、而所述第一同步端点不知道的、对所述同步社区内的数据的变更的知识信息(514);
至少部分地基于所接收到的变更信息来确定在所述第一同步端点和所述第二同步端点之间的数据同步冲突的存在(626、628);
存储所确定的数据同步冲突的知识以供传播到所述同步社区内的第三同步端点(904,906);
在所述第一同步端点处接收来自所述多个同步端点中的一同步端点的第二同步请求(图8的3);以及
响应于接收到所述第二同步请求,从所述第一同步端点向所述多个同步端点中的所述同步端点发送变更信息,所述变更信息包括指示所述第一同步端点和所述第二同步端点之间的数据同步冲突的数据(图8的4)。
8.如权利要求7所述的方法,其特征在于,所述多个同步端点中的所述同步端点是除所述第二同步端点之外的同步端点。
9.如权利要求7所述的方法,其特征在于,所述第二同步请求包括表示所述多个同步端点中的所述同步端点所知道的、对所述同步社区内的同步数据的变更的知识信息。
10.如权利要求7所述的方法,其特征在于,包括指示所述第一同步端点和所述第二同步端点之间的数据同步冲突的数据的所述变更信息包括包含至少两个变更ID和对应的变更数据的冲突的变更信息。
11.如权利要求7所述的方法,其特征在于,所述第一同步请求中包含的知识信息包括知识向量。
12.如权利要求7所述的方法,其特征在于:
所述变更信息包括至少一个变更ID和对应的变更数据,
所述确定所述第一同步端点和第二同步端点之间的数据同步冲突的存在的步骤还包括:
在来自所述第二同步端点的变更信息包括对一数据项的第一变更、所述第一同步端点知道对所述数据项的第二变更、与对所述数据项的变更相关联并被包括在来自所述第二同步端点的变更信息中的生成知识指示所述第二同步端点不知道对所述数据项的第二变更、并且所述第一同步端点的并与对所述数据项的第二变更相关联的生成知识指示所述第一同步端点不知道对所述数据项的所述变更时,确定所述第一同步端点和所述第二同步端点之间存在数据同步冲突。
13.如权利要求7所述的方法,其特征在于:
所述变更信息包括至少一个变更ID和对应的变更数据,以及
所述至少一个变更ID中的每一个包括版本和与所述同步社区中的特定同步端点相关联的同步端点ID。
14.如权利要求7所述的方法,其特征在于,还包括:
存储包括对应于来自所述第二同步端点的变更信息的信息的例外列表。
15.如权利要求7所述的方法,其特征在于,还包括:
基于从所述第二同步端点所接收到的变更信息来更新所述第一同步端点的知识信息。
16.一种在包括多个同步端点的同步社区内的传播数据同步冲突的知识的方法,所述同步社区是彼此同步的一组同步端点,所述知识是表达给定同步端点所知道的变更的元数据,所述方法包括:
维护所述第一同步端点的知识信息,所述第一同步端点的知识信息表示所述第一同步端点所知道的、对所述同步社区内的数据的变更(508、512、608、612、708、806、814、1006、1014、1206、1214),
将所述第一同步端点的知识信息与所接收到的第二同步端点的知识信息进行比较(622),
基于所述第一同步端点的知识信息与所接收到的所述第二同步端点的知识信息的比较,来确定同步数据冲突的存在(622、626、628),以及
存储所确定的同步数据冲突的知识以供传播到第三同步端点(638)。
17.如权利要求16所述的方法,其特征在于,所述第一同步端点的知识信息包括第一知识向量,并且所述第二同步端点的知识信息包括第二知识向量。
18.如权利要求16所述的方法,其特征在于,所述第一同步端点的知识信息和所述第二同步端点的知识信息包括相应的同步端点所知道的、所述同步社区的数据变更信息,以及对应于所述同步数据变更信息的每一项的生成知识信息,所述生成知识信息指在做出变更时在同步端点中存在的知识信息或在发送变更时在同步端点中存在的知识信息。
19.如权利要求18所述的方法,其特征在于,所述方法还包括:
用于在来自所述第二同步端点的同步数据变更信息包括对一数据项的第一变更、所述第一同步端点知道对所述数据项的第二变更、与对所述数据项的所述第一变更相关联并被包括在来自所述第二同步端点的同步数据变更信息中的生成知识指示所述第二同步端点不知道对所述数据项的第二变更、并且所述第一同步端点的并与对所述数据项的第二变更相关联的生成知识指示所述第一同步端点不知道对所述数据项的所述变更时,确定所述第一同步端点和所述第二同步端点之间存在数据同步冲突。
20.如权利要求16所述的方法,其特征在于,还包括:
基于比较所述第一同步端点的知识信息与所述第三同步端点的知识信息来枚举变更信息,所述变更信息包括指示所述同步数据冲突的信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/640,658 | 2006-12-18 | ||
US11/640,658 US7778282B2 (en) | 2006-12-18 | 2006-12-18 | Propagation of conflict knowledge |
PCT/US2007/077225 WO2008076481A1 (en) | 2006-12-18 | 2007-08-30 | Propagation of conflict knowledge |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101573923A CN101573923A (zh) | 2009-11-04 |
CN101573923B true CN101573923B (zh) | 2012-05-30 |
Family
ID=39527130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800464199A Active CN101573923B (zh) | 2006-12-18 | 2007-08-30 | 用于传播数字同步冲突的知识的传播方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7778282B2 (zh) |
EP (1) | EP2127251B1 (zh) |
JP (1) | JP5060566B2 (zh) |
KR (1) | KR101484333B1 (zh) |
CN (1) | CN101573923B (zh) |
TW (1) | TWI361356B (zh) |
WO (1) | WO2008076481A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US7401104B2 (en) * | 2003-08-21 | 2008-07-15 | Microsoft Corporation | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
US8131739B2 (en) | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
US8166101B2 (en) | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US7917607B2 (en) * | 2005-12-30 | 2011-03-29 | Sap Ag | Software management systems and methods, including use of such systems and methods in a provider-tenant environment |
US7689593B2 (en) * | 2005-12-30 | 2010-03-30 | Sap Ag | Systems and methods for accessing a shared space in a provider-tenant environment |
US8370423B2 (en) | 2006-06-16 | 2013-02-05 | Microsoft Corporation | Data synchronization and sharing relationships |
US8453066B2 (en) | 2006-11-06 | 2013-05-28 | Microsoft Corporation | Clipboard augmentation with references |
US7933869B2 (en) * | 2006-12-29 | 2011-04-26 | Sap Ag | Method and system for cloning a tenant database in a multi-tenant system |
US20080162587A1 (en) * | 2006-12-29 | 2008-07-03 | Ulrich Auer | Server synchronization for maintenance activities |
US8069184B2 (en) * | 2006-12-29 | 2011-11-29 | Sap Ag | Systems and methods to implement extensibility of tenant content in a provider-tenant environment |
US8751442B2 (en) * | 2007-02-12 | 2014-06-10 | Microsoft Corporation | Synchronization associated duplicate data resolution |
US7933296B2 (en) * | 2007-03-02 | 2011-04-26 | Microsoft Corporation | Services for data sharing and synchronization |
US8296671B2 (en) | 2008-05-01 | 2012-10-23 | Microsoft Corporation | Enabling access to rich data by intercepting paste operations |
US10303787B2 (en) * | 2008-10-21 | 2019-05-28 | Microsoft Technology Licensing, Llc | Forgetting items with knowledge based synchronization |
US8412676B2 (en) * | 2008-10-21 | 2013-04-02 | Microsoft Corporation | Forgetting items with knowledge based synchronization |
US8284803B2 (en) | 2009-12-30 | 2012-10-09 | Microsoft Corporation | Cross-scope synchronization of data item knowledge and corresponding metadata |
US8868500B2 (en) * | 2011-01-14 | 2014-10-21 | Apple Inc. | Data synchronization |
WO2014045080A1 (en) * | 2012-09-18 | 2014-03-27 | Nokia Corporation | Methods, apparatuses and computer program products for providing a protocol to resolve synchronization conflicts when synchronizing between multiple devices |
EP2992715B1 (en) * | 2013-05-03 | 2021-07-14 | BlackBerry Limited | Transmitting a synchronization indication |
US9665359B2 (en) * | 2013-09-13 | 2017-05-30 | Microsoft Technology Licensing, Llc | Automatically resolving conflicts after installation of selected updates in a computer system |
US9626176B2 (en) | 2013-09-13 | 2017-04-18 | Microsoft Technology Licensing, Llc | Update installer with technical impact analysis |
US10026064B2 (en) | 2013-09-13 | 2018-07-17 | Microsoft Technology Licensing, Llc | Automatically recommending updates based on stored lifecycle information |
US9436460B2 (en) * | 2013-10-29 | 2016-09-06 | International Business Machines Corporation | Regression alerts |
CN105468650A (zh) * | 2014-09-12 | 2016-04-06 | 阿里巴巴集团控股有限公司 | 一种合并冲突、冲突文件处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1466723A (zh) * | 2000-09-29 | 2004-01-07 | Ħ��������˾ | 数据同步方法及其装置 |
CN1653457A (zh) * | 2002-05-31 | 2005-08-10 | 国际商业机器公司 | 访问不同类型后端数据存储器的系统和方法 |
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 |
CN1716247A (zh) * | 2004-04-28 | 2006-01-04 | 微软公司 | 对可由硬件/软件接口系统进行信息管理的单元的对等同步化提供冲突处理的系统和方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2723084B2 (ja) * | 1995-07-19 | 1998-03-09 | 日本電気株式会社 | リンクステートルーティング装置 |
US5787262A (en) * | 1996-06-26 | 1998-07-28 | Microsoft Corporation | System and method for distributed conflict resolution between data objects replicated across a computer network |
DE69840844D1 (de) * | 1998-08-10 | 2009-07-02 | Ibm | Abstraktion einer "PNNI" Topologie |
US6944642B1 (en) * | 1999-10-04 | 2005-09-13 | Microsoft Corporation | Systems and methods for detecting and resolving resource conflicts |
JP4320505B2 (ja) | 2000-09-13 | 2009-08-26 | 三菱電機株式会社 | データ伝送装置およびその制御方法 |
US7177866B2 (en) * | 2001-03-16 | 2007-02-13 | Gravic, Inc. | Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only |
US7165248B2 (en) * | 2001-06-04 | 2007-01-16 | Sun Microsystems, Inc. | File tree conflict processor |
US6993522B2 (en) * | 2001-06-27 | 2006-01-31 | Microsoft Corporation | System and method for resolving conflicts detected during a synchronization session |
US6983642B2 (en) * | 2002-05-02 | 2006-01-10 | Qst Holdings, L.L.C. | System and method for automatically judging the sealing effectiveness of a sealed compartment |
WO2003106199A1 (en) * | 2002-06-17 | 2003-12-24 | Runflat International Limited | Two part run-flat device with shear pins |
US6954829B2 (en) * | 2002-12-19 | 2005-10-11 | Intel Corporation | Non-speculative distributed conflict resolution for a cache coherency protocol |
KR100462839B1 (ko) * | 2002-12-24 | 2004-12-23 | 한국전자통신연구원 | 모바일 환경에서의 이동 클라이언트와 서버간의 데이터동기화 및 갱신 충돌 해결 방법 |
US7027463B2 (en) * | 2003-07-11 | 2006-04-11 | Sonolink Communications Systems, Llc | System and method for multi-tiered rule filtering |
US7401104B2 (en) * | 2003-08-21 | 2008-07-15 | Microsoft Corporation | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
US7512638B2 (en) * | 2003-08-21 | 2009-03-31 | Microsoft Corporation | Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system |
US20050177617A1 (en) * | 2003-12-23 | 2005-08-11 | Intel Corporation | Conflict resolution during data synchronization |
JP4481053B2 (ja) * | 2004-03-26 | 2010-06-16 | シャープ株式会社 | 通信機器、通信機器の制御方法、通信機器の制御プログラム |
US7533134B2 (en) * | 2004-04-01 | 2009-05-12 | Microsoft Corporation | Systems and methods for the propagation of conflict resolution to enforce item convergence (i.e., data convergence) |
US7730167B2 (en) | 2004-04-30 | 2010-06-01 | Microsoft Corporation | Methods and systems for halting synchronization loops in a distributed system |
US20080288659A1 (en) * | 2006-11-09 | 2008-11-20 | Microsoft Corporation | Maintaining consistency within a federation infrastructure |
US7933868B2 (en) * | 2004-11-04 | 2011-04-26 | Microsoft Corporation | Method and system for partition level cleanup of replication conflict metadata |
US20060106879A1 (en) * | 2004-11-16 | 2006-05-18 | International Business Machines Corporation | Conflict resolution in a synchronization framework |
JP2006268587A (ja) * | 2005-03-24 | 2006-10-05 | Fuji Xerox Co Ltd | 情報処理装置 |
US20060224622A1 (en) * | 2005-03-31 | 2006-10-05 | E.Piphany, Inc. | Mobile client synchronization and upgrading |
US8015319B2 (en) * | 2005-10-27 | 2011-09-06 | Huawei Technologies Co., Ltd. | Method, system, client and server for implementing data sync |
US20080104206A1 (en) * | 2006-10-31 | 2008-05-01 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
US7620659B2 (en) * | 2007-02-09 | 2009-11-17 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
US20090083441A1 (en) * | 2007-09-24 | 2009-03-26 | Microsoft Corporation | Synchronization of web service endpoints in a multi-master synchronization environment |
US8078749B2 (en) * | 2008-01-30 | 2011-12-13 | Microsoft Corporation | Synchronization of multidimensional data in a multimaster synchronization environment with prediction |
-
2006
- 2006-12-18 US US11/640,658 patent/US7778282B2/en active Active
-
2007
- 2007-08-30 JP JP2009542979A patent/JP5060566B2/ja active Active
- 2007-08-30 EP EP07841619.5A patent/EP2127251B1/en active Active
- 2007-08-30 CN CN2007800464199A patent/CN101573923B/zh active Active
- 2007-08-30 WO PCT/US2007/077225 patent/WO2008076481A1/en active Application Filing
- 2007-08-30 KR KR1020097014101A patent/KR101484333B1/ko active IP Right Grant
- 2007-10-17 TW TW096138920A patent/TWI361356B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1466723A (zh) * | 2000-09-29 | 2004-01-07 | Ħ��������˾ | 数据同步方法及其装置 |
CN1653457A (zh) * | 2002-05-31 | 2005-08-10 | 国际商业机器公司 | 访问不同类型后端数据存储器的系统和方法 |
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 |
CN1716247A (zh) * | 2004-04-28 | 2006-01-04 | 微软公司 | 对可由硬件/软件接口系统进行信息管理的单元的对等同步化提供冲突处理的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2008076481A1 (en) | 2008-06-26 |
EP2127251A1 (en) | 2009-12-02 |
US7778282B2 (en) | 2010-08-17 |
EP2127251B1 (en) | 2018-11-21 |
TW200830110A (en) | 2008-07-16 |
JP5060566B2 (ja) | 2012-10-31 |
CN101573923A (zh) | 2009-11-04 |
KR20090099549A (ko) | 2009-09-22 |
EP2127251A4 (en) | 2015-03-11 |
JP2010514062A (ja) | 2010-04-30 |
US20080144669A1 (en) | 2008-06-19 |
KR101484333B1 (ko) | 2015-01-19 |
TWI361356B (en) | 2012-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101573923B (zh) | 用于传播数字同步冲突的知识的传播方法 | |
EP2220609B1 (en) | Spreadsheet collaboration | |
JP5289063B2 (ja) | 同期ピア参加モデル | |
CN1794207B (zh) | 实现缓存一致性的方法和系统 | |
JP5130386B2 (ja) | 代表的な情報を比較することによる効率的なデータベースの同期化 | |
CN103914439A (zh) | 一种文档在线编辑方法、设备以及系统 | |
US20060190572A1 (en) | Filtered Replication of Data Stores | |
CN102209083B (zh) | 一种用户词库同步更新方法、更新服务器及输入法系统 | |
CN106933614A (zh) | 一种单页面应用升级方法及装置 | |
CN110363663A (zh) | 基于区块链的数据批量处理方法、装置、设备及存储介质 | |
CN110955719B (zh) | 一种数据存取处理设备、系统和方法 | |
CN103399776A (zh) | 可重用mock创建方法及系统 | |
CN109857596A (zh) | 时间一致性备份方法、设备、系统、装置及存储介质 | |
CN103581262A (zh) | 一种主备数据同步方法、装置和系统 | |
CN101534319B (zh) | 一种解除指令间依赖关系的方法、系统和代理服务器 | |
CN107896248A (zh) | 一种基于客户端通信的并行文件系统应用方法 | |
CN103064929A (zh) | 一种网络文件系统中服务器写数据的方法 | |
CN110035121A (zh) | 一种信息处理方法及电子设备 | |
CN114124846B (zh) | 一种业务队列消费方法及服务器 | |
CN105339930A (zh) | 向用户示出最近和相关内容的活动因特网可访问的数据存储装置视图 | |
CN102109905A (zh) | 一种提供输入法资源的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150507 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150507 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |