利用同步进行数据恢复的方法和系统的制作方法

文档序号:6463634阅读:186来源:国知局
专利名称:利用同步进行数据恢复的方法和系统的制作方法
技术领域
本发明涉及数据恢复的方法和系统,特别涉及利用同步进行数据恢复 的方法和系统。
背景技术
近年来,随着各类移动设备(如智能手机,个人数字助理,笔记本电 脑等)的广泛使用,在机场、高级写字楼、图书馆、餐馆或咖啡馆里,移 动办公的人士比比皆是。移动设备的用户实际上可以作为系统服务器的一 个客户机,客户机所取得的现场资料需要与系统服务器数据库同步,当存
在数据的多个副本时,这些副本需要保持一致性, 一旦断开连接,服务器 与每个客户机都可以修改各自的数据。
实际中,在服务器端的管理员发现来自客户端的最新数据存在问题时, 常常需要客户端的数据恢复到历史某个时间点的版本。例如,客户机端数
据库需要远程数据库恢复,传统的RDBMS系统可以包含归档日志(archive log),归档日志将支持数据库恢复,然而,移动数据库系统中不具有类似 的本地归档日志以及支持数据库恢复的能力。再例如,在系统升级过程中, 客户机从服务器端得到新版本的数据和新版本的应用,然而,升级后的数 据和升级后的应用无法工作,为了正常使用客户端旧的应用,需要客户端 的数据降级到旧版本。在要求相同组群的所有客户机都具有来自服务器的 相同数据版本的情况下, 一个客户机的升级失败将导致相同组群的所有客 户机都降级到同 一数据版本。
在传统数据恢复系统中,存在解决部分上述问题的方法,客户机可以 使用备份工具在同步之前备份客户端数据的副本,在同步之后如果需要返 回到之前的状态,就使用备份的副本恢复本地数据库。然而,系统需要额
6外的存储开销,并且每次都需要恢复整个数据库,耗费了大量的存储资源 和时间。并且在上述两个例子的情形下,每次同步之前都进行备份也不现 实,因此这种数据恢复系统的效率非常低下。
因此,需要一种改进的、提高效率的方法来支持客户机端的数据恢复 到之前的某个历史状态。

发明内容
为了解决上述问题,本发明设计了 一种利用同步进行数据恢复的方法 和系统。
根据本发明的一个方面,提供一种利用同步进行数据恢复的方法,包
括记录数据记录的变化历史;响应于接收到的数据恢复请求,查询所需 要恢复的数据记录的历史目标版本,合并所述数据记录的历史目标版本与 当前版本之间的变化历史;发送所述合并结果。
根据本发明的另一方面,提供一种利用同步进行数据恢复的系统,包 括记录装置,用于记录数据记录的变化历史;同步引擎,响应于接收到 的数据恢复请求,查询所需要恢复的数据记录的历史目标版本,合并所述 数据记录的目标版本与当前版本之间的变化历史,并发送所述合并结果。
本发明的方法通过记录数据记录的变化历史,在进行数据恢复时使用 高效的合并方法合并数据记录的变化历史,仅仅发送数据记录中变化的字 段,从而节省了大量存储资源。本发明的数据恢复方法仅将当前版本与历 史目标版本之间的差异进行恢复,是一种高效率的增量数据恢复。且该方
法使得移动设备可以通过无线网络随时随地通过同步进行恢复,是一种易 于使用的数据恢复方法。
附图简述
结合附图,通过参考下列详细的示例性实施例的描述,将会更好地理 解本发明本身、优选的实施方式以及本发明的目的和优点,其中

图1示出本发明的利用同步进行数据恢复的方法流程图;图2示出根据本发明的服务器与客户机之间利用同步进行数据恢复的 系统示意图3示出根据本发明的服务器与客户机之间利用同步进行数据恢复的 方法流程图4示出标识客户机同步方向的全局同步控制表;
图5示出包含服务器端全部数据记录历史版本的全局数据记录版本表;
图6A示出服务器端源数据表的示例;
图6B示出服务器端的历史表模式;
图6C示出服务器端第一次加载源数据表的历史表的示例;
图7A示出服务器端第一次发生变化之后的源数据表的示例;
图7B示出服务器端第二次加载源数据表的历史表的示例;
图8示出对于每个源数据表的客户机版本历史表
图9示出根据本发明的利用数据记录的变化历史进行合并的方法流程
图IO详细描述了图9中合并数据记录的工作过程流程图; 图11示出使用图10中的方法进行合并的示例;
图12示出本发明处理客户机自身发起的变化对服务器和其它客户机的 影响的流程图13示出根据本发明的服务器与客户机之间利用同步进行数据恢复的 系统示意图。
具体实施例方式
下面结合附图详细描述本发明的数据恢复方法和系统。 本发明的数据恢复方法涉及存储在任何存储介质的数据记录,数据记 录包括多个表示数据记录属性、特征的字段。根据本发明的数据记录能够 利用某种属性或特征来唯一标识,例如可以在数据记录中创建一个字段, 这个字段的值是某种形式的唯一数值(如时间戳),用这个数值来唯一标 识数据记录。参照图1描述本发明的利用同步进行数据恢复的方法,在步骤101, 记录数据记录的变化历史;在步骤102,响应于接收到的数据恢复请求, 查询所需要恢复的历史目标版本,合并所述数据记录的历史目标版本与当 前版本之间的变化历史;在步骤103发送所述合并结果。
根据本发明的实施例,所述数据记录的变化历史为数据字段的变化历 史。所述变化历史通过变化类型、变化位以及版本号来记录,所述变化类 型用于记录所述数据记录变化的变化类型,所述变化位用于记录与所述数 据记录的变化类型对应的字段变化状态,并且所述版本号用于标记所述数 据记录的有效时间点。
本发明的数据恢复的方法可以应用于服务器与一个客户机之间以及月良 务器与多个客户机之间的计算机网络系统,在服务器与客户机中存储有数 据记录,每个数据记录包括多个表示数据记录属性、特征的字段。图2示 出根据本发明的服务器与客户机之间利用同步进行数据恢复的系统示意 图,该系统包括服务器200和多个客户机207, 210, 213,全局数据记录 版本表201包含服务器端数据记录的全局版本历史,全局同步控制表202 控制所有客户机的同步方向,服务器侧存储有需要与客户机同步的数据记 录表203,对于每个数据记录表,存在记录该数据记录表中数据记录变化 历史的历史表204,客户机版本历史表205记录每个数据记录表的全部客 户机的版本历史。客户机207、 220、 213分别存储有数据记录表208、 211、 214,所述客户机端数据记录表包含与服务器侧的数据记录表相同或部分相 同的数据。历史表204和数据记录表208、 211、 214分别记录服务器端和 客户机端数据记录的变化类型和变化位,从而记录服务器端和客户机端数 据记录的变化状态。服务器包括同步引擎206,客户机207、 220、 213分 别包括同步引擎209、 212、 215,服务器同步引擎与客户机同步引擎可以 进行通信来执行双向数据同步。
图3示出本发明的在服务器与客户机之间利用同步进行数据恢复的 流程图。在步骤301,系统管理员利用管理工具设置同步方向和历史时间 标签,历史时间标签指向数据恢复到之前同步的某个历史时间点,对于每个客户机,同步方向可以向前、向后以及保持当前的状态,向前同步即将 数据同步到最新的状态,向后同步,即将数据恢复到之前同步的某个历史
时间点;在步骤302,在全局同步控制表中维护每个客户机的同步方向和
历史时间标签;在步骤303,客户机端应用可以使用所提供的API接口改
变同步方向和历史时间标签;在客户机执行同步时,在步骤304,根据服 务器与客户端双方的设置确定同步方向和历史时间标签,通常服务器端的
设置将优先于客户端的设置,但是在客户端设置为向后同步的情况下,如 果服务器端是正常同步,则客户端的设置将优先考虑;在步骤305,如果 确定为向后同步进行数据恢复,则利用客户机版本历史表和历史时间标签 查寻客户机的历史目标版本;在步骤306,为了使客户机返回到之前的状 态,查询从客户机历史目标版本到当前版本之间的变化历史,合并相同数
据记录的增量变化字段。在步骤307,服务器将增量变化字段发送到客户 端以恢复到历史目标版本的数据。
图4示出标识客户机同步方向的全局同步控制表,客户机ID表示客 户机的标识,方向表示客户机的同步方向,其中方向为1表示正常向前同 步,即客户机同步到服务器的最新版本,方向为O表示保持当前状态,方 向为-1表示客户机进行数据恢复的后向同步。历史时间标签表示数据恢复 的历史时间点,在系统管理员设置了客户机的同步方向之后,将数值保存 在该表中,并且如果将同步方向设置为-1,则在数据恢复之后,方向将变 为默认值1。客户机01被设置为向前同步;客户机02被设置为保持当前 状态;客户机03被设置为向后同步,数据恢复到历史时间标签为2007年 8月8日12时的版本。
图5示出包含服务器端全部数据记录的历史版本的全局数据记录版本 表,该全局数据版本表记录了服务器端的全部相对版本号以及该版本对应 的时间标签。例如,该表中最后一行表示在时间标签为2007年8月20日 12点的服务器端数据的相对版本号为1000,从一个较小版本号到一个较大 版本号,可能存在数据变化,这种数据变化将记录在下文的历史表中,最大值的版本号是当前服务器的版本。
根据本发明的实施例,服务器端和客户机端的数据记录可以存储在数
据库中,图6A示出服务器端源数据表的示例,该源数据表中有三列整数 类型(Cl, C2, C3), 一列可变字符串类型(CCHAR),以及一列二进 制大数据类型(CBLOB ),其中Cl是主关键字列,其余C2, C3, CCHAR 以及CBLOB是非主关键字列,在该源数据表中存在初始化的两行数据。
图6B示出历史表模式,历史表记录了服务器端源数据表中源数据行 的变化历史,源数据行的变化将被定时捕捉,并将每个源数据行的变化用 历史表中的一个变化行来表示。历史表模式包含主关键字列PKcolumn、 非主关键字列Non-PK Column、 From版本号、To版本号、变化类型 ChangeType、变化位ChangeBits以及客户端ID。 From版本号和to版 本号是用于标记源数据行的变化行在两个相对时间点有效的版本号,from 版本号表示变化行开始存在的时间点,而to版本号表示变化行有效届满的 时间点,即意味着该变化行要出现新的变化,这里From版本号和To版本 号的值来自于全局数据版本表。源数据表的所有变化行都将被捕获并被周 期地加载到历史表中。根据本发明的实施例,如果添加源数据行,则可以 设置所述源数据行的变化类型ChangeType为'T (添加)并且标记变 化位Changebits,例如将变化位Changebits的所有位置为1;如果删除源 数据行,则可以设置所述源数据行的变化类型ChangeType为 "D"(删 除)并且标记变化位Changebits,例如将变化位Changebits的所有位置为 0;如果更新源数据行,则可以设置所述源数据行的变化类型ChangeType 为更新"U"并且标记变化位Changebits,例如可以将与所述源数据行的 更新的列相对应的变化位Changebits置为1以及将与所述源数据行的未更 新的列相对应的变化4立Changebits置为0。
图6C示出第一次加载源数据表的历史表,所有数据列与源数据表相 同。历史表中的每一行用来记录源数据表中的源数据行的每个变化行,对 于源数据行的每一个变化行,例如主关键字列Cl为1的源数据行,from 版本号是该源数据行开始存在的当前版本号1, to版本号是该源数据行有效届满的版本号oo(最大值oo表示该变化行对应源数据表中当前行)。 ChangeType为'T表明该源数据行的变化类型为"I"(添加),ChangeBits 是二进制数据类型(1111),它的位数是该源数据表中非主关键字列的数 目,因此对于源数据表中的四个非主关键列字,ChangeBits是四位二进制 数,其从左至右每一位表示主关键字列Cl为1、变化类型为'T,(添加) 的源数据行所对应的该源数据行的非主关键字列从左至右每列的变化状 态。
图7A-7B示出第一次发生变化之后的源数据表和历史表,其中图7A 示出第一次发生变化之后的源数据表,该源数据表中存在来自客户机03 的多个变化,主关键字列C1为1的源数据行的C2列被更新为"11",并 且添加了主关键字列Cl为3的源数据行。图7B示出第二次加载源数据表 的历史表,相应地,在历史表中存在一个主关键字列C1为3的新变化行, from版本号是该源数据行开始存在的当前版本号2, to版本号是该源数据 行有效届满的版本号oo,其中ChangeType是'T (添加)并且ChangeBits 是(llll),以此来标记新添加的源数据行。此外还存在另一个主关键字 列Cl为1的新变化行,from版本号是该源数据行开始存在的当前版本号 2, to版本号是该源数据行有效届满的版本号oo,其中ChangeType是"U" (更新)并且ChangeBits是(1000 ),以此来标记源数据表中主关键字列 Cl为1的源数据行的第一个非主关键字列被更新。同时原历史表中主关键 字列Cl为1的变化行对应的to版本号被更新为1,表示该源数据行的变 化在版本号1之前生效。
图8示出对于每个源数据表的客户机版本历史表,该客户机版本历史 表包含对于每个源数据表的全部客户机的版本历史。每次同步之后,客户 机将得到一个新的版本号,并将其记录在客户机版本历史表中新的一行。 客户机版本历史表中的版本号来自全局版本历史表中的值,例如,第一行 表示客户机01的版本在2007-08-08-12: 00: 00是100,之后,客户机Ol 执行同步并且它的版本号在2007-08-08-12: 10: 00是300。当客户机执行 数据恢复时,需要确定客户机的当前数据版本号以及客户机要进行数据恢复的历史目标版本。当前的数据版本号是客户机版本历史表中最近的版本 号,而历史目标版本需要根据客户机进行数据恢复的时间标签从客户机版 本历史表中查寻。
图9示出合并的方法流程图。在步骤901,从历史记录中取出该客户 机自历史目标版本与当前版本之间的数据记录的变化历史;在步骤卯2, 创建两个变量合并后的变化类型MergedChangeType和合并后的变化位 MergedChangeBits;在步骤903,判断是否存在相同数据记录的下一个变 化数据记录,判断为"是,,,则前进到步骤904,否则过程结束;在步骤 904,将相同源数据行的变化行进行合并,并将得到的合并后的变化类型 MergedChangeType和合并后的变化位MergedChangeBits存储在变量 MergedChangeType和MergedChangeBits中;在步骤905 , 取出 MergedChangeType的值,该值可以是以下四个值的其中之一"D"(删 除),"DI"(删除后添加),"U"(更新)以及'T,(添加)。如果 该值为"D",那么前进到步骤906,生成删除行操作。如果该值为"DI", 则前进到步骤卯7,对所有字段产生先删除,然后添加的操作;如果该值 为"U,,,则前进到步骤908,生成更新操作,其中包含MergedChangeBits 中标记变化的字段;如果该值为"I",则前进到步骤卯9,对所有要添加 的列生成添加操作。在步骤910,判断是否存在下一个数据记录的变化数 据记录,如果判断为"是",则过程返回到步骤卯3再次循环,否则前进 到步骤911结束过程。
图IO详细描述了图9中的合并变化数据记录的工作过程,即,如何高 效地计算出对于相同数据记录的多个变化数据记录的合并后的变化类型 MergedChangeType和合并后的变化位MergedChangeBits 。在该合并过程 中,为了使客户机上的当前版本数据能够回到历史版本数据,历史表中记 录的数据操作将被逆转并合并。逆转是指为了使客户机的当前版本恢复到 历史目标版本,需要对原变化数据记录中的部分变化类型进行逆转添加 将被逆转为删除,删除将被逆转为添加,更新不进行逆转。流程的输入是 某个客户机的历史目标版本与当前版本之间的相同数据记录的所有变化数
13据记录,将所有变化数据记录按照时间发生的先后顺序排序,最先发生的 变化数据记录将排在序列的最上面,当前变化数据记录将排在序列的最下
面。在步骤1001,根据客户机最先变化数据记录的ChangeType进行不同
的步骤。
如果最先变化数据记录的ChangeType是'T,(添加),那么过程 进行到步骤1002将合并后的变化类型MergedChangeType设置为"D"(删 除)以及标记MergedChangeBits,例如将MergedChangeBits i殳置为全零, 并且下一步前行到步骤1213。
如果最先变化数据记录的ChangeType是"D"(删除),那么过程 进行到步骤1003,如果最先变化数据记录之后不存在相同数据记录的变化 数据记录,则过程进行到1004, MergedChangeType被设置为添加'T, 以及标记MergedChangeBits ,例如将MergedChangeBits i殳置为全1;如 果最先变化数据记录之后存在相同数据记录的变化数据记录,则该变化数 据记录的ChangeType—定是添加,因为删除操作一定伴随一个添加操作, 不管在添加操作之后有多少次变化,合并后的变化类型 MergedChangeType最后都等同于删除后添加的效果,过程进行到步骤 1005, MergedChangeType被设置为 "DI"(删除后添加)以及标记 MergedChangeBits,例如将MergedChangeBits i殳置为全1。
如果最先变化数据记录的ChangeType是"U"(更新),那么前进 到步骤1006,首先将变量MergedChangeType和MergedChangeBits的值设 置为最先变化数据记录的ChangeType和ChangeBits;在步骤1007,检查 最先变化数据记录之后是否存在相同数据记录的变化数据记录,如果最先 变化数据记录之后不存在相同数据记录的变化数据记录,则过程前进到步 骤1013,返回当前的MergedChangeType和MergedChangeBits;如果最 先变化数据记录之后存在相同数据记录的变化数据记录,在步骤1008进一 步判断该变化数据记录的ChangeType,如果该变化数据记录的 ChangeType是"U"(更新),则前进到步骤1009,该MergedChangeType 仍旧是更新"U"并且MergedChangeBits将是当前MergedChangeBits和该变化数据记录ChangeBits的按位或逻辑运算结果,并且过程返回到1008 直到将相同数据记录的所有变化数据记录处理完;如果该变化数据记录的 ChangeType是删除"D",则在步骤1010,进一步检查在该变化数据记录 之后是否存在相同数据记录的下一个变化数据记录,如果存在相同数据记 录的下一个变化数据记录,则在步骤1011,该下一个变化数据记录的 ChangeType—定是添加,将MergedChangeType设置为 "DI"(删除 后添力。)以及标记MergedChangeBits,例如将MergedChangeBits i殳置为 全1;否则如果不存在相同数据记录的下一个变化数据记录,则在步骤 1012,将MergedChangeType设置为添加'T,并且标记MergedChangeBits, 例如将MergedChangeBits设置为全1;在步骤1011和步骤1012之后,过 程前进到步骤1013以返回MergedChangeType和MergedChangeBits,
图ll示出使用图10中的方法进行合并的示例,为了简单、清楚起见, 以数据库为例,在示例(1)至(3)中,从上至下是具有相同主关键字列 的相同源数据行的历史状态的变化行到当前状态的变化行的ChangeType 和ChangeBits,在示例(1)中,具有相同主关键字列的相同源数据行的 最先变化行的ChangeType是"U"(更新),在更新之后的变化行的 ChangeType也是"U"(更新),逆转之后对应于前两个变化行的 ChangeType依然是"U",当前变化行的ChangeType是"D"(删除), 逆转之后对应于当前变化行的ChangeType是'T,(添加)。因此合并后 的MergedChangeType是添加'T,以及MergedChangeBits是(1111)。
在示例2中,具有相同主关键字列的相同源数据行的最先变化行的 ChangeType是添加"I",逆转之后对应于该最先变化行的ChangeType 是删除"D",并且在添加之后的所有变化都可以被忽略,因此合并后的 MergedChangeType是删除以及MergedChangeBits是(0000)。
在示例3中,具有相同主关键字列的相同源数据行的所有变化行的 ChangeType都是更新"U",因此三个更新被合并,MergedChangeType 是更新"U",以及MergedChangeBits是三个ChangeBits的按位或逻辑 运算结果(0111)。图12示出处理客户机自身发起的变化对服务器和其它客户机的影响 的流程图。在步骤1201,取出来源于该客户机的历史目标版本与当前版本 之间的数据记录的变化历史;前进到步骤1202,取出一个变化数据记录; 在步骤1203,在历史记录中该历史目标版本与当前版本之间找到不是由该 客户端发起的而是由服务器或其它客户机发起的相同数据记录的最近变化 数据记录,若不存在由服务器或其它客户机发起的相同数据记录的最近变 化数据记录,则取出该客户机历史目标版本的变化数据记录;在步骤1204, 检查步骤1202中的变化数据记录是否是服务器最近的变化数据记录;如果 判断为"是",则在步骤1205,将步骤1202中的变化数据记录更新为步 骤1203中得到的相同数据记录的最近变化数据记录;如果判断为"否", 则在步骤1206,将步骤1202中的变化数据记录从历史表中删除;在步骤 1207判断相同数据记录的所有变化数据记录是否都处理过了 ,如果判断为 是,则过程结束;如果判断为否,则过程返回到步骤1202。
图13示出本发明的利用同步进行数据恢复的系统1300,包括记录 装置1301,用于记录数据记录的变化历史;同步引擎1302,响应于接收到 的数据恢复请求,查询所需要恢复的数据记录的历史目标版本,合并所述 数据记录的历史目标版本与当前版本之间的变化历史,并发送所述合并结 果。
该记录装置用于如果添加数据记录,则记录所述数据记录的变化类 型为添加并且标记所述数据记录的变化位;如果删除数据记录,则记录所 述数据记录的变化类型为删除并且标记所述数据记录的变化位;如果更新 数据记录,则记录所述数据记录的变化类型为更新并且标记所述数据记录 的变化位。
所述同步引擎还包括合并装置,所述合并装置用于分别将对应于相同 数据记录的所有变化的变化类型和变化位进行合并,得到合并后的变化类 型和合并后的变化位。其中合并装置还包括删除逆转合并装置,如果所 述相同数据记录的最先变化类型为删除,则在所述最先数据记录之后不存 在相同数据记录的下一个变化数据记录的情况下,则将合并后的变化类型
16设置为添加并标识合并后的变化位.否则在所述最先数据记录之后存在相 同数据记录的下一个变化数据记录的情况下,将合并后的变化类型设置为
删除后添加并标识合并后的变化位;添加逆转合并装置,如果所述相同数 据记录的最先变化数据记录的变化类型为添加,将合并后的变化类型设置 为删除并标识合并后的变化位;更新合并装置,在所述相同数据记录的最 先变化记录的变化类型为更新的情况下,如果在所述最先变化数据记录之 后不存在相同数据记录的下一个变化数据记录,则将所述最先变化数据记 录的变化类型和变化位分别设置为合并后的变化类型和合并后的变化位; 如果在所述最先变化数据记录之后存在相同数据记录的下一个变化数据记 录并且所述下一个变化数据记录的变化类型是更新,则合并后的变化类型 是更新,合并后的变化位是当前合并后的变化位与所述下一个变化数据记 录的变化位的按位或逻辑运算结果。
当所述系统用于服务器与多个客户机之间消除由客户机自身的变化对 服务器与其它客户机的影响时还包括处理装置,所述处理装置用于 1 )从客户机的历史目标版本与当前版本之间数据记录的变化历史中取出来 自于该客户机的一个变化数据记录;2)在目标版本与当前版本之间取出由 服务器或其它客户机发起的相同数据记录的最近变化数据记录;3)判断步 骤1)中的该变化数据记录是否为服务器最近的变化数据记录,如果判断 为是,则将该变化数据记录更新为步骤2)中的相同数据记录的最近变化 数据记录;如果判断为否,则将该变化数据记录从数据记录的变化历史中 删除。
本发明的数据同步系统中合并装置的具体实现方法可以参照图9和图 IO的合并方法的流程来实现,在此不--赘述。
本发明可以硬件、软件、固件或其组合的方式实现。本发明可以集中 的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中, 不同的部件分布在若千互连的计算机系统中。适于执行本文中描述的方法 的任何计算机系统或其它装置都是合适的。优选地,本发明以计算机软件 和通用计算机硬件的组合的方式实现,在这种实现方式中,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,或构成 本发明的系统。
上面出于举例说明的目的,给出了本发明的优选实施例的说明。优选 实施例的上述说明不是穷尽的,也不打算把本发明局限于公开的明确形式, 显然鉴于上述教导,许多修改和变化是可能的。对本领域的技术人员来说 显而易见的这种修改和变化包括在由附加的权利要求限定的本发明的范围 内。
权利要求
1.一种利用同步进行数据恢复的方法,包括记录数据记录的变化历史;响应于接收到的数据恢复请求,查询所需要恢复的数据记录的历史目标版本;合并所述数据记录的历史目标版本与当前版本之间的变化历史;发送所述合并结果。
2. 如权利要求l所述的方法,其中所述数据记录的变化历史为数据记 录的字段的变化历史。
3. 如权利要求2所述的方法,其中所述历史目标版本通过历史时间标 签来确定。
4. 如权利要求3所述的方法,其中所述变化历史通过变化类型、变化 位以及版本号来记录,所述变化类型用于记录所述数据记录变化的变化类 型,所述变化位用于记录与所述数据记录的变化类型对应的字段变化状态, 并且所述版本号用于标记所述数据记录的有效时间点。
5. 如权利要求4所述的方法,其中合并所述变化历史的步骤包括分 别将对应于相同lt据记录的所有变化的变化类型和变化位进^ff合并,得到 合并后的变化类型和合并后的变化位。
6. 如权利要求5所述的方法,其中记录数据记录的变化历史的步骤还 包括如果添加数据记录,则i殳置所述数据记录的变化类型为添加并且标记 所述数据记录的变化位;如果删除数据记录,则设置所述数据记录的变化类型为删除并且标记 所述数据记录的变化位;如果更新数据记录,则设置所述数据记录的变化类型为更新并且标记 所述数据记录的变化位。
7. 如权利要求6所述的方法,其中所述合并相同数据记录的所有变化数据记录的变化类型和变化位的步骤还包括如果所W目同数据记录的最先变化数据记录的变化类型为添加,则将 合并后的变化类型设置为删除并标识合并后的变化位;如果所^目同数据记录的最先变化数据记录的变化类型为删除,则在 所述最先变化数据记录之后不存在相同数据记录的下一个变化数据记录的 情况下,将合并后的变化类型设置为添加并标识合并后的变化位,否则在 所述最先数据记录之后存在相同数据记录的下一个变化数据记录的情况 下,将合并后的变化类型设置为删除后添加并标识合并后的变化位;在所勤目同数据记录的最先变化记录的变化类型为更新的情况下,如 果在所述最先变化数据记录之后不存在相同数据记录的下一个变化数据记 录,则将合并后的变化类型和合并后的变化位分别设置为所述最先变化数 据记录的变化类型和变化位;如果在所述最先变化数据记录之后存在相同 源数据记录的下一个变化数据记录并且所述下一个变化数据记录的变化类 型是更新,则合并后的变化类型是更新,合并后的变化位是当前合并后的 变化位与所述下一个变化数据记录的变化位的按位或逻辑运算结果。
8. 如权利要求l所述的方法,当所述方法用于服务器与多个客户机之 间消除客户机自身的变化对服务器与其它客户机的影响时还包括以下步1 )从客户机的历史目标版本与当前版本之间数据记录的变化历史中取 出 一个来自于该客户机的变化数据记录;2 )在所述历史目标版本与当前版本之间取出由服务器或其它客户机发 起的相同数据记录的最近变化数据记录;3)判断步骤l)中的该变化数据记录是否为服务器最近的变化数据记 录,如果判断为是,则将该变化数据记录更新为步骤2)中的相同数据记 录的最近变化数据记录;如果判断为否,则将该变化数据记录从数据记录 的变化历史中删除。
9. 如权利要求l-4所述的方法,其中所述数据记录存储在数据库中。
10. —种利用同步进行数据恢复的系统,包括记录装置,用于记录数据记录的变化历史;同步引擎,响应于接收到的数据恢复请求,查询所需要恢复的数据记 录的历史目标版本,合并所述数据记录的历史目标版本与当前版本之间的 变化历史,并发送所述合并结果。
11. 如权利要求10所述的系统,其中所述数据记录的变化历史为数据 记录的字段的变化历史。
12. 如权利要求ll所述的系统,其中所述历史目标版本通过历史时间 标签来确定。
13. 如权利要求12所述的系统,其中所述变化历史通过变化类型、变 化位以及版本号来记录,所述变化类型用于记录所述数据记录变化的变化 类型,所述变化位用于记录与所述数据记录的变化类型对应的字段变化状 态,并且所述版本号用于标记所述数据记录的有效时间点。
14. 如权利要求13所述的系统,其中所述同步引擎还包括逆转合并装 置,所述合并装置用于分别将对应于相同数据记录的所有变化的变化类型 和变化位进行合并,得到合并后的变化类型和合并后的变化位。
15. 如权利要求14所述的系统,其中所述记录装置还用于 如果添加数据记录,则记录所述数据记录的变化类型为添加并且标记所述数据记录的变化位;如果删除数据记录,则记录所述数据记录的变化类型为删除并且标记 所述数据记录的变化位;如果更新数据记录,则记录所述数据记录的变化类型为更新并且标记 所述数据记录的变化位。
16. 如权利要求15所述的系统,其中所述同步引擎还包括 添加逆转合并装置,如果所述相同数据记录的最先变化数据记录的变化类型为添加,则将合并后的变化类型设置为删除并标识合并后的变化位; 删除逆转合并装置,如果所i^目同数据记录的最先变化数据记录的变 化类型为删除,则在所述最先变化数据记录之后不存在相同数据记录的下 一个变化数据记录的情况下,将合并后的变化类型设置为添加并标识合并后的变化位,否则在所述最先数据记录之后存在相同数据记录的下一个变 化数据记录的情况下,将合并后的变化类型设置为删除后添加并标识合并后的变化位;更新合并装置,在所ii^目同数据记录的最先变化记录的变化类型为更 新的情况下,如果在所述最先变化数据记录之后不存在相同数据记录的下 一个变化数据记录,则将所述最先变化数据记录的变化类型和变化位分别 设置为合并后的变化类型和合并后的变化位;如果在所述最先变化数据记 录之后存在相同数据记录的下一个变化数据记录并且所述下一个变化数据 记录的变化类型是更新,则合并后的变化类型是更新,合并后的变化位是 当前合并后的变化位与所述下一个变化数据记录的变化位的按位或逻辑运 算结果。
17. 如权利要求10所述的系统,当所述系统用于服务器与多个客户机 之间消除由客户机自身的变化对服务器与其它客户机的影响时还包括处理 装置,所述处理装置用于1 )M户机的历史目标版本与当前版本之间数据记录的变化历史中取 出 一个来自于该客户机的变化数据记录;2 )在所述历史目标版本与当前版本之间取出由服务器或其它客户机发 起的相同数据记录的最近变化数据记录;3)判断步骤l)中的该变化数据记录是否为服务器最近的变化数据记 录,如果判断为是,则将该变化数据记录更新为步骤2)中的相同数据记 录的最近变化数据记录;如果判断为否,则将该变化数据记录从数据记录 的变化历史中删除。
18. 如权利要求10-14所述的方法,其中所述数据记M储在数据库中。
全文摘要
本发明公开一种利用同步进行数据恢复的方法,包括记录数据记录的变化历史;响应于接收到的数据恢复请求,查询所需要恢复的数据记录的历史目标版本,合并所述数据记录的历史目标版本与当前版本之间的变化历史;发送所述合并结果。本发明通过高效的合并方法合并数据记录的目标版本与当前版本之间的变化历史,并通过远程同步发送数据记录中变化的字段,节省了大量存储资源,实现了一种高效且方便的数据恢复方法。
文档编号G06F11/14GK101593185SQ20081010887
公开日2009年12月2日 申请日期2008年5月29日 优先权日2008年5月29日
发明者亮 齐 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1