重复数据检索方法及设备的制作方法

文档序号:6397034阅读:163来源:国知局
专利名称:重复数据检索方法及设备的制作方法
技术领域
本发明涉及存储技术,尤其涉及一种重复数据检索方法及设备。
背景技术
重复数据删除(英文为De-duplication)是一种数据减缩技术,旨在减少存储系统中使用的存储容量或减少数据在网络中的传输量,它广泛应用于数据备份或广域网数据传输的场景。重复数据删除的过程是:对输入数据进行分块,计算每个分块的哈希(Hash)值,用计算出的Hash值在单一实例库中查找以判断该分块是否为重复块,若为重复块,则不将该分块及其Hash值存储到单一实例库中,从而达到缩减数据的目的。单一实例库通常比较大,无法全部放入内存,通常会放在磁盘中,这样在查询分块是否为重复块时就需要频繁地访问磁盘,由于磁盘访问速度较低,使得重复块查询的效率较低,影响了重复数据删除技术的整体性能。

发明内容
本发明实施例提供一种重复数据检索方法及设备,用以提高重复块查询效率,提高重复数据删除技术的整体性能。第一方面提供一种重复数据检索方法,包括:对接收到的数据进行分块处理,获取至少两个数据分块;对所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块;针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组;如果所述第一数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值,对所述第一数据分组内的数据分块进行重复块检索。在第一方面的第一种可能的实现方式中,所述重复数据块检索方法还包括:如果所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,对所述至少两个数据分块进行分组,得到至少一个数据分组包括:由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据;以任一个所述数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块;将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括:对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值;将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为1,将相加小于或等于O的位映射为0,获得的二进制数值作为所述第一数据分组的哈希值。结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系;对所述第一数据分组内的数据分块进行重复块检索包括:从所述哈希值存储表中获取所述第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述方法还包括:在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中;所述将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括:将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括:获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述获取哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括:获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。第二方面提供一种重复数据检索设备,包括:
分块获取模块,用于对接收到的数据进行分块处理,获取至少两个数据分块;分组获取模块,用于对所述分块获取模块获取到的所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块;哈希计算模块,用于针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组;重复检索模块,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值时,对所述第一数据分组内的数据分块进行重复块检索。在第二方面的第一种可能的实现方式中,所述重复数据检索设备还包括:存储模块,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值时,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述分组获取模块具体用于由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以任一个所述数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述哈希计算模块用于对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括:所述哈希计算模块具体用于对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值,将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为1,将相加小于或等于O的位映射为0,获得的二进制数值作为所述第一数据分组的哈希值。结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系;所述重复检索模块具体用于从所述哈希值存储表中获取所述第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述重复检索模块还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中;所述重复检索模块具体用于将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括:所述重复检索模块具体用于将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式或第二方面的第四种可能的实现方式或第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述哈希计算模块用于获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括:所述哈希计算模块具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述哈希计算模块具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括:所述哈希值计算模块具体用于获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。第三方面提供一种重复数据检索设备,包括:处理器、通信接口、存储器和总线:所述处理器、所述通信接口、所述存储器通过所述总线完成相互间的通信;所述通信接口,用于接收数据;所述处理器,用于执行程序;所述存储器,用于存放所述程序;其中,所述程序用于对所述通信接口接收到的所述数据进行分块处理,获取至少两个数据分块;对所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块;针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组;如果所述数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值,对所述第一数据分组内的数据分块进行重复块检索。在第三方面的第一种可能的实现方式中,所述程序还用于在所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值时,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述程序用于对所述至少两个数据分块进行分组,得到至少一个数据分组包括:所述程序具体用于由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以任一个所述数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述程序用于对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括:所述程序具体用于对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值,将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为1,将相加小于或等于O的位映射为0,获得的二进制数值作为所述第一数据分组的哈希值。结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系;所述程序对所述第一数据分组内的数据分块进行重复块检索包括:所述程序具体用于从所述哈希值存储表中获取所述第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述程序还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中;所述程序具体用于将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括:所述程序具体用于将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式或第三方面的第四种可能的实现方式或第三方面的第五种可能的实现方式,在第三方面的第六种可能的实现方式中,所述程序用于获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括:所述程序具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。结合第三方面的第六种可能的实现方式,在第三方面的第七种可能的实现方式中,所述程序具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括:所述程序具体用于具体用于获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。第四方面提供一种计算机程序产品,包括计算机可读存储介质,用于存储程序,所述程序包括:分块获取单元,用于对接收到的数据进行分块处理,获取至少两个数据分块;分组获取单元,用于对所述分块获取单元获取到的所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块;哈希计算单元,用于针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组;重复检索单元,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值时,对所述第一数据分组内的数据分块进行重复块检索。在第四方面的第一种可能的实现方式中,所述程序还包括:存储单元,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值时,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述分组获取单元具体用于由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以任一个所述数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。结合第四方面或第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述哈希计算单元用于对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括:所述哈希计算单元具体用于对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值,将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为1,将相加小于或等于O的位映射为0,获得的二进制数值作为所述第一数据分组的哈希值。结合第四方面或第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式或第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系;所述重复检索单元具体用于从所述哈希值存储表中获取所述第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第四方面的第四种可能的实现方式,在第四方面的第五种可能的实现方式中,所述重复检索单元还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中;所述重复检索单元具体用于将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括:所述重复检索单元具体用于将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。结合第四方面或第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式或第四方面的第三种可能的实现方式或第四方面的第四种可能的实现方式或第四方面的第五种可能的实现方式,在第四方面的第六种可能的实现方式中,所述哈希计算单元用于获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括:所述哈希计算单元具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。结合第四方面的第六种可能的实现方式,在第四方面的第七种可能的实现方式中,所述哈希计算单元具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括:所述哈希值计算单元具体用于获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。本发明实施例提供的重复数据检索方法及设备,对接收到的数据先分块,再分组,对数据分组内的数据分块进行相似性哈希运算,得到数据分组的哈希值,然后获取数据分组的哈希值与哈希值存储表中存储的已经存储到数据存储空间中的各数据分组的哈希值相似度大于或等于预设第一相似度阈值的第一哈希值,判断数据分组的哈希值与第一哈希值的相似度是否大于或等于预设的第二相似度阈值,如果大于,说明该数据分组中的数据分块在很大程度上是重复块,然后对其进行重复块检索,由于查询哈希值存储表中存储的是已经存储到数据存储空间中的数据分组的哈希值和数据分组的对应关系,而数据分组的数量相对较少,所以查询哈希值存储表的效率较高,并且基于数据分组进行重复块检索减少了重复块检索的次数,即减少了与磁盘交互的次数,有利于提高重复块查询效率,从而提高了重复数据删除技术的整体性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明一实施例提供的重复数据检索方法的流程图;图2为本发明一实施例提供的相似性哈希运算过程示意图;图3为本发明一实施例提供的重复数据检索设备的结构示意图;图4为本发明另一实施例提供的重复数据检索设备的结构示意图;图5为本发明又一实施例提供的重复数据检索设备的结构示意图;图6为本发明一实施例提供的计算机程序产品的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明一实施例提供的重复数据检索方法的流程图。如图1所示,本实施例的方法包括:步骤101、对接收到的数据进行分块处理,获取至少两个数据分块。本实施例的执行主体可以是重复数据检索设备,该设备在实现形态上可以是各种具有计算能力的设备,例如可以是数据备份环境中的服务器、计算机等,还可以是广域网数据传输场景中的终端、网关、基站等。重复数据检索设备接收到待存储的数据后,首先对数据进行分块,获取至少两个数据分块。可选的,重复数据检索设备对数据进行分块处理可以采用分块算法,例如可以是但不限于固定分块(Fixed-Sized Partition,简称FSP)算法、可变分块(Content-DefinedChunking,简称为⑶C)算法、滑动块(英文为sliding block)算法。数据分块的大小视所采用的分块算法以及实际应用需求而定,本发明实施例对其具体值不做限定。关于使用各种分块算法对数据进行分块处理的过程属于现有技术,在此不再详述,可参见现有技术。步骤102、对所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块。重复数据检索设备对数据进行分块处理获取数据分块之后,再对获取的数据分块进行分组处理,获取数据分组,数据分组的个数可以是小于数据分块的个数。该分组处理实际上就是将获取的数据分块划分到不同的数据分组中,具体分组方式可以有多种。例如,重复数据检索设备可以按照每个数据分组包括相同个数的数据分块的原则,依次对多个数据分块进行划分,形成至少一个数据分组。又例如,重复数据检索设备还可以对划分出的数据分块再次采用分块算法得到至少一个数据分组。该实施方式包括:由上述划分出的至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据;以所述至少两个数据分块中任一个数据分块的哈希值的长度(每个数据分块的哈希值的长度均相同)为滑动步长,采用分块算法对该待分块哈希数据进行分块处理,得到至少一个哈希值分块。滑动步长是指在待分块哈希数据上滑动时最小的滑动距离,使用分块算法获得的哈希值分块可以通过一次或多次滑动等到。由于分算算法使用的滑动步长是以哈希值的长度为单位的,所以哈希值分块都是由一个或多个完整的哈希值构成的。如果分块算法中得到一个哈希值分块的滑动距离是多个滑动步长(即经过多次滑动),则该哈希值分块就由多个哈希值构成;如果分块算法中得到一个哈希值分块的滑动距离是一个滑动步长(即经过一次滑动),则该哈希值分块就由一个哈希值构成。在得到哈希值分块后,将属于同一哈希值分块的哈希值对应的数据分块作为一个数据分组,这样就得到了至少一个数据分组,并且,采用这样的分组方式,使得每个数据分组的结束位置就是一个分块的结束位置,分组的划分更准确。其中,采用分块算法对待分块哈希数据进行分块处理的过程与现有分块算法的过程相类似,不再赘述。由上述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据的过程包括:计算所述至少两个数据分块中每个数据分块的哈希值,将这些哈希值连接在一起构成待分块哈希数据。其中,每个数据分组中的数据分块是连续的,即每个数据分组由连续的数据分块构成。其中,各数据分组所包含的数据分块个数可以相同,也可以不相同。并且,数据分组所包含的数据分块个数可根据实际应用而定,本发明实施例对其具体值也不做限定。经过上述分组处理后,可以基于数据分组进行重复块检索有利于减少进行重复块检索的次数,减少与磁盘的交互,有利于提高重复块检索效率。步骤103、针对上述至少一个数据分组中的第一数据分组,对第一数据分组内的数据分块进行相似性哈希运算(similarly hash,或simhash),获取第一数据分组的哈希值,获取哈希值存储表中与第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,如果第一数据分组的哈希值与第一哈希值的相似度大于或等于预设的第二相似度阈值,对第一数据分组内的数据分块进行重复块检索。其中,由于对每个数据分组的处理都是相同的,所以本实施例以其中任意一个数据分组为例进行说明,为便于区分将其记为第一数据分组,也就是说,第一数据分组可以是上述获得的至少一个数据分组中的任意一个数据分组。哈希值存储表中存储有当前已经存储在数据存储空间中的第二数据分组的哈希值和第二数据分组的对应关系。为便于区分和描述,将当前已经存储在数据存储空间中的数据分组记为第二数据分组。其中,哈希值存储表中存储的第二数据分组的哈希值的计算方法与本实施例中第一数据分组的哈希值的计算方法相同,即第二数据分组的哈希值也是对第二数据分组内的数据分块进行相似性哈希运算获得的,另外这些哈希值对应的数据块彼此之间不存在重复,即第二数据分组中的数据分块被判定为不是重复块。数据存储空间是指用于存储数据分块的存储空间,可以是硬盘、磁盘等。可选的,由于哈希值存储表中存储的是已经存储在数据存储空间中的数据分组的哈希值,又因为本实施例的数据分组是否数据分块构成的,数据分组的数量不大于数据分块的数量,这样在数据分组的数量小于数据分块的数量的情况下,与存储每个数据分块的哈希表相比,本实施例的哈希值存储表就会小很多,所以可以存储在内存中,这样有利于提高查询哈希值存储表的效率,有利于进一步提高重复块检索的效率。其中,哈希值存储表并不限于存储在内存中,还可以存储在磁盘或其他存储设备上,但优选存储在内存中。本实施例的哈希值存储表在实现方式上可以采用稀疏哈希表,但不限于此。重复数据检索设备在获取到数据分组之后,对每个数据分组会进行相同的处理,本实施例以第一数据分组为例,则重复数据检索设备对第一数据分组进行以下处理:首先,对第一数据分组内的数据分块进行相似性哈希运算,获取第一数据分组的哈希值。相似性哈希的原理是两个数据分块的相似度越高,对其计算的哈希值的相似度也会越大,反之亦然。相似性哈希运算是能够使相似度越高的数据分块的哈希值的相似度越高的运算方法。例如,一种对第一数据分组进行相似性哈希运算的方法包括:对第一数据分组内的每个数据分块进行哈希运算,获取第一数据分组内每个数据分块的哈希值;将第一数据分组内每个数据分块的哈希值以二进制方式表示,对所述以二进制方式表示的哈希值中的每一个位进行转换,具体实现时可以将值为O的二进制位替换为-1,值为I的二进制位保持不变,然后将转换后的哈希值累加,具体实现时可以将所述每一个转换后的哈希值的对应位相加,将相加之和大于O的位映射为1,将相加之和小于或等于O的位映射为0,由此获得的二进制数值作为该第一数据分组的哈希值。结合图2对相似性哈希运算的优选实施过程进行说明。如图2所示,第一数据分组包括η个数据分块,分别为第一数据分块-第η数据分块,对每个数据分块进行哈希运算获得二进制形式的哈希值,图2示出了第一数据分块、第二数据分块和第η数据分块的二进制形式的哈希值分别为100110、110000和001001,将每个数据分块的二进制形式的哈希值中的O替换为-1,上述第一数据分块、第二数据分块和第η数据分块的替换后的二进制形式的哈希值分别为1-1-111-1、11-1-1-1-1和-1-11-1-11,依次将η个数据分块的替换后的哈希值中的相应位相加,最终得到13,18,-22,-5,-2,5这一结果,将该结果中大于O的数值映射为I,小于或等于O的数值映射为0,得到二进制的110001,该二进制形式的110001即为上述第一数据分组的哈希值。除了上述方法完成本实施例涉及的对第一数据分组内的数据分块进行的一种相似性哈希运算之外,还可以采用另一种相似性哈希运算,例如感知哈希算法(Perceptualhash algorithm),来完成本实施例涉及的对第一数据分组内的数据分块进行的相似性哈希运算。感知哈希运算的原理是对每张图片生成一个"指纹"(英文为fingerprint)字符串,然后比较不同图片的指纹,比较结果的相似度越高,说明图片的相似度越高;而将其应用到本实施例提供的重复数据检索方法中,其原理是对每个数据分组计算一个哈希值,然后比较不同数据分组的哈希值,如果两个哈希值的相似度越高,就说明两个数据分组中可能发生重复的数据块就越多(即两个数据分组的相似度就越大)。本实施例通过引入相似性哈希运算,充分利用哈希值相似度越高,对应数据分组的相似度就越高这一特性,通过将计算出的数据分组的哈希值与已经存在的数据分组的哈希值进行比较就能够在一定程度上体现该数据分组内各数据分块与已经存储在数据存储空间中的数据分块发生重复的可能性,如果计算出的数据分组的哈希值与已经存在的数据分组的哈希值的相似度越高,说明该数据分组内数据分块发生重复的可能性就越大,此时若基于数据分组的哈希值确定该数据分组需要进行重复块检索,说明该数据分组内的数据分块在很大程度是重复块,这时候进行重复块检索就提高了重复块检索的性能。下面通过一种比较的方式说明本实施例的方法能够提高重复块检索的性能。接着,当重复数据检索设备计算出第一数据分组的哈希值后,将该第一数据分组的哈希值与哈希值存储表中的各哈希值进行比较,获取与该第一数据分组的哈希值相似度大于或等于预设第一相似度阈值的哈希值,记为第一哈希值。可选的,在具体实现时,如果大于或等于预设第一相似度阈值的哈希值有多个,则可以获取所述多个哈希值,其中每个哈希都属于第一哈希值;如果大于或等于预设第一相似度阈值的哈希值有一个,则将该哈希值作为第一哈希值,即获取的第一哈希值为一个。优选的,可以获取哈希值存储表中与该第一数据分组的哈希值相似度最大的哈希值作为第一哈希值,但不限于此。这里获取与该第一数据分组的哈希值相似度大于或等于预设第一相似度阈值的哈希值的实施方式可以是:重复数据检索设备获取哈希值存储表中与第一数据分组的哈希值对应位置上重复位的个数大于或等于预设数量的哈希值作为第一哈希值。在该实施方式中,两个哈希值对应位置上重复位的多少表征了两个哈希值的相似度;如果两个哈希值对应位置上重复位越多,说明这两个哈希值的相似度越高;反之亦然。这里的预设数量相当于上述预设第一相似度阈值。进一步,重复数据检索设备获取哈希值存储表中与第一数据分组的哈希值对应位置上重复位大于或等于预设数量的哈希值作为第一哈希值的一种实施方式包括:重复数据检索设备获取第一数据分组的哈希值与哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的哈希值存储表中的哈希值作为第一哈希值。其中,第一数据分组的哈希值与哈希值存储表中各哈希值之间的汉明距离在一定程度上体现了第一数据分组与哈希值存储表中各哈希值对应的第二数据分组之间的重复程度。汉明距离越小(即重复位数越多)表明第一数据分组与对应的第二数据分组之间的重复程度越高。另夕卜,除了使用汉明距离外,还可以使用能够表示两个哈希值的相似度的其他参数。这里的预设汉明距离阈值相当于上述预设数量。接着,重复数据检索设备将上述第一数据分组的哈希值与第一哈希值的相似度与预设第二相似度阈值进行比较,用来判断第一数据分组是否需要进行重复块检索。如果第一数据分组的哈希值与第一哈希值的相似度大于或等于该第二相似度阈值,说明第一数据分组与第一哈希值对应的第二数据分组之间的重复度非常高,可以判定两者之间存在较多重复块,因此,需要对第一数据分组进行重复块检索。可选的,如果使用两个哈希值对应位置上重复位的多少来表征两个哈希值的相似度,则这里的第二相似度阈值可以是重复位数阈值。相应的,重复数据检索设备将上述第一数据分组的哈希值与第一哈希值的相似度与预设第二相似度阈值进行比较可以是:重复数据检索设备判断第一数据分组的哈希值与第一哈希值对应位置上重复位数是否大于或等于预设重复位数阈值。在此说明,第二相似度阈值大于或等于第一相似度阈值。可选的,数据存储空间包括多个存储区域,每个存储区域有一个编号,按照编号由小到大的顺序依次使用各存储区域。相应地,哈希值存储表中除了存储有第二数据分组的哈希值与第二数据分组的对应关系,从对应关系中可以了解到与第二数据分组的哈希值对应的第二数据分组所在存储区域的编号的对应关系。基于此,上述对第一数据分组进行重复块检索的过程可以是:重复数据检索设备从哈希值存储表中获取第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中,这里的η是大于等于O的整数;然后将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。可选的,在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值也加载到内存中的。基于此,上述将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索的过程可以是:将第一数据分组中与编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。这里将第一数据分组中与编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索的过程可以是:先将第一数据分组中每个数据分块的哈希值分别与编号η和编号(η+1)对应的存储区域中的哈希值进行比较,得到第一数据分组中与编号η和编号(η+1)对应的存储区域中相同的哈希值,为便于描述,将这里得到的相同的哈希值即为第二哈希值,然后将第二哈希值在该数据分组中对应的数据分块和第二哈希值在编号η和编号(η+1)对应存储区域中对应的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。其中,由于各存储区域是按照编号由小到大的顺序依次使用的,所以编号(η+1)对应存储区域是编号η对应存储区域的下一个存储区域,也就是说,当编号η对应存储区域被写满后,再继续往编号(η+1)对应存储区域中写入数据。因为接下来收到的数据很有可能就在第一哈希值对应的存储区域的下一个存储区域(即编号为(η+1)的存储区域)内有重复数据,所以一次性将第一哈希值对应的存储区域(即编号为η的存储区域)和第一哈希值对应的存储区域的下一个存储区域的内容都加在到内存中,有利于提高后续重复块检索过程的效率,进而有利于从整体上提高重复块检索的效率。在此说明,本实施例采用不同存储区域进行数据分块和数据分块的哈希值的存储,但不限于此。较为优选的分区存储方式为:按照接收数据分块的顺序,集中存储到一个存储区域内,当该存储区域满后,将接收到的数据分块存储到下一个存储区域中。其中,每个存储区域是一段存储空间,每个存储区域有一定的大小,例如可以是但不限于64ΜΒ。在每个存储区域中同时存储有数据分块和数据分块的哈希值,具体存储方式不作限定。存储区域的一种优选存储方式为:存储区域内分为两部分,一部分为数据段区域,该数据段区域存储的是数据分块;另一部分是元数据区域,该元数据区域存储的是和所述数据段区域中的数据分块对应的元数据,这里的元数据包括数据分块的哈希值、数据分块的长度、数据段的长度、以及一些校验码等信息,在本发明重复数据查找的过程中,主要是利用元数据中的数据分块的哈希值。可选的,如果上述步骤103中通过进行相似性哈希运算获得的第一数据分组的哈希值与第一哈希值的相似度小于预设的第二相似度阈值,说明第一数据分组与第一哈希值对应的第二数据分组之间的重复度不是很高,可以判定两者之间不存在重复块或重复块数量非常少,例如可能第一数据分组中仅存在一两个数据分块与该第一哈希值对应的第二数据分组中的数据分块存在重复,为了提高整体性能,可以将第一数据分组中的数据分块作为新数据进行处理,即不进行重复块检索而是直接存储到数据存储空间中。进一步,如果数据存储空间包括多个存储区域,则重复数据检索设备可以直接将第一数据分组内的数据分块以及数据分块的哈希值存储到当前使用的存储区域中。由上可见,本实施例提供的重复数据检索方法,对接收到的数据先分块,再分组,对数据分组内的数据分块进行相似性哈希运算,获取数据分组的哈希值,然后获取数据分组的哈希值与哈希值存储表中存储的已经存储到数据存储空间中的各数据分组的哈希值中相似度大于或等于预设第一相似度阈值的第一哈希值,判断数据分组的哈希值与第一哈希值的相似度是否大于或等于预设的第二相似度阈值,如果大于,说明该数据分组中的数据分块在很大程度上是重复块,然后对其进行重复块检索,由于查询哈希值存储表中存储的是已经存储到数据存储空间中的数据分组的哈希值和数据分组的对应关系,而数据分组的数量相对较少,所以查询哈希值存储表的效率较高,并且基于数据分组进行重复块检索减少了重复块检索的次数,即减少了与磁盘交互的次数,有利于提高重复块查询效率,从而提高了重复数据删除技术的整体性能。图3为本发明一实施例提供的重复数据检索设备的结构示意图。本实施例的重复数据检索设备在具体实现形态上可以是各种具有计算能力和存储能力的设备,例如可以是数据备份环境中的服务器、计算机等,还可以是广域网数据传输场景中的终端、网关、基站等等,本发明具体实施例并不对重复数据检索设备的具体实现做限定。如图3所示,本实施例的设备包括:分块获取模块31、分组获取模块32、哈希计算模块33和重复检索模块34。其中,分块获取模块31,用于对接收到的数据进行分块处理,获取至少两个数据分块。分组获取模块32,与分块获取模块31连接,用于对分块获取模块31获取的至少两个数据分块进行分组,获取至少一个数据分组,每个数据分组包括至少一个数据分块。哈希计算模块33,与分组获取模块32连接,用于针对分组获取模块32获取的至少一个数据分组中的第一数据分组,对该第一数据分组内的数据分块进行相似性哈希运算,获取该第一数据分组的哈希值,获取哈希值存储表中与该第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,该哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和第二数据分组的对应关系,所述第二数据分组的哈希值是根据第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是至少一个数据分组中的任意一个数据分组。重复检索模块34,与哈希计算模块33连接,用于在第一数据分组的哈希值与哈希计算模块33获取的第一哈希值的相似度大于或等于预设第二相似度阈值时,对第一数据分组内的数据分块进行重复块检索。在一可选实施方式中,如图4所示,本实施例的重复数据检索设备还包括:存储模块35。存储模块35,与哈希计算模块33连接,用于在第一数据分组的哈希值与哈希计算模块33获取的第一哈希值的相似度小于第二相似度阈值时,将第一数据分组内的数据分块和第一数据分组内的数据分块的哈希值存储到数据存储空间中,并将第一数据分组的哈希值与第一数据分组的对应关系存储到哈希值存储表中。在此说明,上述哈希计算模块33、重复检索模块34以及存储模块35对每个数据分组均执行相同的动作。在一可选实施方式中,分组获取模块32具体可用于由分块获取模块31获取到的至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以至少两个数据分块中每个数据分块的哈希值的长度为滑动步长,采用分块算法对上述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个数据分组,从而得到至少一个数据分组。
在一可选实施方式中,哈希计算模块33用于对上述第一数据分组内的数据分块进行相似性哈希运算,获取上述第一数据分组的哈希值包括:哈希计算模块33具体用于对上述第一数据分组内每个数据分块进行哈希运算,获取第一数据分组中每个数据分块的哈希值,将第一数据分组内每个数据分块的哈希值中的O替换为-1,将第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为I,将相加小于或等于O的位映射为0,获得的二进制数值作为第一数据分组的哈希值。在一可选实施方式中,上述数据存储空间包括多个存储区域;相应地,哈希值存储表还存储有第二数据分组的哈希值和第二数据分组所在存储区域的编号的对应关系。基于此,重复检索模块34具体可用于从哈希值存储表中获取第一哈希值对应存储区域的编号η,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。在一可选实施方式中,重复检索模块34还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中。基于此,重复检索模块34具体用于将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索包括:重复检索模块34具体用于将第一数据分组中与编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。在一可选实施方式中,哈希计算模块33用于获取哈希值存储表中与第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括:哈希计算模块33具体可用于获取哈希值存储表中与第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为第一哈希值。哈希计算模块33具体用于获取哈希值存储表中与第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为第一哈希值包括:哈希计算模块33具体可用于获取上述数据分组的哈希值与哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的哈希值存储表中的哈希值作为第一哈希值。本发明实施例提供的重复数据检索设备的各功能模块可用于执行图1所示重复数据检索方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。本实施例提供的重复数据检索设备,对接收到的数据先分块,再分组,对数据分组内的数据分块进行相似性哈希运算,获取数据分组的哈希值,然后获取数据分组的哈希值与哈希值存储表中存储的已经存储到数据存储空间中的各数据分组的哈希值中相似度大于或等于预设第一相似度阈值的第一哈希值,判断数据分组的哈希值与第一哈希值的相似度是否大于或等于预设的第二相似度阈值,如果大于,说明该数据分组中的数据分块在很大程度上是重复块,然后对其进行重复块检索,由于查询哈希值存储表中存储的是已经存储到数据存储空间中的数据分组的哈希值和数据分组的对应关系,而数据分组的数量相对较少,所以查询哈希值存储表的效率较高,并且基于数据分组进行重复块检索减少了重复块检索的次数,即减少了与磁盘交互的次数,有利于提高重复块查询效率,从而提高了重复数据删除技术的整体性能。
图5为本发明又一实施例提供的重复数据检索设备的结构示意图。本实施例的重复数据检索设备在具体实现形态上可以是各种具有计算能力和存储能力的设备,例如可以是数据备份环境中的服务器、计算机等,还可以是广域网数据传输场景中的终端、网关、基站等等,本发明具体实施例并不对重复数据检索设备的具体实现做限定。如图5所示,本实施例的重复数据检索设备包括:处理器51、通信接口 (Communications Interface) 53、存储器52和总线;处理器51、存储器52和通信接口 53通过总线连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:通信接口 53,用于接收数据。处理器51,用于执行程序。具体地,该程序可以包括程序代码,所述程序代码包括计算机操作指令。处理器51可能是一个中央处理器(CPU),者是特定集成电路(ApplicationSpecific Integrated Circuit,以下简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。存储器52,用于存储程序。存储器52可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。上述程序具体可以用于:对通信接口 53接收到的数据进行分块处理,获取至少两个数据分块;对所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块;针对至少一个数据分组中的第一数据分组,对第一数据分组内的数据分块进行相似性哈希运算,获取第一数据分组的哈希值,获取哈希值存储表中与第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和第二数据分组的对应关系,所述第二数据分组的哈希值是根据第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组;如果第一数据分组的哈希值与第一哈希值的相似度大于或等于预设的第二相似度阈值,对第一数据分组内的数据分块进行重复块检索。在一可选实施方式中,存储器52存储的程序还用于在第一数据分组的哈希值与第一哈希值的相似度小于述第二相似度阈值时,将第一数据分组内的数据分块和第一数据分组内的数据分块的哈希值存储到数据存储空间中,并将第一数据分组的哈希值与第一数据分组的对应关系存储到哈希值存储表中。在一可选实施方式中,存储器52存储的程序用于对所述至少两个数据分块进行分组,得到至少一个数据分组包括:该程序具体用于由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以任一个数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。
在一可选实施方式中,存储器52存储的程序用于对第一数据分组内的数据分块进行相似性哈希运算,获取第一数据分组的哈希值包括:该程序具体用于对第一数据分组内每个数据分块进行哈希运算,获取第一数据分组内每个数据分块的哈希值,将第一数据分组内每个数据分块的哈希值中的O替换为-1,将第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为1,将相加小于或等于O的位映射为0,获得的二进制数值作为第一数据分组的哈希值。在一可选实施方式中,数据存储空间包括多个存储区域;所述哈希值存储表还存储有第二数据分组的哈希值和第二数据分组所在存储区域的编号的对应关系。基于此,存储器52存储的程序用于对第一数据分组内的数据分块进行重复块检索包括:该程序具体用于从哈希值存储表中获取第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。可选的,存储器52存储的程序还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中。基于此,该程序具体用于将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索包括:该程序具体用于将第一数据分组中与编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。在一可选实施方式中,存储器52存储的程序用于获取哈希值存储表中与第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括:该程序具体用于获取哈希值存储表中与第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。在一可选实施方式中,存储器52存储的程序具体用于获取哈希值存储表中与第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为第一哈希值包括:该程序具体用于获取第一数据分组的哈希值与哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的哈希值存储表中的哈希值作为第一哈希值。本发明实施例提供的重复数据检索设备可用于执行图1所示重复数据检索方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。本实施例提供的重复数据检索设备,对接收到的数据先分块,再分组,对数据分组内的数据分块进行相似性哈希运算,获取数据分组的哈希值,然后获取数据分组的哈希值与哈希值存储表中存储的已经存储到数据存储空间中的各数据分组的哈希值中相似度大于或等于预设第一相似度阈值的第一哈希值,判断数据分组的哈希值与第一哈希值的相似度是否大于或等于预设的第二相似度阈值,如果大于,说明该数据分组中的数据分块在很大程度上是重复块,然后对其进行重复块检索,由于查询哈希值存储表中存储的是已经存储到数据存储空间中的数据分组的哈希值和数据分组的对应关系,而数据分组的数量相对较少,所以查询哈希值存储表的效率较高,并且基于数据分组进行重复块检索减少了重复块检索的次数,即减少了与磁盘交互的次数,有利于提高重复块查询效率,从而提高了重复数据删除技术的整体性能。本发明一实施例提供一种计算机程序产品,该计算机程序产品包括计算机可读存储介质,用于存储程序。如图6所示,该程序包括:分块获取单元81,用于对接收到的数据进行分块处理,获取至少两个数据分块。分组获取单元82,与分块获取单元81连接,用于对分块获取单元81获取的至少两个数据分块进行分组,获取至少一个数据分组,每个数据分组包括至少一个数据分块。哈希计算单元83,与分组获取单元82连接,用于针对分组获取单元82获取的至少一个数据分组中的第一数据分组,对第一数据分组内的数据分块进行相似性哈希运算,获取第一数据分组的哈希值,获取哈希值存储表中与第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和第二数据分组的对应关系,所述第二数据分组的哈希值是根据第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组。重复检索单元84,与哈希计算单元83连接,用于在第一数据分组的哈希值与第一哈希值的相似度大于或等于预设的第二相似度阈值时,对第一数据分组内的数据分块进行重复块检索。在一可选实施方式中,如图6所示,本实施例的重复数据检索设备还包括:存储单元85。存储单元85,与哈希计算单元83连接,用于在第一数据分组的哈希值与哈希计算单元83获取的第一哈希值的相似度小于第二相似度阈值时,将第一数据分组内的数据分块和第一数据分组内的数据分块的哈希值存储到数据存储空间中,并将第一数据分组的哈希值与第一数据分组的对应关系存储到哈希值存储表中。在此说明,上述哈希计算单元83、重复检索单元84以及存储单元85对每个数据分组均执行相同的动作。在一可选实施方式中,分组获取单元82具体可用于由分块获取单元81获取到的至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以至少两个数据分块中每个数据分块的哈希值的长度为滑动步长,采用分块算法对上述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个数据分组,从而得到至少一个数据分组。在一可选实施方式中,哈希计算单元83用于对上述第一数据分组内的数据分块进行相似性哈希运算,获取上述第一数据分组的哈希值包括:哈希计算单元83具体用于对上述第一数据分组内每个数据分块进行哈希运算,获取第一数据分组中每个数据分块的哈希值,将第一数据分组内每个数据分块的哈希值中的O替换为-1,将第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为I,将相加小于或等于O的位映射为0,获得的二进制数值作为第一数据分组的哈希值。在一可选实施方式中,上述数据存储空间包括多个存储区域;相应地,哈希值存储表还存储有第二数据分组的哈希值和第二数据分组所在存储区域的编号的对应关系。基于此,重复检索单元84具体可用于从哈希值存储表中获取第一哈希值对应存储区域的编号η,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。在一可选实施方式中,重复检索单元84还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中。基于此,重复检索单元84具体用于将第一数据分组中与编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索包括:重复检索单元84具体用于将第一数据分组中与编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对第一数据分组内的数据分块的重复块检索。在一可选实施方式中,哈希计算单元83用于获取哈希值存储表中与第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括:哈希计算单元83具体可用于获取哈希值存储表中与第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为第一哈希值。哈希计算单元83具体用于获取哈希值存储表中与第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为第一哈希值包括:哈希计算单元83具体可用于获取上述数据分组的哈希值与哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的哈希值存储表中的哈希值作为第一哈希值。本发明实施例提供的重复数据检索设备可用于执行图1所示重复数据检索方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。本实施例提供的重复数据检索设备,对接收到的数据先分块,再分组,对数据分组内的数据分块进行相似性哈希运算,获取数据分组的哈希值,然后获取数据分组的哈希值与哈希值存储表中存储的已经存储到数据存储空间中的各数据分组的哈希值中相似度大于或等于预设第一相似度阈值的第一哈希值,判断数据分组的哈希值与第一哈希值的相似度是否大于或等于预设的第二相似度阈值,如果大于,说明该数据分组中的数据分块在很大程度上是重复块,然后对其进行重复块检索,由于查询哈希值存储表中存储的是已经存储到数据存储空间中的数据分组的哈希值和数据分组的对应关系,而数据分组的数量相对较少,所以查询哈希值存储表的效率较高,并且基于数据分组进行重复块检索减少了重复块检索的次数,即减少了与磁盘交互的次数,有利于提高重复块查询效率,从而提高了重复数据删除技术的整体性能。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种重复数据检索方法,其特征在于,包括: 对接收到的数据进行分块处理,获取至少两个数据分块; 对所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块; 针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组; 如果所述第一数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值,对所述第一数据分组内的数据分块进行重复块检索。
2.根据权利要求1所述的重复数据检索方法,其特征在于,还包括: 如果所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。
3.根据权利要求1或2所述的重复数据检索方法,其特征在于,对所述至少两个数据分块进行分组,得到至少一个数据分组包括: 由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据;以任一个所述数据分块的哈希值的长 为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块; 将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。
4.根据权利要求1-3任一项所述的重复数据检索方法,其特征在于,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括: 对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值; 将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为I,将相加小于或等于O的位映射为O,获得的二进制数值作为所述第一数据分组的哈希值。
5.根据权利要求1-4任一项所述的重复数据检索方法,其特征在于,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系; 对所述第一数据分组内的数据分块进行重复块检索包括: 从所述哈希值存储表中获取所述第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数; 将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
6.根据权利要求5所述的重复数据检索方法,其特征在于,所述方法还包括:在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中; 所述将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括: 将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
7.根据权利要求1-6任一项所述的重复数据检索方法,其特征在于,所述获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括: 获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。
8.根据权利要求7所述的重复数据检索方法,其特征在于,所述获取哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括: 获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。
9.一种重复数据检索设备,其特征在于,包括: 分块获取模块,用于对接收到的数据进行分块处理,获取至少两个数据分块; 分组获取模块, 用于对所述分块获取模块获取到的所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块; 哈希计算模块,用于针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组; 重复检索模块,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值时,对所述第一数据分组内的数据分块进行重复块检索。
10.根据权利要求9所述的重复数据检索设备,其特征在于,还包括: 存储模块,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值时,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。
11.根据权利要求9或10所述的重复数据检索设备,其特征在于,所述分组获取模块具体用于由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以任一个所述数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。
12.根据权利要求9-11任一项所述的重复数据检索设备,其特征在于,所述哈希计算模块用于对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括: 所述哈希计算模块具体用于对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值,将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为1,将相加小于或等于O的位映射为O,获得的二进制数值作为所述第一数据分组的哈希值。
13.根据权利要求9-12任一项所述的重复数据检索设备,其特征在于,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系; 所述重复检索模块具体用于从所述哈希值存储表中获取所述第一哈希值对应存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
14.根据权利要 求9-13任一项所述的重复数据检索设备,其特征在于,所述重复检索模块还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中; 所述重复检索模块具体用于将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括: 所述重复检索模块具体用于将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
15.根据权利要求9-14任一项所述的重复数据检索设备,其特征在于,所述哈希计算模块用于获取哈希值存储表中与所述第一数据分组哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括: 所述哈希计算模块具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。
16.根据权利要求15所述的重复数据检索设备,其特征在于,所述哈希计算模块具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括: 所述哈希值计算模块具体用于获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。
17.一种重复数据检索设备,其特征在于,包括:处理器、通信接口、存储器和总线,所述处理器、所述通信接口、所述存储器通过所述总线完成相互间的通信; 所述通信接口,用于接收数据;所述处理器,用于执行程序; 所述存储器,用于存放所述程序; 其中,所述程序用于对所述通信接口接收到的所述数据进行分块处理,获取至少两个数据分块;对所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块;针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组;如果所述第一数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值,对所述第一数据分组内的数据分块进行重复块检索。
18.根据权利要求17所述的重复数据检索设备,其特征在于,所述程序还用于在所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值时,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。
19.根据权利要求17或18所述的重复数据检索设备,其特征在于,所述程序用于对所述至少两个数据分块进行分组,得到至少一个数据分组包括: 所述程序具体用于由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以任一个所述数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。
20.根据权利要求17-19任一项所述的重复数据检索设备,其特征在于,所述程序用于对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括: 所述程序具体用于对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值,将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为1,将相加小于或等于O的位映射为0,获得的二进制数值作为所述第一数据分组的哈希值。
21.根据权利要求17-20任一项所述的重复数据检索设备,其特征在于,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系; 所述程序用于对所述第一数据分组内的数据分块进行重复块检索包括: 所述程序具体用于从所述哈希值存储表中获取所述第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
22.根据权利要求21所述的重复数据检索设备,其特征在于,所述程序还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中; 所述程序具体用于将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括: 所述程序具体用于将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
23.根据权利要求17-22任一项所述的重复数据检索设备,其特征在于,所述程序用于获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括: 所述程序具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。
24.根据权利要求23所述的重复数据检索设备,其特征在于,所述程序具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括: 所述程序具体用于获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。
25.一种计算机程序产品,其特征在于,包括计算机可读存储介质,用于存储程序,所述程序包括: 分块获取单元,用于对接收到的数据进行分块处理,获取至少两个数据分块; 分组获取单元,用于对所述分块获取单元获取到的所述至少两个数据分块进行分组,得到至少一个数据分组,每个数据分组包括至少一个数据分块; 哈希计算单元,用于针对所述至少一个数据分组中的第一数据分组,对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值,获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值,所述哈希值存储表中存储有已经存储在数据存储空间中的第二数据分组的哈希值和所述第二数据分组的对应关系,所述第二数据分组的哈希值是根据所述第二数据分组内的数据分块进行相似性哈希运算获得的;所述第一数据分组是所述至少一个数据分组中的任意一个数据分组; 重复检索单元,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度大于或等于预设的第二相似度阈值时,对所述第一数据分组内的数据分块进行重复块检索。
26.根据权利要求25所述的计算机程序产品,其特征在于,所述程序还包括: 存储单元,用于在所述第一数据分组的哈希值与所述第一哈希值的相似度小于所述第二相似度阈值时,将所述第一数据分组内的数据分块和所述第一数据分组内的数据分块的哈希值存储到所述数据存储空间中,并将所述第一数据分组的哈希值与所述第一数据分组的对应关系存储到所述哈希值存储表中。
27.根据权利要求25或26所述的计算机程序产品,其特征在于,所述分组获取单元具体用于由所述至少两个数据分块中每个数据分块的哈希值构成待分块哈希数据,以任一个所述数据分块的哈希值的长度为滑动步长,采用分块算法对所述待分块哈希数据进行分块处理,得到至少一个哈希值分块,将属于同一哈希值分块的哈希值对应的数据分块作为一个所述数据分组。
28.根据权利要求25-27任一项所述的计算机程序产品,其特征在于,所述哈希计算单元用于对所述第一数据分组内的数据分块进行相似性哈希运算,获取所述第一数据分组的哈希值包括: 所述哈希计算单元具体用于对所述第一数据分组内每个数据分块进行哈希运算,获取所述第一数据分组内每个数据分块的哈希值,将所述第一数据分组内每个数据分块的哈希值中的O替换为-1,将所述第一数据分组内所有数据分块的哈希值的对应位相加,将相加大于O的位映射为I,将相加小于或等于O的位映射为O,获得的二进制数值作为所述第一数据分组的哈希值。
29.根据权利要求25-28任一项所述的计算机程序产品,其特征在于,所述数据存储空间包括多个存储区域;所述哈希值存储表还存储有所述第二数据分组的哈希值和所述第二数据分组所在存储区域的编号的对应关系; 所述重复检索单元具体用于从所述哈希值存储表中获取所述第一哈希值对应的存储区域的编号n,将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中;其中,η为大于等于O的整数;将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
30.根据权利要求25-29任一项所述的计算机程序产品,其特征在于,所述重复检索单元还用于在将编号η对应存储区域中的数据分块和数据分块的哈希值加载到内存中的同时,将编号(η+1)对应存储区域中的数据分块和数据分块的哈希值加载到内存中; 所述重复检索单元具体用于将所述第一数据分组中与所述编号η对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索包括: 所述重复检索单元具体用于将所述第一数据分组中与所述编号η和编号(η+1)对应存储区域中哈希值相同的数据分块进行比较,以完成对所述第一数据分组内的数据分块的重复块检索。
31.根据权利要求25-30任一项所述的计算机程序产品,其特征在于,所述哈希计算单元用于获取哈希值存储表中与所述第一数据分组的哈希值相似度大于或等于预设的第一相似度阈值的第一哈希值包括: 所述哈希计算单元具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值。
32.根据权利要求32所述的计算机程序产品,其特征在于,所述哈希计算单元具体用于获取所述哈希值存储表中与所述第一数据分组的哈希值对应位置上的重复位的个数大于或等于预设数量的哈希值作为所述第一哈希值包括: 所述哈希值计算单元具体用于获取所述第一数据分组的哈希值与所述哈希值存储表中每个哈希值之间的汉明距离,将汉明距离小于或等于预设汉明距离阈值的所述哈希值存储表中的哈希值作为所述第一哈希值。
全文摘要
本发明实施例提供一种重复数据检索方法及设备。方法包括对接收到的数据进行分块处理获取至少两个数据分块;对至少两个数据分块进行分组得到至少一个数据分组;针对每个数据分组,对该数据分组内的数据分块进行相似性哈希运算获取该数据分组的哈希值,获取哈希值存储表中与该数据分组的哈希值相似度大于或等于第一相似度阈值的第一哈希值,如果该数据分组的哈希值与第一哈希值的相似度大于或等于预设第二相似度阈值,对该数据分组内的数据分块进行重复块检索。本发明技术方案提高了重复块查询效率,提高重复数据删除技术的整体性能。
文档编号G06F17/30GK103189867SQ201280001989
公开日2013年7月3日 申请日期2012年10月30日 优先权日2012年10月30日
发明者覃强 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1