专利名称:同步数据和元数据的交换的制作方法
同步数据和元数据的交换背景当今,个人经常使用各种各样的计算机设备或系统。因此,经常希望在设备之间保持信息同步。例如,个人通常具有在工作时与其交互的台式个人计算机(PC)和/或相关联 的文件服务器。他们时常也有用于在离开办公室时进行工作的笔记本/膝上型计算机以及 家里的一个或多个台式计算机。此外,他们可具有诸如个人数字助理(PDA)、袖珍PC、移动 电话(例如智能电话)等手持式计算机和/或出于组织、通信和/或娱乐目的而利用的其 他便携式设备。通常期望在多个设备之间复制或同步至少某些数据以使得能够方便地访问 这些数据。例如,用户经常将文件从台式计算机或文件服务器复制(或同步)到便携式计算 机或设备,以供当用户离开办公室时使用。此后,用户很可能在离开办公室时修改或添加某 些新文件,并且随后当他们返回到办公室时希望将这些文件复制(同步)到台式计算机或 文件服务器。相似地,在另一示例中,用户可能希望将图片或音乐从一个设备复制到另一个 设备(例如计算机到MP3播放器、数字照相机到计算机...)。更进一步,用户可能要求跨其 所有计算机或计算机子集维护个人偏好和联系人(例如地址簿)。由此,存在其中需要跨多 个计算机或设备同步特定文件的许多情形。在其最简单的形式中,同步仅是使得来自多个设备或系统的指定文件或数据在所 有设备或其子集之间变成相同或一致的任务。通常,这意味着最新文件版本被用于复制到 存储。这个过程通常是由双向、对等、同步软件应用程序来自动化。具体地,在接收时,同步 应用程序可以分析一组信息并且通过与第一设备内的驻留数据进行比较来检测文件变更 或添加。此后,可以已经更改的或新数据例如经由硬连线或无线连接复制到通信地耦合第 一设备的第二设备。当然,可以应用冲突检测和/或解决方案以确保数据的准确性。这使得第一设备上的文件与第二设备上的文件同步。同步也可以通过访问具有诸 如台式计算机等耦合到其上的第一设备的网络来远程地执行。可以使用同步软件来将诸如 第二台式计算机或膝上型计算机等第二设备与第一设备同步。不幸的是,当今的同步应用 程序不符合当今不断增长的对提高移动性的需求。换而言之,常规同步应用程序需要过量 的带宽,因为通常将完整的信息集从一个设备发送到另一个设备以确定要同步的变更。概述以下提供了本发明的简化概述以提供对本发明的某些方面的基本理解。本概述不 是本发明的广泛概观。它不不旨在标识本发明的关键/重要的元素或描绘本发明的范围。 其唯一目的是以简化的形式呈现本发明的一些概念,作为后面呈现的更加详细的描述的序
曰ο此处所公开并要求保护的发明在其一方面包括一种使得能够在减少传输通信量 的同时进行数据同步的系统。鉴于此,本发明能够在不需要常规设备中所使用的完整的同 步“往返”的情况下完成同步。相反,此处所公开的系统和方法采用交换数据和元数据以便 于复杂和智能信息传递。在各方面,可以提供向提供者通知数据变更、修改、添加或删除的“知识”。该“知识”可以是实际知识或某种制造出的“替代”知识,这两种知识中的任一种都可以降低同步交换的开销并提高其效率。有效地,本发明公开了用于交换例如“知识”的同步数据和/或元数据以提高同步过程的性能的替换模式。各具体方面公开了每一种模式中的用于交换数据和/或元数据的 操作的各种有效次序。具体地,可以提供“实际”(或“替代”)知识以便于复杂的同步过程。 此外,本发明可以从所提供的知识中进行学习以进一步增强同步过程。在本发明的又一方面,提供了机器学习和推理组件,该组件使用基于概率分析和/ 或基于统计分析来预测或推断用户期望自动执行的动作。为了实现前述及相关目的,在这里结合以下描述及附图来描述本发明的某些说明 性方面。然而,这些方面仅指示了可采用本发明的原理的各种方法中的少数几种,且本发明 旨在包括所有这样的方面及其等效方式。当结合附图考虑以下本发明的详细描述时,本发 明的其它优点和新颖特征将变得显而易见。附图简述
图1示出了根据本发明的一方面的便于数据同步的系统。图2示出了根据本发明的一方面的采用“知识”来增强同步过程的系统。图3示出了根据本发明的一方面的便于单向基于知识的同步的过程的示例性流 程图。图4示出了根据本发明的一方面的便于接受变更的过程的示例性流程图。图5示出了根据本发明的一方面的便于非交错基于知识的双向同步的过程的示 例性流程图。图6示出了根据本发明的一方面的便于交错基于知识的双向同步的过程的示例 性流程图。图7示出了根据本发明的一方面的便于基于知识的多向交错同步的系统的示例 性框图。图8示出了根据本发明的一方面的便于监视源以便进行连续更新的过程的示例 性流程图。图9示出了根据本发明的一方面的便于“查验拉取(Ping-to-Pull) ”机制的过程 的示例性流程图。图10示出了根据本发明的一方面的便于通过中介来进行基于知识的同步的过程 的示例性流程图。图11示出了可用于执行所公开的体系结构的计算机的框图。图12示出了根据本发明的示例性计算环境的示意性框图。详细描述现在参照附图描述本发明,其中相同的附图标记用于指代全文中相同的元素。在 以下描述中,为解释起见,阐明了众多具体细节以提供对本发明的全面理解。然而,显然,本 发明可以在没有这些具体细节的情况下实现。在其它情况下,以框图形式示出了公知的结 构和设备以便于描述本发明。如在本申请中所使用的,术语“组件”和“系统”旨在表示计算机相关的实体,其可 以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行代码、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和 /或执行的线程中,并且组件可以位于一台计算机内和/或分布在两台或更多的计算机之 间。如此处所使用地,术语“推断”或“推论”一般指的是从经由事件和/或数据捕捉到的一组观察值推理或推断系统、环境和/或用户的状态的过程。例如,推论可用于标识特 定的上下文或动作,或可生成状态的概率分布。推断可以是概率性的,即,基于对数据和事 件的考虑计算所关注状态的概率分布。推论也可以指用于从一组事件和/或数据组成更高 级事件的技术。这类推论导致从一组观察到的事件和/或存储的事件数据中构造新的事件 或动作,而无论事件是否在相邻时间上相关,也无论事件和数据是来自一个还是若干个事 件和数据源。最初参考附图,图1示出了便于在提供者之间进行数据同步的系统100。如图所 示,系统100可以包括管理两个提供者(104、106)之间的同步活动的同步引擎102。可以理 解,虽然图1所示的系统涉及两个提供者的同步系统,但是可以理解,本发明的其他方面可 以包括另外的提供者而不背离本发明的范围。在标准同步系统(例如100)中,在同步会话中存在三个参与者同步引擎102和 两个同步提供者104、106。同步引擎102负责协调同步会话。提供者104、106负责与正在 同步的端点108、110接口。如图所示,每一个提供者104、106对应于某一个端点或某一类端 点(108、110)。可以理解,用某种同步拓扑结构来不同地同步在一起的多个端点(108、110) 有时被称为“伙伴”。常规上,有必要的是,同步引擎102和提供者104、106必须在同一计算机上的同一 进程中运行,在一个计算机上的多个通信进程中运行,或者在分布在一个或多个计算机上 的多个通信进程中运行。提供了以下单向同步会话的情形,以便洞察本发明。因此,本示例 并决不旨在限制本发明的范围。根据本发明,在单向同步会话中,将会有目的地和源(例如104和106)。根据本发 明,不管过程配置如何,目的地提供者可以使其“知识”对源提供者可用。“知识”的概念将 在下文中更详细地描述,概括地,“知识”可以指目的地在任何特定时刻“知道”的状况。因此,源提供者根据目的地提供者所提供的知识来将其还不“知道”的那些变更传 达给目的地提供者。在一方面,包括在这些变更中的可以是目的地提供者将在应用这些变 更时“习得”的“知识”,即所谓的“习得知识”。以下附图概述了与用于在各个同步提供者 之间传达知识和变更的模式相关的各个实施例。更具体地,以下附图至少针对以下七种情 形1.单向同步;2.双向、非交错同步;3.双向、交错同步;4.多向交错同步;5.连续更新同步;6.查验拉取同步;以及7.通过中介的同步。
如上所述,在每一种情况下,为了完成高效同步,目的地提供者使其知识对源提供者可用。然后,源提供者根据目的地提供者的知识来将目的地提供者还不“知道”的那些变 更传达给目的地提供者。在各方面,包括在这些变更中的是目的地提供者将在应用这些变 更时“习得”的“知识”,即所谓的“习得知识”。图2示出了根据本发明的一方面的系统100的替换框图。本质上,图2所示的系 统100分别示出了目的地和源提供者组件(104、106)中的每一个中的子组件。虽然提供者 如图2中所示地指定,但可以理解,取决于特定同步应用程序,每一个提供者都可以用作源 和/或目的地。由此,在各替换方面,子组件(或其子集)可以被包括在提供这者中的一个 或两者中。相似地,如将在下文中描述的,本发明可以在涉及不止只有两个提供者的方面中 采用。这些和其他可以想到的方面应被包括在本发明以及所附的权利要求书的范围内。如图所示,目的地提供者104可以包括知识生成器202和过滤器204。在操作中, 知识生成器202可以建立阐述目的地提供者104 (或被服务的端点)内的数据的状况的“知 识”。该知识用于基于目的地提供者104所维护或管理的状态或状况来通知源提供者。该 知识可以通过同步引擎102传送到源提供者106。因此,源提供者106可以包括分析组件206和变更聚集器208,这两个组件一起根 据接收到的知识来确定和编译数据。本质上,这种对接收到的知识的分析提供了用于限制 或减少冗余(或不必要的)信息传输的复杂逻辑。换而言之,对知识的分析使得能够在将 变更从源提供者发送到目的地之前做出决定。相似地,可以在替换存储内的日期(或同步)数据之前采用过滤器204来进一步 过滤任何不必要的变更。该过滤功能的有效性将在审阅以下的各种情况后变得更加显而易 见。更具体地,在一方面,在提供“替代知识”以代替实际知识的情况下,过滤器可以提供用 于进一步排除目的地提供者(或所支持的端点)内的不必要的或冗余同步的必要逻辑。如将结合以下讨论所示出的,也值得考虑的是,源提供者106无需具有来自目的 地的知识。此处,过滤器组件204可用于限制该集合。此处,目的地知识用于从源已知的变 更集中过滤出目的地不知道的变更集。因此,源可以将所有变更转发给目的地,由此消除源 对知道目的地的实际知识的需求。然而,这要求目的地对照其自己的知识来过滤来自源的 变更以便移除过时的(或不需要的)知识。在一替换方面,目的地可以制造某种“替代”知识(可能更易于表示),以使得对实 际知识未知的所有变更对于“替代”知识是未知的,在这种情况下,该信息可以被发送给目 的地以替代真实的目的地知识。可以理解,可以实现这种情形以减少线上数据传输(在知 识传输方面)或简化源处的处理。注意,如果考虑到源不知道目的地知识等价于“替代”知 识,则该源不知道目的地知识仅是替代知识变型的一种特殊情况是清楚的。以下讨论列举了对于与常规同步实现相关联的问题的各种解决方案。更具体地, 本发明针对与同步相关联的许多问题,并且尤其涉及各个同步提供者之间的知识和变更的 传达模式。以下附图和讨论考虑如下模式单向同步(图3);双向、非交错同步(图5);双向交错同步(图6);多向交错同步(图7);
连续更新(图8);查验拉取(图9);以及通过中介的同步(图10)。图3示出了根据本发明的一方面的单向同步的示例性方法。换而言之,图3示出了根据本发明的一方面的在将单个目的地与单个源进行同步时所涉及的示例性动作。虽然 图3针对具有单个源的单向同步,但是可以理解,可以采用该方法来将目的地与多个源同 步,而不背离本发明的精神和/或范围。尽管出于简明解释的目的,此处例如以流程图形式示出的一个或多个方法被示出 并描述为一系列动作,但是可以理解和明白,本发明不受动作的次序的限制,因为根据本发 明,某些动作可以按不同次序和/或与此处所示并描述的其它动作同时发生。例如,本领域 技术人员将理解并领会,方法可被替换地表示为诸如状态图中的一系列相互关联的状态或 事件。而且,并非所有示出的动作都是实施根据本发明的方法所必需的。单向同步可以被认为是在提供者(或端点)之间同步数据的最简单的模式之 一。考虑提供者A(例如图1的104)希望与提供者B(例如图1的106)同步。如图1所 示,可以采用同步引擎102来管理提供者之间的控制流。例如,每一提供者可以展示各种 原语响应(例如getchanges (获取变更))以及用于接受各种原语的结果的原语(例如 processchanges (处理变更))。在这种情况下,当无状态提供者(104、106)简单地响应各 种方法调用时,同步引擎102可以驱动同步操作。再次参考图3,在302,第一提供者(例如提供者A)可以生成对来自第二提供者 (例如提供者B)的变更的请求。实际上,提供者A向提供者B请求变更。如图所示,提供 者A通常将其“知识”作为该请求的一部分发送给提供者B。然而,先前提到的对于发送目 的地知识的各种变型在该方法中也是有效的,例如“替代”知识。在其他方面,提供者A也 可以发送诸如批量大小(例如,在同步被分成多批变更的情况下)等各种请求元数据。另 夕卜,在提供者B提供多个同步范围(例如,概念上的多个端点)的情况下,提供者A可以发 送范围标识符(id)。 在304,分析请求,并在306枚举变更。在该示例中,提供者B计算提供者A不知道 的变更集(包括版本)。提供者B包括对应于批量中的每一个变更的习得知识。此外,提供 者B还可以包括诸如范围id、返回批量大小等附加元数据。在308,可以将变更从源传达到目的地。例如并继续上述示例,提供者B将变更集 传送到提供者A。在这个动作中,变更可以包括已变更项目的标识符、项目的创建版本、项目 的更新版本、指示项目是否已被删除的标志等。标识准则基本上可以是将变更、修改、添加、 删除等分类到项目或项目组或者对项目或项目组的变更、修改、添力口、删除等进行分类的几 乎任何标识准则。在具有变更单元的项目的情况下,更新版本可以按照变更单元,由此每一 个变更单元可以存在一 id。注意,提供者可以在需要或适当时选择个别地或按范围提供变 更。提供者B可以将或不将已变更数据包括在批量变更中。另外,如果提供数据,则提供者 B可以提供关于项目的所有数据或仅仅是变更增量,而不背离本发明的范围。在310,接受变更。在上述示例中,提供者A可以接受从提供者B接收到的变更,并 且如下文图4中所阐述的那样应用这些变更。可以理解,包括此处所提供的示例性方法是 为了洞察本发明,而绝不旨在限制本发明。相反,可以理解,存在包括在本发明以及所附权利要求书的范围内的其他示例。现在转向图4,示出了根据本发明的一方面的接受变更的示例性方法。本质上,方 法310示出了提供者A根据从提供者B接收到的变更来执行的处理动作。可以理解,这些 动作几乎可以按任何顺序来执行。同样,可以理解,图4的处理方法示出了一示例性情形, 且绝不旨在限制本发明的范围。当接受变更后,在402,检测冲突。此处,检测冲突(使用所提供的知识)并且选择 用于解决检测到的冲突的机制。可以理解,可以使用本领域内已知的几乎任何冲突解决解 决机制,而不背离此处所描述 的本发明的精神和范围。在各方面,冲突解决机制在需要或适 当时可以是自动和/或手动的。再进一步,可以理解,本发明可以管理无法在知识中检测到(例如,它们并非来自 并发变更)但是存在的“约束”冲突,因为无法本地地应用远程始发的变更,这通常是由于 违反某一业务或处理规则。例如,如果目的地是文件系统,则它可能不允许多个文件具有相 同的名称。或者,如果目的地是数据库,则它可以对表行具有一个或多个约束,例如范围检 查或其他一致性检查。这些是冲突,但是它们无法从知识中检测到。对于每一个变更,在404定位对应的本地项目。此处,在目的地提供者中定位对应 于源提供的本地项目的项目。可以理解,图4的方法对于由源标识为问题项目的每一个项 目可以是递归的。在406,对于存在冲突或者远程版本是冲突获胜者的情况,取回变更数据(如果未 包括在源提供的批次中)。此外,在408,检测任何约束冲突(例如不使用知识)。另外,在 408还选择关于如何解决冲突的机制。如分别由410、412和414示出的,或者应用变更、或者发起对本地项目的冲突解决 和/或记录冲突。在所有情况下,可以在需要或适当时同时更新知识。例如,可以添加对于 本地知识变更的习得知识。在各方面,在记录冲突的情况下可以绕过添加习得知识。可以理 解,图3和4的方法提供了用于双向同步(图5)的框架以及用于描述随后的其他模式(图 6-10)的基础。现在参考图5,示出了非交错双向同步的示例性方法。本质上,该方法是单向同步 的递归版本。图5所示的方法通常被认为是双向同步的最直接的形式。在这种方法中,提 供者A执行来自提供者B的单向同步,如动作502、504、506、508和510所示。可以理解,这 些动作与图3所示的动作302-310相同。在第一次传递(例如单向同步)之后,两个提供者交换位置,并且提供者B完成来 自提供者A的双向同步。这种交换由图5所示的从510到502的箭头示出。注意,在检测 并解决冲突的情况下,可能需要多个双向同步操作来达到收敛,尤其是可能在任一端点上 存在约束冲突或在同步期间对任一端点做出变更的情况。该递归功能同样由从动作510到 动作502的箭头示出。示出了根据本发明的一方面的交错同步的示例性方法。如图所示,图6的方法是 上述双向同步的变型。在该方法中,一旦目的地提供者与其发送批次一起传达了用知识作 出的变更(例如动作602-608),但在接受变更(例如在610)之前,发送提供者可以开始来 自目的地提供者的接收同步。对来自目的地提供者的同步的这种发起由从动作608到602 的箭头示出。由于目的地提供者具有源提供者的可用知识,因此目的地提供者可以确定源不知道的目的地上的变更,并且可以将这些变更发回到源。这允许源和目的地在双向同步 期间不同地交错进行批量变更交换。 图7示出了根据本发明的各方面的使得能够进行多向交错同步的系统700。本质 上,系统700方便作为双向交错同步(图6)的变型但用于多个伙伴(702)的方法。具体地, 考虑提供者A向提供者B发送变更的情况。现在考虑某一第三(或第四、第五)提供者,即 提供者 C(D、E. ..N)。此处,提供者C可以开始从提供者B接收变更(例如经由同步引擎704);提供者B 可以发送来自端点B的提供者C不知道的所有变更,并且另外转发来自提供者A的提供者 C也不知道的变更。可以理解,可以经由同步引擎704来完成该数据流。注意,在检测到冲 突并可能解决冲突之后,提供者B可以选择仅将变更发送给C (使得冲突解决的机会减到最 少)。另外,提供者B可以仅仅将变更“传递通过”提供者C,例如有利于吞吐量。值得考虑 的是,该方法可以扩展到多个提供者,提供者N如提供者C从B接收那样从C接收等等,其 中N是整数。图8示出了根据本发明的一方面的示例性连续更新方法。在该方法中,不存在已 定义的“同步会话”,相反,会话仅仅是正在进行中。具体地,假设提供者A想要从接收者B 接收变更。在这种情况下,在802,提供者A向提供者B注册它当前知识。因此,在804,提 供者B可以监视变更。例如,提供者B可以周期性地(在每一次变更时或某一种已定义的 或推断出的定时器/日程表)检查以查看是否存在提供者A不知道的变更。此处,在806,可做出决定以确定是否找到变更。如果否,则方法返回到804以监视 变更。然而,如果定位到变更,则可以在808处发起同步。换而言之,在这种情况下,提供者 B可以联系提供者A,并且如图3所示的单向同步那样发起同步。注意,在这种情况下,提供 者B可以联系提供者A,而提供者A可以用其可能比向提供者B注册的知识更新的当前知识 来响应并且可以将过时变更的发送减到最少。或者,提供者B可以仅用基于所注册的知识 的变更来回复,这例如可能导致过时变更的传输,但可能节省往返行程。由此,可以分别减 少和提高开销和效率。注意,在参考图8描述的实现中,提供者A可以将其知识发布给提供者B,并接着当 变更最终可用时阻塞某一远程过程调用以返回批量变更。或者,提供者A可以将其知识发 布给提供者B,切断连接,而提供者B可以构建新连接并在某一将来时刻回调。—种方式也考虑其中提供者A在同步之外周期性地向提供者B注册已更新的知识 的变型。这在A也正在与B之外的伙伴同步的情况下可能是有用的,因为它可以使过时变 更的发送减到最少。提供者B可以在变更一旦可用时就返回它们,或者它可以在配置上被 设置成从第一变更检测开始等待某个时间段以允许累积一批变更。或者,提供者B可以在 向提供者A发送变更之前等待直至某一数量的变更可用。但是这可能导致提供者A处的陈 旧。但是可以理解,在某些情形中这会是有用的。虽然这些替换方面在图8中未示出,但是 可以理解,它们应被包括在本发明以及所附权利要求书的范围内。现在转向图9,示出了根据一方面的便于“查验拉取”变更的示例性方法。在该变 型中,提供者A可以与提供者B同步,但是提供者A不或不能发起数据连接。相反,提供者A只有向提供者B发送“查验”的能力。由此,在902,提供者A向提 供者B发送查验而在904提供者B通过发起到A的连接来响应。接着在906,提供者A通过使用该连接来传送知识来开始同步,并且运行上述同步模式中的一种。如果A能够将某些较小的数据放置到净荷中,则A可以包括其知识或者某一 “替 代”知识(如果空间有限)。在这种情况下,节省往返行程。另外,如果B可以从所包括的 知识中确定没有要传送给A的变更,则B可以拒绝回复A的请求或者B可以发送某种简化 的“没有东西要发送”类型的响应。现在参考图10,示出了根据本发明的一方面的通过中介同步的示例性方法的替换 框图。在该变型中,提供者A和提供者B除了经由中介M之外不能(或不愿意)连接。可 以理解,M可以是“哑”数据存储或某种更通用数据存储。在这种情况下,本发明允许A和B 经由M同步。在一直接变型中,提供者A和B彼此在M上放置消息,并且向M轮询消息,实际上将M用作存储和转发中继。在更复杂的变型中,提供者B可以向M发布包括习得知识的变更。 提供者A然后可以检查这些变更,进行过时变更检测,并且然后本地地应用不过时变更。相 似地,提供者A也可以为B向M发布变更。另外,可以理解,模型在没有修改的情况下缩放 到也向存储发布变更并接收变更的其他方。如图10所示,在1002,第一提供者可以将信息(包括知识)发送给中介。类似地, 在1004,第二提供者可以将信息发送给中介。中介可以在1006处理信息并且在1008处将 适当的信息发送给提供者A和/或B。在1010,提供者A和/或B处理接收到的信息并在 适当时接受变更。在还有一些其他方面,本发明可采用便于自动化根据本发明的一个或多个特征的 机器学习和推理(MLR)组件。本发明(例如,结合接受/处理已变更数据)可采用各种基 于MLR的方案来实现其各个方面。例如,用于确定何时接受和/或处理变更的过程可经由 自动分类器系统和过程来促进。分类器是将输入属性矢量χ = (xl,x2, x3, x4, xn)映射到该输入属于一个类的置 信度的函数,即f(x)=置信度(类)。这种分类可采用基于概率分析和/或基于统计分析 (例如,分解成分析效用和成本)来预测或推断用户期望自动执行的动作。支持向量机(SVM)是可采用的分类器的一个示例。SVM通过找出可能输入空间中的超曲面来操作,其中超曲面试图将触发准则从非触发事件中分离出来。直观上,这使得分 类对于接近但不等同于训练数据的测试数据正确。可采用其它定向和非定向模型分类方 法,包括,例如,朴素贝叶斯、贝叶斯网络、决策树、神经网络、模糊逻辑模型以及提供不同独 立性模式的概率分类模型。此处所使用的分类也包括用于开发优先级模型的统计回归。如从本说明书中可以容易地理解的,本发明可以使用显式训练(例如,经由一般训练数据)以及隐式训练(例如,经由观察用户行为、接收外来信息)的分类器。例如,SVM 经由分类器构造器和特征选择模块中的学习或训练阶段来配置。因此,分类器可用于自动 学习和执行多个功能,包括但不限于根据预定准则确定何时接受和/或处理变更、何时向 源查验变更、何时将变更通知给源等。现在参见图11,示出了可用于执行所公开的体系结构的计算机的框图。为了向本发明的各个方面提供附加上下文,图11及以下讨论旨在提供其中可实现本发明各个方面 的合适的计算环境1100的简要、概括描述。尽管本发明以上是在可在一个或多个计算机上 运行的计算机可执行指令的一般上下文中进行描述的,但是本领域的技术人员将认识到,本发明也可结合其它程序模块和/或作为硬件和软件的组合来实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组 件、数据结构等等。此外,本领域的技术人员可以理解,本发明的方法可用其它计算机系统 配置来实施,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、以及个人计 算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可操作上耦 合到一个或多个相关联的设备。所示的本发明的各方面也可在其中某些任务由通过通信网络链接的远程处理设 备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和远程 存储器存储设备中。计算机通常包括各种计算机可读介质。计算机可读介质可以是可由计算机访问 的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非 限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于 存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法和技术实现 的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、 EEPR0M、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁 带、磁盘存储或其它磁存储设备、或可以用来存储所需信息并可由计算机访问的任何其它 介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读 指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号” 指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非 限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、 红外线和其它无线介质。上述中的任意组合也应包括在计算机可读介质的范围之内。再次参考图11,用于实现本发明的各方面的示例性环境1100包括计算机1102,计 算机1102包括处理单元1104、系统存储器1106和系统总线1108。系统总线1108将包括 但不限于系统存储器1106的系统组件耦合到处理单元1104。处理单元1104可以是市场上 可购买到的各种处理器中的任意一种。双微处理器和其它多处理器体系结构也可用作处理 单元1104。系统总线1108可以是若干种总线结构中的任一种,这些总线结构还可互连到存 储器总线(带有或没有存储器控制器)、外围总线、以及使用各类市场上可购买到的总线体 系结构中的任一种的局部总线。系统存储器1106包括只读存储器(ROM) 1110和随机存取 存储器(RAM) 1112。基本输入/输出系统(BIOS)储存在诸如R0M、EPR0M、EEPR0M等非易失 性存储器1110中,其中BIOS包含帮助诸如在启动期间在计算机1102内的元件之间传输信 息的基本例程。RAM 1112还可包括诸如静态RAM等高速RAM来用于高速缓存数据。计算机1102还包括内部硬盘驱动器(HDD) 1114 (例如,EIDE、SATA),该内部硬盘驱 动器1114还可被配置成在合适的机壳(未示出)中外部使用;磁软盘驱动器(FDD)1116(例 如,从可移动磁盘1118中读取或向其写入);以及光盘驱动器1120 (例如,从⑶-ROM盘1122 中读取,或从诸如DVD等高容量光学介质中读取或向其写入)。硬盘驱动器1114、磁盘驱动 器1116和光盘驱动器1120可分别通过硬盘驱动器接口 1124、磁盘驱动器接口 1126和光盘 驱动器接口 1128来连接到系统总线1108。用于外置驱动器实现的接口 1124包括通用串行总线(USB)和IEEE 1394接口技术中的至少一种或两者。其它外部驱动器连接技术在本发 明所考虑的范围之内。驱动器及其相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指 令等的非易失性存储。对于计算机1102,驱动器和介质容纳适当的数字格式的任何数据的 存储。尽管以上对计算机可读介质的描述涉及HDD、可移动磁盘以及诸如CD或DVD等可移 动光学介质,但是本领域的技术人员应当理解,示例性操作环境中也可使用可由计算机读 取的任何其它类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等等,并且任何这样 的介质可包含用于执行本发明的方法的计算机可执行指令。多个程序模块可存储在驱动器和RAM 1112中,包括操作系统1130、一个或多个应 用程序1132、其它程序模块1134和程序数据1136。所有或部分操作系统、应用程序、模块 和/或数据也可被高速缓存在RAM 1112中。可以理解,本发明可用各种市场上可购得的操 作系统或操作系统的组合来实现。用户可以通过一个或多个有线/无线输入设备,例如键盘1138和诸如鼠标1140 等定点设备将命令和信息输入到计算机1102中。其它输入设备(未示出)可包括话筒、IR 遥控器、操纵杆、游戏手柄、指示笔、触摸屏等等。这些和其它输入设备通常通过耦合到系统 总线1108的输入设备接口 1142连接到处理单元1104,但也可通过其它接口连接,如并行端 口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等等。监视器1144或其它类型的显示设备也经由诸如视频适配器1146等接口来连接到 系统总线1108。除了监视器1144之外,计算机通常包括诸如扬声器、打印机等其它外围输 出设备(未示出)。计算机1102可使用经由有线和/或无线通信至一个或多个远程计算机,诸如远程 计算机1148的逻辑连接在网络化环境中操作。远程计算机1148可以是工作站、服务器计 算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它常见 的网络节点,并且通常包括相对于计算机1102描述的许多或所有元件,尽管为简明起见仅 示出了存储器/存储设备1150。所描绘的逻辑连接包括到局域网(LAN) 1152和/或例如广 域网(WAN) 1154等更大的网络的有线/无线连接。这一 LAN和WAN联网环境常见于办公室 和公司,并且便于诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等 全球通信网络。当在LAN网络环境中使用时,计算机1102通过有线和/或无线通信网络接口或适 配器1156连接到局域网1152。适配器1156可以便于到LAN 1152的有线或无线通信,并且 还可包括其上设置的用于与无线适配器1156通信的无线接入点。当在WAN连网环境中使用时,计算机1102可包括调制解调器1158,或连接到WAN 1154上的通信服务器,或具有用于通过WAN 1154,诸如通过因特网建立通信的其它装置。 或为内置或为外置的调制解调器1158以及有线或无线设备经由串行端口接口 1142连接到 系统总线1108。在网络化环境中,相对于计算机1102所描述的程序模块或其部分可以存储 在远程存储器/存储设备1150中。应该理解,所示网络连接是示例性的,并且可以使用在 计算机之间建立通信链路的其它手段。计算机1102可用于与操作上设置在无线通信中的任何无线设备或实体通信,这 些设备或实体例如有打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签相关联的任何一个设备或位置(例如,公用电话亭、报亭、休息室)以及电话。这至少包括Wi-Fi和蓝牙 无线技术。由此,通信可以如对于常规网络那样是预 定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。Wi-Fi,即无线保真,允许从家里沙发、酒店房间的床上或工作的会议室连接到因 特网而不需要线缆。Wi-Fi是一种类似蜂窝电话中使用的无线技术,它使得诸如计算机等 设备能够在室内和室外,在基站范围内的任何地方发送和接收数据。Wi-Fi网络使用称为 IEEE 802. 11 (a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络 可用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE 802.3或以太 网)。Wi-Fi网络在未许可的2. 4和5GHz无线电波段内工作,例如以llMbps(802. Ila)或 54 Mbps (802. lib)数据速率工作,或者具有包含两个波段(双波段)的产品,因此该网络可 提供类似于许多办公室中使用的基本IOBaseT有线以太网的真实性能。现在参见图12,示出了根据本发明的示例性的计算环境1200的示意性框图。系统 1200包括一个或多个客户机1202。客户机1202可以是硬件和/或软件(例如,线程、进程、 计算设备)。客户机1202可例如通过本发明而容纳cookie和/或相关联的上下文信息。系统1200还包括一个或多个服务器1204。服务器1204也可以是硬件和/或软件 (例如,线程、进程、计算设备)。服务器1204可以例如通过使用本发明来容纳线程以执行 变换。在客户机1202和服务器1204之间的一种可能的通信能够以适合在两个或多个计算 机进程之间传输的数据分组的形式进行。数据分组可包括例如cookie和/或相关联的上 下文信息。系统1200包括可以用来使客户机1202和服务器1204之间通信更容易的通信 框架1206 (例如,诸如因特网等全球通信网络)。通信可经由有线(包括光纤)和/或无线技术来促进。客户机1202操作上被连 接到可以用来存储对客户机1202本地的信息(例如,cookie和/或相关联的上下文信息) 的一个或多个客户机数据存储1208。同样地,服务器1204可在操作上连接到一个或多个服 务器数据存储1210,这可以用来存储对服务器1204本地的信息。上面所描述的包括本发明的各个示例。当然,出于描述本发明的目的而描述每一 个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,本 发明的许多进一步的组合和排列都是可能的。因此,本发明旨在涵盖所有这些落入所附权 利要求书的精神和范围内的更改、修改和变化。此外,就在说明书或权利要求书中使用术语 “包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡此时所解释的相 似的方式为包含性的。
权利要求
一种便于数据同步的系统,包括标识提供者的状态的知识数据集;以及基于所述知识数据集来管理多个提供者之间的数据流的同步引擎,其中所述数据流定义多个同步候选。
2.如权利要求1所述的系统,其特征在于,还包括知识生成器,所述知识生成器至少部 分地基于所述多个提供者中的一个的状态来建立所述知识数据集。
3.如权利要求1所述的系统,其特征在于,还包括 评估所述知识的分析组件;以及基于所述评估来枚举多个变更的变更聚集器。
4.如权利要求1所述的系统,其特征在于,还包括基于所述知识来过滤出所述同步候 选的过滤器组件。
5.如权利要求1所述的系统,其特征在于,所述知识是定义目的地提供者的状态的实 际知识。
6.如权利要求1所述的系统,其特征在于,所述知识是定义目的地提供者的状态的“替 代”知识。
7.如权利要求1所述的系统,其特征在于,还包括机器学习和推理组件,所述机器学习 和推理组件采用推断用户期望自动执行的动作的基于概率分析和基于统计分析中的至少一个。
8.一种在多个提供者之间同步数据的计算机实现的方法,包括 生成请求,其中所述请求包括知识;至少部分地基于所述知识来枚举多个变更;以及 至少部分地基于所述知识来传送所述多个变更。
9.如权利要求8所述的方法,其特征在于,所述知识是实际知识。
10.如权利要求8所述的方法,其特征在于,所述知识是“替代”知识。
11.如权利要求8所述的方法,其特征在于,还包括根据所述知识来从所述多个变更中 过滤出子集。
12.如权利要求8所述的方法,其特征在于,还包括接受所述多个变更的子集。
13.如权利要求8所述的方法,其特征在于,还包括检测所述多个变更中的每一个和本 地项目之间的冲突。
14.如权利要求13所述的方法,其特征在于,还包括 解决所述冲突;以及根据所述解决来接受所述多个变更的子集;
15.如权利要求14所述的方法,其特征在于,还包括记录所述冲突。
16.如权利要求8所述的方法,其特征在于,还包括 监视与源提供者相关联的变更;以及基于对与所述源提供者相关联的变更的标识来提示所述请求的生成。
17.如权利要求8所述的方法,其特征在于,还包括 查验源提供者以标识变更;以及基于对与所述源提供者相关联的变更的标识来提示所述请求的生成。
18.—种同步数据的计算机可执行系统,包括用于生成标识目的地提供者的状态的“知识”的装置;以及用于基于所述“知识”来枚举源提供者和所述目的地提供者之间的多个变更的装置。
19.如权利要求18所述的计算机可执行系统,其特征在于,还包括用于根据所枚举的 变更的子集来在所述源提供者和所述目的地提供者之间同步数据的装置。
20.如权利要求18所述的计算机可执行系统,其特征在于,还包括用于基于所枚举的 变更的子集来检测和解决多个冲突的装置。
全文摘要
公开了公开用于交换例如“知识”的同步数据和/或元数据以提高同步过程的性能的替换模式的系统和方法。因此,本发明公开了在同步数据时采用数据和元数据的交换来缓解对完整的“往返”的需求的同步机制。可以提供将数据变更、修改、添加或删除通知给提供者的“知识”。通过启用与枚举同步过程中的变更相关的有知识的决策制定,“知识”可以降低同步交换的开销和/或提高其效率。
文档编号G06F15/16GK101809561SQ200880109276
公开日2010年8月18日 申请日期2008年9月23日 优先权日2007年9月25日
发明者L·诺维克, M·R·克拉克, M·克斯拉维, N·L·帕格特, O·李 申请人:微软公司