一种数据文件的多版本控制方法及装置的制作方法

文档序号:6610269阅读:167来源:国知局
专利名称:一种数据文件的多版本控制方法及装置的制作方法
技术领域
本发明涉及计算机技术,特别是指一种数据文件的多版本控制方法及装置。
背景技术
软件升级的处理过程一般为找出低版本文件和高版本文件中数据内容的 不匹配点,以产生不匹配块,并针对找到的匹配块和不匹配块产生估计相应的 动作,其中的动作是复制、替换、插入、删除之一,然后执行相应的动作,以 将低版本文件的内容替换成高版本文件的内容。但是,这种软件升级处理过程 中,对文本编辑的动作过于繁杂众多,从所生成的增量恢复软件的处理时间较 长,时效性非常不好。
另外,目前还有借由增量方式来使数据文件升级的方法,主要是当数据文 件在进行升级时,仅需将新版本增加的数据文件与旧版本的数据文件(包括原 始数据文件及较旧的升级版本)结合在一起,并分别建立与旧版本数据文件及
新版本数据文件相对应的索引;且令用户可通过所建立的索引,找寻旧版本的 数据文件及升级后新版本的数据文件,并能够随时对其中任一版本进行选择及 切换的操作,进而提供用户可灵活切换文件版本的功能。然而,该方法仅仅是 针对一个软件的两个版本中的众多文件,建立对应的索引关系;不是针对一个 具体文件的具体内容进行压缩。压缩率不高。
综上所述,目前都是基于软件升级的处理方法,都无法针对不同版本数据 文件进行相应处理。

发明内容
有鉴于此,本发明的主要目的在于提供一种数据文件的多版本控制方法及 装置,简单有效地确定出两个版本之间的相同数据内容和新版本特有数据内容。
为达到上述目的,本发明的技术方案是这样实现的 一种数据文件的多版本控制方法,该方法包含以下步骤
A、 生成基准版本数据块的数据块指紋;
B、 根据数据块指紋确定新版本中包含的与基准版本相同的数据内容,并
对相同的数据内容进行标记,所述标记包含相同的数据内容的长度,以及在基
准版本、新版本中的位置;根据所述标记确定新版本包含、而基准版本未包含
的特有的数据内容。
其中,所述步骤A包括从基准版本起始处开始,对于每一个固定长度的 数据块,将该数据块划分为多个指紋长度的子块,对各子块的数据内容进行异 或操作,所得结果作为该数据块的数据块指紋。
其中,所述步骤A包括当前数据块的数据块指紋通过对前一个数据块的 数据块指紋、前一个数据块的第一个子块的数据内容与当前数据块最后一个子 块的数据内容三者进行异或操作得到。
其中,所述步骤A包括对基准版本的所有数据块指紋进行堆排序,在排 序后的数据块指紋中仅保留出现次数不超过设定次数的数据块指紋。
其中,所述步骤B包括
Bl、从新版本的起始处开始生成固定长度的数据块的数据块指紋;
B2、在排序后的基准版本的各数据块指紋中进行折半查找,判断基准版本 排序后的各数据块指紋中是否存在该新版本的数据块指紋,如果存在,则继续 执行步骤B3,否则,继续执行步骤B6;
B3、判断新版本的该数据块内容与基准版本相应数据块的内容是否相同, 如果相同,则继续执行步骤B4,否则,继续执行步骤B6;
B4、扩展比较新版本数据块和基准版本数据块的数据内容,直至数据内容 出现不相同时停止比较,对相同数据内容进行标记,然后继续执行步骤B5;
B5、判断是否已经遍历新版本的最后一个数据块,如果已经遍历,则对新 版本特有的数据内容进行标记并结束当前流程;否则,从新版本还未遍历的起 始位置生成一个数据块指紋,然后返回执行步骤B2;
B6、判断是否已经遍历新版本的最后一个数据块,如果已经遍历,则对新 版本特有的数据内容进行标记并结東当前流程;否则,在当前数据块的开始处, 向后移动设定长度,对于从该位置开始的固定长度的数据块,生成该数据块的 数据块指紋,然后返回执行步骤B2。
其中,步骤B4中所述扩展比较新版本数据块和基准版本数据块的数据内 容,包括对数据块指紋相同的数据块从前后两个方向依次比较数据内容。
其中,所述步骤B之后进一步包括对各部分数据内容的标记进行整理得 到新版本标记集合,该新版本标记集合中既包括新版本特有数据内容的标记, 也包括相同数据内容的标记;新版本标记集合根据数据块在新版本的起始位置 进行排序。
其中,所述步骤B之后进一步包括步骤C:对于一个版本阶段内的各个新 版本,提取各新版本相对于基准版本的公共的相同数据块内容,以及新版本特 有的公共数据块内容,对所述公共数据内容仅存储一次。
其中,所述步骤C之后进一步包括当恢复新版本时,根据新版本标记集 合中各个数据块在新版本的起始位置,恢复新版本。
一种数据文件的多版本控制装置,包括数据块指紋提取器、数据块指紋 比较器、数据块内容比较器和标记生成器,其中,所述数据块指紋提取器用于 生成基准版本中所有固定长度数据块的指紋,并且生成新版本中固定长度的数 据块的数据块指紋;所述数据块指紋比较器用于确定基准版本中是否存在与新 版本的数据块指紋相同的数据块指紋,存在相同时,通知所述数据内容比较器 比较数据块内容,不存在相同时,通知所述数据块指紋提取器生成新版本中的
下一个数据块的数据块指紋;所述数据内容比较器用于比较数据块指紋相同的
两个数据块的内容是否完全相同,完全相同时,对所述两个数据块进行扩展比 较,直至出现数据内容不相同时停止比较,向所述标记生成器提供所得到的相 同数据内容,不完全相同时,通知数据块指紋提取器生成新版本中下一个数据
块的数据块指紋;所述标记生成器用于标记新版本和基准版本中的相同数据块 内容、以及新版本特有数据内容的标记,将各部分数据内容的标记按照各部分
数据内容在新版本中的前后顺序依次排放。
其中,所述数据块指紋提取器进一步用于对基准版本的各数据块指紋进行 堆排序,在排序后的数据块指紋中仅保留数据块指紋出现次数不超过设定次数 的数据块指紋。
其中,所述共同信息提取器该装置,用于提取一个版本阶段中各个新版本 相对于基准数据的公共相同数据内容、以及各新版本特有的公共数据内容,对 所述数据内容及标记存储一次。
其中,该装置进一步包括数据恢复处理器,用于根据新版本标记集合中 各个数据块在新版本的起始位置,恢复新版本。
本发明中,生成基准版本数据块的数据块指紋,根据数据块指紋和相应数 据内容确定新版本中所包含的与基准版本相同的数据内容,并对相同的数据内 容进行标记;该标记包含相同的数据内容的长度、以及在基准版本、新版本中 的位置。根据这些标记确定新版本包含而基准版本未包含的数据内容,并对这 些数据内容进行标记,区分出两个版本之间的相同数据内容和新版本特有的数 据内容,及各部分数据内容在新版本中的位置,处理简单快捷,无需任何复杂 处理。
根据本发明提出的方案,无需对新版本的完整数据内容进行存储,只需存 储基准版本、新版本中和基准版本公共包含的数据内容的长度及在基准版本和 新版本中的位置信息、新版本中所包含的基准版本中未包含的数据内容及该数 据内容在基准版本中的位置信息,大大节省了存储空间,并且能够快速恢复出 新版本的全部数据内容,具有良好的实效性。
另外,在某一阶段内针对基准版本生成很多不同的新版本时,本发明提取 该阶段内各个新版本相对于基准数据的公共新版本特有数据内容,对这些数据 内容及标记进行存储,然后再提取各个新版本相对于基准数据所特有的不同数 据内容,对这些数据内容及标记分别进行存储,实现对同一数据文件的多个版 本的压缩和恢复,进一步提高压缩率。


图1为本发明中确定不同版本数据文件内容异同流程图; 图2为本发明中数据文件多版本控制装置结构示意图。
具体实施例方式
本发明中,将数据文件划分为基准版本和新版本,通过本发明提供的方案 确定新版本中所包含的基准版本中包含的数据内容及基准版本中未包含的数据 内容,从而实现对多版本数据文件的控制,具体处理为生成基准版本数据块 的数据块指紋,根据数据块指紋确定新版本中所包含的与基准版本相同的数据 内容,并对相同的数据内容进行标记,该标记包含相同的数据内容的长度、以 及在基准版本、新版本中的位置,根据标记确定新版本包含而基准版本未包含 的特有数据内容,并对这些数据内容进行标记,根据标记确定这些数据内容在 新版本中的位置。
图1为本发明中确定不同版本数据文件内容异同流程图,如图1所示,本 发明中以电子文档为例,确定不同版本电子文档内容异同的处理过程包括以下
步骤101:针对基准版本生成各文本块的文本块指紋,并进行排序处理。 具体处理可以为从基准版本起始处开始,每个固定长度(比如1K字节)的 文本块,被划分为多个指紋长度大小(比如4字节)的子块,对各子块的文本 内容进行异或操作,最后所得结果作为该文本块的文本块指紋;然后从起始处 向后移动固定长度(比如l个字节),从该处开始确定固定长度的文本块,划分 为多个以设定分段长度为大小的子块,对各子块的文本内容进行异或操作,最 后所得结果作为该文本块的文本块指紋,直至将基准版本所有文本内容都划分 完毕。例如,从基准版本起始处确定1K字节(Bytes)长度的文本块,在该文 本块内以4比特为长度划分一个子块,然后对划分得到的各子块的文本内容进 行异或操作,最后得到的结果即为该文本块的文本块指紋;然后从起始处向后 移一个字节,从该处起始再确定1K字节长度的文本块,在该文本块内以4比
特为长度划分一个子块,然后对划分得到的各子块的文本内容进行异或操作, 最后得到的结果即为该文本块的文本块指紋,直至将基准版本所有文本内容都 划分完毕。指紋长度是指每个指紋的编码长度。
另外,当前文本块与前一个文本块这样两个连续的文本块中,当前文本块 是通过对前一个文本块移动设定个数字节得到的,因此,由于异或运算所特有 的性质,相邻两个文本块的指紋可以相互得到,即当前文本块的文本块指紋可 通过对前一个文本块的文本块指紋、前一个文本块的第一个子块的文本内容与 当前文本块最后一个子块的文本内容三者进行异或操作来得到,从而简化得到 文本块指紋的相关处理。
对于所得到的基准版本的各文本块指紋,作进一步的堆排序。对各文本块 指紋进行堆排序,便于后续新版本的文本块指紋与基准版本的文本块指紋进行 查找时,能够根据排序的结果进行查找处理,例如折半查找,使得处理更为快 捷方便。另外,由于文本块指紋用于标识文本块的内容特性,因此,生成基准 版本的各文本块指紋后,可进一步对文本块指紋进行清理,即在排序后的文本 块指紋中,仅保留文本块指紋重复次数不超过设定次数,比如只保留出现次数 为l次的文本块指紋。
步骤102:从新版本的起始处确定设定长度的文本块,该文本块的长度与
基准版本中的文本块长度相同,将该文本块划分为多个子块,各子块的长度与 基准版本中的子块长度相同,对各子块的文本内容进行异或操作,最后所得结 果作为该文本块的文本块指紋。
步骤103:将步骤102中得到的新版本的文本块指紋与基准版本中的各文 本块指紋进行比较。
步骤104:判断基准版本的文本块指紋是否存在与新版本的文本块指紋相 同的文本块指紋,如果文本块指紋相同,进一步比较文本块的内容是否相同; 如果相同,则表明相应两个文本块的内容可能相同,继续执行步骤105;否则, 继续执行步骤110。
步骤105:判断新版本的该文本块内容与基准版本相应文本块的内容是否
相同,即依次比较这两个文本块每个字节的文本内容,如果相同,则继续执行
106;否则,继续执行步骤110。
步骤106:扩展比较文本块指紋相同的新版本文本块和基准版本文本块的 文本内容,直至文本内容出现不同,为了获得最大的相同文本内容,可前后两 个方向扩展比较新版本和基准版本文本块,即从两个文本块首尾分别向前向 后两个方向逐个字符依次比较新版本与基准版本的内容,在每个方向上出现字 符内容不相同时,停止比较。
步骤107:出现文本内容不相同时,对相同文本内容进行标记,该标记能 够标记出相同文本块内容在基准版本中的位置、在新版本中的位置,以及该文 本块的长度。
步骤108:判断是否已经遍历新版本的最后一个文本块,如果均已比较, 则继续执行步骤112;否则,继续执行步骤109。
步骤109:从新版本还未遍历的起始位置生成一个文本块指紋,即从新版 本的文本内容与基准版本不相同处开始的固定设定长度的文本块,该文本块的 长度与基准版本中的文本块长度相同,将该文本块划分为多个子块,各子块的 长度与基准版本中的子块长度相同,对各子块的文本内容进行异或操作,最后 所得结果作为该文本块的文本块指紋,然后返回执行步骤103。
步骤110:判断是否已经遍历新版本的最后一个文本块,如果已经遍历, 则继续执行步骤112;否则,继续执行步骤lll。
步骤111:从当前文本块处向后移设定个字节,从该处起始再确定设定长 度的文本块,然后将该文本块划分为多个以设定分段长度为大小的子块,对各 子块的文本内容进行异或操作,最后所得结果作为该文本块的文本块指紋,然 后返回执行步骤103。
如果步骤106中,从文本块指紋相同的文本块的前后两个方向依次比较文 本内容时,在该文本块之前比较到新版本特有文本内容、并确定相应文本块指 紋与基准版本的各文本块指紋不相同后,可向对应于该文本块指紋的文本块向 前的方向移设定个字节,得到新的文本块。
步骤112:根据新版本和基准版本的相同文本块的标记,对新版本特有文 本内容进行标记,该标记能够标记出新版本特有文本内容在新版本中的位置, 该标记可以包括该新版本特有文本内容在新版本中的起始位置及长度。
确定了新版本相对于基准版本的相同文本内容和新版本特有文本内容后, 可进一步对各部分文本内容的标记进行整理得到新版本标记集合。该新版本标 记集合中既包括新版本特有文本内容的标记,也包括相同文本内容的标记,将 各部分文本内容按照其在新版本中的前后顺序依次排放。
根据以上描述可见,本发明中无需对新版本的完整文本内容进行存储,只 需存储基准版本,新版本中所特有的文本块和相应的位置信息,新版本与基准 版本共同的文本块只需要存储相应的位置信息和长度信息。这样,大大节省了 存储空间,并且能够快速恢复出新版本的全部文本内容,具有良好的时效性。 恢复新版本的文本内容时,根据新版本标记集合中各个文本块在新版本的起始 位置,恢复新版本。
在一个版本阶段内,可能会针对基准版本生成很多不同的新版本,此时, 基于基准版本,会生成一系列的标记内容,为了进一步提高压缩率,将一个版 本阶段中各个新版本相对于基准文本的公共的相同文本内容、和新版本特有的 公共文本内容提取出来,对这些文本内容及标记仅在公共存储区域存储一次, 可以进一步减少存储量。这样,新版本中所包含的与基准版本相同的文本内容, 可存储于版本阶段的公共存储区域中,新版本中所包含的特有文本内容,可存 储于本版本的特有存储区域中。当恢复某一个版本阶段的某一个新版本时,只 需要从公共存储区域取出相应的标记和内容,并从本版本的特有存储区域中取 出该新版本的特有文本内容和标记。新版本特有的公共文本内容是指基准版本 中没有、而各个新版本中均有的文本内容。
以上操作可以由数据文件多版本控制装置或应用软件来完成。
图2为本发明中数据文件多版本控制装置结构示意图,如图2所示,该装
置包括数据块指紋提取器、数据块指紋比较器、数据块内容比较器和标记生成
器。其中,数据块指紋提取器用于生成基准版本中所有固定长度数据块的指紋;
并且向数据块指紋比较器提供数据块指紋,即在需要的时候生成新版本中某些 固定长度的数据块的数据块指紋。数据块指紋比较器用于确定基准版本中是否 存在与新版本的数据块指紋相同的数据块指紋;存在相同时,通知所述数据内 容比较器比较数据块内容;不存在相同时,通知所述数据块指紋提取器生成新 版本中的下一个数据块的数据块指紋。数据内容比较器用于当新版本的数据块 指紋与基准版本中的某个数据块指紋相同时,依次比较这两个数据块指紋相同 的数据块的数据内容是否完全相同,当完全相同时,对这两个数据块进行扩展 比较,为了获得最大的相同数据内容,可前后扩展比较新版本和基准版本数据 块,直至出现数据内容不相同时停止比较,向所述标记生成器提供比较得到的
相同数据内容,通知标记生成器对相同数据内容进行标记;当不完全相同时,
通知数据块指紋提取器生成新版本中下一个数据块的数据块指紋。另外,数据 块指紋提取器还要负责对基准版本的各数据块指紋进行堆排序,在排序后的数 据块指紋中仅保留数据块指紋出现次数不超过固定次数(比如1次)的数据块 指紋。标记生成器用于标记新版本和基准版本中的相同数据块内容、以及新版 本特有数据内容,将各部分数据内容的标记按照各部分数据内容在新版本中的 前后顺序依次排放。
该装置进一步包括共同信息提取器,用于提取一个版本阶段中(比如一 个星期内)的各个新版本相对于基准版本的公共相同数据内容、以及各新版本 特有的公共数据内容,仅对这些数据内容及标记存储一次。
该装置进一步包括数据恢复处理器,用于根据新版本标记集合中各个数 据块在新版本的起始位置,恢复新版本。
以上所述的数据文件包括计算机领域中出现的各种文件,例如,Word、 Excel、 PDF、图像文件、视频文件等各种格式的数据文件。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1、一种数据文件的多版本控制方法,其特征在于,该方法包含以下步骤:A、生成基准版本数据块的数据块指纹;B、根据数据块指纹确定新版本中包含的与基准版本相同的数据内容,并对相同的数据内容进行标记,所述标记包含相同的数据内容的长度、以及在基准版本、新版本中的位置,根据所述标记确定新版本包含、而基准版本未包含的特有的数据内容。
2、 根据权利要求1所述的方法,其特征在于,所述步骤A包括从基准 版本起始处开始,对于每一个固定长度的数据块,将该数据块划分为多个指紋 长度的子块,对各子块的数据内容进行异或操作,所得结果作为该数据块的数 据块指紋。
3、 根据权利要求2所述的方法,其特征在于,所述步骤A包括当前数 据块的数据块指紋通过对前一个数据块的数据块指紋、前一个数据块的第一个 子块的数据内容与当前数据块最后一个子块的数据内容三者进行异或操作得 到。
4、 根据权利要求2或3所述的方法,其特征在于,所述步骤A包括对 基准版本的所有数据块指紋进行堆排序,在排序后的数据块指紋中仅保留出现 次数不超过设定次数的数据块指紋。
5、 根据权利要求4所述的方法,其特征在于,所述步骤B包括 Bl、从新版本的起始处开始生成固定长度的数据块的数据块指紋;B2、在排序后的基准版本的各数据块指紋中进行折半査找,判断基准版本 排序后的各数据块指紋中是否存在该新版本的数据块指紋,如果存在,则继续 执行步骤B3,否则,继续执行步骤B6;B3、判断新版本的该数据块内容与基准版本相应数据块的内容是否相同, 如果相同,则继续执行步骤B4,否则,继续执行步骤B6;B4、扩展比较新版本数据块和基准版本数据块的数据内容,直至数据内容 出现不相同时停止比较,对相同数据内容进行标记,然后继续执行步骤B5;B5、判断是否已经遍历新版本的最后一个数据块,如果已经遍历,则对新 版本特有的数据内容进行标记并结東当前流程;否则,从新版本还未遍历的起 始位置生成一个数据块指紋,然后返回执行步骤B2;B6、判断是否已经遍历新版本的最后一个数据块,如果已经遍历,则对新 版本特有的数据内容进行标记并结束当前流程;否则,在当前数据块的开始处, 向后移动设定长度,对于从该位置开始的固定长度的数据块,生成该数据块的 数据块指紋,然后返回执行步骤B2。
6、 根据权利要求5所述的方法,其特征在于,步骤B4中所述扩展比较新 版本数据块和基准版本数据块的数据内容,包括对数据块指紋相同的数据块 从前后两个方向依次比较数据内容。
7、 根据权利要求1所述的方法,其特征在于,所述步骤B之后进一步包 括对各部分数据内容的标记进行整理得到新版本标记集合,该新版本标记集 合中既包括新版本特有数据内容的标记,也包括相同数据内容的标记;新版本 标记集合根据数据块在新版本的起始位置进行排序。
8、 根据权利要求1所述的方法,其特征在于,所述步骤B之后进一步包括C、对于一个版本阶段内的各个新版本,提取各新版本相对于基准版本的 公共的相同数据块内容,以及新版本特有的公共数据块内容,对所述公共数据 内容仅存储一次。
9、 根据权利要求8所述的方法,其特征在于,所述步骤C之后进一步包 括当恢复新版本时,根据新版本标记集合中各个数据块在新版本的起始位置, 恢复新版本。
10、 一种数据文件的多版本控制装置,其特征在于,该装置包括数据块 指紋提取器、数据块指紋比较器、数据块内容比较器和标记生成器,其中,所述数据块指紋提取器用于生成基准版本中所有固定长度数据块的指紋, 并且生成新版本中固定长度的数据块的数据块指紋; 所述数据块指紋比较器用于确定基准版本中是否存在与新版本的数据块指 紋相同的数据块指紋,存在相同时,通知所述数据内容比较器比较数据块内容, 不存在相同时,通知所述数据块指紋提取器生成新版本中的下一个数据块的数 据块指紋;所述数据内容比较器用于比较数据块指紋相同的两个数据块的内容是否完 全相同,完全相同时,对所述两个数据块进行扩展比较,直至出现数据内容不 相同时停止比较,向所述标记生成器提供所得到的相同数据内容,不完全相同 时,通知数据块指紋提取器生成新版本中下一个数据块的数据块指紋;所述标记生成器用于标记新版本和基准版本中的相同数据块内容、以及新 版本特有数据内容的标记,将各部分数据内容的标记按照各部分数据内容在新 版本中的前后顺序依次排放。
11、 根据权利要求10所述的装置,其特征在于,所述数据块指紋提取器进 一步用于对基准版本的各数据块指紋进行堆排序,在排序后的数据块指紋中仅 保留数据块指紋出现次数不超过设定次数的数据块指紋。
12、 根据权利要求10所述的装置,其特征在于,所述共同信息提取器该装 置,用于提取一个版本阶段中各个新版本相对于基准数据的公共相同数据内容、 以及各新版本特有的公共数据内容,对所述数据内容及标记存储一次。
13、 根据权利要求10至12任一所述的装置,其特征在于,该装置进一步包括数据恢复处理器,用于根据新版本标记集合中各个数据块在新版本的起 始位置,恢复新版本。
全文摘要
本发明公开了一种数据文件的多版本控制方法及装置。方法中,首先生成基准版本数据块的数据块指纹;根据数据块指纹确定新版本中所包含的与基准版本相同的数据内容,并对相同的数据内容进行标记;根据标记确定新版本包含而基准版本未包含的数据内容,并对这些数据内容进行标记;根据标记确定这些数据内容在新版本中的位置;通过数据块指纹和数据内容的比较,确定两个版本中数据内容相同的数据块;抽取出两个版本之间的相同数据内容和新版本特有的数据内容,及各部分数据内容在新版本中的位置。这种处理方法简单快捷,无需对新版本的完整数据内容进行存储,大大节省了存储空间,能够快速恢复出新版本的全部数据内容,具有良好的时效性。
文档编号G06F9/44GK101382885SQ20071012144
公开日2009年3月11日 申请日期2007年9月6日 优先权日2007年9月6日
发明者徐泽明, 赵丽媛, 赵晓睿 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1