CN103930890B - 数据处理方法、装置及重删处理器 - Google Patents
数据处理方法、装置及重删处理器 Download PDFInfo
- Publication number
- CN103930890B CN103930890B CN201380002568.0A CN201380002568A CN103930890B CN 103930890 B CN103930890 B CN 103930890B CN 201380002568 A CN201380002568 A CN 201380002568A CN 103930890 B CN103930890 B CN 103930890B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- index value
- inquiry unit
- concordance list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/328—Management therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1756—De-duplication implemented within the file system, e.g. based on file segments based on delta files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Quality & Reliability (AREA)
Abstract
本发明实施例,通过对数据主要按照第一查询单位的数据对应的索引值来做索引,第一查询单位包括了多个最小数据块,通过从每个最小数据块中取出部分比特位来组成对应于第一查询单位的索引值,大大缩减索引匹配时间,提升了索引匹配效率,同时也使得大幅度减少索引对内存的占用称为可能。
Description
技术领域
本发明实施例涉及存储技术,尤其涉及一种数据处理方法、装置及重删处理器。
背景技术
重复数据删除也称为智能压缩或单一实例存储,是一种可自动搜索重复数据,将相同数据只保留唯一的一个副本,并使用指向单一副本的指针替换掉其他重复副本,以达到消除冗余数据、降低存储容量需求的存储技术。
在现有技术中,重复数据删除方法可以采用定长分块的算法。
采用指纹算法计算滑动窗口内的数据对象的指纹,如果满足预定条件,则将该滑动窗口的开始位置和结束位置作为数据块的边界,通过不断滑动窗口并计算指纹实现对数据对象的分块。对于每一次划分得到的数据块,需要先判断该数据块是否大于长度下限值,若大于该长度下限值,再计算该数据块的指纹值,例如Hash值,与存储设备中存储的指纹值比较,如果该数据块的指纹值与存储设备中存储的某一指纹值相同,则说明该数据块是重复数据块,存储设备中已经存储了与该数据块相同的数据块,因此,该数据对象可以引用存储设备中已存储的数据块,如果存储设备中不存在与该数据块的指纹值相同的指纹值,则可以将该数据块及其指纹值存储到存储设备中,以备后续的重复数据判断。
但是,发明人发现,现有技术重复数据删除方法中,索引占用大量内存,无法适用数据量逐渐增大的存储需求。
发明内容
本发明实施例提供一种数据处理方法、装置及重删处理器,降低内存占用,满足数据量不断增大的需求。
第一方面,本发明实施例提供一种数据处理方法,所述方法应用于数据处理系统,所述数据处理系统包括重删处理器,所述方法包括:
所述重删处理器将滑动窗口所覆盖的需要重复数据查找的数据作为第一查询单位,所述第一查询单位中包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;对所述第一查询单位中的数据进行索引构造和重复数据查找;
所述索引构造,包括:从所述第一查询单位中每个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的一个预设长度的索引值;
所述重复数据查找,包括:在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值,若在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则查找所述第一查询单位中的数据是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据。
结合第一方面,本发明实施例提供了第一种可能的实施方式,所述方法还包括:若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据完全重复:
将所述滑动窗口起始位置之前的数据,作为第二查询单位,所述之前是针对所述滑动窗口滑动的反方向而言,所述第二查询单位包括至少一个最小数据块,根据所述第二查询单位中的所述至少一个最小数据块构造一个所述预设长度的索引值,在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值;
若在所述索引表中查询到与所述第二查询单位对应索引值相同的第二索引值,则查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
结合第一方面的第一种可能方式,本发明实施例还提供了第二种可能方式,该方法还包括:
若在所述索引表中没有查询到与所述第二查询单位对应索引值相同的第二索引值,则将所述第二查询单位对应的索引值与所述第二查询单位中的数据的存储地址之间的对应关系插入到所述索引表中。
结合第一方面,本发明实施例提供了第三种可能方式,若所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,该方法还包括:
判断所述滑动窗口起始位置之前的数据大小是否达到所述第一查询单位的大小,所述之前是针对所述滑动窗口滑动的反方向而言,如果否,则以预设的步长滑动所述滑动窗口,将滑动后所述滑动窗口内的数据作为一个第一查询单位,执行所述构造索引的步骤和所述重复数据查找的步骤。
结合第一方面或者第一方面的第一种可能方式或第一方面的第二种可能方式,本发明实施例还提供了第四种可能方式,若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,该方法还包括:
判断所述滑动窗口起始位置之前的数据大小是否达到所述第一查询单位的大小,所述之前是针对所述滑动窗口滑动的反方向而言,如果否,则以预设的步长滑动所述滑动窗口,将滑动后所述滑动窗口内的数据作为第一查询单位,执行所述构造索引的步骤和所述重复数据查找的步骤。
结合第一方面的第四种可能方式,本发明实施例还提供了第五种可能方式,若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,在判断所述滑动窗口起始位置之前的数据的大小是否达到所述第一查询单位的大小之前,该方法还包括:
在所述索引表中查询与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,若所述索引表中没有与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,则将所述第一查询单位对应的索引值中的数值的位置顺序进行排列组合,判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到所述第三索引值,如果没有找到,则进入所述判断所述滑动窗口起始位置之前的数据是否达到所述第一查询单位的大小的步骤。
结合第一方面的第五种可能方式,本发明实施例提供了第六种可能的实施方式,若所述索引表中查询到与所述第一查询单位对应的第一索引值匹配度等于或高于预设的匹配度的第三索引值,则查找所述第一查询单位中的数据中是否有与所述第三索引值对应的数据存储地址指向的目标数据重复的数据。
结合第一方面的第六种可能方式,本发明实施例还提供了第七种可能方式,还包括:
获得重复数据查找结果,若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,则相对于所述第一索引值对应的数据存储地址指向的目标数据,对所述第一查询单位中的数据做delta压缩,对完成delta压缩后的数据进行存储,将所述第一查询单位对应的索引值和所述delta压缩后的数据存储地址的对应关系插入到索引表中。
第二方面,本发明实施例提供一种数据处理装置,包括:索引构造单元,用于索引构造,所述索引构造包括:将需要重复数据查询的数据中在滑动窗口所覆盖的数据作为一个第一查询单位,从所述第一查询单位中每个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的一个预设长度的索引值,其中,所述第一查询单位中包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;
索引匹配单元,用于在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值;
重复数据查找单元,用于若所述索引匹配单元在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则查找所述第一查询单位中的数据是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据。
结合第二方面,本发明实施例提供第一种实施方式,所述若重复数据查找单元得到所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据完全重复,则
所述索引构造单元,还用于将所述滑动窗口起始位置之前的数据,作为一个第二查询单位,所述之前是针对所述滑动窗口滑动的反方向而言,根据所述第二查询单位中的所述至少一个最小数据块构造一个所述预设长度的索引值,其中,所述第二查询单位包括至少一个最小数据块;
所述索引匹配单元,还用于在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值;
所述重复数据查找单元还用于,若所述索引匹配单元在所述索引表中查询到与所述第二查询单位对应索引值相同的第二索引值,则查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
结合第二方面的第一种可能方式,本发明实施例提供第二种可能方式,若所述索引匹配单元在所述索引表中没有查询到与所述第二查询单位对应索引值相同的第二索引值,则还包括:
第一存储单元,用于存储所述第二查询单位中的数据;
第一索引表更新单元,用于将第二查询单位的数据对应的索引值与所述第二查询单位中的数据的存储地址之间的对应关系插入到所述预先设置的索引表中。
结合第二方面,本发明实施例的数据处理装置还提供第三种可能方式,若所述重复数据查找单元查找到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,该装置还包括:
第一判断单元,用于在所述重复数据查找单元查找得到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复时,判断所述滑动窗口起始位置之前的数据,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小;
第一指令单元,用于在所述第一判断单元判断所述滑动窗口判断所述滑动窗口起始位置之前的数据未达到所述第一查询单位的大小的时候,以预设的步长滑动所述滑动窗口;
所述索引构造单元,还用于将滑动后所述滑动窗口内的数据作为一个第一查询单位,进行构造索引。
结合第一方面或者第一方面的第一种可能方式或者第一方面的第二种方式,本发明实施例的所述数据处理装置提供了第四种,若所述索引匹配单元在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,该装置还包括:
第二判断单元,用于在所述重复数据查找单元查找得到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复时,判断所述滑动窗口起始位置之前的数据,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小;
第二指令单元,用于在所述第二判断单元判断所述滑动窗口判断所述滑动窗口起始位置之前的数据大小未达到所述第一查询单位的大小的时候,以预设的步长滑动所述滑动窗口;
所述索引构造单元,还用于将滑动后所述滑动窗口内的数据作为一个第一查询单位,进行构造索引。
结合第二方面的第四种方式,本发明实施例还提供了第五种可能方式,所述索引匹配单元若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,还用于,在所述索引表中查询与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值;所述索引表中没有与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,则将所述第一查询单位对应的索引值中的数值的位置顺序进行排列组合,判断进行排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到相同的第三索引值;
所述第二判断单元,还用于在所述索引匹配单元最终未能匹配到所述第三索引值时,判断所述滑动窗口起始位置之前的数据大小,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小,并将结果发送给所述第二指令单元。
结合第二方面的第五种可能方式,本发明实施例提供了第六种可能方式中,所述重复数据查找单元,还用于若所述索引匹配单元在所述索引表中查询到与所述第一查询单位对应的第一索引值匹配度等于或高于预设的匹配度的第三索引值,则查找所述第一查询单位中的数据中是否有与所述第三索引值对应的数据存储地址指向的目标数据重复的数据。
结合第二方面的第六种可能方式,本发明实施例还提供了第七种可能方式,其中,还包括:
Delta压缩单元,用于获取所述重复数据查找单元的重复数据查找结果,若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,则相对于所述第一索引值对应的数据存储地址指向的目标数据,对所述第一查询单位中的数据做delta压缩;
所述第二存储单元还用于,对完成delta压缩后的数据进行存储;
所述第二索引表更新单元还用于,将所述第一查询单位对应的索引值和所述delta压缩后的数据存储地址的对应关系插入到索引表中。
本发明实施例,通过对数据主要按照第一查询单位的数据对应的索引值来做索引,第一查询单位包括了多个最小数据块,通过从每个最小数据块中取出部分比特位来组成对应于第一查询单位的索引值,大大缩减索引匹配时间,提升了索引匹配效率,同时也使得大幅度减少索引对内存的占用称为可能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1-A为本发明实施例所提供的数据处理系统的结构示意图;
图1-B为本发明实施例所提供的数据处理系统的另一种结构示意图;
图2为本发明实施例所提供的数据处理方法的流程图;
图2-A为本发明实施例所提供的索引构造示意图;
图3为本发明实施例所提供的另一种数据处理方法的流程图;
图4为本发明实施例所提供的数据处理装置的结构示意图;
图5为本发明实施例所提供的数据处理装置的结构示意图;
图6为本发明实施例提供的重删处理器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据处理系统,数据处理系统包括至少一个重删处理器和至少一个存储节点,重删处理器和存储节点的部署方式,本发明实施例提供两种部署方式,例如,如图1-A所示,方式一:每个重删处理器通过网络与存储节点连接,重删处理器可以作为一个软件或一个独立的硬件设备或集成在其他硬件设备上,并部署在用户侧;
或者,方式二,如图1-B所示,重删处理器可以是作为硬件装置集成在存储节点上,也可以作为软件功能模块部署在存储节点上,接收用户发来的数据后进行处理,本发明实施例中提供的一种数据处理系统10包括至少一个重删处理器101,102,……,10n,以及多个存储节点111,112,……,11n;每个重删处理器通过接口接收用户发来的数据,所述接口可以是标准协议接口,例如NFS协议接口。
其中,在本实施例中,数据处理系统中会预先设置索引表,所述索引表包含有在所述存储节点中已经存储的数据对应的索引值与数据存储地址的对应关系,所述索引表可以存储在每一个重删处理器中,也可以存储在存储节点中。
数据处理系统中所述每个重删处理器和的每个存储节点连接,例如网络连接或其他方式的连接。
图2为本发明实施例所提供的数据处理方法的流程图,如图2所示,本发明实施例方法应用于数据处理系统,包括:
步骤201,重删处理器将需要重复数据查询的数据中在滑动窗口内的数据作为一个额定大小数据块,所述额定大小数据块包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;将所述滑动窗口内的一个额定大小数据块作为一个第一查询单位;
其中,在实际操作中,最小数据块为在重复数据查找中的最小查询单位的数据块,通常为4KB,如果是变成分块,最小查询单位大小为4KB左右,本发明实施例对最小查询单位的数据块的大小不做限定;为了便于描述,将滑动窗口内的数据作为第一查询单位;
步骤202,进行索引构造,包括:从所述第一查询单位中每个个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的的一个预设长度的索引值;
本发明实施例在具体构造索引中,分别获取所述第一查询单位中每个最小数据块的指纹值,从每个最小数据块对应的指纹值中抽取预设的相同个数的比特位,将所有抽取的比特位组成对应于所述第一查询单位的索引值;如图2-A所示的索引构造示意图,额定数据块的大小为32KB,包括了8个4KB的最小数据块,分别从每个最小数据块对应的指纹值中获取5个比特位,将所抽取的比特位组合为一个长度为40比特位的索引值。
其中,对从每个最小数据块中是否抽取相同位数的比特位,或者,对抽取到的比特位如何来组成索引,本发明实施例不做限定,只需要根据设定的索引的长度来灵活确定,而索引的长度根据实际情况设定,本发明实施例不做限定。
步骤203,在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值,若在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则进入步骤204;
其中,便于后续描述,将第一查询单位在索引表中匹配到相同的索引值称为第一索引值;
根据索引表所存储的位置不同,重删处理器在进行步骤203中索引查询的具体步骤有所不同:
当预先设置的索引表存储在重删处理器中时,重删处理器可在本地的索引表中查询是否有与所述第一查询单位对应索引值相同的第一索引值索引值,并获得查询结果;
当预先设置的索引表存储在存储节点中,重删处理器可将第一查询单位对应的索引值发送给存储节点,由存储节点在索引表中查询是否有与所述第一查询单位对应的索引值相同的第一索引值,所述重删处理器接收存储节点反馈的查询结果。
步骤204,则查找所述第一查询单位中的数据的大小是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据;
其中,步骤204中具体查找的方法,可以是:将所述第一索引值对应的数据存储地址指向的目标数据加载到所述重删处理器与所述第一查询单位中包括的数据查找重复数据或者将所述第一查询单位中包括的数据发送到所述目标数据所在存储节点与所述目标数据查找重复数据,也可以是将第一索引值对应的数据存储地址指向的目标数据对应的指纹值和所述第一查询单位中包括的数据对应的指纹值进行比较,以查找重复数据,具体方式本发明实施例不做限定。
本发明实施例中,额定大小数据块中包括了多个最小数据块,将多个最小数据块构造一个索引,大幅度减少了索引的数量。
为减少出现最小数据块的偏移情况,本方法实施例中,在步骤203中若没能在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则进入步骤205;
步骤205,判断滑动窗口起始位置之前的数据的大小是否达到所述额定大小数据块的大小,这里的之前是往滑动窗口滑动的反方向而言的,如果否,则进入步骤206;如果是,则进入步骤207;
本方法实施例中,在每一次对数据进行重复查找之后,如果被查询的数据中某一部分和已经存储的数据重复,则需要将被查询的数据进行数据删除,在所述已经存储的数据增加引用计数等等操作,如果被查询的数据中某一部分被确定为新数据,则将这部分数据进行存储,被查询的数据中的一部分数据被删除或者被存储使得在被查询的数据中出现了数据断点,本发明实施例涉及到滑动窗口起始位置之前的描述中,所述的之前是往滑动窗口滑动的反方向而言的。
步骤206,以预设的步长滑动所述滑动窗口,将滑动后所述滑动窗口内的数据作为一个第一查询单位,返回步骤202;
步骤207,将所述滑动窗口起始位置之前的数据作为新数据进行存储,所述之前是针对所述滑动窗口滑动的反方向而言;
因为在所述滑动窗口中额定大小数据块在索引表中没有查到相同的索引,也就是滑动窗口中的数据找不到重复数据了,这时为了避免存储的数据中可能只是与滑动窗口中的数据有一定长度的偏移,因此,本发明实施例将滑动窗口滑动一个步长之后再进行查找,与所述滑动窗口之前的数据大小达到了额定大小的数据块,那么,就可以知道滑动窗口已经滑动了一个额定大小的数据块的长度了,而这个长度的数据也正是之前滑动窗口所覆盖的数据,因为之前滑动窗口覆盖这些数据时已经判断过这些数据对应的索引在索引表中找不到相同的索引,因此,此时,就可以直接将所述滑动窗口之前的数据作为新数据,直接存储了,这里的之前是就滑动窗口滑动反方向而言;
步骤208,将得到的所述新数据对应的索引值与所述新数据存储地址的对应关系插入到所述索引表中。
其中,如前面所述,所述新数据就是之前滑动窗口所覆盖过的数据,在滑动窗口覆盖这些数据时,已经计算过这些数据对应的索引值,如果这些索引值有保存,这时就可以直接获取所述新数据的索引值了;如果没有保存,则可以按照前述获取第一查询单位对应索引的方法获得所述新数据对应的索引。其中,索引表在最初可以是空白的,在后续重复数据查找过程中,通过不断插入新数据对应的索引值与所述新数据存储地址的对应关系而不断更新,这里的新数据也就是查找得到的不重复的数据。
本发明实施例中,根据滑动窗口内的多个最小数据块构造一个索引,因此,当滑动窗口内的数据,也就是第一查询单位内的数据在索引表中匹配到相同的第一索引值时,需要将所述第一索引值对应的数据地址指向的数据和第一查询单位内的数据进行比较,从而确定第一查询单位内的数据是否和已经存储的数据重复。数据之前的比较,可以采用现有技术中通过数据对应的指纹值进行比较来判断数据是否重复。
本发明实施例中,当第一查询单位中的数据的指纹值和所述目标数据对应的指纹值之间不能完全重复时,为了避免是因为存储的数据中可能只是与滑动窗口中的数据有一定的偏移,因此,当不能完全重复时,本发明实施例将滑动窗口滑动一个步长之后再进行查找,因此,本发明实施例中步骤204之后还可以包括:
步骤209,判断所述第一查询单元中数据的指纹值是否和所述目标数据的指纹值完全相同,如果是,则进入步骤210,如果否,则进入步骤205;
因为在所述滑动窗口中的数据如果没有和所述目标数据完全重复的话,这时为了避免存储的数据中可能只是与滑动窗口中的数据有一定长度的偏移,因此,本发明实施例将滑动窗口滑动一个步长之后再进行查找,与滑动窗口起始位置之前的数据大小达到了额定大小的数据块,那么,就可以知道滑动窗口已经滑动了一个额定大小的数据块的长度了,而这个长度的数据也正是之前滑动窗口所覆盖的数据,因为之前滑动窗口覆盖这些数据时已经判断过这些数据与所述目标数据不完全重复,因此,此时,就可以直接将目前滑动窗口起始位置之前的数据作为新数据,直接存储了,因此,当判断所述第一查询单元中数据的指纹值不和所述目标数据的指纹值完全相同时,可以直接进入步骤205;
步骤210,将第一查询单位中的数据进行重复数据删除。
当第一查询单位中的数据指纹值和所述目标数据的指纹值完全重复时,就确定第一查询单位中的数据为重复数据,对重复数据进行重复数据删除的具体方法可参见现有技术。
需要注意的是,当第一查询单位中的数据被确定为重复数据后,进行了重复数据删除,这时需要将滑动窗口之前的数据进行处理,无论滑动窗口之前的数据的大小是否达到额定大小数据块的大小,因此,本发明实施例在步骤209之后,还包括:
步骤211,将所述滑动窗口起始位置之前数据作为一个第二查询单位,这里的之前是就所述滑动窗口滑动的反方向而言,所述第二查询单位包括至少一个最小数据块,根据所述第二查询单位中的所述至少一个最小数据块构造一个长度和第一查询单位对应的索引值长度相同的索引值,在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值,若是,则进入步骤212;若否,则进入步骤213;
其中,所述的第二查询单位中,可能只包括一个最小数据块,例如4KB大小的数据,这时,同样需要根据这一个最小数据块来构造一个与所述第一查询单位的索引值的长度相同的索引值;
如果所述第二查询单位中,包括多个最小数据块,需要根据所包括的所有的最小数据块来构造和所述第一查询单位对应的索引值长度相同的索引值,例如,如果索引值的长度需要40比特位,有两个最小数据块,那么需要从每个最小数据块的指纹值中获取20比特位来组成40比特位的索引值;
步骤212,查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
其中,步骤212中,查找重复数据方法可以是:将所述第二索引值对应的数据存储地址指向的目标数据加载到所述重删处理器后与所述第二查询单位中包括的数据比较以查询重复数据或者将所述第二查询单位中的包括的数据发送到所述第二索引值对应的数据存储地址所在以查询重复数据;也可以是将第一索引值对应的数据存储地址指向的目标数据对应的指纹值和所述第一查询单位中包括的数据对应的指纹值进行比较,以查找重复数据。
步骤213,将所述第二查询单位中的数据作为新数据进行存储,将所述第二查询单位对应的索引值与所述第二查询单位中的数据存储地址之间的对应关系插入索引表中。
本发明实施例中,通过对多个最小数据分块构造一个索引值,在对数据进行引用计数,压缩等以额定大小数据块为单位,很大程度上减少了内存的占用,并且重复数据查找过程中,考虑数据偏移造成的重删率降低,将额定大小数据块和小于额定大小的数据块混合的形式进行重复数据的查找,提高重删率。
参见图3,本发明实施例还提供另一种数据处理方法,与图2所对应的方法实施例的相同部分的流程的说明参见图2所对应的实施例,与图2对应的方法实施例不同之处在于,在索引表中没有查找到相同索引值时,为了提高查找到相同的索引的概率,对索引值进行改变后,继续查找。图3所述的数据处理方法,包括:
步骤301,重删处理器将需要重复数据查询的数据中在滑动窗口内的数据作为一个额定大小数据块,所述额定大小数据块包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;将所述滑动窗口内的数据作为一个第一查询单位;
步骤302,进行索引构造,包括:根据所述第一查询单位中的多个最小数据块构造对应的所述第一查询单位的一个预设长度的索引值;
步骤303,在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的第一索引值,若在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则进入步骤308;若查询不到,则进入步骤304;
步骤304,在所述索引表中查询与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,若查询到,则进入步骤308;若查询不到,则进入步骤306;
需要说明的是,获取第三索引值和获取第一索引值,在实际操作中可以是一个步骤完成,本发明实施例为了描述更清楚,从逻辑上分别写在了两个步骤中;
步骤306,判断是否超过一个排列组合周期,如果没有超过,则进入步骤307;如果超过,进入步骤309;
步骤307,将所述第一查询单位对应的索引值中的数据的位置顺序进行排列组合之后,返回步骤303;
本发明实施例中,当第一查询单位对应的索引值没有在索引表中查找到相同的索引值,为了提高查找到相同索引值的概率,将第一查询单位对应的索引值中的数据的位置顺序进改变,改变的方式有多种,本发明实施例采用了排列组合的方式;
具体的数据位置顺序的改变方式可以是:将所述第一查询单位对应的索引值划分为多个部分,将所述多个部分在所述第一查询单位对应的索引值中的位置顺序进行第一次排列组合;判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到匹配度等于或高于预设的匹配度第三索引值,如果没有找到,则将所述多个部分在所述第一查询单位对应的索引值中的位置顺序进行第二次排列组合;继续判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到相同的第三索引值;
当排列组合后的所述第一查询单位对应的索引值在所述索引表中查找到相同的第三索引值或者完成了所有可能的排列组合,则停止排列组合;
步骤308,查找所述第一查询单位中的数据是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据;
步骤309,判断所述滑动窗口起始位置之前的数据,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述额定大小数据块的大小,如果否,则进入步骤310;如果是,则进入步骤311;
步骤301,以预设的步长滑动所述滑动窗口,将滑动后所述滑动窗口内的数据作为一个第一查询单位,返回步骤302;
步骤311,将所述滑动窗口起始位置之前的所述数据作为新数据进行存储;
步骤312,将得到的所述新数据对应的索引值与所述新数据存储地址的对应关系插入到所述索引表中。
图3所对应的实施例中,再索引表中查找索引时,不要求查找到完全相同的索引,只要求索引值的匹配度高于或等于预设的匹配度,例如,预设索引值的数据有70%相同,只有30%不相同,这样就从索引表中挑选出认为和第一查询单位的索引值相似度较高的索引值,将相似性稿的索引值在索引表中对应的数据地址的目标数据与第一查询单位中的数据进行比较查询重复数据。因此,该方法,在步骤308之后还可以包括:
步骤313,判断所述第一查询单位中的数据是否和与查询到的索引值对应的数据地址指向的数据完全重复;如果不完全重复,则进入步骤314;
具体如何判断是否完全重复的方法可通过指纹值的比较来判断。
步骤314,根据所述查询到的索引值对应的数据地址指向的数据,对所述第一查询单位中的数据进行delta压缩(delta compression);
其中具体的delta压缩算法可以有zdelt或vcdiff或xdelta等算法,本发明实施例不做限制;
步骤315,将进行delta压缩后得到的数据进行存储,并将所述第一查询单位对应的索引值与所述delta压缩后得到的数据的存储地址之间的对应关系插入到索引表中。
本发明实施例中,如果所述第一查询单位中的数据和与查询到的索引值对应的数据地址指向的数据完全重复,则方法还可以包括:
步骤316,将第一查询单位中的数据进行重复数据删除;
步骤317,将所述滑动窗口起始位置之前的数据作为一个第二查询单位;根据所述第二查询单位中的所述至少一个最小数据块构造一个长度和第一查询单位对应的索引值长度相同的索引值,在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值,若是,则进入步骤318;若否,则进入步骤319;
步骤318,查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
其中,步骤318中查找重复数据可以是:将所述第二索引值对应的数据存储地址指向的目标数据加载到所述重删处理器后与所述第二查询单位中包括的数据比较以查询重复数据或者将所述第二查询单位中的包括的数据发送到所述第二索引值对应的数据存储地址所在以查询重复数据,也可以是将第一索引值对应的数据存储地址指向的目标数据对应的指纹值和所述第一查询单位中包括的数据对应的指纹值进行比较,以查找重复数据。
在步骤318做完重复数据查询之后,如果数据完全重复则将第二查询单位的数据进行重复数据删除,如果数据不完全重复,则可进行delta压缩或者直接将第二查询单位的数据作为新数据进行存储,本发明不做限定,本发明实施例以将不完全重复的数据作为新数据为例。
步骤319,将所述第二查询单位中的数据作为新数据进行存储,将所述第二查询单位对应的索引值与所述第二查询单位中的数据存储地址之间的对应关系插入索引表中。
本方法实施例所提供的数据处理方法,针对包含了多个最小查询单位的额定大小数据块来做索引进行查找,大大减少了内存占用,进一步,本发明实施例通过对滑动窗口按照最小查询单位进行滑动后,再进行判断,避免数据查找中出现偏移导致的重删率降低,实现混合粒度的重复数据查找,提高了重删率的同时降低了内存占用。
本发明实施例还提供一种数据处理装置,用于执行上述实施例中提供的方法,其实现的原理和技术效果同本发明实施例所提供的方法类似,可参考方法实施例中的描述,所述数据处理装置在具体实现时可以是一个重删处理器,也可以是任何执行相同功能的装置,例如安装有重删处理器的存储节点,应用于数据处理系统中,所述数据处理系统包括所述数据处理装置和存储节点,所述数据处理装置和所述存储节点通信;
参见图4,本发明实施例提供了一种数据处理装置结构示意图,包括:
索引构造单元401,用于索引构造,所述索引构造包括:将需要重复数据查询的数据中在滑动窗口所覆盖的数据作为一个第一查询单位,从所述第一查询单位中每个个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的的一个预设长度的索引值,其中,所述第一查询单位中包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;
索引匹配单元402,用于在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值,获得匹配结果;
重复数据查找单元403,用于若所述索引匹配单元在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则查找所述第一查询单位中的数据是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据。
本发明实施例中,第一查询单位中包括了多个最小数据块,将从每个最小数据块的索引值中获取部分索引值而构造一个预设长度的索引,大幅度减少了内存中索引的数量。
其中,所述若重复数据查找单元403得到所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据完全重复,则:
所述索引构造单元401,还用于将所述滑动窗口起始位置之前的数据,作为一个第二查询单位,所述之前是针对所述滑动窗口滑动的反方向而言,根据所述第二查询单位中的所述至少一个最小数据块构造一个所述预设长度的索引值,其中,所述第二查询单位包括至少一个最小数据块;
所述索引匹配单元402,还用于在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值;
所述重复数据查找403单元还用于,若所述索引匹配单元402在所述索引表中查询到与所述第二查询单位对应索引值相同的第二索引值,则查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
其中,若所述索引匹配单元401在所述索引表中没有查询到与所述第二查询单位对应索引值相同的第二索引值,则所述数据处理装置还可以包括:
第一存储单元404,用于存储所述第二查询单位中的数据;
第一索引表更新单元405,用于将第二查询单位的数据对应的索引值与所述第二查询单位中的数据的存储地址之间的对应关系插入到所述预先设置的索引表中。
本发明实施例中,在索引表中有第一查询单位对应的索引值,也有第二查询单位对应的索引值,而第一查询单位和第二查询单位所包括的数据块的大小不同,是索引表中形成了对应多种数据块大小的混合索引值,减少内存的同时,提高重删查找率。
其中,若所述重复数据查找单元403查找到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,该装置还可以包括:
第一判断单元406,用于在所述重复数据查找单元403查找得到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复时,判断所述滑动窗口起始位置之前的数据,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小;
第一指令单元407,用于在所述第一判断单元406判断所述滑动窗口判断所述滑动窗口起始位置之前的数据未达到所述第一查询单位的大小的时候,以预设的步长滑动所述滑动窗口;
所述索引构造单元401,还用于将滑动后所述滑动窗口内的数据作为一个第一查询单位,进行构造索引。
其中,若所述索引匹配单元402在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,该装置还可以包括:
第二判断单元408,用于在所述重复数据查找单元403查找得到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复时,判断所述滑动窗口起始位置之前的数据,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小;
第二指令单元409,用于在所述第二判断单元408判断所述滑动窗口判断所述滑动窗口起始位置之前的数据大小未达到所述第一查询单位的大小的时候,以预设的步长滑动所述滑动窗口;
所述索引构造单元401,还用于将滑动后所述滑动窗口内的数据作为一个第一查询单位,进行构造索引。
在所述第二判断单元408判断得到所述滑动窗口起始位置之前的数据大小达到所述第一查询单位的大小,则说明滑动窗口划过的数据大小已经等于一个第一查询单位的大小了,划过的数据块的大小也是曾经滑动窗口覆盖的数据大小,并且没有在索引表中查找到相同的索引。因此,直接将窗口前的数据作为新数据进行存储,因此,所述数据处理装置,还可以包括:
第二存储单元410,用于若所述第二判断单元408判断所述滑动窗口起始位置之前的数据大小达到所述第一查询单位的大小,则将所述滑动窗口起始位置之前的数据作为新数据进行存储;
第二索引表更新单元411,用于将所述新数据对应的索引值与所述新数据存储地址的对应关系插入到所述索引表中。
本发明实施例中,通过对多个最小数据分块构造一个索引值,在对数据进行引用计数,压缩等以额定大小数据块为单位,很大程度上减少了内存的占用,并且重复数据查找过程中,考虑数据偏移造成的重删率降低,将额定大小数据块和小于额定大小的数据块混合的形式进行重复数据的查找,提高重删率。
参见图5,本发明实施例还提供了一种数据处理装置,在图4所提供的装置的结构图的基础上提供了优化的方案,本发明实施例和图4对应的实施例中的装置不同的是,若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,在判断所述滑动窗口起始位置之前的数据的大小是否达到所述第一查询单位的大小之前,对所述第一查询单位对应的索引值中数据的位置关系进行排列组合之后,再将排列组合后的索引值在所述索引表中进行匹配,以提高匹配率。本发明实施例所提供的数据处理装置,包括:
索引构造单元501,用于索引构造,所述索引构造包括:将需要重复数据查询的数据中在滑动窗口所覆盖的数据作为一个第一查询单位,从所述第一查询单位中每个个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的的一个预设长度的索引值,其中,所述第一查询单位中包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;
索引匹配单元502,用于在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值,获得匹配结果;
重复数据查找单元503,用于若所述索引匹配单元在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则查找所述第一查询单位中的数据是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据。
其中,所述若重复数据查找单元503得到所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据完全重复,则:
所述索引构造单元501,还用于将所述滑动窗口起始位置之前的数据,作为一个第二查询单位,所述之前是针对所述滑动窗口滑动的反方向而言,根据所述第二查询单位中的所述至少一个最小数据块构造一个所述预设长度的索引值,其中,所述第二查询单位包括至少一个最小数据块;
所述索引匹配单元502,还用于在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值;
所述重复数据查找503单元还用于,若所述索引匹配单元502在所述索引表中查询到与所述第二查询单位对应索引值相同的第二索引值,则查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
其中,若所述索引匹配单元501在所述索引表中没有查询到与所述第二查询单位对应索引值相同的第二索引值,则所述数据处理装置还可以包括:
第一存储单元504,用于存储所述第二查询单位中的数据;
第一索引表更新单元505,用于将第二查询单位的数据对应的索引值与所述第二查询单位中的数据的存储地址之间的对应关系插入到所述预先设置的索引表中。
其中,在若所述索引匹配单元502在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,还可以用于:在所述索引表中查询与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值;所述索引表中没有与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,则将所述第一查询单位对应的索引值中的数据的位置顺序进行排列组合,判断进行排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到相同的第三索引值;
相应的,所述数据处理装置还可以包括第二判断单元508和第二指令单元509;
所述第二判断单元508在所述索引匹配单元最终未能匹配到所述第三索引值时,判断所述滑动窗口起始位置之前的数据大小,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小,并将结果发送给第二指令单元509;
所述第二指令单元509,用于在所述第二判断单元508判断所述滑动窗口判断所述滑动窗口起始位置之前的数据大小未达到所述第一查询单位的大小的时候,以预设的步长滑动所述滑动窗口;
所述索引构造单元501,还用于将滑动后所述滑动窗口内的数据作为一个第一查询单位,进行构造索引。
其中,所述数据处理装置,还可以包括还包括:
第二存储单元510,用于若所述第二判断单元508判断所述滑动窗口起始位置之前的数据大小达到所述第一查询单位的大小,则将所述滑动窗口起始位置之前的数据作为新数据进行存储;
第二索引表更新单元511,用于将所述新数据对应的索引值与所述新数据存储地址的对应关系插入到所述索引表中。
其中,所述重复数据查找单元503,还用于若所述索引匹配单元502索引表中查询到与所述第一查询单位对应的第一索引值匹配度等于或高于预设的匹配度的第三索引值,则查找所述第一查询单位中的数据中是否有与所述第三索引值对应的数据存储地址指向的目标数据重复的数据。
其中,若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,所述数据处理装置还可以包括:
Delta压缩单元506,用于获取所述重复数据查找单元503数据查找结果,若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,则相对于所述第一索引值对应的数据存储地址指向的目标数据,对所述第一查询单位中的数据做delta压缩;
所述第二存储单元510,对完成delta压缩后的数据存储到存储节点;
所述第二索引表更新单元511还用于,将所述第一查询单位对应的索引值和所述delta压缩后的数据存储地址的对应关系插入到索引表中。
本方法实施例所提供的数据处理装置,针对包含了多个最小查询单位的额定大小数据块来做索引进行查找,大大减少了内存占用,进一步,本发明实施例通过对滑动窗口按照最小查询单位进行滑动后,再进行判断,避免数据查找中出现偏移导致的重删率降低,实现混合粒度的重复数据查找,提高了重删率的同时降低了内存占用,并且,在做索引匹配时,通过对第一查询单位中的索引值中的数据进行排列组合,提高了重复数据查找率。
参见图6,本发明实施例还提供一种重删处理器600,包括处理器61,存储器62,通信接口63,通信总线64;
所述处理器61、通信接口63、存储器62通过所述通信总线64相互的通信;所述通信接口,用于接收和发送数据;
所述存储器62用于存储程序;存储器62可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器;
所述处理器61用于执行所述存储器中的所述程序,执行如前述方法实施例所提供的数据处理方法。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (24)
1.一种数据处理方法,其特征在于,所述方法应用于数据处理系统,所述数据处理系统包括重删处理器,所述方法包括:
所述重删处理器将滑动窗口所覆盖的需要重复数据查找的数据作为第一查询单位,所述第一查询单位中包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;对所述第一查询单位中的数据进行索引构造和重复数据查找;
所述索引构造,包括:从所述第一查询单位中每个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的一个预设长度的索引值;
所述重复数据查找,包括:在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值,若在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则查找所述第一查询单位中的数据是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据完全重复:
将所述滑动窗口起始位置之前的数据,作为第二查询单位,所述之前是针对所述滑动窗口滑动的反方向而言,所述第二查询单位包括至少一个最小数据块,根据所述第二查询单位中的所述至少一个最小数据块构造一个所述预设长度的索引值,在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值;
若在所述索引表中查询到与所述第二查询单位对应索引值相同的第二索引值,则查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
3.根据权利要求2所述的方法,其特征在于,还包括:
若在所述索引表中没有查询到与所述第二查询单位对应索引值相同的第二索引值,则将所述第二查询单位对应的索引值与所述第二查询单位中的数据的存储地址之间的对应关系插入到所述索引表中。
4.根据权利要求1所述的方法,其特征在于,若所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,该方法还包括:
判断所述滑动窗口起始位置之前的数据大小是否达到所述第一查询单位的大小,所述之前是针对所述滑动窗口滑动的反方向而言,如果否,则以预设的步长滑动所述滑动窗口,将滑动后所述滑动窗口内的数据作为一个第一查询单位,执行所述构造索引的步骤和所述重复数据查找的步骤。
5.根据权利要求1或2或3所述的方法,其特征在于,若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,该方法还包括:
判断所述滑动窗口起始位置之前的数据大小是否达到所述第一查询单位的大小,所述之前是针对所述滑动窗口滑动的反方向而言,如果否,则以预设的步长滑动所述滑动窗口,将滑动后所述滑动窗口内的数据作为第一查询单位,执行所述构造索引的步骤和所述重复数据查找的步骤。
6.根据权利要求5所述的方法,其特征在于,若判断所述滑动窗口起始位置之前的数据大小达到所述第一查询单位的大小,则将所述滑动窗口起始位置之前的数据作为新数据进行存储,将所述新数据对应的索引值与所述新数据存储地址之间的对应关系插入到所述索引表中。
7.根据权利要求5所述的方法,其特征在于,若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,在判断所述滑动窗口起始位置之前的数据的大小是否达到所述第一查询单位的大小之前,该方法还包括:
在所述索引表中查询与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,若所述索引表中没有与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,则将所述第一查询单位对应的索引值中的数值的位置顺序进行排列组合,判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到所述第三索引值,如果没有找到,则进入所述判断所述滑动窗口起始位置之前的数据是否达到所述第一查询单位的大小的步骤。
8.根据权利要求7所述的方法,其特征在于,所述将所述第一查询单位中的数据的位置顺序进行排列组合,判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到所述第三索引值,包括:
将所述第一查询单位对应的索引值划分为多个部分,将所述多个部分在所述第一查询单位对应的索引值中的位置顺序进行第一次排列组合;
判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到匹配度等于或高于预设的匹配度的第三索引值,如果没有找到,则将所述多个部分在所述第一查询单位对应的索引值中的位置顺序进行第二次排列组合;继续判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到相同的第三索引值;
当完成了所有的排列组合后的所述第一查询单位对应的索引值在所述索引表中没有查找到与所述第一索引值匹配度等于或高于预设的匹配度的第三索引值,则停止排列组合,进入所述判断所述滑动窗口起始位置之前的数据的大小是否达到所述第一查询单位的大小的步骤。
9.根据权利要求7所述的方法,其特征在于,若所述索引表中查询到与所述第一查询单位对应的第一索引值匹配度等于或高于预设的匹配度的第三索引值,则查找所述第一查询单位中的数据中是否有与所述第三索引值对应的数据存储地址指向的目标数据重复的数据。
10.根据权利要求9所述的方法,其特征在于,还包括:
获得重复数据查找结果,若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,则相对于所述第一索引值对应的数据存储地址指向的目标数据,对所述第一查询单位中的数据做delta压缩,对完成delta压缩后的数据进行存储,将所述第一查询单位对应的索引值和所述delta压缩后的数据存储地址的对应关系插入到索引表中。
11.根据权利要求1-3任一所述方法,其特征在于,所述从所述第一查询单位中每个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的的一个预设长度的索引值,包括:
分别获取所述第一查询单位中每个最小数据块的指纹值,从每个最小数据块对应的指纹值中抽取预设的相同个数的比特位,将所有抽取的比特位组成对应于所述第一查询单位的预设长度的索引值。
12.根据权利要求1-3任一所述方法,其特征在于,所述索引表存储在所述重删处理器,所述在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值,包括:
在所述重删处理器中的预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值;或者
所述数据处理系统还包括存储节点,所述预先设置的索引表存储在所述存储节点中,所述在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值,包括:
所述重删处理器将所述第一查询单位对应的索引值发送到所述存储节点中,接收所述存储节点查询结果,从而获得在所述预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值的信息。
13.一种数据处理装置,其特征在于,包括:
索引构造单元,用于索引构造,所述索引构造包括:将需要重复数据查询的数据中在滑动窗口所覆盖的数据作为一个第一查询单位,从所述第一查询单位中每个最小数据块的指纹值中分别抽取部分比特位,将抽取的比特位组成所述第一查询单位对应的一个预设长度的索引值,其中,所述第一查询单位中包括多个最小数据块,所述最小数据块为进行重复数据查找的最小查询单位的数据块;
索引匹配单元,用于在预先设置的索引表中查询是否有与所述第一查询单位对应索引值相同的索引值;
重复数据查找单元,用于若所述索引匹配单元在所述索引表中查询到与所述第一查询单位对应索引值相同的第一索引值,则查找所述第一查询单位中的数据是否有与所述第一索引值对应的数据存储地址指向的目标数据重复的数据。
14.根据权利要求13所述的数据处理装置,其特征在于,若重复数据查找单元得到所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据完全重复,则
所述索引构造单元,还用于将所述滑动窗口起始位置之前的数据,作为一个第二查询单位,所述之前是针对所述滑动窗口滑动的反方向而言,根据所述第二查询单位中的至少一个最小数据块构造一个所述预设长度的索引值,其中,所述第二查询单位包括所述至少一个最小数据块;
所述索引匹配单元,还用于在所述索引表中查询是否有与所述第二查询单位对应索引值相同的第二索引值;
所述重复数据查找单元还用于,若所述索引匹配单元在所述索引表中查询到与所述第二查询单位对应索引值相同的第二索引值,则查找所述第二查询单位中的数据中是否有与所述第二索引值对应的数据存储地址指向的目标数据重复的数据。
15.根据权利要求14所述的数据处理装置,其特征在于,若所述索引匹配单元在所述索引表中没有查询到与所述第二查询单位对应索引值相同的第二索引值,则还包括:
第一存储单元,用于存储所述第二查询单位中的数据;
第一索引表更新单元,用于将第二查询单位的数据对应的索引值与所述第二查询单位中的数据的存储地址之间的对应关系插入到所述预先设置的索引表中。
16.根据权利要求13所述的数据处理装置,其特征在于,若所述重复数据查找单元查找到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,该装置还包括:
第一判断单元,用于在所述重复数据查找单元查找得到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复时,判断所述滑动窗口起始位置之前的数据,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小;
第一指令单元,用于在所述第一判断单元判断所述滑动窗口起始位置之前的数据未达到所述第一查询单位的大小的时候,以预设的步长滑动所述滑动窗口;
所述索引构造单元,还用于将滑动后所述滑动窗口内的数据作为一个第一查询单位,进行构造索引。
17.根据权利要求13或14或15所述的数据处理装置,其特征在于,若所述索引匹配单元在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,该装置还包括:
第二判断单元,用于在所述重复数据查找单元查找得到所述第一查询单位中数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复时,判断所述滑动窗口起始位置之前的数据,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小;
第二指令单元,用于在所述第二判断单元判断所述滑动窗口起始位置之前的数据大小未达到所述第一查询单位的大小的时候,以预设的步长滑动所述滑动窗口;
所述索引构造单元,还用于将滑动后所述滑动窗口内的数据作为一个第一查询单位,进行构造索引。
18.根据权利要求17所述的数据处理装置,其特征在于,还包括:
第二存储单元,用于若所述第二判断单元判断所述滑动窗口起始位置之前的数据大小达到所述第一查询单位的大小,则将所述滑动窗口起始位置之前的数据作为新数据进行存储;
第二索引表更新单元,用于将所述新数据对应的索引值与所述新数据存储地址的对应关系插入到所述索引表中。
19.根据权利要求17所述的数据处理装置,其特征在于,所述索引匹配单元若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,还用于,在所述索引表中查询与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值;所述索引表中没有与所述第一查询单位对应索引值匹配度等于或高于预设的匹配度的第三索引值,则将所述第一查询单位对应的索引值中的数值的位置顺序进行排列组合,判断进行排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到相同的第三索引值;
所述第二判断单元,还用于在所述索引匹配单元最终未能匹配到所述第三索引值时,判断所述滑动窗口起始位置之前的数据大小,所述之前是针对所述滑动窗口滑动的反方向而言,是否达到所述第一查询单位的大小,并将结果发送给所述第二指令单元。
20.根据权利要求19所述的数据处理装置,其特征在于,所述索引匹配单元若在所述索引表中没有查询到与所述第一查询单位对应索引值相同的第一索引值,所述索引匹配单元具体用于:
将所述第一查询单位对应的索引值划分为多个部分,将所述多个部分在所述第一查询单位对应的索引值中的位置顺序进行第一次排列组合;
判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到匹配度等于或高于预设的匹配度的第三索引值,如果没有找到,则将所述多个部分在所述第一查询单位对应的索引值中的位置顺序进行第二次排列组合;继续判断排列组合后的所述第一查询单位对应的索引值在所述索引表中是否查找到相同的第三索引值;
当完成了所有的排列组合后的所述第一查询单位对应的索引值在所述索引表中没有查找到与所述第一索引值匹配度等于或高于预设的匹配度的第三索引值,则停止排列组合,将判断结果发送给所述第二判断单元。
21.根据权利要求19所述数据处理装置,其特征在于,所述重复数据查找单元,还用于若所述索引匹配单元在所述索引表中查询到与所述第一查询单位对应的第一索引值匹配度等于或高于预设的匹配度的第三索引值,则查找所述第一查询单位中的数据中是否有与所述第三索引值对应的数据存储地址指向的目标数据重复的数据。
22.根据权利要求21所述的装置,其特征在于,还包括:
Delta压缩单元,用于获取所述重复数据查找单元的重复数据查找结果,若所述第一查询单位中的数据和所述第一索引值对应的数据存储地址指向的目标数据不完全重复,则相对于所述第一索引值对应的数据存储地址指向的目标数据,对所述第一查询单位中的数据做delta压缩;
所述第二存储单元还用于,对完成delta压缩后的数据进行存储;
所述第二索引表更新单元还用于,将所述第一查询单位对应的索引值和所述delta压缩后的数据存储地址的对应关系插入到索引表中。
23.根据权利要求13-15任一所述的数据处理装置,所述索引构造单元具体用于分别获取所述第一查询单位中每个最小数据块的指纹值,从每个最小数据块对应的指纹值中抽取预设的相同个数的比特位,将所有抽取的比特位组成对应于所述第一查询单位的预设长度的索引值。
24.一种重删处理器,其特征在于,包括处理器,存储器,通信接口,总线;
所述处理器、通信接口、存储器通过所述总线相互的通信;所述通信接口,用于接收和发送数据;
所述存储器用于存储程序;
所述处理器用于执行所述存储器中的所述程序,执行如权利要求1-12任一所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/086253 WO2015061995A1 (zh) | 2013-10-30 | 2013-10-30 | 数据处理方法、装置及重删处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103930890A CN103930890A (zh) | 2014-07-16 |
CN103930890B true CN103930890B (zh) | 2015-09-23 |
Family
ID=51147967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380002568.0A Active CN103930890B (zh) | 2013-10-30 | 2013-10-30 | 数据处理方法、装置及重删处理器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103930890B (zh) |
WO (1) | WO2015061995A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3223167B1 (en) | 2014-12-16 | 2018-11-21 | Huawei Technologies Co., Ltd. | Storage space management method and device |
JP6526233B2 (ja) * | 2016-09-28 | 2019-06-05 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ |
CN109284424B (zh) * | 2018-09-21 | 2021-10-19 | 长沙学院 | 构造滑动情况表的方法 |
CN109358987B (zh) * | 2018-10-26 | 2019-09-24 | 黄淮学院 | 一种基于两级数据去重的备份集群 |
CN109582640B (zh) * | 2018-11-15 | 2020-12-01 | 深圳市酷开网络科技有限公司 | 一种基于滑动窗口的数据去重存储方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156727A (zh) * | 2011-04-01 | 2011-08-17 | 华中科技大学 | 一种采用双指纹哈希校验的重复数据删除方法 |
CN102629258A (zh) * | 2012-02-29 | 2012-08-08 | 浪潮(北京)电子信息产业有限公司 | 重复数据删除方法和装置 |
CN103150260A (zh) * | 2011-11-25 | 2013-06-12 | 华为数字技术(成都)有限公司 | 重复数据删除方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930307B2 (en) * | 2011-09-30 | 2015-01-06 | Pure Storage, Inc. | Method for removing duplicate data from a storage array |
-
2013
- 2013-10-30 WO PCT/CN2013/086253 patent/WO2015061995A1/zh active Application Filing
- 2013-10-30 CN CN201380002568.0A patent/CN103930890B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156727A (zh) * | 2011-04-01 | 2011-08-17 | 华中科技大学 | 一种采用双指纹哈希校验的重复数据删除方法 |
CN103150260A (zh) * | 2011-11-25 | 2013-06-12 | 华为数字技术(成都)有限公司 | 重复数据删除方法和装置 |
CN102629258A (zh) * | 2012-02-29 | 2012-08-08 | 浪潮(北京)电子信息产业有限公司 | 重复数据删除方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103930890A (zh) | 2014-07-16 |
WO2015061995A1 (zh) | 2015-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103930890B (zh) | 数据处理方法、装置及重删处理器 | |
KR102127116B1 (ko) | 분산 데이터 저장 장치 및 분산 데이터 저장 방법 | |
KR102334735B1 (ko) | 스토리지 장치 및 자율 공간 압축 방법 | |
US9851917B2 (en) | Method for de-duplicating data and apparatus therefor | |
JP6537214B2 (ja) | 重複排除方法および記憶デバイス | |
CN108255958A (zh) | 数据查询方法、装置和存储介质 | |
CN107092439A (zh) | 一种数据存储的方法及设备 | |
CN103858125B (zh) | 重复数据处理方法、装置及存储控制器和存储节点 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN104823184A (zh) | 一种数据处理方法、系统及客户端 | |
KR102509913B1 (ko) | 최대화된 중복 제거 메모리를 위한 방법 및 장치 | |
CN102782643A (zh) | 使用布隆过滤器的索引搜索 | |
CN102799598A (zh) | 重复数据删除的数据复原方法 | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
CN107357843B (zh) | 基于数据流结构的海量网络数据查找方法 | |
WO2014067063A1 (zh) | 重复数据检索方法及设备 | |
CN104408163A (zh) | 一种数据分级存储方法和装置 | |
CN104809135A (zh) | 一种数据存取方法及装置 | |
US11126359B2 (en) | Partitioning graph data for large scale graph processing | |
CN102890719B (zh) | 一种对车牌号进行模糊搜索的方法及装置 | |
CN103514210A (zh) | 小文件处理方法及装置 | |
CN105917304A (zh) | 重复数据删除的装置和方法 | |
CN104038423A (zh) | 一种Open flow流表刷新方法及路由设备 | |
CN103530067B (zh) | 一种数据操作的方法和设备 | |
CN104956340A (zh) | 可扩展数据重复删除 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |