CN101385030B - 使用同步对等参与者模型的系统和方法 - Google Patents

使用同步对等参与者模型的系统和方法 Download PDF

Info

Publication number
CN101385030B
CN101385030B CN2007800056429A CN200780005642A CN101385030B CN 101385030 B CN101385030 B CN 101385030B CN 2007800056429 A CN2007800056429 A CN 2007800056429A CN 200780005642 A CN200780005642 A CN 200780005642A CN 101385030 B CN101385030 B CN 101385030B
Authority
CN
China
Prior art keywords
participant
knowledge
change
duplicator
data storage
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.)
Expired - Fee Related
Application number
CN2007800056429A
Other languages
English (en)
Other versions
CN101385030A (zh
Inventor
M·克斯拉维
J-T·普芬宁
L·诺维克
M·S·贝科曼
M·C·托马斯
V·萨多夫斯基
M·莱维
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101385030A publication Critical patent/CN101385030A/zh
Application granted granted Critical
Publication of CN101385030B publication Critical patent/CN101385030B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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/275Synchronous replication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

公开了改进各种类型的设备和/或服务之间的数据同步的各种技术和方法。完全参与者从另一参与者接收执行同步操作的请求。同步引擎确定该设备或服务是完全、部分还是简单参与者。如果该设备或服务具有用于已同步数据的数据存储但没有知识存储,则其是简单参与者。如果该设备或服务具有用于已同步数据的数据存储和知识存储,但不理解该知识,则其是部分参与者。如果该设备或服务具有用于已同步数据的数据存储和知识存储且理解该知识,则其是完全参与者类型。该同步引擎使用对设备或服务的类型适当的一组逻辑来执行与该设备或服务的同步操作。

Description

使用同步对等参与者模型的系统和方法
背景 
在当今的技术和数字信息处理世界中,个人可以将信息或数据储存在各种不同设备和位置中。用户通常将同一信息储存在多于一个设备和/或位置中。用户可能希望所有各种数据存储都具有相同的信息而不必手动输入对每一数据存储的相同改变。复制是用于确保每一数据存储具有相同信息的一个过程。 
例如,用户可在各种不同设备或位置中维护一电子地址簿。用户可例如在储存在其台式计算机上、其膝上型计算机上、个人数字助理(PDA)中、在线联系人管理器中等的个人信息管理器上维护该地址簿。用户可通过例如添加联系人、删除联系人或改变联系人信息来修改每一位置中的电子地址簿。复制用于确保对特定设备作出的改变最终在用户的其它设备的数据存储中得到反映。 
随着特定用户使用的设备和/或服务的数量的增加和/或这些设备的大小或处理能力的减小,复制也变得越来越复杂。例如,许多用户具有拇指型驱动器、可移动存储器、PDA、电话、便携式音乐设备等等。在许多这样的设备上具有诸如联系人记录等信息和/或将该信息在这些设备之中同步将是有用的,但许多这种类型的设备甚至没有参与典型的同步过程通常所必需的计算机处理器。这些同步问题在诸如多个用户共享一个组日历等涉及数据的组共享时可变得更复杂。 
概述 
公开了改进各种类型的设备和/或服务之间的数据同步的各种技术和方法。完全参与者设备或服务从另一设备或服务接收使用同步引擎执行同步操作的请求。该另一设备或服务通过处理程序接口的实现与该完全参与者的同步引擎通信。该同步引擎组织(orchestrate)一系统上各个所安装的处理程序之间的通信以驱动端点之间的同步。一旦连接到该同步引擎,检查各处理程序以确定其能够参加的同步情形,或简单地确定在对等参与模型中定义的其参与水 平。 
在一个实现中,该同步引擎确定该设备或服务是完全参与者、部分参与者还是简单参与者。如果该设备或服务具有用于已同步数据的数据存储但没有知识存储,则其是简单参与者。简单参与者不负责跟踪其对数据作出了什么改变。如果该设备或服务具有用于已同步数据的数据存储和知识存储,但不理解该知识,则其是部分参与者。部分参与者负责跟踪其对数据作出了什么改变。如果该设备或服务具有用于已同步数据的数据存储以及知识存储并且理解该知识以及其上的部分或全部操作,则其是完全参与者。知识指的是“同步元数据”。该同步引擎使用对设备或服务的类型适当的一组逻辑来执行与该设备的同步操作。该体系结构的一个实现提供了多主(multe-master)双向同步团体,并允许具有有限处理和/或存储能力的设备和/或服务(诸如拇指型驱动器、某些个人数字助理和/或电话等等)以某一水平参与到同步过程中。多主同步意味着允许各自具有对同一数据的可写复制者的两个或更多参与者集合在一起并不论其之前是否曾经通信过都进行同步。 
作为一个非限制示例,由于储存在部分参与者上的知识,部分参与者设备或服务在一个实现中可参与多主双向同步操作,即使该部分参与者甚至不理解该知识。作为另一非限制示例,具有用于储存复制的数据的数据存储但没有任何知识的简单参与者(诸如拇指型驱动器)在一个实现中可以参与与完全参与者的同步过程。 
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。 
附图简述 
图1是一个实现的同步对等参与者模型的图示,其示出了完全参与者、部分参与者和简单参与者的图形表示。 
图2是一个实现的同步对等参与者模型的图示,其示出了完全参与者、部分参与者和简单参与者的表格表示。 
图3是一个实现中具有用于与参与者设备接口的处理程序的同步系统的 图示。 
图4示出了一示例性计算机系统,其是用于一个或多个实现的,诸如用于在完全参与者设备上操作同步应用程序的合适的操作环境。 
图5是一个实现的同步应用程序的图示。 
图6是该系统的一个实现的高级处理流程图。 
图7是示出在使用部分参与者设备更新和同步数据时所涉及的各阶段的一个实现的处理流程图。 
图8是示出在使部分参与者设备通过用新的时间信号计数或其它标识符来更新记录以跟踪对数据的改变时所涉及的各阶段的一个实现的处理流程图。 
图9是示出在使部分参与者设备通过为改变单独地储存记录标识符和日期/时间来跟踪其对数据作出的改变时所涉及的各阶段的一个实现的处理流程图。 
图10-11示出了在部分参与者设备的修改之前和之后的部分参与者设备上的示例记录。 
图12示出了在修改之前的部分参与者设备上的示例记录。 
图13示出了部分参与者设备上跟踪对图12的记录所作的改变的示例改变跟踪记录。 
图14示出了在确定部分参与者如在图13的改变跟踪记录中所描述地修改了数据之后由完全参与者设备更新的图12的示例记录。 
图15是一个实现中储存在部分参与者设备或完全参与者设备上的知识记录的一个示例。 
图16是示出在使用简单参与者设备更新和同步数据时所涉及的各阶段的一个实现的处理流程图。 
图17是具有多个设备和处理程序的一个实现的示例性同步团体的图示。 
图18示出了一个实现的同步团体的示例。 
图19示出了一个实现的参与者和时间级图示,其示出了被添加到参与者的改变以及被更新以包括该改变的参与者的知识。 
图20示出了两个参与者之间的时间级复制情形的一个实现。 
图21示出了时间级冲突检测情形的一个实现。 
图22示出了在一个实现中将改变ID分配给参与者中的改变的示例。 
图23示出了使用知识向量的时间级复制情形的一个实现。 
图24A示出了在使用例外列表进行复制之后更新参与者中的知识的一个实现。 
图24B示出了在使用知识向量的对级最大值进行复制之后更新参与者中的知识的一个实现。 
图24C示出了在其中在已更新知识中存在例外的复制之后更新参与者中的知识的一个实现。 
图25示出了用于实现包括代用品复制的复制的一个实现的轴辐拓扑。 
图26A示出了一个实现中的冲突解决情形的示例。 
图26B示出了一个实现中的其它冲突解决情形。 
详细描述 
为促进对本发明的原理的理解,现将对图中所示的各实施方式加以参考,同时也将用具体语言描述它们。不过,需要理解的是,并无意由此作范围上的限制。在所述实施方式中的任何改变和进一步修正,以及在此所述的原理的进一步应用可以预期将是本领域技术人员通常能想到的。 
该系统可以在一般上下文中被描述为改进了具有各种能力的各种设备之间的数据同步的一个或多个技术,但是该系统还适合除了这些目的之外的其它目的。在一个实现中,此处所描述的一个或多个技术可被实现为诸如 
Figure G2007800056429D00041
等同步程序内、或来自任何其它类型的参与设备之间的同步的程序或服务的特征。在另一实现中,此处所描述的一个或多个技术被实现为处理跨设备和/或服务的数据同步的其它应用程序的特征。此处所使用的术语移动设备意在包括蜂窝电话、个人数字助理、便携式媒体播放器、IP语音电话、以及各种能力水平的众多其它类型的移动设备。 
图1是一个实现的同步对等参与者模型的图示,其示出了完全参与者10、部分参与者20和简单参与者30的图形表示。术语参与者此处也被称为“复制者”。参与者和复制者指的是参与同步团体的设备和/或服务。完全参与者10具有知识数据存储12和理解知识14的能力。它还具有用于储存同步的实际数 据,诸如在设备之间同步的联系人信息或其它信息的同步数据存储16。完全参与者的几个非限制示例包括个人计算机、某些PDA、某些电话、某些其它移动设备、和/或能够储存并理解知识的其它设备。 
每一完全参与者在知识数据存储中维护便于有效和改进的复制的“知识”。在一个实现中,知识是描述对给定参与者已知的改变的元数据。知识可被表示为对或改变ID的向量,其中每一对或改变ID表示一个复制者ID和最大版本(复制者ID,最大版本)。特定知识向量中的对数可以随着向同步团体增加或移除参与者而改变。尽管知识向量也可不同地表达,但是简明地表示特定参与者知晓的改变是有利的。并没有要求特定知识特别地包含同步团体中的每一参与者的改变ID。参与者无需跟踪其它参与者已知的信息,因为这些信息有效地由参与者的知识来表示。 
类似于完全参与者10,部分参与者20也包含知识数据存储22。然而,与完全参与者10不同,部分参与者20没有理解知识24的能力(或只有有限能力)。部分参与者包括用于储存已同步数据的同步数据存储26。部分参与者包括用于储存与其对同步数据存储26作出的改变有关的信息的版本数据存储25。部分参与者的非限制示例可包括某些个人数字助理、电话、某些其它移动设备、和/或能管理操作跟踪对同步数据存储26作出的改变的简单程序的其它类型的设备。 
简单参与者30具有同步数据存储36,但没有知识存储。简单参与者的示例可包括但不限于,某些拇指型驱动器、某些存储卡、和/或不能操作跟踪对同步数据存储36作出的改变的简单程序的其它设备。 
现在转向图2,示出了对等参与者模型的表格表示50。简单参与者52、部分参与者54和完全参与者56具有一个或多个特性。这些特性中的某一些在图1的讨论中描述。例如,简单参与者52不能储存知识58。简单参与者能够通过处理程序与单个完全参与者同步60。部分参与者54储存但不理解知识62。部分参与者54能够参与多主双向同步64。另选地或另外地,部分参与者54能够通过完全参与者上的处理程序来同步66。以此方式,部分参与者54能够通过一个或多个完全参与者设备来参与托管对等情形。由此,部分参与者可以通过使用完全参与者来彼此同步。完全参与者56理解并储存知识68,能够参 与多主双向同步目标70,并能够执行对等同步72。 
图3是一个实现中具有用于与一个或多个参与者设备接口的处理程序的同步系统80的图示。同步应用程序82包括负责完成参与者之间的同步循环并在其它连接的参与者之间传输已更新改变的同步组织引擎84。使用了各种处理程序86、88和90以允许同步团体中的其它参与者与同步引擎84通信。同步引擎84分别通过处理程序接口91、92和97与处理程序86、88和90通信。处理程序86、88和90然后与知识存储93和95、本地同步数据存储94以及远程同步数据存储96通信以便访问数据(如果适用)。在一个实现中,图1所示的一个或多个数据存储,诸如远程同步数据存储96,位于一个或多个单独的计算机或设备上。 
如图4所示,用于实现该系统的一个或多个部分的示例性计算机系统包括诸如个人计算设备100等计算设备。在其最基本的配置中,计算设备100通常包括至少一个处理单元102和系统存储器104。取决于计算设备的确切配置和类型,存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。该最基本配置在图4中由虚线106来例示。 
另外,设备100还可具有附加的特征/功能。例如,设备100还可包含附加存储(可移动和/或不可移动),其中包括但不限于磁盘、光盘或磁带。这样的附加存储在图4中由可移动存储108和不可移动存储110示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需信息并且可由设备100访问的任何其它介质。任何这样的计算机存储介质都可以是设备100的一部分。 
计算设备100包括允许计算设备100与诸如完全参与者、部分参与者和/或简单参与者等其它设备115通信的一个或多个通信连接114。计算设备100还可与其它计算机和/或应用程序113通信。设备100也可具有输入设备112,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可包括输出设备111, 诸如显示器、扬声器、打印机等。这些设备在本领域中公知且无需在此处详细讨论。 
在一个实现中,计算设备100用作用于实现此处所讨论的一个或多个技术的完全参与者设备。在这一实现中,计算设备100包含具有同步组织引擎124的同步应用程序122以及知识数据存储125和同步数据存储126。在一个实现中,知识数据存储125和/或同步数据存储126作为此处所描述的诸如存储器104、可移动存储108、不可移动存储110和/或其它计算机存储介质等计算机存储介质的一部分来包括。在一个实现中,同步应用程序122与图3所示的同步应用程序82相同。 
现在转向图5,并继续参考图4,示出了一个实现的同步应用程序200。在一个实现中,同步应用程序200是驻留在计算设备100上的应用程序之一。另选地或另外地,同步应用程序200的一个或多个部分可以是系统存储器104的一部分、可以在其它计算机和/或应用程序113上、或可以是计算机软件领域的技术人员能想到的其它此类变型。 
同步应用程序200包括程序逻辑204,其负责执行在此描述的一些或全部技术。程序逻辑204包括用于为要参与同步过程的每一设备和/或服务注册处理程序的逻辑206;用于检测连接的设备和/或服务的类型(简单、部分或完全参与者)的逻辑208;用于从部分参与者接收知识、在异常的情况下作出修改、并将知识传回部分参与者的逻辑210;用于检测简单参与者上的改变并将冲突储存在其自己的本地数据存储中的逻辑212;用于与其它完全参与者一起工作以使用知识来同步已改变的数据集的逻辑214;用于执行组织以完成同步循环并在其它连接的设备和/或服务之间捕捉已更新改变的逻辑216;以及用于操作应用程序的其它逻辑220。 
在一个实现中,程序逻辑204可用于通过编程,如使用对程序逻辑204中的一个过程的单一调用而从另一程序调用。另选地或另外地,可以理解,程序逻辑204可另选地或另外地被具体化为一个或多个计算机上的计算机可执行指令和/或图4所示的不同的变型。 
图6是同步应用程序200的高级处理流程图。在一种形式中,图6的过程至少部分地在计算设备100、其它计算机/应用程序113和/或其它参与者设备 115的操作逻辑中实现。该过程在起始点240处开始,在那里参与者设备或服务连接到具有同步引擎的完全参与者(诸如计算设备100或某些移动设备)(阶段242)。该设备或服务注册一处理程序或以其它方式与完全参与者上的同步引擎通信(阶段244)。同步引擎检测设备或服务的类型(阶段246),并基于以下参与者的类型来执行适当的同步逻辑:简单(判定点248)、部分(判定点250)或完全(判定点252)。例如,如果该设备或服务是具有同步数据存储但没有知识的简单参与者(判定点248),则同步引擎检测该简单参与者上的改变并将任何冲突储存在完全参与者上其自己的本地数据存储中(阶段254)。 
如果该设备或服务是具有同步数据存储和储存但不理解的知识的部分参与者(判定点250),则该设备或服务将其知识存储提供给完全参与者上的同步引擎(阶段258)。完全参与者诸如在例外的情况下对该知识作出修改(阶段260),并且完全参与者将改变的知识传回部分参与者(阶段262)。部分参与者设备或服务上所承载的知识允许其即使在出现例外的情况下也安全地与多个主设备同步(阶段264)。如果该设备或服务是具有同步数据存储并且还储存并理解知识的完全参与者(判定点252),则两个参与者知道如何最优地使用知识来同步改变的数据集(阶段266)。用于在完全参与者之间同步数据的一个或多个实现在图18-26的讨论中详细描述。 
在确定了该设备或服务的参与者类型并相应地处理了改变和冲突之后,同步引擎接着跟随组织以完成同步循环并捕捉其它连接的参与者设备和/或服务之间的已更新改变(阶段256)。该过程结束于结束点268。 
图7是示出在使用部分参与者设备更新和同步数据时所涉及的各阶段的处理流程图。在一种形式中,图7的过程至少部分地在计算设备100、其它计算机/应用程序113和/或其它参与者设备115的操作逻辑中实现。该过程在起始点280处开始,在那里向部分参与者设备或服务提供用于储存在同步过程期间检索到的数据的数据存储以及用于储存关于对数据作出的改变的信息(例如,以向量、串和/或其它用于跟踪完全参与者/主设备看到的改变的方式)的版本数据存储(阶段282)。部分参与者的几个非限制示例包括某些web服务、某些拇指型驱动器、诸如某些PDA和/或某些电话等某些移动设备、和/或可储 存知识但不能理解知识的其它设备或服务。 
部分参与者不知道如何理解知识,而仅仅储存知识(阶段284)。部分参与者从用户接收改变同步数据存储中的部分或全部数据的请求(阶段286)。部分参与者如用户所请求地改变数据存储中的数据(阶段288)。部分参与者负责跟踪其对数据作出了什么改变,并因此储存与其基于用户请求而作出的改变相关的信息(阶段290)。在一个实现中,当部分参与者与完全参与者同步时,同步从完全到部分以及从部分到完全地发生(阶段292)。在一个实现中,这是两个单独的单向同步。在其它实现中,其它次序和/或同步情形也是可能的,诸如单个单向同步。在同步期间,由部分参与者作出的任何改变由完全参与者检索(阶段294)。完全参与者在解决了任何冲突之后更新部分参与者上的数据存储和知识(阶段296)。该过程结束于结束点298。 
图8是示出在使部分参与者通过用新的时间信号计数或其它标识符来更新记录以跟踪对数据的改变时所涉及的各阶段的一个实现的处理流程图。在一种形式中,图8的过程至少部分地在计算设备100、其它计算机/应用程序113和/或其它参与者设备115的操作逻辑中实现。该过程在起始点300处开始,在那里部分参与者负责跟踪其对数据作出了什么改变(阶段302)。部分参与者更新版本数据存储记录以指示发生了改变(阶段304)。作为几个非限制示例,版本数据存储可以用新的时间信号计数、版本、或标识该记录已改变和/或标识作出改变的最后一个设备或服务的其它标识符来更新。完全参与者读取改变的时间信号记录或其它标识符,以知道特定记录被部分参与者改变(阶段306)。该过程结束于结束点308。 
图9是示出其中部分参与者通过为改变单独地储存记录标识符和日期/时间来跟踪其对数据作出的改变的一个实现中所涉及的各阶段的处理流程图。在一种形式中,图9的过程至少部分地在计算设备100、其它计算机/应用程序113和/或其它参与者设备115的操作逻辑中实现。该过程在起始点310处开始,在那里部分参与者负责跟踪其对数据作出了什么改变(阶段312)。部分参与者跟踪标识复制者记录的唯一标识符以及指示该记录何时改变的日期/时间的日期/时间戳(阶段314)。完全参与者读取该唯一标识符和日期/时间戳以知道该特定记录已改变(阶段316)。完全参与者更新标识改变该记录的最后一个 设备或服务(在此情况中是部分参与者)的时间信号计数或其它标识符(阶段318)。该过程结束于结束点320。 
图10-11示出了在部分参与者设备根据图8中所描述的阶段进行修改之前和之后的部分参与者设备上的示例记录。在一个实现中,图10的记录330包括复制者ID字段332、改变该记录的最后一个参与者的时间信号计数字段334、以及关于该记录何时来自完全参与者的本地时间信号计数字段336。字段332、334和336中相应的值338、340和342可分别用串、向量和/或适用于储存在具有有限存储容量和/或资源的设备或服务上的任何其它类型的表示来储存。如上所述,也可使用众多其它变型来指示部分参与者上的一特定记录已被改变。 
现在转向图11,记录343示出在部分参与者修订了数据之后的数据。复制者ID字段332保留了值“X1”(350),因为它是该记录的唯一标识符。改变该记录的最后一个计算机的时间信号计数字段334从值“G66”(图10上的340)修改为值“G67”(352)。“G”表示作出改变的参与者,而“67”是时间信号计数器序列中可用的下一较高数字。来自完全参与者时的本地时间信号计数字段336保留相同的值“34”(354)。 
图12示出了在根据图9中所描述的阶段进行修改之前部分参与者设备上的示例记录。类似于图10和11的示例记录360包括用于复制者ID字段362的值368、用于改变该记录的最后一个参与者的时间信号计数字段364的值370、以及用于其来自完全参与者时的本地时间信号计数字段366的值372。在该实现中,部分参与者更新单独的改变跟踪记录而非具有时间信号计数的记录。记录360示出在部分参与者修改底层数据之前具有时间信号计数的记录。图13的记录375示出要跟踪根据图9所描述的阶段对图12的记录作出的改变的部分参与者设备上的示例改变跟踪记录。关于记录何时改变的复制者ID字段374和日期/时间字段376被储存在部分参与者上。在此示例中,值“X1”378对复制者ID 374储存,而“01-26-06-12:32PM”380对日期/时间字段376储存。当部分参与者接着连接到完全参与者时,完全参与者检索并解释记录375以确定部分参与者对同步数据存储中的底层数据作出了改变。现在转向图14,完全参与者然后更新改变该记录的最后一个参与者的记录381的时间信号计数字段390,在此情况中该字段为“G67”以表示部分参与者以及下一较高的时 间信号计数数字。若适当,将本地时间信号计数字段366修订为已更新值392。复制者ID字段362的值388保持相同。 
图15是一个实现中储存在部分参与者设备或完全参与者设备上的知识记录的一个示例。在所示的示例中,知识记录396被表示为此处所描述的串向量,其具有指示关于对该特定设备所见到的最后一个改变的参与者标识符和序列号的值398、400、402和404。例如,值“G100”(398)意味着该参与者通过记录100看见了对于设备G的所有改变。这些知识向量在图18-26的讨论中更详细描述。 
现在转向图16,示出了说明在使用简单参与者设备更新和同步数据时所涉及的各阶段的处理流程图。在一种形式中,图16的过程至少部分地在计算设备100、其它计算机/应用程序113和/或其它参与者设备115的操作逻辑中实现。该过程在起始点420处开始,在那里提供具有用于储存已同步数据的数据存储但没有知识的简单参与者设备或服务(阶段424)。简单设备的几个非限制示例包括某些拇指型驱动器、某些记忆棒/卡、某些PDA、某些蜂窝电话、和/或不能储存和理解知识的其它设备或服务。简单参与者由于设备或服务限制或用户设置而不能储存或理解知识(阶段426)。简单参与者从用户接收改变同步数据存储中的部分或全部数据的请求(阶段428)。 
简单参与者如用户所请求地改变同步数据存储中的数据(阶段430)。用户如何能改变同步数据存储的一个非限制示例包括在来自诸如个人计算机等另一设备的文件浏览器中修改数据,诸如将拇指型驱动器插入到个人计算机中然后改变拇指型驱动器的内容。简单参与者不负责跟踪其对数据作出了什么改变,因为假定它什么都不知道(阶段432)。当简单参与者与完全参与者同步时,同步从完全参与者到简单参与者发生,然后从简单参与者到完全参与者发生(阶段434)。在同步期间,简单参与者对同步数据存储作出的任何改变由完全参与者检索(阶段436)。完全参与者在解决了任何冲突之后更新简单参与者上的同步数据存储(阶段438)。该过程结束于结束点440。 
图17是具有多个设备和处理程序的一个实现的示例性同步团体的图示。图17示出了称为个人计算机1或“PC1”(506)的完全参与者500;称为设备1(514)的简单参与者;称为“服务1”的部分参与者502;以及称为个人 计算机2或“PC2”的第二完全参与者504。为说明起见,假设设备1(514)是拇指型驱动器或其它存储卡,服务1是位于web服务器上的音乐服务,而PC1和PC2是类似于计算设备100的个人计算机。完全参与者500具有处理程序508、510和512,而完全参与者504具有处理程序516、518和520。这些处理程序负责与作为同步团体的一部分的各个参与者接口。当设备1(514)连接到PC1(506)时,执行图6描述的同步过程。确定参与者的类型(在该情况中为简单),然后在完全参与者500设备1(514)和PC1(506)之间发生同步。一旦在这两个参与者(500和514)之间完成了同步,组织将使得其它参与者(502和504)在连接和/或下一次其连接到PC1(506)或设备1(514)的情况下被更新。 
现在转向图18-26,描述了用于在完全参与者(例如,两个诸如设备100等个人计算机)之间同步数据的一个或多个实现。图18-26讨论的示例中的一个或多个也可至少部分地应用于部分参与者情形或在之前的附图中描述的其它情形。另选地或另外地,图18-26所讨论的技术中的一个或多个可以在诸如图4的计算设备100等设备上实现。在以下讨论中使用的术语“复制者”也指“参与者”。 
同步团体中的复制者/参与者通过向它们要与其进行复制的复制者提供其自己的知识来进行复制。为减少表示必须在进行复制的复制者之间发送的知识的数据的量,知识可如上所述地被表达为知识向量。由此,在复制者之间发送的知识不必包括每一改变ID,而是可以采用表示多个改变ID的向量的形式。例如,如果一复制者知道复制者A所做的从第一个改变到第十个改变的所有改变,以及标为B的复制者所做的从第一个改变到第五个改变的所有改变,则该复制者可发送指示该复制者知道对应于改变ID A1到A10的所有改变以及对应于改变ID B1到B5的所有改变的知识向量A10B5。尽管知识可被表达为知识向量,但是本发明的其它实现也构想了知识的其它表达。例如,本发明的某些实现使用任何知识表达式来表达知识,其中能够(1)向该知识表达式添加改变,(2)检查在该知识表达式中是否包括了一改变,以及(3)将两个知识表达式合并在一起。 
图18示出了具有所示的拓扑结构的同步团体1100的一个示例。同步团体 1100包括多个复制者,并且是实现本发明的各实现的环境的一个示例。同步团体1100中的复制者表示各种数据存储或设备,包括但不限于计算机、笔记本计算机、个人数字助理、蜂窝电话、其它无线设备、服务器计算机、在线服务等等或其任意组合。 
在图18中,复制者A 1102可以通过通信链路1106电耦合到复制者B1104。复制者A 1102可以通过通信链路1108连接到复制者C 1110。复制者C1110还可以通过通信链路1112连接到复制者B 1104。复制者C 1110可以通过通信链路1116连接到复制者D 1114。在该同步团体1100中,尽管并非所有的复制者都通过通信链路直接连接,但是任何复制者中的改变可被复制到该同步团体1100中的其它复制者中的任一个。 
例如,为使复制者A 1102与复制者D 1114进行复制,复制者A 1102和C 1110可以通过通信链路1108进行复制。由此,复制者C包括在复制者A 1102上作出的改变。复制者C和D然后通过通信链路1116进行复制,并且由此,复制者D 1114包括来自复制者A 1102的改变。以此方式,复制者A 1102可在没有任何种类的直接链路的情况下与复制者D 1114进行复制。实际上,复制者A 1102和D 1114甚至可能不知道在同步团体1110内彼此的存在。所示的通信链路可以是有线和/或无线链路。 
现在参考图19,本发明的一个实现示出如何在复制者中管理改变。图19示出了复制者A 1200的时间级进展。复制者A 1200包括知识1202(在此情况下标为KA)和改变1204(在此情况下标为ΔA)。改变1204中的每一改变是一项目的当前数据内容。改变可以是新项目被添加到复制者(即使本质上没有任何项目改变)、项目的删除等等。每一改变1204与一版本(在本发明的一个实现中是改变ID)相关联。值得注意的是,本发明的一个有利方面是无需维护包括关于先前的改变的信息的改变日志。相反,每一复制者包括知识以及改变数据库(即,当前项目),其中每一改变具有一对应的版本。在时刻(1),复制者A 1200处于稳定状态。在时刻(2)处,用户将标为X的改变输入到复制者A 1200中。图19示出改变X作为改变1204的成员来添加。更新知识1202以包括与改变X相关联并标识了向改变1204添加改变X的改变ID,即ChangeID(X)。该实现示出了将对复制者的改变与特定改变ID相关联的一种方 式。知识1202可以是一知识向量,并且表示复制者A 1200知道的改变。在本发明的一个实现中,对数据库中的项目或对象维护版本或改变ID,并且可使用版本来标识需要复制什么。或者,也可维护改变日志。 
图20示出了在复制期间使用知识来枚举改变。图20示出了两个复制者,即复制者A 1302和复制者B 1304。复制者A 1302包括在此示例中标为ΔA的一组改变1306。复制者A 1302还包括在此示例中标为KA的知识1308。知识1308包括诸如上述的改变ID列表。类似的,复制者B 1304包括各自与一作为改变ID的版本相关联的一组改变1310。为开始复制,在时刻(1)处,复制者A1302向复制者B 1304发送包括知识1308的同步请求。复制者B 1304通过将知识1308与同该组改变1310中的每一改变相关联的版本进行比较,能作出关于复制者A 1302在其改变1306中已经有了复制者B的哪一改变1310以及复制者A了解哪一改变的判定。或者,复制者B 1304将知识1308与每一项目的版本进行比较。由此,复制者B 1304在时刻(2)处仅向复制者A发送复制者B的改变1310中与没有包括在复制者A 1302的知识1308中的版本相关联的部分,如由改变1314所示。例如,如果复制者A的知识向量是A3B12,并且复制者B具有与作为改变ID B13和B14的版本相关联的当前改变,则发送给复制者A的改变将包括与改变ID B13和B14相关联的那些改变。在一个实现中,如果B13和B14都是对同一项目作出的,则仅发送B14。 
另外,复制者B 1304还将复制者B的知识1312发送给复制者A 1302。由于复制者B 1304向复制者A 1302发送了复制者B 1304中可用的、尚未在复制者A 1302中的所有改变1310,因此除最初在复制者B 1304中的改变1310之外,在改变1310尚未被由复制者B 1304发送的改变所取代的意义上,复制者A 1302现在有了最初在复制者A 1302中的所有改变1306。复制者A 1302还具有关于复制者B 1304所知道的所有改变的信息。因此,复制者A 1302可更新其知识1308以反映改变1310的添加。这只需通过将复制者A的知识1308添加到复制者B的知识1312并如图20中的时刻(3)处所示将该值定义为复制者A的知识1308来完成。 
由此,执行了有效的复制,其中仅复制了所需的改变并且进行复制的各个复制者只需维护关于驻留在特定复制者上的改变以及其所了解的先前的改变 的信息。尽管此示例示出了复制者B上的所有改变向复制者A的完整复制,但是也存在仅复制部分改变的情况。由此,仅对应于所复制的改变的改变ID被添加到接收更新的复制者的知识。 
除了枚举改变之外,复制者的知识也可用于冲突检测。现在参考图21,本发明的一个实现示出如何可实现冲突检测。图21示出了通过电子链路(无线和/或有线)连接以进行通信和复制的两个复制者。复制者A 1402包括知识1408以及一组改变1406。如图20中的示例一样,知识1408包括与改变1406相关联并与先前的改变相关联的改变ID的集合。出于本示例的目的,复制者A 1402还包括在复制者A 1402中所做的对项目的改变。该改变被标为X,且X是改变1406的成员。类似的,复制者B 1404包括知识1412、项目集合1410,其各自都具有当前版本(改变ID)。说明性地,在时刻(1)处,复制者A 1402将改变X发送到复制者B 1404。 
与改变X相关联并随其一起发送的是两个其它值,即标为ChangeID(X)的与改变X相关联的改变ID,以及标为KA(X)的使用的知识(made-with-knowledge)值。使用的知识值是在对复制者A 1402作出改变X时存在于复制者A 1402中的知识。或者,在本发明的某些实现中,使用的知识可以是当发送改变时存在于复制者中的知识。复制者A的当前知识1408也可被发送到复制者B 1404。如时刻(2)中所示,复制者B 1404将通过改变X改变的项目与通过改变Y改变的项目进行比较以确定A的改变(X)是否会与B的状态冲突。 
如果改变涉及同一项目的不同版本,则需要进一步的分析。复制者B 1404然后检查当在复制者B 1404中作出改变Y时改变X是否对复制者B 1404已知。改变Y具有与其相关联的改变ID、ChangeID(Y),以及使用的知识值KB(Y)。如果ChangeID(X)是改变Y的使用的知识KB(Y)的成员,则没有冲突。换言之,改变Y是在复制者B 1404中以在复制者A 1402中作出的改变X的知识来作出的。由此,改变Y现在表示对于复制者A和B的最新且有效的数据。尽管未在图21所示的示例中示出,但是在下一时刻,改变Y有可能被发送到复制者A 1402,并且与改变X和Y相关联的项目以图20所描述的方式更新为复制者A 1402上的改变Y。 
如果改变X和Y是针对同一项目的,并且ChangeID(X)没有出现在KB(Y)中,则如时刻(4)处所示,进行检查来查看当作出改变X时复制者A 1402是否已知改变Y。这通常是通过检查标为ChangeID(Y)的对改变Y的改变枚举在作出改变X的时刻是否包括在复制者A的知识1408KA(X)中来完成。如果ChangeID(Y)是KA(X)的成员,则改变X是改变Y的使用的知识,并且没有冲突。改变X是对特定项目的最新且有效的改变。由此,复制者B 1404可能以图20所描述的方式用改变X来更新。 
如果改变X和Y是针对同一项目的,ChangeID(Y)没有出现在KA(X)中,且ChangeID(X)没有出现在KB(Y)中,则存在真正的冲突。换言之,改变X和Y是彼此独立地作出的。在这一情况下,将报告冲突,并且可应用各种冲突解决规则来确定哪一改变,即X还是Y是最新且有效的改变。这些规则可包括检查时间戳来确定哪一改变是最近作出的、始终有利于某些类型的复制者(诸如储存在服务器上的)来解决冲突、和/或任何其它合适的冲突解决。或者,在一种形式的冲突解决中,具有冲突的改变的项目可被更新,使得冲突的改变被合并以形成一新的改变。 
现在参考图22,示出了改变ID和知识跟踪的一个示例性实现。图22示出了复制者1502。复制者1502包括改变集合1506和知识1508。改变集合1506包括几个个别的改变1510,在此示例中被示为X、Y和Z。在图22所示的示例中,复制者的知识的当前状态由知识向量1512(在此情况中为A4)来表示。知识向量1512表示复制者A的所有知识1508。 
图22中还示出了多个改变ID 1514。在图22的示例中,复制者A 1502包括对应于改变1510的三个已改变项目1516,即IX、IY和IZ。使用改变ID,可以辨别具有改变ID A1的项目IX是在第一时刻在复制者A 1502中作出的。具有改变ID A2的项目IY是在项目IX之后的时刻在复制者A 1502中作出的。而具有改变ID A4的项目IZ是在作出项目IY之后的时刻在复制者A 1502中作出的。尽管未在图22中直接示出,但A3可对应于一先前的改变,诸如在一个示例中,被标为A4的对项目IZ作出的改变取代的改变。 
在改变ID A4和同样标为A4的复制者A的知识向量1512之间存在差别。在此示例中,知识向量A4表示复制者A的知识1508包括对应于标为A4、A3、 A2和A1的改变ID的改变。换言之,一知识向量包括由改变ID 1518所表示的改变,其等于该知识向量以及在知识向量中表示的改变ID 1518之前所作出的具有同一复制者ID的所有改变。另一方面,在本示例中,标为A4的改变ID 1518仅表示对项目IZ作出的改变Z。 
现在参考图23,示出了在包含多个复制者的拓扑结构中进行复制的两个复制者的示例。复制者A 1602包含一组改变1604、知识1606以及作为知识1606的简写表示的知识向量1608。说明性地,复制者A 1602的知识向量1608A5B3C1D10示出复制者A的知识1606包括直到在复制者A 1602中所作出的第五个改变的改变、直到在复制者B 1610中作出的第三个改变的知识、直到在复制者C中作出的第一个改变的知识、以及直到在复制者D中作出的第十个改变的知识。在图23的示例中,复制者B 1610包括一组改变1612、知识1614以及作为复制者B的知识1614的简写表示的知识向量1616。复制者B的知识向量1616A3B3C5D8示出复制者B具有包括直到由复制者A 1602作出的第三个改变的知识、直到由复制者B 1610作出的第三个改变的知识、直到由复制者C作出的第五个改变的知识、以及直到由复制者D作出的第八个改变的知识。上述知识向量包括由复制者作出的从第一个改变到某一后续改变的改变枚举的连续表示。如将在下文中更详细地解释的,知识向量还可包括作为除由复制者作出的第一个改变枚举之外的某一其它改变枚举的起始点。 
复制者A 1602与复制者B 1610的复制的时间级图示在图23中示出。在时刻(1)处,复制者A 1602向复制者B 1610发送同步请求1618以及复制者A的知识1606,该知识可以由复制者A的知识向量1608来表示。复制者B 1610在时刻(2)处通过将复制者A的知识1606与同复制者B中的改变相关联的改变ID进行比较来检查复制者A的知识1606。复制者B 1610发现复制者A不知道用改变ID C2、C3、C4和C5标出的由复制者C作出的改变。由此,复制者B发送对应于这些改变ID的复制者B的改变1612,只要用这些改变ID标出的改变是适用于复制者B 1610中的项目的当前改变。如果一改变ID对应于一先前的过期的改变,则不发送对应于该ID的任何改变。例如,如果具有版本C3的项目被更新并且被分配了一个新版本,则与C3相关联的改变不再存在于复制者B 1610中且不被发送到复制者A。随后或如时刻(3)所示地同时地,复 制者B 1610向复制者A 1602发送可被表示为知识向量1616的复制者B的知识1614。 
在时刻(4)处,复制者A 1602通过与对应于复制者A 1602中的改变的改变ID进行比较来检查由复制者B发送的知识1614。复制者A 1602发现复制者B既没有改变ID A4、A5、D9和D10所表示的改变,也没有关于这些改变的知识。因此,复制者A 1602发送存在于复制者A的改变1604中的、对应于那些改变ID的任何当前改变(除了改变ID表示过期的改变使得不发送任何改变的时候之外)。复制者A 1602随后可向复制者B 1610发送指示所有改变已发送的消息,使得复制者A 1602和复制者B 1610现在能够分别更新其知识向量1608和1616以包括最近复制的改变。如图23所示,在时刻(5)处,复制者A的知识向量A5B3C5D10等于复制者B的知识向量,后者包括由复制者A作出的直到第五个改变枚举的所有改变、由复制者B作出的直到第三个改变枚举的所有改变、由复制者C作出的直到第五个改变枚举的所有改变、以及由复制者D作出的直到第十个改变枚举的所有改变。 
现在参考图24A和24B,示出了在完成诸如图23所示的复制之后更新知识向量的两种方法。具体地,图24A示出了用于使用储存在复制者上的例外列表1702来更新知识向量的方法。为创建例外列表1702,当在复制者之间发送改变时,这些改变连同与其相关联的改变ID一起发送。当将改变添加到复制者时,将改变ID作为例外添加到例外列表1702。现在检查图24A中的复制者A的知识;该知识包括知识向量1608和包括例外C2、C3、C4和C5的例外列表1702。对例外列表1702的检查结合知识向量1608表明由于包括来自例外列表1702的改变ID,复制者A的知识包括直到由复制者C作出的第五个改变的所有改变。由此,可从复制者A 1602的知识中移除例外,并且可更新知识向量以包括元素C5,如在已更新知识向量1704中所示。可对复制者B 1610的知识1614执行类似的分析。原始知识向量1616与例外列表1703中的例外A4、A5、D9和D10相组合允许将知识向量1616更新到已更新知识向量1706。 
值得注意的是,如果仅执行部分复制,诸如如果对应于改变ID A4和D9的改变没有在诸如图23所示的复制中发送,则复制者B 1610的知识1614需要维护例外A5和D10,直到将由改变ID A4和D9表示的改变传送到复制者B 1610的与另一复制者的后续复制。 
图24B示出了更新知识向量1608和1616以反映图23所示的复制的另一方法。在此示例中,知识向量是使用对原始知识向量1608和1616中的每一元素的元素级最大值以形成已更新知识向量1708来更新的。知识向量1608和1616中的每一个的第一个元素对应于标记了在复制者A中作出的改变的一组改变ID。由于A5是两个知识向量1608和1616的元素级最大元素,因此已更新知识向量1708包括元素A5。同样,向量元素B3、C5和D10各自表示对应于每一元素所对应的特定复制者上的改变的元素级最大元素。对每一已更新向量1704、1706和1708的检查表明通过任一方法,都获得相同的已更新知识向量。知识向量更新的元素级最大值方法通常在已执行了完整复制的时候使用,而更新知识向量的例外列表方法可以在其不确定是否发生了完整复制(用户可能取消复制、设备可能崩溃等等)时有用。即,当复制者的全部知识不能用简单的向量形式来表示时,可能需要使用例外列表方法使得例外可继续包括特定复制者的一部分知识。 
现在参考图24C,对于具有来自不完整复制的信息的复制者示出了更新知识的一个示例。图24C包括原始知识向量1710、原始例外列表1712、已更新知识向量1714、以及已更新例外列表1716。对于所示的复制者,在部分复制之后,该复制者具有由向量元素A5表示的标为A1到A5的所有改变ID,以及由包括A7、A8、A9和A10的例外列表表示的标为A7到A10的所有改变ID。如图24C所示,在该知识的已更新版本中,已更新例外列表1716可被缩短以指示包括从A7到A10的所有元素,诸如由图24C所示的表达式(A7:A10)所示。该表达式仅是诸如先前讨论的向量,不同之处在于该向量的起始点是除了复制者A的第一个改变枚举之外的某一其它点。由此,对该复制者的涉及A的知识的表示由向量元素A5和例外向量(A7:A10)来表示。 
在该复制者的关于复制者B的知识的情况下,知识向量1710可被更新以在包括在对于复制者B的向量元素中所包括的改变ID之后包括连续的改变ID。向量元素B1仅包括改变ID B1。由于改变ID B2、B3和B4存在于例外列表1712中,且它们对于包括在知识向量1710中的改变ID B1是连续的,因此对于复制者B的向量元素可被更新为已更新知识向量1714中的B4,这表示包 括了元素B1到B4。由于例外列表中没有改变ID B5,因此例外B6必须保留在已更新知识的例外列表1716中。 
对于图24C的复制者的关于由复制者C作出的改变的知识可执行类似的分析。原始知识向量1710包括C5。原始例外列表包括C6、C7和C8。由于原始知识向量元素C5包括改变ID C1到C5,且C5对于原始例外列表1712中的改变ID是连续的,因此对复制者C的已更新知识向量元素可被更新到C8。 
对于知识向量的大小可能产生的一个难题在同步团体中的复制者的数量很大时尤其普遍。在其中知识向量包括同步团体中的每一复制者的改变ID或其它向量元素的拓扑结构中,知识向量随着添加到同步团体中的每一复制者而增大。一种优化是认识到在某些同步团体中并非所有的复制者都需要用知识向量来表示。这一情况的一种图示是图25所示的同步团体,该图表示了轴辐(huband spoke)服务器拓扑结构。图25示出了连接到多个客户机的服务器1802,这些客户机包括复制者A 1804、复制者B 1806、复制者C 1808和复制者D1810。在此示例中,客户机之间的所有复制路径1812-1818都通过服务器1802,且因此服务器1802可以分配包括服务器1802的改变ID作为复制者ID。在个别客户机1804到1810中作出的所有改变保留在相应客户机中,其中改变是在不分配改变ID直到执行了复制的情况下作出的。由此,在此示例中,知识向量包括包含服务器1802的复制者ID和改变ID的单个元素。说明性地,如果一改变是在复制者A 1804中作出的,在第一时刻与服务器1802进行了复制,则服务器1802向该改变分配改变枚举S1。在下一时刻,在复制者B 1806中作出的改变与服务器1802进行复制。该改变被服务器分配了改变枚举S2。值得注意的是,尽管在此示例中服务器1802分配所有的改变枚举,但是可存在其中服务器1802分配某些改变枚举而其它复制者分配其它改变枚举的其它实现。 
本发明的实现也适用于优化其它拓扑结构中的知识向量。例如,在图18中,复制者D 1114仅与复制者C 1110进行复制。由此,由C和D作出的改变可以使用具有单个复制者ID的改变枚举来枚举。在一个示例中,如果复制者C的复制者ID被选为对于复制者C 1110或复制者D 1114所做的所有改变的改变枚举的一部分,则复制者C中的第一个改变将用改变枚举C1来标记。复制者D中的下一改变被标为C2,依此类推。当一个复制者对在一不同复制者 上所做的改变创建改变ID时,创建该改变ID的复制者可被称为代理作者。 
通过对特定拓扑结构或同步团体优化知识向量,可在接近图25所示的轴辐服务器-客户机拓扑结构的拓扑结构中保存用于储存知识向量的资源。在更类似对等网络的拓扑结构中,需要更大的知识向量,但是个别复制者可有效地且独立地与大量其它复制者进行复制同时避免诸如同步循环、假冲突等问题。 
当允许不同复制者彼此独立地对项目作出改变时,应解决独立作出的改变之间所导致的冲突。冲突解决通常需要有用于确定哪一项目版本应被选为有效项目的特定规则。这些规则中的某一些的示例包括选择最后作出的项目改变或选择由特定类型的复制者作出的项目改变,诸如相对于由其它类型复制者作出的改变更偏好服务器作出的改变。或者,可将所有冲突记入日志以进行手动解决。手动解决是通过用户为冲突的项目提供将替换冲突的改变的新值来实现的。 
如果一同步团体或拓扑结构中的所有复制者以相同的方式解决了冲突,则通常不需要其它解决规则或解决系统,因为该系统中的所有复制者将迁移到对任何冲突的复制的分解。尽管同步团体内的复制者可能并没有被特别指定为以完全相同的方式解决冲突,但是同步团体内的复制者仍可用完全相同的方式来解决冲突。该情形的一个示例在图26A中示出。图26A示出了复制者D 1902。复制者D 1902接收对应于项目Ix中的改变的改变ID,其中改变ID是A4。随后,复制者D 1902接收对同一项目Ix的改变ID,其中改变ID是B5。复制者D 1902具有选择对项目Ix的哪一改变是优选改变的冲突解决规则。在此情况下,复制者D选择由改变ID A4标记的对项目Ix的改变。为指示冲突由复制者D 1902解决以及如何解决该冲突,向项目Ix分配一新的改变ID,该新的改变ID包括冲突解决的结果以及由作出冲突解决的特定复制者分配的新改变ID。该新的改变ID包括对作出冲突解决的复制者的下一顺序改变枚举。在此情况下,新的改变ID被标为A4(D7)以指示在冲突解决中选择了标为A4的改变并且该冲突由复制者D 1902解决。如图26A所示,当复制者C 1904检测到改变中的冲突时发生类似的过程。复制者C 1904以与复制者D 1902相同的方式解决冲突。由此,将标为A4(C3)的新改变ID分配给项目Ix的改变。在这一情况下,用改变ID A4和B5标记的对项目Ix的改变之间的冲突最终在该拓扑 结构中的所有复制者中以相同的方式来解决。 
图26B示出了其中冲突由拓扑结构中的不同复制者不同地解决的一个示例。在图26B中,在时刻(1)处,复制者D 1902以一种方式解决冲突并向项目分配示出了对冲突的解决的新改变ID B5以及作出该改变的复制者(D7)。在时刻(2)处,复制者C 1904以由复制者C 1904分配的新改变ID A4(C3)示出的不同方式解决同一冲突。在时刻(3)处,复制者D 1902接收复制者C对冲突的解决。此时,复制者D 1902认识到该特定冲突以两种不同的方式解决。本发明的某些实现因此指定在对项目Ix的冲突改变之间作出确定性解决。图26B所示的特定确定性解决使得具有最低值复制者ID的改变被选为确定性结果。由此,由于A是比复制者B低的复制者ID值,因此选择对冲突的确定性解决为由改变ID A4标记的改变。因此,复制者D 1902将与对项目I的改变相关联的改变ID改为A4(D7)。注意,为了避免复制循环或其它冲突问题,与作出改变的复制者相关联的改变枚举(即,D7)在确定性结果1906中与在原始冲突解决1908中是相同的。 
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作作为实现权利要求的示例形式公开的。落入在此所述的和/或所附权利要求所述的实现的精神内的所有等效技术方案、更改和修正都期望受到保护。 
例如,计算机软件领域普通技术人员会认识到客户机和/或服务器布置、用户界面屏幕内容、和/或在此讨论的示例中所述的数据布局可在一台或多台计算机上不同地组织,以包括比示例中所描绘的更少或更多的选项或特征。 

Claims (20)

1.一种用于同步数据的方法,包括以下步骤:
提供部分参与者,所述部分参与者具有数据存储和知识存储,所述数据存储可用于储存在与第一完全参与者的同步过程期间检索到的一组数据,所述知识存储可用于储存关于所述数据存储中的数据的一组知识,其中所述一组知识表示所述第一完全参与者知道的对所述数据的改变(282),其中所述部分参与者不理解所述一组知识(284),并且其中所述部分参与者负责跟踪所述部分参与者对所述数据存储中的所述一组数据作出了什么改变(290);
从所述部分参与者的用户接收改变所述数据存储中的所述一组数据中的一特定记录的请求(286);以及
在从所述用户接收到所述请求之后更新所述数据存储中的所述特定记录,其中所述更新包括储存标识改变的源的信息,该信息将改变的源标识为所述部分参与者(290),
其中所述知识是描述对给定参与者已知的改变的元数据,参与者是设备或服务,完全参与者是具有用于同步数据的数据存储和知识存储,并且理解知识的参与者。
2.如权利要求1所述的用于同步数据的方法,其特征在于,所述部分参与者可操作来与第二完全参与者进行同步(66)。
3.如权利要求1所述的用于同步数据的方法,其特征在于,所述部分参与者通过所述第一完全参与者上的处理程序与所述第一完全参与者进行同步(66)。
4.如权利要求1所述的用于同步数据的方法,其特征在于,所述第一完全参与者是个人计算机(242)。
5.如权利要求1所述的用于同步数据的方法,其特征在于,所述第一完全参与者是移动设备(242)。
6.如权利要求1所述的用于同步数据的方法,其特征在于,所述部分参与者是移动设备(282)。
7.如权利要求1所述的用于同步数据的方法,其特征在于,所述部分参与者是web服务(282)。
8.如权利要求1所述的用于同步数据的方法,其特征在于,所述标识改变的源的信息是版本(304)。
9.如权利要求8所述的用于同步数据的方法,其特征在于,所述版本的第一部分包括唯一地标识所述部分参与者的标识符,并且其中所述版本的第二部分包括指示记录版本的数字(304)。
10.如权利要求1所述的用于同步数据的方法,其特征在于,所述标识改变的源的信息是所述记录的唯一标识符以及指示所述记录何时改变的日期和时间标识符(314)。
11.如权利要求1所述的用于同步数据的方法,其特征在于,还包括:
在所述第一完全参与者于所述同步过程之后更新了所述一组知识之后,从所述第一完全参与者接收一组已更新知识(296)。
12.一种用于同步数据的系统,包括:
用于提供部分参与者的装置,所述部分参与者具有数据存储和知识存储,所述数据存储可用于储存在与第一完全参与者的同步过程期间检索到的一组数据,所述知识存储可用于储存关于所述数据存储中的数据的一组知识,其中所述一组知识表示所述第一完全参与者知道的对所述数据的改变,其中所述部分参与者不理解所述一组知识,并且其中所述部分参与者负责跟踪所述部分参与者对所述数据存储中的所述一组数据作出了什么改变;
用于从所述部分参与者的用户接收改变所述数据存储中的所述一组数据中的一特定记录的请求的装置;以及
用于在从所述用户接收到所述请求之后更新所述数据存储中的所述特定记录的装置,其中所述更新包括储存标识改变的源的信息,该信息将改变的源标识为所述部分参与者,
其中所述知识是描述对给定参与者已知的改变的元数据,参与者是设备或服务,完全参与者是具有用于同步数据的数据存储和知识存储,并且理解知识的参与者。
13.一种用于同步数据的系统,包括:
用于从参与者接收使用同步引擎来执行同步操作的请求的装置;
用于确定所述参与者的类型的装置,所述类型选自由完全参与者类型、部分参与者类型和简单参与者类型构成的组;
其中如果所述参与者具有简单参与者数据存储且没有知识则所述参与者被确定为简单参与者类型;
其中如果所述参与者具有部分参与者数据存储以及存储的但不理解的知识则所述参与者被确定为部分参与者类型;
其中如果所述参与者具有完全参与者数据存储以及存储的且理解的知识则所述参与者被确定为完全参与者类型;以及
其中所述同步引擎使用适用于所述参与者类型的一组逻辑来执行与所述参与者的同步操作,
其中所述知识是描述对给定参与者已知的改变的元数据,参与者是设备或服务。
14.如权利要求13所述的用于同步数据的系统,其特征在于,如果所述参与者的类型被确定为简单参与者类型,则所述同步引擎可操作来通过检测对所述简单参与者数据存储中的一组数据的改变并将任何冲突储存在本地数据存储中来同步所述简单参与者数据存储中的所述一组数据(254)。
15.如权利要求13所述的用于同步数据的系统,其特征在于,如果所述参与者的类型被确定为部分参与者类型,则所述同步引擎从所述参与者接收所述存储的但不理解的知识(258),并且在出现例外的情况下更新所述参与者上的存储的但不理解的知识(260),所述例外指示存在所述参与者所不知道的一个或多个改变。
16.如权利要求15所述的用于同步数据的系统,其特征在于,所述同步引擎通过修改本地副本然后将所述本地副本传送到所述参与者来更新所述参与者上的存储的但不理解的知识(262)。
17.如权利要求13所述的用于同步数据的系统,其特征在于,如果所述参与者的类型被确定为部分参与者类型,则由于所述参与者上的存储的但不理解的知识,所述参与者可操作来参与多主双向同步操作(264)。
18.如权利要求13所述的用于同步数据的系统,其特征在于,所述同步引擎从所述参与者接收注册用于所述同步操作的处理程序的请求(244)。
19.一种用于同步数据的方法,包括以下步骤:
提供简单参与者,所述简单参与者具有数据存储但没有知识存储,所述数据存储可用于储存在与完全参与者的同步过程期间提供的一组数据,并且其中所述简单参与者不负责跟踪所述简单参与者对所述数据存储中的所述一组数据作出了什么改变(424);
从所述简单参与者的用户接收改变所述数据存储中的所述一组数据中的特定记录的请求(428);以及
在从所述用户接收到所述请求之后更新所述数据存储中的所述特定记录(430),
其中所述知识是描述对给定参与者已知的改变的元数据,参与者是设备或服务,完全参与者是具有用于同步数据的数据存储和知识存储,并且理解知识的参与者。
20.一种用于同步数据的系统,包括:
用于提供简单参与者的装置,所述简单参与者具有数据存储但没有知识存储,所述数据存储可用于储存在与完全参与者的同步过程期间提供的一组数据,并且其中所述简单参与者不负责跟踪所述简单参与者对所述数据存储中的所述一组数据作出了什么改变;
用于从所述简单参与者的用户接收改变所述数据存储中的所述一组数据中的特定记录的请求的装置;以及
用于在从所述用户接收到所述请求之后更新所述数据存储中的所述特定记录的装置,
其中所述知识是描述对给定参与者已知的改变的元数据,参与者是设备或服务,完全参与者是具有用于同步数据的数据存储和知识存储,并且理解知识的参与者。
CN2007800056429A 2006-02-15 2007-01-19 使用同步对等参与者模型的系统和方法 Expired - Fee Related CN101385030B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/354,677 2006-02-15
US11/354,677 US7756825B2 (en) 2003-07-31 2006-02-15 Synchronization peer participant model
PCT/US2007/001394 WO2007097846A1 (en) 2006-02-15 2007-01-19 Synchronization peer participant model

Publications (2)

Publication Number Publication Date
CN101385030A CN101385030A (zh) 2009-03-11
CN101385030B true CN101385030B (zh) 2011-11-16

Family

ID=38437695

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800056429A Expired - Fee Related CN101385030B (zh) 2006-02-15 2007-01-19 使用同步对等参与者模型的系统和方法

Country Status (15)

Country Link
US (1) US7756825B2 (zh)
EP (1) EP1989646B1 (zh)
JP (1) JP5289063B2 (zh)
KR (1) KR101319767B1 (zh)
CN (1) CN101385030B (zh)
AU (1) AU2007218127B2 (zh)
BR (1) BRPI0706518A2 (zh)
CA (1) CA2634467C (zh)
ES (1) ES2635719T3 (zh)
IL (1) IL192722A0 (zh)
NO (1) NO20083156L (zh)
RU (1) RU2419865C2 (zh)
TW (1) TW200805094A (zh)
WO (1) WO2007097846A1 (zh)
ZA (1) ZA200805394B (zh)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739363B1 (en) * 2003-05-09 2010-06-15 Apple Inc. Configurable offline data store
US7401103B2 (en) * 2003-07-31 2008-07-15 Microsoft Corporation Replication protocol for data stores
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
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
US20060242277A1 (en) 2005-03-31 2006-10-26 Tripwire, Inc. Automated change approval
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
US7890646B2 (en) * 2006-04-27 2011-02-15 Microsoft Corporation Synchronization orchestration
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
US8069184B2 (en) * 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US7933869B2 (en) * 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
US20080162589A1 (en) * 2006-12-29 2008-07-03 Microsoft Corporation Weakly-consistent distributed collection compromised replica recovery
US20080162587A1 (en) * 2006-12-29 2008-07-03 Ulrich Auer Server synchronization for maintenance activities
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
WO2008111081A2 (en) * 2007-03-14 2008-09-18 New Act Ltd. System and method for propagating personal identification information to communication devices
US20080294701A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Item-set knowledge for partial replica synchronization
US8505065B2 (en) * 2007-06-20 2013-08-06 Microsoft Corporation Access control policy in a weakly-coherent distributed collection
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US20090006489A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Hierarchical synchronization of replicas
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US20090083441A1 (en) * 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8095495B2 (en) * 2007-09-25 2012-01-10 Microsoft Corporation Exchange of syncronization data and metadata
JP5090149B2 (ja) * 2007-12-13 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを管理する方法、装置及びシステム
US8078749B2 (en) * 2008-01-30 2011-12-13 Microsoft Corporation Synchronization of multidimensional data in a multimaster synchronization environment with prediction
US20090196311A1 (en) * 2008-01-31 2009-08-06 Microsoft Corporation Initiation and expiration of objects in a knowledge based framework for a multi-master synchronization environment
US8185495B2 (en) * 2008-02-01 2012-05-22 Microsoft Corporation Representation of qualitative object changes in a knowledge based framework for a multi-master synchronization environment
US9135321B2 (en) * 2008-02-06 2015-09-15 Microsoft Technology Licensing, Llc Synchronization infrastructure for networked devices, applications and services in a loosely coupled multi-master synchronization environment
US20090315766A1 (en) 2008-06-19 2009-12-24 Microsoft Corporation Source switching for devices supporting dynamic direction information
US8700301B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US8467991B2 (en) 2008-06-20 2013-06-18 Microsoft Corporation Data services based on gesture and location information of device
US8135670B2 (en) * 2008-07-22 2012-03-13 International Business Machines Corporation Embedded change logging for data synchronization
US8458128B2 (en) 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
US9240015B2 (en) * 2009-05-08 2016-01-19 A2Zlogix, Inc. Method and system for synchronizing delivery of promotional material to computing devices
US8872767B2 (en) 2009-07-07 2014-10-28 Microsoft Corporation System and method for converting gestures into digital graffiti
US20110016100A1 (en) * 2009-07-16 2011-01-20 Microsoft Corporation Multiple fidelity level item replication and integration
US8341099B2 (en) 2010-03-12 2012-12-25 Microsoft Corporation Semantics update and adaptive interfaces in connection with information as a service
US8805924B2 (en) 2010-05-26 2014-08-12 Microsoft Corporation Optimistic concurrency utilizing distributed constraint enforcement
JP5630190B2 (ja) * 2010-10-06 2014-11-26 富士通株式会社 更新管理装置、更新管理方法および更新管理プログラム
US8868500B2 (en) * 2011-01-14 2014-10-21 Apple Inc. Data synchronization
US10395762B1 (en) 2011-06-14 2019-08-27 Merge Healthcare Solutions Inc. Customized presentation of data
US8867807B1 (en) 2011-09-23 2014-10-21 Dr Systems, Inc. Intelligent dynamic preloading and processing
US9836770B2 (en) 2012-02-24 2017-12-05 Ad Persistence, Llc Data capture for user interaction with promotional materials
US8756194B1 (en) * 2012-05-04 2014-06-17 Sencha, Inc. Cloud-based data replication for web applications with replica identifier reassignment feature
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
US8635373B1 (en) * 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
CN104035944B (zh) * 2013-03-08 2018-11-09 南京中兴新软件有限责任公司 文件系统的属性同步控制方法、装置和系统
US20150120662A1 (en) * 2013-10-29 2015-04-30 Microsoft Corporation Synchronizing event history for multiple clients
US10025628B1 (en) * 2015-06-26 2018-07-17 Amazon Technologies, Inc. Highly available distributed queue using replicated messages
US11201918B2 (en) * 2020-03-03 2021-12-14 Snap Inc. Minimizing number of synchs
US11494412B2 (en) * 2021-03-30 2022-11-08 Cira Apps Limited Hub and spoke architecture for cloud-based synchronization
CN113744037B (zh) * 2021-08-16 2023-09-29 同盾科技有限公司 知识联邦中参与方通信方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240416B1 (en) * 1998-09-11 2001-05-29 Ambeo, Inc. Distributed metadata system and method
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
EP1267283A3 (en) * 2001-06-15 2006-02-15 Nokia Corporation Selecting data for synchronization

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4078260A (en) * 1976-05-12 1978-03-07 International Business Machines Corporation Apparatus for transposition sorting of equal length records in overlap relation with record loading and extraction
US5185886A (en) * 1989-06-30 1993-02-09 Digital Equipment Corporation Multiple record group rebound sorter
US5893116A (en) * 1996-09-30 1999-04-06 Novell, Inc. Accessing network resources using network resource replicator and captured login script for use when the computer is disconnected from the network
US6405049B2 (en) * 1997-08-05 2002-06-11 Symbol Technologies, Inc. Portable data terminal and cradle
US6189007B1 (en) * 1998-08-28 2001-02-13 International Business Machines Corporation Method and apparatus for conducting a high performance locking facility in a loosely coupled environment
US6507845B1 (en) * 1998-09-14 2003-01-14 International Business Machines Corporation Method and software for supporting improved awareness of and collaboration among users involved in a task
US6243715B1 (en) * 1998-11-09 2001-06-05 Lucent Technologies Inc. Replicated database synchronization method whereby primary database is selected queries to secondary databases are referred to primary database, primary database is updated, then secondary databases are updated
US6401104B1 (en) * 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US6560614B1 (en) * 1999-11-12 2003-05-06 Xosoft Inc. Nonintrusive update of files
JP3963417B2 (ja) * 1999-11-19 2007-08-22 株式会社東芝 データ同期処理のための通信方法および電子機器
US20010042099A1 (en) * 2000-02-02 2001-11-15 Doongo Technologies, Inc. Apparatus and methods for optimizing traffic volume in wireless email communications
US6873987B1 (en) * 2000-05-31 2005-03-29 International Business Machines Corporation Method, system and program products for recovering from failures within a shared nothing distributed computing environment
JP2002149464A (ja) * 2000-08-17 2002-05-24 Fusionone Inc データ転送および同期システム用のベースローリングエンジン
US6876995B1 (en) * 2000-10-04 2005-04-05 Microsoft Corporation Web store events
WO2002054236A2 (en) * 2001-01-03 2002-07-11 Synchrologic, Inc. A system and method for data synchronization between remote devices
JP4149199B2 (ja) 2002-06-05 2008-09-10 富士通株式会社 携帯端末補助装置、データ同期方法および携帯端末装置
US7440981B2 (en) * 2003-07-31 2008-10-21 Microsoft Corporation Systems and methods for replicating data stores
US7636776B2 (en) * 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
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
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
US7111139B2 (en) * 2004-03-02 2006-09-19 Hitachi, Ltd. Data synchronization of multiple remote storage
KR100557192B1 (ko) * 2004-04-06 2006-03-03 삼성전자주식회사 서버와 클라이언트간에 데이터 동기화 시 비정상 종료된경우 데이터 전송 방법 및 그 시스템.

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
US6240416B1 (en) * 1998-09-11 2001-05-29 Ambeo, Inc. Distributed metadata system and method
EP1267283A3 (en) * 2001-06-15 2006-02-15 Nokia Corporation Selecting data for synchronization

Also Published As

Publication number Publication date
CA2634467A1 (en) 2007-08-30
RU2008133417A (ru) 2010-02-20
EP1989646A1 (en) 2008-11-12
CN101385030A (zh) 2009-03-11
ZA200805394B (en) 2010-04-28
IL192722A0 (en) 2009-02-11
ES2635719T3 (es) 2017-10-04
KR20080113347A (ko) 2008-12-30
BRPI0706518A2 (pt) 2011-03-29
US20060215569A1 (en) 2006-09-28
NO20083156L (no) 2008-08-27
TW200805094A (en) 2008-01-16
EP1989646B1 (en) 2017-05-10
AU2007218127A1 (en) 2007-08-30
US7756825B2 (en) 2010-07-13
EP1989646A4 (en) 2011-11-23
CA2634467C (en) 2014-07-08
WO2007097846A1 (en) 2007-08-30
JP2009527055A (ja) 2009-07-23
AU2007218127B2 (en) 2011-03-31
RU2419865C2 (ru) 2011-05-27
JP5289063B2 (ja) 2013-09-11
KR101319767B1 (ko) 2013-10-22

Similar Documents

Publication Publication Date Title
CN101385030B (zh) 使用同步对等参与者模型的系统和方法
US8346847B2 (en) Installing applications based on a seed application from a separate device
CN101573923B (zh) 用于传播数字同步冲突的知识的传播方法
CN100440206C (zh) 与物理存储表示无关地同步逻辑视图的方法和系统
CN100377099C (zh) 为复制文件管理多个文件状态的方法
CN109947767A (zh) 多重租赁数据库系统中的系统共享类型
CN110147369A (zh) 多重租赁数据库系统中的数据分离和写入重新定向
US20060190572A1 (en) Filtered Replication of Data Stores
CN101627581A (zh) 用于分布式设备数据的多主同步的冲突解决
CN110199277A (zh) 在数据资源中包括元数据
CN102109905B (zh) 一种提供输入法资源的方法及系统
AU2013203182B2 (en) Installing applications based on a seed application from a separate device

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: 20150430

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150430

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111116

CF01 Termination of patent right due to non-payment of annual fee