[发明专利]一种利用数据差异算法生成多版本文件的方法有效
申请号: | 201310586671.6 | 申请日: | 2013-11-20 |
公开(公告)号: | CN103617215A | 公开(公告)日: | 2014-03-05 |
发明(设计)人: | 叶佑群 | 申请(专利权)人: | 上海爱数软件有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 王民盛;王丽琴 |
地址: | 200072 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 利用 数据 差异 算法 生成 版本 文件 方法 | ||
技术领域
本申请涉及计算机数据与存储技术领域,尤其涉及一种利用数据差异算法生成多版本文件的方法。
背景技术
随着计算机技术的普及,计算机应用已经渗透到日常生活当中的方方面面。对于文档等各种类型的非结构化数据的处理与存储是我们经常需要面临的问题。特别是当前移动办公方式的兴起,要求在数据传输时具有更小的数量传输量,否则容易导致用户使用成本的提高。但是无论是传统的计算处理与存储还是当前的移动计算处理与存储,都向着集中存储与处理的方向发展。在这种情况下,用户的文档以及其他数据都将只存储于一个集中的数据处理中心,或者存储在用户的本地计算机中。
但是无论是集中处理存储与处理还是用户在本地处理,都面临着一个这样的问题,即用户在特定的情况下需要恢复某些文件到某个特定时刻的数据状态。如果用户只在本地存储,那么他将只有一个版本,而在集中处理的方式下,最好也就可能存在两个版本。但是往往这两个版本都不用是用户所需要的数据。针对这种情况,通常的解决方法是在某个条件下会复制一份完全一样的文件数据,并存储于相应的位置。当需要还原这些文件数据时,只要找到相应的某个复本或者与要求的版本最相近的一个复本。
显而易见,这种处理方式虽然直接,但是所具有的缺点也是明显的:首先,存储的数据存在大量的冗余。因为文件是完全的复本存储,当需要多少个版本时,其本上就需要多少倍的存储空间。这会造成存储容量需求大增,增加成本支持。为了限制成本的增加,就会导致文件复本存储的数量受到限制,进而影响多复本存储的效率与可用性。其次,当数据的复本是存储于集中数据处理中心时,还会导致在网络上传输的数据量大增,使网络受到较严重的影响。更为严重的是,如果需要处理的文件的尺寸过大时,这两个缺陷所导致的问题会更加明显而难以解决。
发明内容
本申请提供了一种利用数据差异算法生成多版本文件的方法,可以有效节约多版本文件的存储空间。
本申请实施例提供了一种利用数据差异算法生成多版本文件的方法,包括:
A、按照预先确定的数据块长度,对参照版本从头至尾依次计算每个数据块的数据摘要值;
B、计算在各个偏移量下,与参照版本相同长度的差异版本的数据块的摘要值,将计算得到的差异版本的数据块的摘要值与参照版本的数据块的摘要值进行对比,根据对比结果提取出差异版本中的差异数据,并生成用于存储所述差异数据的差异记录文件。
较佳地,所述数据块长度根据如下公式确定:其中,中括号表示取整,L表示数据块长度,单位为字节,SIZE表示参照版本文件大小,单位为字节;
若根据公式计算出的L小于200字节,则将数据块长度设置为200字节,若根据公式计算出的L大于512K字节,则将数据块长度设置为512K字节。
较佳地,步骤A所述计算每个数据块的数据摘要值包括:对每一个数据块,计算一个长度为N1的快速摘要,以及计算一个长度为N2的慢速摘要,其中N1<N2;快速摘要值相同是数据块相同的必要非充分条件,慢速摘要值相同是数据块相同的充分必要条件;
步骤B包括:
B1、生成用于存储参照版本的数据块摘要对的哈希数组H,创建一个空白的差异记录文件,然后向这个文件写入16字节的空内容;然后创建一个链表结构K,用于记录差异数据块的比较结果;
B2、将差异版本的文件偏移设置为0;
B3、判断从差异版本当前偏移处开始向后的数据长度是否小于L,若是,执行步骤B4,否则执行步骤B5;
B4、将从差异版本当前偏移处开始向后的数据记录到差异记录文件中,提取差异记录文件当前大小以及链表元素的个数后,将链表K写入到差异记录文件的末尾;然后将文件大小及元素个数写入到差异记录文件中开头的预留字节中,并结束本流程;
B5、从差异版本当前偏移处开始向后读取长度L的数据块,计算该数据块的快速摘要;
B6、判断是否在哈希数组H中查找与之相同的快速摘要,若找到,执行步骤B8,否则执行步骤B7;
B7、将差异版本的偏移向后移动一个字节,并返回步骤B3;
B8、计算该数据块的慢速摘要,在已经找到快速摘要的哈希数组中的链表中查找是否有相同的慢速摘要。如果找到,执行步骤B9,否则,执行步骤B7;
B9、将该数据块之前已经滑过的数据作为差异数据写入到差异记录文件中,并且生成一个数据块记录项,其类型为“不同”,所述数据块记录项记录这一差异数据在差异记录文件中的偏移,以及数据块的长度,并将记录项插入到链表K的末尾;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海爱数软件有限公司,未经上海爱数软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310586671.6/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置