CN103902686B - 一种数据去重方法及装置 - Google Patents
一种数据去重方法及装置 Download PDFInfo
- Publication number
- CN103902686B CN103902686B CN201410114159.6A CN201410114159A CN103902686B CN 103902686 B CN103902686 B CN 103902686B CN 201410114159 A CN201410114159 A CN 201410114159A CN 103902686 B CN103902686 B CN 103902686B
- Authority
- CN
- China
- Prior art keywords
- user
- fingerprint
- data block
- compared
- comparison database
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Collating Specific Patterns (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据去重方法,包括:接收用户发送的待保存数据,按照预设单位将待保存数据切分成多个数据块,并计算多个数据块中的每个数据块的指纹;根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;将所述至少一个对比用户对应的指纹作为样本对比库;将多个数据块中的每个待比较数据块的指纹与样本对比库中的指纹进行比较;存储多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。本发明实施例还公开了一种数据去重装置。采用本发明,可在保障重删率的前提下,减小样本对比库的容量。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据去重方法及装置。
背景技术
随着云计算技术的应用,不同的用户可以将各自的数据上传到服务器上,通过云计算技术可以将原来各个相互隔离的信息孤岛有机地联系起来。但是由于不同用户之间的数据有重复,尤其近似用户,比如同一个领域、同一家公司、同一个部门等的用户之间的重复数据比例更高。存储重复数据不仅浪费存储资源,而且会增加网络中传输的数据量,容易造成网络拥塞增加网络运行成本。
为了减少相同数据的重复存储,在现有技术中通过将已保存的数据按预设单位切割成相同容量的数据块并计算各数据块的指纹,然后将各数据块指纹的集合作为样本对比库,对于待保存的数据,同样按照预设单位切割成相同容量的数据块,并计算每个待比较数据块的指纹;然后将待比较数据块的指纹分别与样本对比库中的指纹进行比较,如果某数据块的指纹与样本对比库中的某个指纹相同,则无需保存该数据块。这样虽然能达到去重的效果,但是在云计算中,由于已保存的数据容量通常较大,所以对应的样本指纹的数量和容量也比较大,举例来说,1PB容量的数据按照4KB的容量进行切割时,对应的指纹的集合大概有5500GB,在进行比较时,通常需要将样本对比库中的指纹读取到内存中,如此大容量的指纹无法放入任何一个内存中。即使有如此大容量的内存,由于比较时需要进行大量的对比也容易造成网络拥塞,同时,网络运行的成本也会较高。
发明内容
本发明实施例提供一种数据去重方法和装置,以解决在保障重删率的前提下,减小样本对比库容量的问题。
本发明第一方面提供了一种数据去重方法,包括:
接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
将所述至少一个对比用户对应的指纹作为样本对比库;
将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较;
存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
在第一方面的第一种可能的实现方式中,所述根据用户的用户特征从已保存的用户库中确定至少一个对比用户,包括:
根据所述用户的用户特征获取所述用户的用户特征码,其中,所述用户特征码用于表征所述用户的用户特征;
将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果;
将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括:
将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括:
将与所述用户掩码计算结果相同的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所述多个数据块中的每个数据块的指纹与所述样本对比库中的指纹进行比较;存储所述多个数据块中的差异数据块,包括:
将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较;
若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较;
若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
结合第一方面或结合第一方面的第一或第二或第三或第四种可能的实现方式,在第五种可能的实现方式中,在所述接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹之前,还包括:
根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征;
从每组用户中选取一个当前指纹数量最多的用户作为对比用户;
将每组中的对比用户的指纹作为原始样本对比库;
在所述根据所述用户的用户特征从已保存的用户库中选取至少一个对比用户,将所述至少一个对比用户对应的指纹作为样本对比库之前,还包括:
将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将所述当前比较的数据块归类为待比较数据块。
本发明第二方面提供了一种数据去重装置,包括:
切分单元,用于接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
选取单元,用于根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
生成单元,用于将所述至少一个对比用户对应的指纹作为样本对比库;
比较单元,用于将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较,存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
在第二方面的第一种可能的实现方式中,所述选取单元具体用于:
根据所述用户的用户特征获取所述用户的用户特征码,其中,所述用户特征码用于表征所述用户的用户特征;
将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果;
将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述生成单元具体用于:
将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述生成单元具体用于:
将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述比较单元具体用于:
将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较;
若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较;
若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
结合第二方面或结合第二方面的第一或第二或第三或第四种可能的实现方式,在第五种可能的实现方式中,还包括:
分组单元,用于根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征;
所述选取单元还用于从每组用户中选取一个当前指纹数量最多的用户作为对比用户;
所述生成单元还用于将每组中的对比用户的指纹作为原始样本对比库;
所述比较单元还用于将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将当前比较的数据块归类为待比较数据块。
实施本发明实施例,具有如下有益效果:
通过确定与发送待保存数据的用户拥有至少一个相同用户特征的对比用户,然后将对比用户对应的指纹作为样本对比库,这样可以保障重删率;另外由于无需将所有用户的指纹作为样本对比库,因此通过选取合适的对比用户,可缩小样本对比库的大小;且根据用户特征相同的数量还可以动态调整样本对比库的大小,提高了数据去重时在兼顾重删率与存储压力时的灵活性,整体有利于提高网络中数据的传输速度,避免造成网络拥塞,降低了网络运行成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据去重方法的第一实施例的流程示意图;
图2为本发明数据去重方法的第二实施例的流程示意图;
图3为本发明数据去重方法的第三实施例的流程示意图;
图4为本发明数据去重方法的第四实施例的流程示意图;
图5为本发明数据去重装置的第一实施例的组成示意图;
图6为本发明数据去重装置的第二实施例的组成示意图;
图7为本发明数据去重装置的第三实施例的组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,为本发明数据去重方法的第一实施例的流程示意图,在本实施例中,所述方法包括:
S101,接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹。
具体地,此处的预设单位可以根据当前存储系统的存储配置来设定,例如可以将待保存数据以1MB为单位进行切分,最后一个数据块不足1MB时,仍可作为一个数据块并计算指纹,每个数据块将与一个指纹对应。
需要说明的是,若待保存数据的容量小于预设单位,则无需进行切分,可直接计算该待保存数据的指纹。
S102,根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户。
其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征。所述用户特征可以是用户的身份标识、系统登录账号、所属公司、部门、小组等与用户相关的特征,由于具备相同用户特征的不同用户在系统存储的数据重复的可能性较大,因此通过用户身份特征确定对比用户可显著减少样本对比库中的指纹数量。
所述用户库可以是保存在数据去重装置端,也可以保存在服务器的存储系统上,由数据去重装置进行调用。用户库中记录的内容可包括但不限于用户身份、用户特征、用户特征码及用户对应的指纹。其中用户身份、用户特征、用户特征码可以由用户人工填写,也可以由服务器分析填充完成,此处不作任何限定。
下述表1示出了用户库的一种结构,用户库中包括多个用户的信息,每个用户对应一个用户标识用于表明用户身份,可用User ID来表示,具体可以是用户的名字、代号或身份编码等。每个用户对应具备自身的用户特征,多个用户特征可形成该用户的特征集。例如,在表1中包括4个用户,分别用User1、User2、User3和User4来表示。各用户对应的用户特征集分别是User1特征集、User2特征集、User3特征集和User D4特征集。
表1
User1 | User1特征集 |
User2 | User2特征集 |
USer3 | User3特征集 |
User4 | User4特征集 |
假设每个特征集包括4个特征,如表2所示,
表2
特征1 | 特征2 | 特征3 | 特征4 |
由于拥有相同用户特征的用户保存的数据重复率较高,例如同一部门同一项目组的同事保存的数据重复率一般较高,因此,在选取对比用户时,可以将所述用户的用户特征与用户库中其他用户的用户特征进行比较,从而选取与所述用户拥有至少一个相同用户特征的用户作为对比用户,例如,可以选取具有一个相同用户特征的一个用户作为对比用户,也可以选取具有一个相同用户特征的两个或两个以上的用户作为对比用户,还可以选取具有两个或两个以上相同用户特征的一个用户作为对比用户,或者选取具有两个或两个以上相同用户特征的两个或两个以上的用户作为对比用户,具体在选取时,可以根据重删率、内存容量及样本对比库容量进行平衡考虑,从而实现对样本对比库的动态调整,可获取容量恰当的样本对比库。
而在比较所述用户与用户库中的其他用户的用户特征时,还可以引入用户特征码用于表征用户特征,每个用户特征可用对应的用户特征码表示。通过将每个用户的用户特征码与预设掩码进行掩码计算,计算结果相同的用户则为具有相同用户特征的用户。
S103,将所述至少一个对比用户对应的指纹作为样本对比库。
具体地,每个用户对应一个指纹库,如表3所示
表3
若选取User1作为对比用户,则将User1的所有指纹即User1指纹库作为样本对比库;若选取User1和User2作为对比用户,则将User1和User2的所有指纹即User1指纹库和User2指纹库的集合作为样本对比库。
S104,将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较。
具体地,将样本对比库中的指纹读取到内存中,将待比较数据块的指纹分别与样本对比库中的指纹进行比较。其中,待比较数据块可以是所述多个数据块的中每个数据块,也可以是对所述多个数据块中的每个数据块进行预处理后,符合预设条件的部分数据块,例如,可在步骤S104的比较之前,预设一个原始样本对比库对切分后的每个数据块进行筛选以得到步骤S104中的待比较数据块。
S105,存储所述多个数据块中的差异数据块。
其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。若当前比较的数据块的指纹在样本对比库中已存在,则无需保存该数据块。
具体地,若当前比较的数据块的指纹在样本对比库中已存在,只需要保留该数据块的引用关系以便通过引用关系在服务器查找到已保存的相同数据块即可。若当前比较的数据块的指纹在样本对比库中不存在,则将该数据块保存到服务器中并将该数据块的指纹添加到所述用户的指纹库中。
由上可见,通过确定与发送待保存数据的用户拥有至少一个相同用户特征的对比用户,然后将对比用户对应的指纹作为样本对比库,这样可以保障重删率;另外由于无需将所有用户的指纹作为样本对比库,因此通过选取合适的对比用户,可缩小样本对比库的大小;且根据用户特征相同的数量还可以动态调整样本对比库的大小,提高了数据去重时在兼顾重删率与存储压力时的灵活性,整体有利于提高网络中数据的传输速度,避免造成网络拥塞,降低了网络运行成本。
请参见图2,为本发明数据去重方法的第二实施例的流程示意图。在本实施例中,所述方法包括:
S201,接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹。
S202,根据所述用户的用户特征获取所述用户的用户特征码,将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果。
其中,所述用户特征码用于表征所述用户的用户特征。
具体地,每个用户特征可用对应的用户特征码表示。例如本发明数据去重方法的第一实施例中表1所示的User1特征集包括的四个用户特征依次用用户特征码表示为A、B、C和1;User2特征集包括的四个用户特征依次用用户特征码表示为A、B、C和2;User3特征集包括的四个用户特征依次用用户特征码表示为A、B、D和1;User1特征集包括的四个特征依次用用户特征码表示为A、B、C和1。特征的具体含义可以是公司名、部门名、小组名、姓名等等。
则表1可以相应的转换如表4所示
表4
User1 | A.B.C.1 |
User2 | A.B.C.2 |
User3 | A.B.D.1 |
User4 | A.C.A.1 |
S203,将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
具体地,所述用户保存在所述用户库中,通过将所述用户库中其他用户的用户特征码分别与预设掩码进行掩码计算,计算结果相同的用户则为具有相同用户特征的用户。例如,预设掩码为255.255.255.0,由于预设掩码末位为0,因此表4中User1,User2分别与预设掩码计算后结果将相同,若预设掩码为255.255.0.0,则表4中User1,User3在进行掩码计算后将被视为具有相同用户特征的用户,通过预设掩码的灵活配置,可限定相同用户特征的数量,从而可限定掩码计算得到的对比用户的数量。
需要说明的是,所述用户可保存在所述用户库中,当然也可能存在所述用户为新用户或所述用户属于首次存储数据,所述用户的一些信息如用户特征、用户特征码、用户身份标识等并未保存在服务器,此时仍可以采用本实施例所述的方法,先获取所述用户的用户特征码并与预设掩码计算的到第一计算结果,然后将所述用户库中的所有用户分别与所述预设掩码进行计算即可根据结果比对得到与所述用户的用户特征相同的用户以作为对比用户。此处的第一计算结果可以是一个可以可供用户查看和比对的结果,也可以是经过一系列编码或加密的结果,只需要确保数据去重装置可以与其他用户的计算结果比较即可,此处不作任何限制。
S204,将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
S205,将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较。
S206,存储所述多个待比较数据块中的差异数据块。
其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同,若当前比较的数据块的指纹在样本对比库中已存在,则无需保存该数据块。
在本实施例中,通过掩码计算选取对比用户,结果准确效率高,且通过预设掩码的配置可实现对用户特征的选择,而将与所述用户掩码计算结果相同的所有用户的指纹集合作为样本对比库,可提升重删率。
请参见图3,为本发明数据去重方法的第三实施例的流程示意图,在本实施例中,所述方法包括:
S301,接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹。
S302,根据所述用户的用户特征获取所述用户的用户特征码,将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果。
其中,所述用户保存在所述用户库中,所述用户特征码用于表征所述用户的用户特征。
S303,将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
S304,将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
具体地,若与所述用户掩码计算结果相同的用户大于或等于两个,则可以将这大于或等于两个的用户根据指纹量排序得到一个对比用户列表,然后将指纹量最大的用户的指纹作为样本对比库与待比较数据块的指纹进行比较,比较完成后,将指纹量排第二的用户的指纹作为样本对比库与待比较数据块的指纹进行比较直至将指纹量最小的用户的指纹作为样本对比库与待比较数据块的指纹进行比较。
S305,将待比较数据块的指纹与所述用户列表中的单个用户的指纹依次生成的样本对比库进行比较。
具体地,在生成样本对比库时,按照用户指纹量大小的顺序依次生成。在比较过程中,可以将在当前样本对比库中找到相同指纹的数据块直接删除仅保留引用关系,也可以将其暂时保存在一个列表如ListA中;将在当前样本对比库中没有找到相同指纹的数据块保存在另一个列表如ListB中,以便和下一个用户的指纹生成的样本对比库再进行比较。当所有待比较数据块均比较完后,若ListB的列表为空时,则一次性将ListA中的多个数据块删除,仅记录各个数据块的引用关系。具体可参照如下S306-S308。
S306,若当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中存在,则无需保存该数据块。只需要保存该数据块的引用关系即可。
S307,若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表的下一个用户的指纹生成的样本对比库进行比较。
S308,若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
在本实施例中,并没有将与所述用户掩码计算结果相同的所有用户的指纹集合作为样本对比库,而是将掩码计算结果的用户按照指纹量大小排序,然后按照顺序每次取其中一个用户的指纹作为样本对比库,这样,可进一步缩小样本对比库的容量,减轻内存的压力。
请参见图4,为本发明数据去重方法的第四实施例的流程示意图,在本实施例中,所述方法包括:
S401,根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组。
其中,位于同一组中的用户具有至少一个相同的用户特征。
此处同样可以直接根据用户的特征进行识别和分组,也可以采用用户特征码进行掩码计算的方式来筛选和分组用户,本发明不作任何限定。
S402,从每组用户中选取一个当前指纹数量最多的用户作为对比用户。
需要说明的是,由于每个用户的指纹是动态变化的,可能在当前周期内,第一组内User1的指纹数量最多,此时可选取User1作为对比用户之一,但是在下一周期,由于第一组内的User2存入了大量新数据,其指纹数量也将大幅增加,若在下一周期内,User2的指纹数量多于User1的指纹数量,则此时可以选取User2作为对比用户之一。
S403,将每组中的对比用户的指纹作为原始样本对比库。
所述原始样本对比库可以作为常驻内存样本对比库,同时可按预设周期进行更新。
S404,接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹。
S405,将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将当前比较的数据块归类为待比较数据块。
若当前比较的数据块的指纹在原始样本对比库中已存在,则无需保存该数据块。
S406,根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户。
其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征。
S407,将所述至少一个对比用户对应的指纹作为样本对比库。
S408,将所述多个数据块中的待比较数据块的指纹与所述样本对比库中的指纹进行比较。
S409,存储所述多个数据块中的差异数据块。
其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同,若当前比较的数据块的指纹在样本对比库中已存在,则无需保存该数据块。
需要说明的是,在实施步骤S406-S409时,可参照本发明数据去重方法的第一至第三实施例中的具体实施方式来进行数据去重,例如通过掩码计算确定具备相同用户特征的用户,将所有具备相同用户特征的用户的指纹集合生成样本对比库,或者按指纹量大小依次将单个用户的指纹作为样本对比库,由于处理流程相同,此处不再赘述。
在本实施例中,通过增加原始样本对比库对数据块的指纹进行预先去重处理,可进一步提升和确保去重率。
请参见图5,为本发明数据去重装置的第一实施例的组成示意图,在本实施例中,所述装置包括:
切分单元100,用于接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
选取单元200,用于根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
生成单元300,用于将所述至少一个对比用户对应的指纹作为样本对比库;
比较单元400,用于将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较,存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
若当前比较的数据块的指纹在样本对比库中已存在,则无需保存该数据块。
所述选取单元200具体用于:
根据所述用户的用户特征获取所述用户的用户特征码,将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果,其中,所述用户特征码用于表征所述用户的用户特征;
将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
所述生成单元300具体用于:
将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
或者,所述生成单元300具体用于:
将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
所述比较单元400具体用于:
将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较;
若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹总量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较;
若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
若当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则保存该数据块。
请参见图6,为本发明数据去重装置的第二实施例的组成示意图,在本实施例中,所述装置包括:
切分单元100,用于接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
选取单元200,用于根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
生成单元300,用于将所述至少一个对比用户对应的指纹作为样本对比库;
比较单元400,用于将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较,存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同。
若当前比较的数据块的指纹在样本对比库中已存在,则无需保存该数据块。
以及,分组单元500,用于根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征。
所述选取单元200还用于从每组用户中选取一个当前指纹数量最多的用户作为对比用户;
所述生成单元300还用于将每组中的对比用户的指纹作为原始样本对比库;
所述比较单元400还用于所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将当前比较的数据块归类为待比较数据块。以便这些待比较数据块的指纹后续再与至少一个对比用户的指纹生成的样本对比库进行比较。而若当前比较的数据块的指纹在原始样本对比库中已存在,则无需保存该数据块。
需要说明的是,以上切分单元100、选取单元200、生成单元300、比较单元400以及分组单元500可以独立存在,也可以集成设置,且以上数据去重装置实施例中切分单元100、选取单元200、生成单元300、比较单元400或分组单元500可以以硬件的形式独立于数据去重装置的处理器单独设置,且设置形式可以是微处理器的形式;也可以以硬件形式内嵌于数据去重装置的处理器中,还可以以软件形式存储于数据去重装置的存储器中,以便于数据去重装置的处理器调用执行以上切分单元100、选取单元200、生成单元300、比较单元400或分组单元500对应的操作。
例如,在本发明数据去重装置的第一实施例(图5所示的实施例)中,选取单元200可以为数据去重装置的处理器,而生成单元300和比较单元400的功能可以内嵌于该处理器中,也可以独立于处理器单独设置,也可以以软件的形式存储于存储器中,由处理器调用实现其功能。当然,切分单元100可以与处理器集成设置,也可以独立设置,或者还可以作为数据去重装置的接口电路,独立设置或集成设置。本发明实施例不做任何限制。以上处理器可以为中央处理单元(CPU)、微处理器、单片机等。且所述数据去重装置可以独立设置,也可以集成在服务器内。
请参照图7,为本发明数据去重装置的第三实施例的组成示意图,在本实施例中,所述装置包括:
输入装置600、输出装置700、存储器800及处理器900。其中,所述存储器800用于存储一组程序代码,所述处理器900用于调用所述存储器800中存储的程序代码,执行本发明数据去重方法第一至第四实施例中的任一操作。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
通过上述实施例的描述,本发明具有以下优点:
通过确定与发送待保存数据的用户拥有至少一个相同用户特征的对比用户,然后将对比用户对应的指纹作为样本对比库,这样可以保障重删率;另外由于无需将所有用户的指纹作为样本对比库,因此通过选取合适的对比用户,可缩小样本对比库的大小;且根据用户特征相同的数量还可以动态调整样本对比库的大小,提高了数据去重时在兼顾重删率与存储压力时的灵活性,整体有利于提高网络中数据的传输速度,避免造成网络拥塞,降低了网络运行成本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种数据去重方法,其特征在于,包括:
接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
将所述至少一个对比用户对应的指纹作为样本对比库;
将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较;
存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同;
所述根据用户的用户特征从已保存的用户库中确定至少一个对比用户,包括:
根据所述用户的用户特征获取所述用户的用户特征码,将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果,其中,所述用户特征码用于表征所述用户的用户特征;
将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
2.如权利要求1所述的方法,其特征在于,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括:
将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
3.如权利要求1所述的方法,其特征在于,所述将所述至少一个对比用户对应的指纹作为样本对比库,包括:
将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
4.如权利要求3所述的方法,其特征在于,所述将所述多个数据块中的每个待比较数据块的指纹与所述样本对比库中的指纹进行比较;存储所述多个数据块中的差异数据块,包括:
将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较;
若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较;
若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
5.如权利要求1-4任一项所述的方法,其特征在于,在所述接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹之前,还包括:
根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征;
从每组用户中选取一个当前指纹数量最多的用户作为对比用户;
将所有的对比用户的指纹作为原始样本对比库;
在所述根据所述用户的用户特征从已保存的用户库中选取至少一个对比用户,将所述至少一个对比用户对应的指纹作为样本对比库之前,还包括:
将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将所述当前比较的数据块归类为待比较数据块。
6.一种数据去重装置,其特征在于,包括:
切分单元,用于接收用户发送的待保存数据,按照预设单位将所述待保存数据切分成多个数据块,并计算所述多个数据块中的每个数据块的指纹;
选取单元,用于根据所述用户的用户特征从已保存的用户库中确定至少一个对比用户,其中,所述至少一个对比用户与所述用户拥有至少一个相同的用户特征;
生成单元,用于将所述至少一个对比用户对应的指纹作为样本对比库;
比较单元,用于将所述多个数据块中的每个数据块的指纹与所述样本对比库中的指纹进行比较,存储所述多个数据块中的差异数据块;其中,所述差异数据块中的每个数据块的指纹与所述至少一个对比用户对应的指纹均不同;
所述选取单元具体用于:
根据所述用户的用户特征获取所述用户的用户特征码,将所述用户的用户特征码与预设掩码进行掩码计算,得到第一计算结果,其中,所述用户特征码用于表征所述用户的用户特征;
将所述用户库中其他用户的用户特征码分别与所述预设掩码进行掩码计算,将所述其他用户中计算结果为所述第一计算结果的用户作为对比用户。
7.如权利要求6所述的装置,其特征在于,所述生成单元具体用于:
将所述其他用户中计算结果为所述第一计算结果的所有用户的指纹作为样本对比库。
8.如权利要求6所述的装置,其特征在于,所述生成单元具体用于:
将所述其他用户中计算结果为所述第一计算结果的每个用户根据所述每个用户的指纹量排序得到对比用户列表,根据指纹量的大小依次将所述对比用户列表中的单个用户的指纹作为样本对比库以便与待比较数据块的指纹进行比较。
9.如权利要求8所述的装置,其特征在于,所述比较单元具体用于:
将待比较数据块的指纹与所述用户列表中的单个用户的指纹生成的样本对比库进行比较;
若当前比较的数据块的指纹在所述用户列表中的当前用户的指纹生成的样本对比库中不存在,且所述当前用户在所述用户列表中的排序高于指纹量最小的用户,则将所述当前比较的数据块归类为待比较数据块,以便将待比较数据块的指纹与所述用户列表中的下一个用户的指纹生成的样本对比库进行比较;
若所述当前比较的数据块的指纹在所述用户列表中的任一单个用户的指纹生成的样本对比库中都不存在,则所述当前比较的数据块为差异数据块,存储所述当前比较的数据块。
10.如权利要求6-9任一项所述的装置,其特征在于,还包括:
分组单元,用于根据用户库中的用户的用户特征将所述用户库中的用户分成至少两组,其中,位于同一组中的用户具有至少一个相同的用户特征;
所述选取单元还用于从每组用户中选取一个当前指纹数量最多的用户作为对比用户;
所述生成单元还用于将所有的对比用户的指纹作为原始样本对比库;
所述比较单元还用于将所述每个数据块的指纹与所述原始样本对比库中的指纹进行比较,若当前比较的数据块的指纹在所述原始样本对比库中不存在,则将当前比较的数据块归类为待比较数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410114159.6A CN103902686B (zh) | 2014-03-25 | 2014-03-25 | 一种数据去重方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410114159.6A CN103902686B (zh) | 2014-03-25 | 2014-03-25 | 一种数据去重方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902686A CN103902686A (zh) | 2014-07-02 |
CN103902686B true CN103902686B (zh) | 2017-11-17 |
Family
ID=50994008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410114159.6A Active CN103902686B (zh) | 2014-03-25 | 2014-03-25 | 一种数据去重方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902686B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202134A (zh) * | 2015-05-30 | 2016-12-07 | 中国石油化工股份有限公司 | 数据重复性检查方法 |
CN109445703B (zh) * | 2018-10-26 | 2019-10-25 | 黄淮学院 | 一种基于块级数据去重的Delta压缩存储组件 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857578A (zh) * | 2012-09-25 | 2013-01-02 | 新浪网技术(中国)有限公司 | 一种网络硬盘的文件上传方法、系统及网盘客户端 |
US8422731B2 (en) * | 2008-09-10 | 2013-04-16 | Yahoo! Inc. | System, method, and apparatus for video fingerprinting |
CN103414759A (zh) * | 2013-07-22 | 2013-11-27 | 华为技术有限公司 | 网盘文件传输方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874520B2 (en) * | 2011-02-11 | 2014-10-28 | Symantec Corporation | Processes and methods for client-side fingerprint caching to improve deduplication system backup performance |
-
2014
- 2014-03-25 CN CN201410114159.6A patent/CN103902686B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8422731B2 (en) * | 2008-09-10 | 2013-04-16 | Yahoo! Inc. | System, method, and apparatus for video fingerprinting |
CN102857578A (zh) * | 2012-09-25 | 2013-01-02 | 新浪网技术(中国)有限公司 | 一种网络硬盘的文件上传方法、系统及网盘客户端 |
CN103414759A (zh) * | 2013-07-22 | 2013-11-27 | 华为技术有限公司 | 网盘文件传输方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103902686A (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102968498B (zh) | 数据处理方法及装置 | |
CN106233259B (zh) | 在分散存储网络中检索多世代存储数据的方法和系统 | |
CN104408169B (zh) | 基于多维表达式语言的维度查询方法及装置 | |
CN107682397A (zh) | 客户资源获取方法、装置、终端设备及存储介质 | |
CN105630955A (zh) | 一种高效动态的数据集合成员管理方法 | |
CN103189867A (zh) | 重复数据检索方法及设备 | |
CN110471900A (zh) | 数据处理方法及终端设备 | |
CN106970929A (zh) | 数据导入方法及装置 | |
CN105099729A (zh) | 一种识别用户身份标识的方法和装置 | |
CN109905411A (zh) | 一种异常用户识别方法、装置和计算设备 | |
WO2022017167A1 (zh) | 一种信息处理方法、系统、电子设备及存储介质 | |
CN106372977B (zh) | 一种虚拟账户的处理方法和设备 | |
CN106326012B (zh) | web应用集群缓存利用方法和系统 | |
CN103902686B (zh) | 一种数据去重方法及装置 | |
CN104753765A (zh) | 自动回复信息的方法以及装置 | |
CN106325756A (zh) | 一种数据存储、数据计算方法和设备 | |
WO2020224036A1 (zh) | 基于二进制编码的数字集成电路布线方法及终端设备 | |
CN103605756A (zh) | 用于联机分析处理的数据处理方法和装置 | |
CN106815274A (zh) | 基于Hadoop的日志数据挖掘方法及系统 | |
CN107291746B (zh) | 一种存储和读取数据的方法及设备 | |
CN106844690B (zh) | 一种数据分配方法、装置和计算设备 | |
CN107784085A (zh) | 一种数据列表的导出方法及其终端 | |
CN109285015B (zh) | 一种虚拟资源的分配方法及系统 | |
Karlsson | Rational interpolation and best rational approximation | |
WO2020124488A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |