[发明专利]一种编码方法及装置在审
申请号: | 201510733615.X | 申请日: | 2015-10-31 |
公开(公告)号: | CN105426413A | 公开(公告)日: | 2016-03-23 |
发明(设计)人: | 关坤;冷继南;王工艺;全绍晖;沈建强 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 冯艳莲 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编码 方法 装置 | ||
技术领域
本发明涉及数据压缩技术领域,特别涉及一种编码方法及装置。
背景技术
Delta算法是无损数据压缩技术中的一种,用于计算一个新文件和一个已经存储在系统中的参考文件之间的Delta编码。比如,在需要存储一个新文件时,将新文件和已经存储在系统中的多个参考文件分别进行匹配,如果新文件和其中一个参考文件之间的相似性超过了预先设定的阀值时,就计算出一个与该新文件对应的Delta编码,只须把这个Delta编码存储在系统里即可,无需存储新文件本身。在恢复新文件时,根据与新文件相似的参考文件,以及新文件对应的Delta编码,就可以恢复出新文件。这样,在存储具有相似性的文件时,使用Delta编码进行文件压缩,可以极大地节省存储空间。
目前,XDelta编码是一种常用的Delta编码算法。XDelta编码的核心思想就是在参考块中寻找是否有与目标块匹配的子块,例如一般连续3个或4个字节相同则认为匹配成功。
然而,XDelta编码在进行匹配时,是按照逐字节的匹配方式,如果参考块的数据量比较大的话,那么匹配过程的工作量就比较大,耗费的时间也比较多,导致数据压缩的效率较低。
发明内容
本申请提供一种编码方法及装置,用于解决在采用Delta编码时数据压缩效率较低的技术问题。
第一方面,提供一种编码方法,包括:
获取第一子目标块,所述第一子目标块属于目标块;
对所述第一子目标块进行哈希运算得到第一键值,根据所述第一键值查询第一哈希表,所述第一哈希表的键值对应的哈希值指示参考块中参考数据的地址;若在所述第一哈希表中查到与所述第一键值对应的第一哈希值,根据所述第一哈希值获取该第一哈希值指示的地址对应的第一参考数据,将所述第一子目标块的首个目标数据与所述第一参考数据进行匹配,将所述目标块中的第二目标数据与所述参考块中的第二参考数据进行匹配,所述第二目标数据为位于所述第一子目标块的首个目标数据之后的其他目标数据,所述第二参考数据为所述参考块中位于所述第一参考数据之后的其他参考数据;
根据所述首个目标数据及所述第二目标数据的匹配结果生成第一编码序列;其中,所述第一编码序列中包括匹配长度和偏移量,所述匹配长度用于指示本次匹配成功的目标数据的长度,所述偏移量用于指示与本次匹配成功的目标数据相匹配的数据所在的位置。
本申请中,在得到目标块中的一个子目标块时(例如称为第一子目标块),先将其进行哈希运算,然后根据运算结果在第一哈希表中查询对应的哈希值,再根据查询到的哈希值在参考块中找到相应的位置,即找到第一参考数据,从而可以将第一子目标块在该位置处进行向后匹配(即,将第一子目标块的首个目标数据与第一参考数据进行匹配,将目标块中的第二目标数据与参考块中的第二参考数据进行匹配)。这样,通过预先确定出一个大概的位置,缩小了需要匹配的范围,节省了数据压缩的时间,提高了数据压缩的效率。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述第一键值查询第一哈希表之前,还包括:
按照第一步长,从所述参考块中获取参考数据块;每个参考数据块包括n位参考数据,所述第一子目标块包括n位目标数据,所述n为正整数;
构建所述第一哈希表,所述第一哈希表的键值为所述参考数据块通过所述哈希运算获取的。
即,可以根据已知的参考块中的参考数据预先构建第一哈希表,以备后续使用。本申请中,构建第一哈希表时,每次参与哈希运算的参考数据的数据量,与将目标块进行匹配时每次参与运算的模板数据的数据量(即一个子目标块所包括的数据的数据量)需相等,否则可能会出现得到的运算结果的长度不同而无法进行匹配的情况。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述生成第一编码序列前还包括:将所述目标块中位于所述第一子目标块之前的目标数据与所述参考块中位于所述第一参考数据之前的其他参考数据进行匹配。
即,除了如前提到的后向匹配之外,还可以将第一子目标块及目标块中位于第一子目标块之前的目标数据与第一参考数据及参考块中位于第一参考数据之前的其他参考数据进行前向匹配,直到无法匹配为止。这样,可以一次匹配尽量多的目标数据,以有效减少匹配次数,也减少后续生成的编码序列的数量,减轻系统的负担。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510733615.X/2.html,转载请声明来源钻瓜专利网。