一种数据去重方法及装置制造方法
【专利摘要】本发明实施例公开了一种数据去重方法,包括:接收用户发送的待保存数据,按照预设单位将待保存数据切分成多个数据块,并计算多个数据块中的每个数据块的指纹;根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;将所述至少一个对比用户对应的指纹作为样本对比库;将多个数据块中的每个待比较数据块的指纹与样本对比库中的指纹进行比较;存储多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。本发明实施例还公开了一种数据去重装置。采用本发明,可在保障重删率的前提下,减小样本对比库的容量。
【专利说明】一种数据去重方法及装置
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种数据去重方法及装置。
【背景技术】
[0002]随着云计算技术的应用,不同的用户可以将各自的数据上传到服务器上,通过云计算技术可以将原来各个相互隔离的信息孤岛有机地联系起来。但是由于不同用户之间的数据有重复,尤其近似用户,比如同一个领域、同一家公司、同一个部门等的用户之间的重复数据比例更高。存储重复数据不仅浪费存储资源,而且会增加网络中传输的数据量,容易造成网络拥塞增加网络运行成本。
[0003]为了减少相同数据的重复存储,在现有技术中通过将已保存的数据按预设单位切割成相同容量的数据块并计算各数据块的指纹,然后将各数据块指纹的集合作为样本对比库,对于待保存的数据,同样按照预设单位切割成相同容量的数据块,并计算每个待比较数据块的指纹;然后将待比较数据块的指纹分别与样本对比库中的指纹进行比较,如果某数据块的指纹与样本对比库中的某个指纹相同,则无需保存该数据块。这样虽然能达到去重的效果,但是在云计算中,由于已保存的数据容量通常较大,所以对应的样本指纹的数量和容量也比较大,举例来说,IPB容量的数据按照4KB的容量进行切割时,对应的指纹的集合大概有5500GB,在进行比较时,通常需要将样本对比库中的指纹读取到内存中,如此大容量的指纹无法放入任何一个内存中。即使有如此大容量的内存,由于比较时需要进行大量的对比也容易造成网络拥塞,同时,网络运行的成本也会较高。
【发明内容】
[0004]本发明实施例提供一种数据去重方法和装置,以解决在保障重删率的前提下,减小样本对比库容量的问题。
[0005]本发明第一方面提供了一种数据去重方法,包括:
[0006]接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
[0007]根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
[0008]将所述至少一个对比用户对应的指纹作为样本对比库;
[0009]将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较;
[0010]存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
[0011]在第一方面的第一种可能的实现方式中,所述根据用户的用户特征从已保存的用户库中确定至少一个对比用户,包括:
[0012]根据所述用户的用户特征获取所述用户的用户特征码,其中,所述用户特征码用于表征所述用户的用户特征;
[0013]将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果;
[0014]将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
[0015]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括:
[0016]将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
[0017]结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括:
[0018]将与所述用户掩码计算结果相同的每个用户根据所述每个用户的指纹量排序得至IJ对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
[0019]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所述多个数据块中的每个数据块的指纹与所述样本对比库中的指纹进行比较;存储所述多个数据块中的差异数据块,包括:
[0020]将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较;
[0021]若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较;
[0022]若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
[0023]结合第一方面或结合第一方面的第一或第二或第三或第四种可能的实现方式,在第五种可能的实现方式中,在所述接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹之前,还包括:
[0024]根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征;
[0025]从每组用户中选取一个当前指纹数量最多的用户作为对比用户;
[0026]将每组中的对比用户的指纹作为原始样本对比库;
[0027]在所述根据所述用户的用户特征从已保存的用户库中选取至少一个对比用户,将所述至少一个对比用户对应的指纹作为样本对比库之前,还包括:
[0028]将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将所述当前比较的数据块归类为待比较数据块。
[0029]本发明第二方面提供了一种数据去重装置,包括:
[0030]切分单元,用于接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
[0031]选取单元,用于根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
[0032]生成单元,用于将所述至少一个对比用户对应的指纹作为样本对比库;
[0033]比较单元,用于将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较,存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
[0034]在第二方面的第一种可能的实现方式中,所述选取单元具体用于:
[0035]根据所述用户的用户特征获取所述用户的用户特征码,其中,所述用户特征码用于表征所述用户的用户特征;
[0036]将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果;
[0037]将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
[0038]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述生成单元具体用于:
[0039]将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
[0040]结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述生成单元具体用于:
[0041]将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述比较单元具体用于:
[0042]将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较;
[0043]若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较;
[0044]若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
[0045]结合第二方面或结合第二方面的第一或第二或第三或第四种可能的实现方式,在第五种可能的实现方式中,还包括:
[0046]分组单元,用于根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征;
[0047]所述选取单元还用于从每组用户中选取一个当前指纹数量最多的用户作为对比用户;
[0048]所述生成单元还用于将每组中的对比用户的指纹作为原始样本对比库;[0049]所述比较单元还用于将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将当前比较的数据块归类为待比较数据块。
[0050]实施本发明实施例,具有如下有益效果:
[0051]通过确定与发送待保存数据的用户拥有至少一个相同用户特征的对比用户,然后将对比用户对应的指纹作为样本对比库,这样可以保障重删率;另外由于无需将所有用户的指纹作为样本对比库,因此通过选取合适的对比用户,可缩小样本对比库的大小;且根据用户特征相同的数量还可以动态调整样本对比库的大小,提高了数据去重时在兼顾重删率与存储压力时的灵活性,整体有利于提高网络中数据的传输速度,避免造成网络拥塞,降低了网络运行成本。
【专利附图】
【附图说明】
[0052]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0053]图1为本发明数据去重方法的第一实施例的流程示意图;
[0054]图2为本发明数据去重方法的第二实施例的流程示意图;
[0055]图3为本发明数据去重方法的第三实施例的流程示意图;
[0056]图4为本发明数据去重方法的第四实施例的流程示意图;
[0057]图5为本发明数据去重装置的第一实施例的组成示意图;
[0058]图6为本发明数据去重装置的第二实施例的组成示意图;
[0059]图7为本发明数据去重装置的第三实施例的组成示意图。
【具体实施方式】
[0060]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0061]请参阅图1,为本发明数据去重方法的第一实施例的流程示意图,在本实施例中,所述方法包括:
[0062]S101,接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹。
[0063]具体地,此处的预设单位可以根据当前存储系统的存储配置来设定,例如可以将待保存数据以IMB为单位进行切分,最后一个数据块不足IMB时,仍可作为一个数据块并计算指纹,每个数据块将与一个指纹对应。
[0064]需要说明的是,若待保存数据的容量小于预设单位,则无需进行切分,可直接计算该待保存数据的指纹。
[0065]S102,根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户。[0066]其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征。所述用户特征可以是用户的身份标识、系统登录账号、所属公司、部门、小组等与用户相关的特征,由于具备相同用户特征的不同用户在系统存储的数据重复的可能性较大,因此通过用户身份特征确定对比用户可显著减少样本对比库中的指纹数量。
[0067]所述用户库可以是保存在数据去重装置端,也可以保存在服务器的存储系统上,由数据去重装置进行调用。用户库中记录的内容可包括但不限于用户身份、用户特征、用户特征码及用户对应的指纹。其中用户身份、用户特征、用户特征码可以由用户人工填写,也可以由服务器分析填充完成,此处不作任何限定。
[0068]下述表1示出了用户库的一种结构,用户库中包括多个用户的信息,每个用户对应一个用户标识用于表明用户身份,可用User ID来表示,具体可以是用户的名字、代号或身份编码等。每个用户对应具备自身的用户特征,多个用户特征可形成该用户的特征集。例如,在表1中包括4个用户,分别用Userl、User2、User3和User4来表示。各用户对应的用户特征集分别是Userl特征集、User2特征集、User3特征集和User D4特征集。
[0069]表1
[0070]
【权利要求】
1.一种数据去重方法,其特征在于,包括: 接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹; 根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征; 将所述至少一个对比用户对应的指纹作为样本对比库; 将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较; 存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
2.如权利要求1所述的方法,其特征在于,所述根据用户的用户特征从已保存的用户库中确定至少一个对比用户,包括: 根据所述用户的用户特征获取所述用户的用户特征码,将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果,其中,所述用户特征码用于表征所述用户的用户特征; 将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为 所述第一计算结果的用户作为对比用户。
3.如权利要求2所述的方法,其特征在于,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括: 将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
4.如权利要求2所述的方法,其特征在于,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括: 将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
5.如权利要求4所述的方法,其特征在于,所述将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较;存储所述多个数据块中的差异数据块,包括: 将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较; 若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较; 若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
6.如权利要求1-5任一项所述的方法,其特征在于,在所述接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹之前,还包括: 根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征; 从每组用户中选取一个当前指纹数量最多的用户作为对比用户; 将每组中的对比用户的指纹作为原始样本对比库; 在所述根据所述用户的用户特征从已保存的用户库中选取至少一个对比用户,将所述至少一个对比用户对应的指纹作为样本对比库之前,还包括: 将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将所述当前比较的数据块归类为待比较数据块。
7.一种数据去重装置,其特征在于,包括: 切分单元,用于接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹; 选取单元,用于根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征; 生成单元,用于将所 述至少一个对比用户对应的指纹作为样本对比库; 比较单元,用于将所述多个数据块中的每个数据块的指纹与所述样本对比库中的指纹进行比较,存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
8.如权利要求7所述的装置,其特征在于,所述选取单元具体用于: 根据所述用户的用户特征获取所述用户的用户特征码,将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果,其中,所述用户特征码用于表征所述用户的用户特征; 将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
9.如权利要求8所述的装置,其特征在于,所述生成单元具体用于: 将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
10.如权利要求8所述的装置,其特征在于,所述生成单元具体用于: 将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
11.如权利要求10所述的装置,其特征在于,所述比较单元具体用于: 将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较; 若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较; 若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
12.如权利要求7-11任一项所述的装置,其特征在于,还包括: 分组单元,用于根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征; 所述选取单元还用于从每组用户中选取一个当前指纹数量最多的用户作为对比用户; 所述生成单元还用于将每组中的对比用户的指纹作为原始样本对比库; 所述比较单元还用于将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将当前比较的数据块归类为待比较数据块。
【文档编号】G06F17/30GK103902686SQ201410114159
【公开日】2014年7月2日 申请日期:2014年3月25日 优先权日:2014年3月25日
【发明者】周景才 申请人:华为技术有限公司