本申请的主题涉及以下共同转让的申请中公开的发明,这些申请通过引用整体结合到本申请中:2003年3月21日提交的名为“GHOSTEDSYNCHRONIZATION(重影同步)”的美国专利申请第10/403,781号;与其同一日提交的名为“SYNCHRONIZATION WITH DERIVED METADATA(用导出的元数据的同步)”的美国专利申请第___(308672.01)号;2004年9月1日提交的名为“SYSTEMS AND METHODS FOR THE PROPOGATION OF CONFLICTRESOLUTION TO ENFORCE ITEM CONVERGENCE(I.E.,DATACONVERGENCE)(用于传播冲突分解以强迫项收敛(即,数据收敛)的***和方法)”的美国专利申请第10/932,474号,该申请进而要求2004年4月1日提交的名为“SYSTEMS AND METHODS FOR THE PROPOGATION OF CONFILCTRESOLUTION TO ENFORCE ITEM CONVERGENCE(I.E.,DATACONVERGENCE)(用于传播冲突分解以强迫项收敛(即,数据收敛)的***和方法)”的美国临时申请第60/558,338号的优先权;2003年8月21日提交的名为“SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMSWITH ITEM-BASED STORAGE PLATFORM(用于将应用程序与基于项的存储平台接口的***和方法)”的美国专利申请第10/6436,575号;2003年8月21日提交的名为“STORAGE PLATFORM FOR ORGANIZING SEARCHING,ANDSHARING DATA(用于组织搜索和共享数据的存储平台)”的美国专利申请第10/646,646号;2003年10月24日提交的名为“SYSTEMS AND METHODS FORPROVDING SYNCHRONIZATION SERVICES FOR UNITS OF INFORMATIONMANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM(用于提供可由硬件/软件接口***管理的信息单元的同步服务的***和方法)”的美国专利申请第10/692,508号;2003年10月24日提交的名为“SYSTEMS AND METHODSFOR THE IMPLEMENTATION OF SYNCHRONIZATION SCHEMAS FOR UNITSOF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWAREINTERFACE SYSTEM(用于实现可由硬件/软件接口***管理的信息单元的同步模式的***和方法)”的美国专利申请第10/693,362号;以及2004年6月30日提交的名为“SYSTEMS AND METHODS FOR PROVIDING CONFLICT HANDLINGFOR PEER-TO-PEER SYNCHRONIZATION OF UNITS OF INFORMATIONMANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM(用于为可由硬件/软件接口***管理的信息单元的对等同步提供冲突处理的***和方法)”的美国专利申请第10/883,621号;以及其中所述和/或交叉引用的美国专利申请(后文总称为“基本专利申请”)。
具体实施方式
本发明是用细节来描述的,以满足法定要求。然而,该描述本身并不旨在限制本发明的范围。相反,发明人构想要求保护的本发明也可用其它方式来实施,以包括类似于本文档中结合其它现有或未来技术所描述的步骤的不同步骤或步骤组合。此外,尽管此处可使用术语“步骤”来意味着所采用的方法的不同元素,然而该术语不应当被解释为暗示此处所揭示的各个步骤之中或之间的任何特定顺序,除非且处理明确地描述了个别步骤的顺序。
计算机环境
本发明的众多实施例可在计算机上执行。图1及以下讨论提供了对适于在其中实现本发明的计算环境的简要概括描述。尽管并非所需,但本发明将在诸如由客户机工作站或服务器等计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。此外,本领域的技术人员可以理解,本发明可以用其它计算机***配置来实施,包括手持式设备、多处理器***、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
如图1所示,一个示例性通用计算***包括常规个人计算机20或其类似物,包括处理单元21、***存储器22以及将包括***存储器22的各类***组件耦合至处理单元21的***总线23。***总线23可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、***总线以及使用各类总线体系结构的局部总线。***存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出***(BIOS)26包含如在启动时协助在计算机20内的元件之间传输信息的基本例程,储存在ROM 24中。个人计算机20也可包括用于对硬盘(未示出)进行读写的硬盘驱动器27、用于对可移动磁盘29进行读写的磁盘驱动器28以及用于对可移动光盘31,如CD-ROM或其它光介质进行读写的光盘驱动器30。硬盘驱动器27、磁盘驱动器28以及光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接至***总线23。驱动器及其相关的计算机可读介质为计算机20提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管这里描述的示例性环境采用了硬盘、可移动磁盘29以及可移动光盘31,本领域的技术人员应当理解,示例性操作环境中也可以使用可存储可由计算机访问的数据的其它类型的计算机可读介质,包括盒式磁带、闪存卡、数字视频盘、Bernoulli盒式磁盘、随机存取存储器(RAM)、只读存储器(ROM)等等。
多个程序模块可存储在硬盘、磁盘29、光盘31、ROM 24或RAM 25中,包括操作***35、一个或多个应用程序36、其它程序模块37以及程序数据38。用户可以通过诸如键盘40和定点设备42等输入设备向计算机20输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至***总线的串行端口接口46连接到处理单元21,但也可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器47或其它类型的显示设备也通过接口,如视频适配器48连接到***总线23。除监视器47之外,个人计算机通常包括其它***输出设备(未示出),如扬声器和打印机。图1的示例性***还包括主机适配器55、小型计算机***接口(SCSI)总线56以及连接到SCSI总线56的外部存储设备62。
个人计算机20可以使用到一个或多个远程计算机,如远程计算机49的逻辑连接在网络化环境中操作。远程计算机49可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并通常包括许多或所有相对于计算机20所描述的元件,尽管在图1中仅示出了存储器存储设备50。图1描述的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机20通过网络接口或适配器53连接至局域网51。当在WAN网络环境中使用时,计算机20通常包括调制解调器54或用于通过广域网52,如因特网建立通信的其它装置。调制解调器54可以是内置或外置的,它通过串行端口接口46连接至***总线23。在网络化环境中,相对于计算机20所描述的程序模块或其部分可存储在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
尽管可以预想本发明的众多实施例尤其适用于计算机化的***,然而本文档中没有任何内容旨在将本发明限于这些实施例。相反,如此处所使用的术语“计算机***”旨在包含能够储存和处理信息和/或能够使用所储存的信息来控制设备本身的行为或执行的任何和所有设备,而不论这些设备本质上是电子的、机械的、逻辑的还是虚拟的。
基本同步
先前所述的基本专利申请中已详细揭示了对等同步环境及其底层硬件/软件接口***。概括而言,基本专利申请描述了一种硬件/软件接口***(诸如但不限于,操作***),其中,特别地,自治可存储信息单元(项)包括若干分量改变单元(CU),它们构成了用于同步的基本数据改变元素。每一CU具有相关联的元数据,该元数据使得同步***能够跟踪要在对等计算机***上更新哪些改变以及应当应用从其它对等计算机***接收的哪些改变。
CU本质上是一组属性,它们总是作为一个单元来同步。例如,联系人项的名和姓属性可以共同构成单个改变单元。另外,“版本”与每一改变单元相关联,以表示对该改变单元做出特定改变的最后一个伙伴以及对应于何时做出该更新的时间标记。由此,如此处所使用的,并为表示法的简单起见,伙伴由字母来表示,版本由递增的整数来表示,使得通过简单地将伙伴(例如“A”)与时间标记(例如“1”)配对,每一改变单元具有唯一的标识号与其相关联,该标识号反映了每一伙伴在特定时刻做出的最新改变一例如,“A1”。
使用用于同步的改变单元和元数据的***的基本同步的一个示例性形式(或类似的结构)可以一般按照用于存在于两个对等计算机***上的项的单个改变单元来描述。对于该单个改变单元,第一对等体,即伙伴A(或更简单地为“A”)通过向第二对等体,即伙伴B(或更简单地为“B”)发送涉及其改变单元(CUa)的复制品的其当前元数据(Ma)请求来自B的改变。在接收到Ma(对应于CUa)之后,伙伴B将该元数据与其自己的用于同一改变单元(CUb)的复制品的元数据(Mb)进行比较。然后,如果Mb反映了未在Ma中反映的对CUb的任何改变,则B将CUb和Mb两者发送到A,否则B仅将其Mb发送到A(或者可选地,将“没有更新”指示符发送到A),因为CUa已经反映了对CUb做出的所有更新,并且由此,将CUb从B复制到A不是必需的。
基于B对其同步请求的响应,如果A仅从B接收回Mb(或者可选地,“没有更新”指示符),但没有接收到CUb,则A知道CUa要么与CUb相同,要么比CUb更新。然而,如果A从B接收回Mb和CUb两者,则A然后必须通过Ma与Mb的比较来确定CUb是否比CUa更新,或者CUa和CUb是否具有冲突的改变。如果CUb比CUa更新,则A然后用CUb更新CUa,并且A也用Mb来更新Ma。另一方面,如果CUa和CUb具有冲突的改变,则A依照其本地冲突分解过程来分解该冲突。例如,如果在本情况下A的冲突分解过程是选择本地解决方案优于远程解决方案,则A将继续保留CUa(拒绝CUb的改变),并更新Ma以包括已反映Ma和Mb的所有更新(Ma和Mb的并集)。之后,当B然后使用同一过程与A同步时(并假定没有介于其间的额外改变),将得出结论,CUa比CUb更新,并用CUa来更新CUb。
对于这一基本同步模式,每一改变单元的元数据包括两个分量:指示改变单元的当前“更新”状态的当前版本(cv),以及对应于对对等共同体中的每一伙伴(或至少已做出任何改变的那些伙伴)的所述改变单元所发生的更新的知晓向量(av)(也成为“版本数组”)。改变单元元数据的典型格式是<改变版本,知晓向量>,或更简单地为<cv,[av]>。这一信息共同可用于任一地确定例如伙伴A上具有元数据(Ma)<A13,[A13,B11]>的改变单元(CUa)比伙伴B上具有元数据(Mb)<B11,[A12,B11]>的改变单元更新,因为假设每一版本号的时间标记部分随时间的增长而递增,Ma包括未在Mb中反映的改变(即,A13)。
快照和文件流
对于某些硬件/软件接口***,包括基本专利申请中所描述的那一种,某些自治可存储信息单元(例如,项)可以是两种类型:结构化的或混合的。结构化元素(SE)仅包括丰富结构化的数据,而混合元素(ME)包括丰富结构化的数据和非结构化文件流两者。图2A是示出具有多个属性204的SE 202的框图。SE仅由结构化数据组成,并且由此包括结构化数据分量206。图2B是示出具有多个属性204的ME 121的框图,属性之一是到ME的文件流208的链接204’。ME 212的结构化数据分量206是可以与非结构化文件流208区分的,非结构化文件流208表示ME的非结构化数据分量。对于同步,SE满足某些大小限制,并且能够容易地同步,因为它足够小以在需要时创建副本。然而,ME通常用于超出项的正常限制的数据结构,并且由于其大小,因为本领域的技术人员已知的那些原因,不能被容易地复制、同步等等。
对于某些硬件/软件接口***,包括基本专利申请中所描述的那一种,项的同步通常是以事务隔离级(TIL)执行的,该级虽然防止目标项在同步期间被改变,但是相反,向希望改变目标项的其它进程提供副本,然后一旦目标项完成其同步,就用该副本来更新目标项。该快照TIL(STIL)本质上允许同步***在按需的基础上创建目标项的副本(“快照”),以供其它进程修改,使得目标项本身在所述目标项的同步期间被复制到同步对等体时不被改变。
图3是示出结合本发明的若干实施例用于同步SE(以及如后文所描述的ME的结构部分)的方法的过程流程图。在图中,第一步骤302是对改变单元(在这一情况下是目标项)“拍快照”,使得如果在步骤304在完成将所述改变单元复制到同步对等体时的任何时刻任何其它进程试图对该改变单元做出改变,则对该改变单元做出副本。一旦复制完成,然后在步骤306,使用该目标项的副本来更新(例如,替换)目标项。
不用快照的同步
尽管SE可使用快照TIL来同步,然而情况通常是由于若干原因而没有对ME的文件流做出快照,最明显的原因是文件流本身的大小以及创建非常大的数据对象的临时副本的不合需要性。
本发明的各种实施例针对用于在不准许在同步期间对大型非结构化ME文件流拍快照的硬件/软件接口***环境中的对等计算机***之间同步ME(尤其是同步ME的文件流分量)的***和方法。对于若干这样的实施例,该方法包括用两个步骤同步ME,一个步骤用于对ME的结构化数据分量(以及文件流的cv但不是文件流本身)拍快照,另一个步骤用于锁定该文件流,并当且仅当锁定之后确定文件流自从ME数据分量快照时刻以来没有改变时,才将文件流发送到接收同步对等体,。
图4是示出用于同步ME的方法的步骤的过程流程图。在步骤402,为开始特定改变单元(ME项)的同步,使用快照TIL对ME的结构化数据分量(SDC)拍快照(即,在同步期间对副本而对非目标项做出改变,然后在同步完成之后应用改变),在步骤404,将拍快照时刻对应的文件流当前版本(cvF)(例如,cvF值可以直接从ME结构化数据的快照中的文件流属性中取出)作为第一值(cvF0)储存。(ME的文件流包括其自己的改变单元,并且由此具有其自己的改变版本,并且该值也可以作为文件流属性的一部分储存在ME的结构化数据部分中。)然后,在步骤406,锁定文件流,并且在步骤408,再次检查cvF以确定第二值(cvF1),在步骤410,将该第二值与第一值(cvF0)进行比较,如果两个值相同(即,如果cvF1不大于cvF0,由此指示文件流未改变),则在步骤412将文件流复制到同步对等体,一旦完成,在步骤416解锁文件流。另一方面,如果cvF1与cvF0不同(即,如果cvF1大于cvF0),则这指示文件流自从ME的结构数据被拍快照以来已改变,在这一情况下,文件流不被复制,并且文件流的改变单元反映了对步骤414处的同步的“异常”—即,发生同步失败,并且这被接收同步对等体注意到,并及时引导至在两个对等体之间的下一同步期间同步ME的尝试—在步骤416,再次解锁文件流。
除上述之外,并再次参考图4,如果在步骤406不能获得文件流上的锁定,则再次发生步骤414的异常,但是在步骤416无需任何解锁。(该锁定失败异常路径未在图中示出)。应当注意,锁定可以通过一系列标准函数调用来获得,例如固有地锁定读目标的事务读操作。
对于较大的同步图片,并使用此处所描述的某些实施,采用该方法的同步算法将如下进行。该同步***首先使用其正常的改变枚举过程来标识同步复制品中的哪些项(即,改变单元)已改变。如果项是结合对SDC(但不是文件流)拍快照的ME,则该改变枚举也读取文件流的改变版本。然后,对于ME,同步***在离开快照事务之后的某一点处锁定文件流,并且一旦获得了锁定就读取文件流的改变版本。如果文件流的改变版本自从对SDC拍快照以来没有改变,则同步***继续将文件流的内容读到同步对等体是安全的,因为它被锁定因此在读/复制文件流期间它不能被修改。另一方面,如果文件流的cV的第二次读取取出了该流的一个新的改变单元版本,则这指示文件流在该过程离开快照事务和锁定的文件流的时间之间文件流被修改。在这一情况下,创建一“异常”,它向同步伙伴指示该元素未被同步,但是需要在后续的同步操作中同步—即,文件流未在该次特定同步中发送,但是维护了关于以下事实的足够信息:它未被发送,在后续的同步过程中,将做出另一尝试来同步该ME。
结论
此处所描述的各种***、方法和技术可以用硬件或软件,或在适当时用两者的组合来实现。由此,本发明的方法和装置或其某些部分可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载到诸如计算机等机器中并由其执行时,该机器变为用于实施本发明的装置。在可编程计算机上的程序代码执行的情况下,计算机一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。一个或多个程序较佳地用高级过程语言或面向对象的编程语言来实现,以与计算机***通信。然而,如有需要,程序可以用汇编语言或机器语言来实现。在任何情况下,语言可以是已编译或已解释语言,并与硬件实现相组合。
本发明的方法和装置也可用程序代码的形式来实施,该程序代码通过某一传输介质来发送,如通过电线或电缆、通过光纤或通过任一其它形式的传输,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、客户机计算机、录像机等的机器接收并装载到其中由其执行时,该机器变为用于实施本发明的装置。当在通用处理器上实现时,程序代码与处理器相结合,以提供用于执行本发明的索引功能的唯一装置。
尽管本发明是结合各附图的较佳实施例来描述的,但是可以理解,可使用其它类似的实施例,或者可对所描述的实施例做出修改和添加,来实现本发明的相同功能而不偏离本发明。例如,尽管本发明的示例性实施例是在仿真个人计算机的功能的数字设备的环境中描述的,然而本领域的技术人员可以认识到,本发明不限于这样的数字设备,如本申请中所描述的,本发明可应用于任何数量的现有或新兴计算设备或环境,诸如游戏控制台、手持式计算机、便携式计算机等等,无论它们是有线的还是无线的,本发明也可应用于通过通信网络链接并通过网络交互的任何数量的这样的计算设备。此外,应当强调,此处构想了各种计算机平台,包括手持式设备操作***和其它应用专用硬件/软件接口***,尤其是当无线网络化设备的数量持续增长的时候。因此,本发明不应被限于单个实施例,而是相反,应当依照所附权利要求书的宽度和范围来解释。