CN103970744A - 一种可扩展的重复数据检测方法 - Google Patents
一种可扩展的重复数据检测方法 Download PDFInfo
- Publication number
- CN103970744A CN103970744A CN201310028726.1A CN201310028726A CN103970744A CN 103970744 A CN103970744 A CN 103970744A CN 201310028726 A CN201310028726 A CN 201310028726A CN 103970744 A CN103970744 A CN 103970744A
- Authority
- CN
- China
- Prior art keywords
- bloom filter
- fingerprint
- bloom
- group
- carry out
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Collating Specific Patterns (AREA)
Abstract
一种可扩展的重复数据检测方法,属于计算机存储技术领域,解决现有重复数据检测方法中存储容量无法高效扩展的问题,以适应存储需求扩大,重删系统面临升级换代的现状。本发明包括分块处理、指纹提取、布隆过滤器检索、指纹子集表检索、未满布隆过滤器判断、新指纹标记、布隆过滤器数量判断以及布隆过滤器阵列扩展步骤。本发明采用布隆过滤器阵列来检索指纹数据,可快速定位检索范围,提高检索效率,实现重复数据的检测,具有高扩展性、高查询性能、支持元素定位、可控制误判率,有效减少内存开销。布隆过滤器阵列由同构的一系列布隆过滤器构成,只需提供误判率ε’及预估检索的指纹总数量nmax,就能计算出需要的布隆过滤器的数量及哈希函数的个数。
Description
技术领域
本发明属于计算机存储技术领域,具体涉及一种可扩展的重复数据检测方法。
背景技术
1998年,Jim Gray在获颁计算机图灵奖时的演讲中总结“信息产业在过去100年中呈指数增长态势”,并根据“摩尔定律”提出新经验定律“未来每18个月全球新增存储容量是有史以来全部存储容量的总和”。从2007年起,IDC公司与EMC公司连续五年合作发布信息存储市场调研报告,测算数据显示全球创造和复制的数字信息总量从2006年的161EB(exabytes)增加到2011年的1.8ZB(zettabytes),其中2007年全球数字信息总量首次超过可用存储容量,且两者之间的差异仍在逐年扩大。同时,IDC公司调研报告显示现存约75%的数据为副本信息,即仅有25%的数据具有唯一性。在此背景下,数据去重作为在较大空间范围内侦测和消除冗余信息的一种新型技术成为近几年学术界和工业界的研究热点,并正被愈加广泛地应用到各种信息存储系统。数据去重(Data Deduplication)是在数据集或数据流中发现和消除重复内容以提高数据的存储和/或传输效率的过程,又称重复数据删除(DuplicateData Elimination),简称去重或重删。
重复数据元素的检测是实现数据去重的重要技术手段。随着数据规模的扩大,其索引信息量也会持续增长甚至超过可用内存容量。若索引信息被迫转储到硬盘,则查找和识别重复数据元素会遇到硬盘访问性能瓶颈,因此有必要研究支持重复元素快速检测的高效索引机制。
目前主要通过利用数据指纹、数据局部性、数据相似性和缓存技术等加速重复数据的检索。下面列举一些有代表性的可扩展重复数据检测方法。
2009年,NEC实验室的CezaryDubnicki等在HYDRAstor存储系统中提出按指纹前缀将数据块分布到负责不同指纹空间的虚拟超级节点(Supernode)中,并在各个超级节点中分别消除重复内容。通过细分指纹空间和迁移数据,HYDRAstor可以随时添加新的存储节点实现扩容,但扩容时面临大量的数据迁移。见Dubnicki C,Gryz L,Heldt L,et al.HYDRAstor:a Scalable Secondary Storage.In:Proceedings of the7th USENIXConference on File and Storage Technologies(FAST),San Francisco,CA,USA,2009,197-210。
2009年,HP实验室的Deepavali Bhagwat等提出Extreme Binning分布式去重方案。Extreme Binning分布式去重方案从每个文件的分块指纹序列中选择最小值作为文件的特征指纹(Representative Fingerprint),共享相同的特征指纹的文件被聚合到一个去重域中,同时以文件的特征指纹作为该去重域的标识符。当需要扩展到多个节点时,Extreme Binning将去重域的特征指纹空间划分为多个区,并分别映射到各个节点。该方法易于扩展,但无法消除不同去重域之间的重复数据,因而是一种近似的去重解决方案,见Bhagwat D,Eshghi K,Long DDE,et al.Extreme Binning:Scalable,Parallel Deduplication for Chunk-based File Backup.In:Proceedingsof the17th IEEE/ACM International Symposium on Modelling,Analysisand Simulation of Computer and Telecommunication Systems(MASCOTS),London,UK,2009,237-245。
2011年,Princeton大学和EMC公司的Wei Dong等系统研究了高性能去重集群的数据路由方法,提出将平均长度为8KB的分块序列按内容特征划分为1MB量级的超级块(Super-chunk)序列,并以超级块作为传输单元以提高整体路由效率。将超级块路由到能够获得最大重删率的节点,见DongW,Douglis F,Li K,et al.Tradeoffs in Scalable Data Routing forDedupl ication Clusters.In:Proceedings of the9th USENIX Conferenceon File and Storage Technologies(FAST),San Jose,CA,USA,2011,15-29。
Benjamin Zhu等于2008年提出利用三种手段加速重复数据段的侦测和删除过程。1)采用布隆过滤器作为记录段指纹的摘要向量(Summary Vector);2)采用感知数据流的段布局(Stream-Informed Segment Layout)方法,确保每个数据流的段序列最终被写入其专属的容器中,避免与其他数据流的段产生交叠;3)采用保持局部性的缓存机制(Locality Preserved Caching)挖掘数据流中的局部性。见Zhu B,Li K,Patterson H.Avoiding the DiskBottleneck in the Data Domain Deduplication File System.In:Proceedings of the6th USENIX Conference on File and StorageTechnologies(FAST),San Jose,CA,USA,2008,269-282。该方法使用单一布隆过滤器加速检索,但无法实现高效扩容。
布隆过滤器(Bloom Filter)是一种高空间效率和高查询性能的数据结构,由于其独特的优势,使其得到广泛的应用,它能够高效描述静态数据集合,但无法反映动态数据集合特别是可扩展动态数据集合成员结构不断更新的特征。因此,人们对其进行了改进,先后提出了:
(1)动态布隆过滤器(Dynamic Bloom Filter,DBF),见Guo D,Wu J,ChenH,et al.The Dynamic Bloom Filters.IEEE Transactions on Knowledgeand Data Engineering,2010,22(1):120-133;
(2)可扩展型布隆过滤器(Scalable Bloom Filter,SBF)见Xie K,MinY,Zhang D,et al.A Scalable Bloom Filter for Membership Queries.In:Proceedings of the50th IEEE Global Telecommunications Conference(GLOBECOM),Washington,DC,USA,2007,543-547;
(3)增量型布隆过滤器(Incremental Bloom Filter,IBF)见Hao F,Kodialam M,Lakshman TV.Incremental Bloom Filters.In:Proceedingsof the27th IEEE Communications Society Conference on ComputerCommunications(INFOCOM),Phoenix,AZ,USA,2008,1741-1749。
这些改进的布隆过滤器多面向网络中数据的定位及检索应用,侧重于增强可扩展性、控制误判率或减少内存开销,但缺乏对索引存储系统中大容量可变数据集时高查询性能、支持元素定位需求的考虑。
为了清晰阐述本发明,对本申请文件中出现的术语加以解释和说明:
布隆过滤器:如图1所示,由一个长度为m个bit的位向量和k个独立的哈希函数hi(x)(1≤i≤k,k<m)构成,是一种空间效率很高的随机数据结构,它利用位向量表示一个集合,并能判断一个元素是否属于这个集合。为了表达集合S={x1,x2,x3,…,xn},首先位向量中所有的位被初始化为0;然后对集合S中的元素xj(1≤j≤n)都分别使用这k个相互独立的哈希函数hi(x),得到k个哈希值hi(xj)(1≤i≤k,xj∈S),将位向量的第一位作为起始点,将这k个哈希值作为偏移量,可以将xj映射到位向量{1,2,…,m}中的k个位,这些位被置1,xj被标记;当S中所有的元素都被标记后,即集合S被布隆过滤器所表达,如果一个位多次被置为1,那么只有第一次会起作用。
要确定某个数据元素y是否属于集合S,首先对y分别使用这k个相互独立的哈希函数hi(x),得到k个哈希值hi(y),将位向量的第一位作为起始点,将这k个哈希值作为偏移量,检查布隆过滤器的位向量中对应的位是否全为1,是则y可能属于S;否则确定y不是S中的元素。
由于哈希函数hi(x)(1≤i≤k)对于任意的两个不同元素存在哈希冲突的可能性,例如y映射在位向量中对应的位可能已经被S中的非y元素所映射,布隆过滤器在做出肯定性判决时存在出错的可能性。布隆过滤器将非S集合中元素误判为S中的元素的可能性称为假阳性概率(False PositiveProbability),也简称误判率(Error Rate)。假阳性概率可以通过数学方法来控制。
给定集合S的基数n、布隆过滤器位向量的长度m及其哈希函数的数量k,则布隆过滤器的位向量被插入n个元素后某一位仍为0的概率为(1-1/m)k×n。另一方面,当某个新元素y对应的所有位都已被置1时,布隆过滤器将做出假阳性判断,进而可推断假阳性概率fBF为:
fBF=(1-(1-1/m)k×n)k≈(1-e-k×n/m)k,
可推导当时,布隆过滤器具有最小的假阳性概率,称为理想误判率,记为FBF,此时,布隆过滤器的位向量中约有50%的位置为“1”;符号表示大于ln2×(m/n)结果的最小整数;
更进一步,若n为已知,期望设计一个布隆过滤器,其理想误判率不大于给定的误判率上限ε,则可推导出m须满足:
m≥log2e×log2(1/ε)×n,
若m=log2e×log2(1/ε)×n且当且仅当所有n个元素都插入布隆过滤器时,其假阳性概率才增加到ε,因此n又称为布隆过滤器设计容量。
由以上分析可知,根据设计容量n和误判率上限ε,可计算出布隆过滤器的位向量长度m和哈希函数数量k;设计容量n为布隆过滤器预计标记元素的数量,当一个布隆过滤器标记的元素少于n时,则该布隆过滤器为未满的布隆过滤器,未满的布隆过滤器既可以继续标记新的元素,也可以供查询是否某个元素已在其中标记,当一个布隆过滤器中已标记的元素数量为n时,则该布隆过滤器已满,不能继续标记新元素,但可以提供查询,n≤m。
指纹子集表:用于存储指纹数据的列表,该列表配属于布隆过滤器阵列,其中每个布隆过滤器对应于一个指纹子集表,其容量为n个指纹空间,每个指纹空间占据若干字节,依据指纹生成算法确定;n为单个布隆过滤器设计容量。
布隆过滤器阵列(BA):如图所示,是由r个顺序排列的布隆过滤器BF1~BFr及它们对应的r个指纹子集表构成(r≥1,为正整数),r个布隆过滤器共享k个独立的哈希函数,其中每g(1≤g≤r,为正整数)个布隆过滤器为一组,最后不够一组的归为一组,共构成个布隆过滤器组,g的大小为机器字长大小,g=25~8。布隆过滤器组中的g个布隆过滤器具有相同的参数组(n,m,k),其中,n为设计容量、m为位向量长度、k为哈希函数个数,参数值需根据具体系统要求参照本文后面具体实施细节确定;r个布隆过滤器至多具有两种不同的参数组。
位组:一个布隆过滤器组的g个位向量排列成矩阵,各位向量中相同的位,即矩阵中的一列,称为位组,如果一个布隆过滤器组中布隆过滤器的数量小于g个,则需要对位组中缺失的位补零到g的长度;
重构:对已有的布隆过滤器组按照新的设计参数重新构建,构建完成后替换掉先前的布隆过滤组。
发明内容
本发明提供一种可扩展的重复数据检测方法,解决现有重复数据检测方法中存储容量无法高效扩展的问题,以适应存储需求不断扩大,重删系统面临不断升级换代的现状。
本发明所提供的一种可扩展的重复数据检测方法,包括分块处理步骤、指纹提取步骤、布隆过滤器检索步骤、指纹子集表检索步骤、未满布隆过滤器判断步骤、新指纹标记步骤、布隆过滤器数量判断步骤和布隆过滤器阵列扩展步骤,其特征在于:
(1)分块处理步骤:将用户需要备份或存储的文件分成数据块,对文件的所有数据块统一编号,数据块最大编号P0为正整数;
(2)指纹提取步骤:提取每个数据块的指纹,将指纹按数据块编号形成指纹列表;
(3)布隆过滤器检索步骤,包括下述子步骤:
(3.1)设置布隆过滤器最大数量r≥1;设置布隆过滤器阵列可容纳元素数量nmax,nmax大于外存储系统最大存储容量,根据系统的存储需求确定;设置布隆过滤器阵列总体误判上限ε′,0.000001<ε′<0.01,ε′越小,系统开销越大,反之则误判率增大;设置布隆过滤器扩展系数t≥2;置布隆过滤器编号变量T=0,置数据块编号变量P=1;置新位向量长度m’=0,置临时位向量长度m”=0;
(3.2)从指纹列表中取出编号为P的指纹X;
(3.3)判断外存储器中是否已存在布隆过滤器,是则将外存储器中的布隆过滤器及其对应的指纹子集表读入内存,转子步骤(3.5),否则进行子步骤(3.4);
(3.4)置单个设计容量n=nmax/r,计算布隆过滤器的位向量长度m和哈希函数数量k:
m=log2e·log2(1/ε)·n,
式中,单个误判率上限ε=1-(1-ε′)1/r;符号表示大于ln2×(m/n)结果的最小整数;
在内存中,通过参数m、k创建一个布隆过滤器及其对应的指纹子集表,并置该布隆过滤器的未满标记为“未满”;所述布隆过滤器,包括位向量和k个独立的哈希函数,所述位向量为长度m个bit的一维向量,所述指纹子集表的最大长度为n个指纹空间,每个指纹空间占据16或20字节,k<m,n<m;对该布隆过滤器赋予编号T+1,进行子步骤(3.5);
(3.5)在内存中将每g个布隆过滤器归为一个布隆过滤器组,如果布隆过滤器的数量不能被g整除,则将最后不满g个的布隆过滤器归为一个布隆过滤器组,对各布隆过滤器组顺序赋予从1开始的组号,并将各布隆过滤器组的扩展标记均置为“无”,转子步骤(3.6);g=25~8;
(3.6)创建标志位向量V[g],V[g]为长度为g个bit的一维向量,V[g]中的每个bit顺序对应一个布隆过滤器组中各布隆过滤器的编号;置布隆过滤器组号变量M=1;
(3.7)将V[g]中各个bit初始化为‘1’;
(3.8)判断第M组布隆过滤器组的扩展标记是否为“无”,是则置m”=m,进行子步骤(3.9),否则置m”=m’,再进行子步骤(3.9);
(3.9)选取第M个布隆过滤器组,根据m”计算指纹X的k个哈希值h1(X),h2(X),…,hk(X),其中,hi(X)的值域为{1,2,…,m”},1≤i≤k;将这k个哈希值作为偏移量提取第M个布隆过滤器组中对应的k个位组,若第M个布隆过滤器组中布隆过滤器的个数少于g,则在提取该k个位组后,将k个位组中缺失的位均补为0,所述k个位组的各位组依次与标志位向量V[g]按位对应进行“与”运算,最终结果写回标志位向量V[g];
(3.10)判断V[g]的各位是否全为“零”,是则进行子步骤(3.11),否则进行子步骤(3.12);
(3.11)判断是否是则表明指纹X为新指纹,转步骤(5),否则,置M=M+1,转子步骤(3.7);
(3.12)判断指纹X为可能重复指纹,查找V[g]中首个值为‘1’的bit在V[g]中的位置,转步骤(4);
(4)指纹子集表检索步骤:包括下述子步骤:
(4.1)以所述子步骤(3.12)查找的位置作为对应的布隆过滤器编号,进一步查找该编号的布隆过滤器对应的指纹子集表,判断指纹子集表中是否存在指纹X,是则进行子步骤(4.2),否则转子步骤(4.4);
(4.2)指纹X为重复指纹,指纹X对应的数据块为重复数据,将指纹X移动到指纹子集表的头部,置P=P+1,判断是否P>P0,是则进行子步骤(4.3),否则转子步骤(3.2);
(4.3)将内存中的所有布隆过滤器的数据及对应指纹子集表的数据写入外存储器,整个处理过程结束;
(4.4)表明该编号的布隆过滤器发生误判,对误判进行计数,判断是否是则表明指纹X为新指纹,转步骤(5),否则置M=M+1,转子步骤(3.7);
(5)未满布隆过滤器判断步骤,按照布隆过滤器的编号顺序查找是否存在未满的布隆过滤器BFt,1≤t≤r,是则转步骤(6),否则转步骤(7);
(6)新指纹标记步骤,包括下述子步骤:
(6.1)判断该布隆过滤器所属布隆过滤器组的扩展标记是否为“无”,是则置m”=m,进行子步骤(6.2),否则置m”=m’,再进行子步骤(6.2);
(6.2)根据m”计算所述指纹X的k个哈希值h1(X),h2(X),…,hk(X);
(6.3)将所述布隆过滤器BFt位向量的第一位作为起始点,将所述k个哈希值h1(X),h2(X),…,hk(X)作为偏移量,得到位向量中对应的k个位,将这k个位置为‘1’,完成对指纹X的标记;
(6.4)查找布隆过滤器BFt对应的指纹子集表,将指纹X插入到指纹子集表的头部;
(6.5)判断布隆过滤器是否装满,是则置该布隆过滤器未满标记为“已满”;
(6.6)置P=P+1,判断是否P>P0,是则进行子步骤(4.3),否则转子步骤(3.2);
(7)布隆过滤器数量判断步骤,包括下述子步骤:
(7.1)判断是否布隆过滤器编号T<r,是则进行子步骤(7.2),否则需对布隆过滤器阵列进行扩展,转步骤(8);
(7.2)创建新的布隆过滤器及新的指纹子集表;
在内存中,通过参数m、k创建一个布隆过滤器及其对应的指纹子集表,并置该布隆过滤器的未满标记为“未满”;对该布隆过滤器赋予编号T+1,转步骤(5);
(8)布隆过滤器阵列扩展步骤,包括下述子步骤:
(8.1)置布隆过滤器临时组号变量M’=1;
(8.2)选择第M’个布隆过滤器组,判断其扩展标记是否为“无”,是则转子步骤(8.5),否则进行子步骤(8.3);
(8.3)置M’=M’+1,判断是否是则转子步骤(8.2),否则进行子步骤(8.4);
(8.4)将各布隆过滤器组的扩展标记置为“无”,置n=t×n,置m’=m,转子步骤(8.1);
(8.5)以新设计容量n’=t×n,误判率上限ε不变,哈希函数数量k不变,计算布隆过滤器的新位向量长度m'=log2e×log2(1/ε)×n',对组内每个布隆过滤器进行重构,同时,以新设计容量n’扩大布隆过滤器对应的指纹子集表的容量,将该布隆过滤器组中所有的布隆过滤器未满标记置为“未满”,将该布隆过滤器组的扩展标记置为“有”;转步骤(5)。
所述的可扩展的重复数据检测方法,其特征在于:
所述分块处理步骤中:对用户需要备份或存储的文件分成数据块时,采用固定分块方法,固定分块所分成的数据块大小相等,每个数据块大小为4K~8K字节。
所述的可扩展的重复数据检测方法,其特征在于:
所述指纹提取步骤中:提取每个数据块的指纹时,采用MD5消息摘要算法或者SHA-1消息摘要算法。
所述的可扩展的重复数据检测方法,其特征在于:
所述布隆过滤器检索步骤中,所述子步骤(3.9)及子步骤(6.2)根据m”计算指纹X的k个哈希值,包括下述过程:
(a)首先利用随机函数产生2×k个32位2进制随机数,每两个随机数相乘得到k个乘积Si,1≤i≤k;k个乘积构成集合{S1,S2,S3,…,Sk};
(b)根据下述迭代公式计算指纹X的原始哈希值hi′(x):
式中,H0(x′0)=0,Y为指纹X的字节数目,使用sha-1消息摘要算法,Y=20,使用MD5消息摘要算法,Y=16;y为迭代变量,(y mod 2)为y除以2所得的余数,符号为异或运算;x′y为位片段,y=1、2、…、Y,X中第1~8位构成第1个位片段x′1,X中第9~16位构成第2个位片段x′2,依次类推,最后一个位片段x′Y为X中最后8个位构成;
(c)用m”对原始哈希值hi'(X)取模,得到哈希值hi(X):
hi(X)=hi(X)mod m”。
子步骤(3.9)和子步骤(6.2)中使用的{S1,S2,S3,…,Sk}为同一集合,其值与位序都相同。
本发明采用分组方式构造布隆过滤器阵列。布隆过滤器阵列由多个布隆过滤器组构成,设定同组的布隆过滤器具有同构性,即采用相同的设计参数。同一个组内,不同布隆过滤器具有相同位序的记录单元被优先聚合成位组,以提高访问效率和支持对组内布隆过滤器的并行查询。组内和组间具有同构性的布隆过滤器均共享相同的哈希函数组,因此在查询目标元素成员资格时可减少重复计算和提高查询效率。布隆过滤器的记录容量可按组扩展。
布隆过滤器阵列对元素成员资格的记录和查询操作依赖于哈希函数,哈希冲突可能导致其在检测重复操作时作出假阳性误判,且随着数据集合规模的增长误判率有上升和超过给定阈值的趋势。本发明约束布隆过滤器的总体数量和各自的设计误判率,转而按需依次扩展各布隆过滤器组的设计容量,从而在整体扩容的同时将误判率控制在阈值之下。控制查询准确度需要对布隆过滤器阵列进行局部重构操作,但整个数据结构至多允许两种异构的布隆过滤器存在于不同的组之间。
本发明采用布隆过滤器阵列来检索指纹数据,可快速定位检索范围,提高检索效率,实现重复数据的检测,具有高扩展性、高查询性能、支持元素定位、可控制误判率,有效减少内存开销。布隆过滤器阵列由同构的一系列布隆过滤器构成,只需提供误判率ε’及预估检索的指纹总数量nmax,就能计算出需要的布隆过滤器的数量及哈希函数的个数。
附图说明
图1为布隆过滤器的数据结构;
图2为布隆过滤器分组结构;
图3为本发明流程示意图;
图4为布隆过滤器检索步骤示意图;
图5为指纹子集表检索步骤示意图;
图6为新指纹标记步骤示意图;
图7为布隆过滤器阵列扩展步骤示意图;
图8为查询定位功能示意图。
具体实施方式
为便于理解,首先对计算中的单位换算进行说明:1T=103G=106M=109k=1012
假设我们需要对一个容量为32T字节的服务器进行重复数据检测,误判率希望控制在0.005以下,即ε’=0.005。分块大小为每块8K字节,布隆过滤器分组基数g=64(假设服务器字长为64),设置布隆过滤器最大数量为r=128个;布隆过滤器扩展系数t=4;指纹字节数目Y=20;
以下结合附图和实施例对本发明进一步说明。
如图3所示,本发明的实施例,包括分块处理步骤、指纹提取步骤、布隆过滤器检索步骤、指纹子集表检索步骤、未满布隆过滤器判断步骤、新指纹标记步骤、布隆过滤器数量判断步骤和布隆过滤器阵列扩展步骤;
(1)分块处理步骤:采用固定分块方法,将服务器中的所有文件均分成数据块,每个数据块大小为8K字节,对所有文件的所有数据块统一编号,数据块最大编号P0=32T/8k=4G(块),
(2)指纹提取步骤:采用SHA-1消息摘要算法提取每个数据块的指纹,每个指纹(哈希值)的长度为20字节,将指纹按数据块编号形成指纹列表;
(3)布隆过滤器检索步骤,如图4所示,包括下述子步骤:
(3.1)设置布隆过滤器最大数量r=128;设置布隆过滤器阵列可容纳元素数量nmax=4G;设置布隆过滤器阵列总体误判上限ε′=0.005,设置布隆过滤器扩展系数t=4;置布隆过滤器编号变量T=0,置数据块编号变量P=1;置新位向量长度m’=0,置临时位向量长度m”=0;
(3.2)从指纹列表中取出编号为P的指纹X;
(3.3)判断外存储器中是否已存在布隆过滤器,是则将外存储器中的布隆过滤器及其对应的指纹子集表读入内存,转子步骤(3.5),否则进行子步骤(3.4);
(3.4)置单个设计容量n=nmax/r=P0/r=4G/128=32M,计算布隆过滤器的位向量长度m和哈希函数数量k:
m=log2e·log2(1/ε)·n=-ln(ε)/(ln(2))2×32M≈675.886M(位)=84.486M(字节),
式中,单个误判率上限ε=1-(1-ε′)1/r;符号表示大于ln2×(m/n)结果的最小整数;
在内存中,通过参数m、k创建一个布隆过滤器及其对应的指纹子集表,并置该布隆过滤器的未满标记为“未满”;所述布隆过滤器,包括位向量和k个独立的哈希函数,所述位向量为长度m个bit的一维向量,所述指纹子集表的最大长度为n个指纹空间,每个指纹空间占据16或20字节,k<m,n<m;对该布隆过滤器赋予编号T+1,进行子步骤(3.5);
(3.5)在内存中将每g=64个布隆过滤器归为一个布隆过滤器组,如果布隆过滤器的数量不能被64整除,则将最后不满64个的布隆过滤器归为一个布隆过滤器组,对各布隆过滤器组顺序赋予从1开始的组号,并将各布隆过滤器组的扩展标记均置为“无”,转子步骤(3.6);
(3.6)创建标志位向量V[g],V[g]为长度为64个bit的一维向量,V[g]中的每个bit顺序对应一个布隆过滤器组中各布隆过滤器的编号;置布隆过滤器组号变量M=1;
(3.7)将V[64]中各个bit初始化为‘1’;
(3.8)判断第M组布隆过滤器组的扩展标记是否为“无”,是则置m”=m,进行子步骤(3.9),否则置m”=m’,再进行子步骤(3.9);
(3.9)选取第M个布隆过滤器组,根据m”计算指纹X的k个哈希值h1(X),h2(X),…,hk(X),其中,hi(X)的值域为{1,2,…,m”},1≤i≤k;将这k个哈希值作为偏移量提取第M个布隆过滤器组中对应的k个位组,若第M个布隆过滤器组中布隆过滤器的个数少于64,则在提取该k个位组后,将k个位组中缺失的位均补为0,所述k个位组的各位组依次与标志位向量V[g]按位对应进行“与”运算,最终结果写回标志位向量V[64];
(3.10)判断V[64]的各位是否全为“零”,是则进行子步骤(3.11),否则进行子步骤(3.12);
(3.11)判断是否是则表明指纹X为新指纹,转步骤(5),否则,置M=M+1,转子步骤(3.7);
(3.12)判断指纹X为可能重复指纹,查找V[64]中首个值为‘1’的bit在V[64]中的位置,转步骤(4);
(4)指纹子集表检索步骤,如图5所示,包括下述子步骤:
(4.1)以所述子步骤(3.12)查找的位置作为对应的布隆过滤器编号,进一步查找该编号的布隆过滤器对应的指纹子集表,判断指纹子集表中是否存在指纹X,是则进行子步骤(4.2),否则转子步骤(4.4);
(4.2)指纹X为重复指纹,指纹X对应的数据块为重复数据,将指纹X移动到指纹子集表的头部,置P=P+1,判断是否P>P0=4G,是则进行子步骤(4.3),否则转子步骤(3.2);
(4.3)将内存中的所有布隆过滤器的数据及对应指纹子集表的数据写入外存储器,整个处理过程结束;
(4.4)表明该编号的布隆过滤器发生误判,对误判进行计数,判断是否是则表明指纹X为新指纹,转步骤(5),否则置M=M+1,转子步骤(3.7);
(5)未满布隆过滤器判断步骤,按照布隆过滤器的编号顺序查找是否存在未满的布隆过滤器BFt,1≤t≤128,是则转步骤(6),否则转步骤(7);
(6)新指纹标记步骤,如图6所示,包括下述子步骤:
(6.1)判断该布隆过滤器所属布隆过滤器组的扩展标记是否为“无”,是则置m”=m,进行子步骤(6.2),否则置m”=m’,再进行子步骤(6.2);
(6.2)根据m”计算所述指纹X的k个哈希值h1(X),h2(X),…,hk(X);
(6.3)将所述布隆过滤器BFt位向量的第一位作为起始点,将所述k个哈希值h1(X),h2(X),…,hk(X)作为偏移量,得到位向量中对应的k个位,将这k个位置为‘1’,完成对指纹X的标记;
(6.4)查找布隆过滤器BFt对应的指纹子集表,将指纹X插入到指纹子集表的头部;
(6.5)判断布隆过滤器是否装满,是则置该布隆过滤器未满标记为“已满”;
(6.6)置P=P+1,判断是否P>4G,是则进行子步骤(4.3),否则转子步骤(3.2);
(7)布隆过滤器数量判断步骤,包括下述子步骤:
(7.1)判断是否布隆过滤器编号T<r,是则进行子步骤(7.2),否则需对布隆过滤器阵列进行扩展,转步骤(8);
(7.2)创建新的布隆过滤器及新的指纹子集表;
在内存中,按照(3.4)的计算方法,通过参数m、k创建一个布隆过滤器及其对应的指纹子集表,并置该布隆过滤器的未满标记为“未满”;对该布隆过滤器赋予编号T+1,转步骤(5);
(8)布隆过滤器阵列扩展步骤,如图7所示,包括下述子步骤:
(8.1)置M’=1;
(8.2)选择第M’个布隆过滤器组,判断其扩展标记是否为“无”,是则转子步骤(8.5),否则进行子步骤(8.3);
(8.3)置M’=M’+1,判断是否是则转子步骤(8.2),否则进行子步骤(8.4);
(8.4)将各布隆过滤器组的扩展标记置为“无”,置n=t×n=4n,m’=m,转子步骤(8.1);
(8.5)以新设计容量n’=t×n=4n,误判率上限ε不变,哈希函数数量k不变,根据n’和ε计算布隆过滤器的位向量长度m'=log2e×log2(1/ε)×n',对组内每个布隆过滤器进行重构,同时,以新设计容量扩大布隆过滤器对应的指纹子集表的容量,将该布隆过滤器组中所有的布隆过滤器未满标记置为“未满”,将该布隆过滤器组的扩展标记置为“有”;转步骤(5)。
布隆过滤器中k个相互独立的哈希函数的构造方法有很多种。严蔚敏、吴伟民编著《数据结构》第253页有详细的介绍。(清华大学出版社,1997年4月第一版)
本发明中的哈希函数是根据作者Arash Partow设计的哈希函数改造而成,Arash Partow的哈希函数详见以下网站:
http://www.partow.net/programming/hashfunctions/index.html。
布隆过滤器阵列(BA)可按需部署到分布式存储系统或单存储节点。在分布式存储环境中,采用多进程通讯及远程调用等机制,把BA中布隆过滤器部分和指纹子集表部分拆分开来,通过对某一台服务器部署布隆过滤器检索功能,其他服务器维护指纹子集表,需要查询的指纹首先到达部署了布隆过滤器的服务器作指纹分类处理。该布隆过滤器首先判断指纹是否为重复指纹,如果不是重复指纹,则安排指纹插入,如果可能是重复指纹,则路由到对应的指纹子集表所在的存储节点进行进一步判断。BA可由多个存储节点协同维护以避免因容量扩展而遇到单节点内存资源瓶颈。
在单存储节点内,亦采用多进程通讯的机制来完成检索过程。检索和扩展分别使用不同的进程。BA可设置成较低的查询误判率,实现精确的识别和定位重复指纹。BA可直接过滤对未知(非重复)数据元素的无效查询请求;对于系统中可能存在的重复数据,BA能够引导查询过程通过缓存机制访问指纹子集表,从而最终确认目标数据元素的重复性。存储系统中写入新的数据元素时,首先其索引信息会被同时插入到BA和指纹子集表,然后其数据内容会经由缓存机制保存到硬盘。随着数据规模的不断增长,布隆过滤器组保持与指纹子集表同步扩展容量,其中更新过的BA组件可采用增量方式同步到硬盘副本以保障数据安全。此外,BA通过优化内存数据布局在扩展容量的同时保持高查询效率。
本发明主要通过布隆过滤器阵列(BA)来完成指纹检索,布隆过滤器阵列中每个组内来自不同布隆过滤器的具有相同坐标的位单元被优先聚合成位向量,因此它们能够并行检索以提高查询效率,简言之,图中同组的布隆过滤器按列优先方式组织和存储位单元。布隆过滤器阵列中每个组所能容纳的布隆过滤器的最大数量g决定了查询元素时的访问并行度,g也称为分组基数。由于布隆过滤器阵列中同在一组的布隆过滤器具有同构性,则查询x的成员资格时可并行检测一组布隆过滤器中的k个位组,则布隆过滤器阵列做出肯定判决和否定判决的平均内存访问复杂度分别为O(k×r/(2g))和O(k×r/g),比逐个查询各布隆过滤器的内存访问效率提高了g倍。
在查找未满的布隆过滤器时,当布隆过滤器的数量未达到初始设计数量r时,只需创建新的布隆过滤器及关联的指纹子集表,当布隆过滤器的数量达到初始设计数量r时,需对布隆过滤器阵列进行扩展,系统按需重构已有的布隆过滤器组以扩展索引空间,其数据结构如图所示。
布隆过滤器阵列扩展时,布隆过滤器阵列允许最多两组具有不同参数组的布隆过滤器存在于不同的组中,但哈希函数仍然可以在同构的布隆过滤器之间共享,且同组的布隆过滤器能够保持并行访问能力以维持高查询性能。
当布隆过滤器阵列所含布隆过滤器总数r较大时,推荐分组基数g的取值为CPU字长整数倍(g=25~8),以便更好地匹配CPU寄存器和总线位宽,提高计算效率。如果g超过CPU寄存器的位宽,位组可被解析为整型向量以利用CPU的向量处理单元加速查询过程中的计算操作。
总体误判率控制方法,由于布隆过滤器阵列以布隆过滤器为基本组件,其同样具有因哈希冲突导致的误判率。若布隆过滤器阵列初始设计容量为nmax,布隆过滤器总数为r个,则每个布隆过滤器容量为n=nmax∕r,设布隆过滤器误判率上限ε。
布隆过滤器阵列的总体误判上限ε′:ε′=1-(1-ε)r,
布隆过滤器阵列中所含各布隆过滤器的误判上限ε:ε=1-(1-ε′)1/r;(1)
为控制布隆过滤器阵列在扩展过程中的查询误判率升高,根据(1)式,本发明在保持r和ε不变的条件下,通过重构部分布隆过滤器组来扩大单个布隆过滤器的容量n,进而提高整个布隆过滤器阵列的容纳能力,将布隆过滤器阵列的误判率控制在总体误判上限ε′以内,参数t用于调整重构的频率。重构操作可在后台新分配的内存空间进行,重构完成前原有布隆过滤器仍然可以响应查询操作。
指纹定位功能,布隆过滤器阵列采用每个布隆过滤器都关联一个独立的指纹子集表,本发明赋予BA元素定位功能,如图8所示。当查询指纹x时,当有某个布隆过滤器产生肯定判决,则访问其对应的指纹子集表即可确认查询结果,检索范围直接缩小到1/r;若查询过程中有多个布隆过滤器给出肯定判决,则需依次检索每个可疑数据子集,直到x的成员资格最终得以确认。
Claims (4)
1.一种可扩展的重复数据检测方法,包括分块处理步骤、指纹提取步骤、布隆过滤器检索步骤、指纹子集表检索步骤、未满布隆过滤器判断步骤、新指纹标记步骤、布隆过滤器数量判断步骤和布隆过滤器阵列扩展步骤,其特征在于:
(1)分块处理步骤:将用户需要备份或存储的文件分成数据块,对文件的所有数据块统一编号,数据块最大编号P0为正整数;
(2)指纹提取步骤:提取每个数据块的指纹,将指纹按数据块编号形成指纹列表;
(3)布隆过滤器检索步骤,包括下述子步骤:
(3.1)设置布隆过滤器最大数量r≥1;设置布隆过滤器阵列可容纳元素数量nmax,nmax大于外存储系统最大存储容量,根据系统的存储需求确定;设置布隆过滤器阵列总体误判上限ε′,0.000001<ε′<0.01,ε′越小,系统开销越大,反之则误判率增大;设置布隆过滤器扩展系数t≥2;置布隆过滤器编号变量T=0,置数据块编号变量P=1;置新位向量长度m’=0,置临时位向量长度m”=0;
(3.2)从指纹列表中取出编号为P的指纹X;
(3.3)判断外存储器中是否已存在布隆过滤器,是则将外存储器中的布隆过滤器及其对应的指纹子集表读入内存,转子步骤(3.5),否则进行子步骤(3.4);
(3.4)置单个设计容量n=nmax/r,计算布隆过滤器的位向量长度m和哈希函数数量k:
m=log2e·log2(1/ε)·n,
式中,单个误判率上限ε=1-(1-ε′)1/r;符号表示大于ln2×(m/n)结果的最小整数;
在内存中,通过参数m、k创建一个布隆过滤器及其对应的指纹子集表,并置该布隆过滤器的未满标记为“未满”;所述布隆过滤器,包括位向量和k个独立的哈希函数,所述位向量为长度m个bit的一维向量,所述指纹子集表的最大长度为n个指纹空间,每个指纹空间占据16或20字节,k<m,n<m;对该布隆过滤器赋予编号T+1,进行子步骤(3.5);
(3.5)在内存中将每g个布隆过滤器归为一个布隆过滤器组,如果布隆过滤器的数量不能被g整除,则将最后不满g个的布隆过滤器归为一个布隆过滤器组,对各布隆过滤器组顺序赋予从1开始的组号,并将各布隆过滤器组的扩展标记均置为“无”,转子步骤(3.6);g=25~8;
(3.6)创建标志位向量V[g],V[g]为长度为g个bit的一维向量,V[g]中的每个bit顺序对应一个布隆过滤器组中各布隆过滤器的编号;置布隆过滤器组号变量M=1;
(3.7)将V[g]中各个bit初始化为‘1’;
(3.8)判断第M组布隆过滤器组的扩展标记是否为“无”,是则置m”=m,进行子步骤(3.9),否则置m”=m’,再进行子步骤(3.9);
(3.9)选取第M个布隆过滤器组,根据m”计算指纹X的k个哈希值h1(X),h2(X),…,hk(X),其中,hi(X)的值域为{1,2,…,m”},1≤i≤k;将这k个哈希值作为偏移量提取第M个布隆过滤器组中对应的k个位组,若第M个布隆过滤器组中布隆过滤器的个数少于g,则在提取该k个位组后,将k个位组中缺失的位均补为0,所述k个位组的各位组依次与标志位向量V[g]按位对应进行“与”运算,最终结果写回标志位向量V[g];
(3.10)判断V[g]的各位是否全为“零”,是则进行子步骤(3.11),否则进行子步骤(3.12);
(3.11)判断是否是则表明指纹X为新指纹,转步骤(5),否则,置M=M+1,转子步骤(3.7);
(3.12)判断指纹X为可能重复指纹,查找V[g]中首个值为‘1’的bit在V[g]中的位置,转步骤(4);
(4)指纹子集表检索步骤:包括下述子步骤:
(4.1)以所述子步骤(3.12)查找的位置作为对应的布隆过滤器编号,进一步查找该编号的布隆过滤器对应的指纹子集表,判断指纹子集表中是否存在指纹X,是则进行子步骤(4.2),否则转子步骤(4.4);
(4.2)指纹X为重复指纹,指纹X对应的数据块为重复数据,将指纹X移动到指纹子集表的头部,置P=P+1,判断是否P>P0,是则进行子步骤(4.3),否则转子步骤(3.2);
(4.3)将内存中的所有布隆过滤器的数据及对应指纹子集表的数据写入外存储器,整个处理过程结束;
(4.4)表明该编号的布隆过滤器发生误判,对误判进行计数,判断是否是则表明指纹X为新指纹,转步骤(5),否则置M=M+1,转子步骤(3.7);
(5)未满布隆过滤器判断步骤,按照布隆过滤器的编号顺序查找是否存在未满的布隆过滤器BFt,1≤t≤r,是则转步骤(6),否则转步骤(7);
(6)新指纹标记步骤,包括下述子步骤:
(6.1)判断该布隆过滤器所属布隆过滤器组的扩展标记是否为“无”,是则置m”=m,进行子步骤(6.2),否则置m”=m’,再进行子步骤(6.2);
(6.2)根据m”计算所述指纹X的k个哈希值h1(X),h2(X),…,hk(X);
(6.3)将所述布隆过滤器BFt位向量的第一位作为起始点,将所述k个哈希值h1(X),h2(X),…,hk(X)作为偏移量,得到位向量中对应的k个位,将这k个位置为‘1’,完成对指纹X的标记;
(6.4)查找布隆过滤器BFt对应的指纹子集表,将指纹X插入到指纹子集表的头部;
(6.5)判断布隆过滤器是否装满,是则置该布隆过滤器未满标记为“已满”;
(6.6)置P=P+1,判断是否P>P0,是则进行子步骤(4.3),否则转子步骤(3.2);
(7)布隆过滤器数量判断步骤,包括下述子步骤:
(7.1)判断是否布隆过滤器编号T<r,是则进行子步骤(7.2),否则需对布隆过滤器阵列进行扩展,转步骤(8);
(7.2)创建新的布隆过滤器及新的指纹子集表;
在内存中,通过参数m、k创建一个布隆过滤器及其对应的指纹子集表,并置该布隆过滤器的未满标记为“未满”;对该布隆过滤器赋予编号T+1,转步骤(5);
(8)布隆过滤器阵列扩展步骤,包括下述子步骤:
(8.1)置布隆过滤器临时组号变量M’=1;
(8.2)选择第M’个布隆过滤器组,判断其扩展标记是否为“无”,是则转子步骤(8.5),否则进行子步骤(8.3);
(8.3)置M’=M’+1,判断是否是则转子步骤(8.2),否则进行子步骤(8.4);
(8.4)将各布隆过滤器组的扩展标记置为“无”,置n=t×n,置m’=m,转子步骤(8.1);
(8.5)以新设计容量n’=t×n,误判率上限ε不变,哈希函数数量k不变,计算布隆过滤器的新位向量长度m'=log2e×log2(1/ε)×n',对组内每个布隆过滤器进行重构,同时,以新设计容量n’扩大布隆过滤器对应的指纹子集表的容量,将该布隆过滤器组中所有的布隆过滤器未满标记置为“未满”,将该布隆过滤器组的扩展标记置为“有”;转步骤(5)。
2.如权利要求1所述的可扩展的重复数据检测方法,其特征在于:
所述分块处理步骤中:对用户需要备份或存储的文件分成数据块时,采用固定分块方法,固定分块所分成的数据块大小相等,每个数据块大小为4K~8K字节。
3.如权利要求1或2所述的可扩展的重复数据检测方法,其特征在于:
所述指纹提取步骤中:提取每个数据块的指纹时,采用MD5消息摘要算法或者SHA-1消息摘要算法。
4.如权利要求3所述的可扩展的重复数据检测方法,其特征在于:
所述布隆过滤器检索步骤中,所述子步骤(3.9)及子步骤(6.2)根据m”计算指纹X的k个哈希值,包括下述过程:
(a)首先利用随机函数产生2×k个32位2进制随机数,每两个随机数相乘得到k个乘积Si,1≤i≤k;k个乘积构成集合{S1,S2,S3,…,Sk};
(b)根据下述迭代公式计算指纹X的原始哈希值hi′(x):
式中,H0(x′0)=0,Y为指纹X的字节数目,使用sha-1消息摘要算法,Y=20,使用MD5消息摘要算法,Y=16;y为迭代变量,(ymod2)为y除以2所得的余数,符号为异或运算;x′y为位片段,y=1、2、…、Y,X中第1~8位构成第1个位片段x′1,X中第9~16位构成第2个位片段x′2,依次类推,最后一个位片段x′Y为X中最后8个位构成;
(c)用m”对原始哈希值hi'(X)取模,得到哈希值hi(X):
hi(X)=hi(X)modm”。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310028726.1A CN103970744B (zh) | 2013-01-25 | 2013-01-25 | 一种可扩展的重复数据检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310028726.1A CN103970744B (zh) | 2013-01-25 | 2013-01-25 | 一种可扩展的重复数据检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970744A true CN103970744A (zh) | 2014-08-06 |
CN103970744B CN103970744B (zh) | 2016-12-28 |
Family
ID=51240260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310028726.1A Active CN103970744B (zh) | 2013-01-25 | 2013-01-25 | 一种可扩展的重复数据检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970744B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317823A (zh) * | 2014-09-30 | 2015-01-28 | 北京合力思腾科技股份有限公司 | 一种利用数据指纹进行数据检测的方法 |
CN105554122A (zh) * | 2015-12-18 | 2016-05-04 | 畅捷通信息技术股份有限公司 | 信息更新方法、信息更新装置、终端和服务器 |
CN105574076A (zh) * | 2015-11-27 | 2016-05-11 | 湖南大学 | 一种基于Bloom Filter的键值对存储结构及方法 |
WO2016070529A1 (zh) * | 2014-11-07 | 2016-05-12 | 中兴通讯股份有限公司 | 一种实现重复数据删除的方法及装置 |
CN105701018A (zh) * | 2014-11-24 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 一种用于流计算的数据处理方法与设备 |
CN105740266A (zh) * | 2014-12-10 | 2016-07-06 | 国际商业机器公司 | 用于数据去重的方法和设备 |
CN106570025A (zh) * | 2015-10-10 | 2017-04-19 | 北京国双科技有限公司 | 一种数据过滤的方法及装置 |
CN106649346A (zh) * | 2015-10-30 | 2017-05-10 | 北京国双科技有限公司 | 数据重复性校验方法及装置 |
CN107391034A (zh) * | 2017-07-07 | 2017-11-24 | 华中科技大学 | 一种基于局部性优化的重复数据检测方法 |
CN108090125A (zh) * | 2017-11-14 | 2018-05-29 | 西北工业大学 | 一种非查询式的重复数据删除方法及装置 |
CN108089816A (zh) * | 2017-11-14 | 2018-05-29 | 西北工业大学 | 一种基于负载均衡的查询式重复数据删除方法及装置 |
WO2018119657A1 (zh) * | 2016-12-27 | 2018-07-05 | 日彩电子科技(深圳)有限公司 | 应用于数据去重的数据路由方法 |
CN108460030A (zh) * | 2017-02-17 | 2018-08-28 | 北京大学 | 一种基于改进的布隆过滤器的集合元素判断方法 |
CN108572789A (zh) * | 2017-03-13 | 2018-09-25 | 阿里巴巴集团控股有限公司 | 磁盘存储方法和装置、消息推送方法和装置及电子设备 |
CN109313632A (zh) * | 2016-04-22 | 2019-02-05 | 远程媒体有限责任公司 | 一种用于增强网络环境中数据处理的系统和方法 |
CN110610450A (zh) * | 2018-06-15 | 2019-12-24 | 伊姆西Ip控股有限责任公司 | 数据处理方法、电子设备和计算机可读存储介质 |
CN110890956A (zh) * | 2019-10-31 | 2020-03-17 | 浙江工商大学 | 一种针对关键数据流的改进数据分块方法 |
CN111291126A (zh) * | 2020-02-28 | 2020-06-16 | 深信服科技股份有限公司 | 数据回收方法、装置、设备及存储介质 |
CN111831223A (zh) * | 2020-06-19 | 2020-10-27 | 华中科技大学 | 提高数据去重系统可扩展性的容错编码方法、装置及系统 |
CN112084216A (zh) * | 2020-09-16 | 2020-12-15 | 上海宏路数据技术股份有限公司 | 基于布隆过滤器的数据查询系统 |
CN112527433A (zh) * | 2020-12-08 | 2021-03-19 | 平安科技(深圳)有限公司 | 页面弹窗控制方法、装置、计算机设备和存储介质 |
CN112650722A (zh) * | 2020-12-24 | 2021-04-13 | 五八同城信息技术有限公司 | 基于android应用程序的文件处理方法、装置、电子设备和介质 |
CN112988461A (zh) * | 2021-02-08 | 2021-06-18 | 中国联合网络通信集团有限公司 | 数据备份方法、边缘节点、数据中心及计算机存储介质 |
CN113468528A (zh) * | 2021-06-29 | 2021-10-01 | 平安普惠企业管理有限公司 | 恶意设备识别方法、装置、服务器及存储介质 |
CN113590606A (zh) * | 2021-09-27 | 2021-11-02 | 浙江九州量子信息技术股份有限公司 | 一种基于布隆过滤器的大数据量密钥去重方法及系统 |
CN115186155A (zh) * | 2022-09-13 | 2022-10-14 | 南京百家云科技有限公司 | 一种数据过滤方法、装置、电子设备及存储介质 |
CN117370624A (zh) * | 2023-12-04 | 2024-01-09 | 北京四方启点科技有限公司 | 一种电子单据处理方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253820A (zh) * | 2011-06-16 | 2011-11-23 | 华中科技大学 | 一种流式重复数据检测方法 |
-
2013
- 2013-01-25 CN CN201310028726.1A patent/CN103970744B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253820A (zh) * | 2011-06-16 | 2011-11-23 | 华中科技大学 | 一种流式重复数据检测方法 |
Non-Patent Citations (3)
Title |
---|
JIANSHENG WEI,HONG JIANG,KE ZHOU,DAN FENG: "DBA A Dynamic Bloom Filter Array for Scalable Membership Representation of Variable Large Data Sets", 《19TH ANNUAL IEEE INTERNATIONAL SYMPOSIUM ON MODELLING, ANALYSIS, AND SIMULATION OF COMPUTER AND TELECOMMUNICATION SYSTEMS》 * |
王桦: "在线备份服务机制及容错模型研究", 《中国博士学位论文全文数据库》 * |
胡盼盼: "在线重复数据删除技术的研究与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317823B (zh) * | 2014-09-30 | 2016-03-16 | 北京艾秀信安科技有限公司 | 一种利用数据指纹进行数据检测的方法 |
CN104317823A (zh) * | 2014-09-30 | 2015-01-28 | 北京合力思腾科技股份有限公司 | 一种利用数据指纹进行数据检测的方法 |
WO2016070529A1 (zh) * | 2014-11-07 | 2016-05-12 | 中兴通讯股份有限公司 | 一种实现重复数据删除的方法及装置 |
CN105630834A (zh) * | 2014-11-07 | 2016-06-01 | 中兴通讯股份有限公司 | 一种实现重复数据删除的方法及装置 |
CN105701018B (zh) * | 2014-11-24 | 2019-01-11 | 阿里巴巴集团控股有限公司 | 一种用于流计算的数据处理方法与设备 |
CN105701018A (zh) * | 2014-11-24 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 一种用于流计算的数据处理方法与设备 |
US11243915B2 (en) | 2014-12-10 | 2022-02-08 | International Business Machines Corporation | Method and apparatus for data deduplication |
US10089321B2 (en) | 2014-12-10 | 2018-10-02 | International Business Machines Corporation | Method and apparatus for data deduplication |
CN105740266A (zh) * | 2014-12-10 | 2016-07-06 | 国际商业机器公司 | 用于数据去重的方法和设备 |
CN106570025A (zh) * | 2015-10-10 | 2017-04-19 | 北京国双科技有限公司 | 一种数据过滤的方法及装置 |
CN106570025B (zh) * | 2015-10-10 | 2020-09-11 | 北京国双科技有限公司 | 一种数据过滤的方法及装置 |
CN106649346A (zh) * | 2015-10-30 | 2017-05-10 | 北京国双科技有限公司 | 数据重复性校验方法及装置 |
CN106649346B (zh) * | 2015-10-30 | 2020-09-22 | 北京国双科技有限公司 | 数据重复性校验方法及装置 |
CN105574076B (zh) * | 2015-11-27 | 2019-02-12 | 湖南大学 | 一种基于Bloom Filter的键值对存储结构及方法 |
CN105574076A (zh) * | 2015-11-27 | 2016-05-11 | 湖南大学 | 一种基于Bloom Filter的键值对存储结构及方法 |
CN105554122A (zh) * | 2015-12-18 | 2016-05-04 | 畅捷通信息技术股份有限公司 | 信息更新方法、信息更新装置、终端和服务器 |
CN109313632B (zh) * | 2016-04-22 | 2022-04-29 | 维迪阁传媒公司 | 一种用于增强网络环境中数据处理的系统和方法 |
CN109313632A (zh) * | 2016-04-22 | 2019-02-05 | 远程媒体有限责任公司 | 一种用于增强网络环境中数据处理的系统和方法 |
WO2018119657A1 (zh) * | 2016-12-27 | 2018-07-05 | 日彩电子科技(深圳)有限公司 | 应用于数据去重的数据路由方法 |
CN108460030A (zh) * | 2017-02-17 | 2018-08-28 | 北京大学 | 一种基于改进的布隆过滤器的集合元素判断方法 |
CN108572789A (zh) * | 2017-03-13 | 2018-09-25 | 阿里巴巴集团控股有限公司 | 磁盘存储方法和装置、消息推送方法和装置及电子设备 |
CN107391034B (zh) * | 2017-07-07 | 2019-05-10 | 华中科技大学 | 一种基于局部性优化的重复数据检测方法 |
CN107391034A (zh) * | 2017-07-07 | 2017-11-24 | 华中科技大学 | 一种基于局部性优化的重复数据检测方法 |
CN108089816B (zh) * | 2017-11-14 | 2021-05-11 | 西北工业大学 | 一种基于负载均衡的查询式重复数据删除方法及装置 |
CN108089816A (zh) * | 2017-11-14 | 2018-05-29 | 西北工业大学 | 一种基于负载均衡的查询式重复数据删除方法及装置 |
CN108090125A (zh) * | 2017-11-14 | 2018-05-29 | 西北工业大学 | 一种非查询式的重复数据删除方法及装置 |
CN108090125B (zh) * | 2017-11-14 | 2021-05-25 | 西北工业大学 | 一种非查询式的重复数据删除方法及装置 |
CN110610450A (zh) * | 2018-06-15 | 2019-12-24 | 伊姆西Ip控股有限责任公司 | 数据处理方法、电子设备和计算机可读存储介质 |
CN110610450B (zh) * | 2018-06-15 | 2023-05-05 | 伊姆西Ip控股有限责任公司 | 数据处理方法、电子设备和计算机可读存储介质 |
CN110890956A (zh) * | 2019-10-31 | 2020-03-17 | 浙江工商大学 | 一种针对关键数据流的改进数据分块方法 |
CN110890956B (zh) * | 2019-10-31 | 2023-04-18 | 浙江工商大学 | 一种针对关键数据流的改进数据分块方法 |
CN111291126B (zh) * | 2020-02-28 | 2023-09-05 | 深信服科技股份有限公司 | 数据回收方法、装置、设备及存储介质 |
CN111291126A (zh) * | 2020-02-28 | 2020-06-16 | 深信服科技股份有限公司 | 数据回收方法、装置、设备及存储介质 |
CN111831223A (zh) * | 2020-06-19 | 2020-10-27 | 华中科技大学 | 提高数据去重系统可扩展性的容错编码方法、装置及系统 |
CN111831223B (zh) * | 2020-06-19 | 2021-06-11 | 华中科技大学 | 提高数据去重系统可扩展性的容错编码方法、装置及系统 |
CN112084216A (zh) * | 2020-09-16 | 2020-12-15 | 上海宏路数据技术股份有限公司 | 基于布隆过滤器的数据查询系统 |
CN112527433A (zh) * | 2020-12-08 | 2021-03-19 | 平安科技(深圳)有限公司 | 页面弹窗控制方法、装置、计算机设备和存储介质 |
CN112650722A (zh) * | 2020-12-24 | 2021-04-13 | 五八同城信息技术有限公司 | 基于android应用程序的文件处理方法、装置、电子设备和介质 |
CN112650722B (zh) * | 2020-12-24 | 2023-03-31 | 五八同城信息技术有限公司 | 基于android应用程序的文件处理方法、装置、电子设备和介质 |
CN112988461A (zh) * | 2021-02-08 | 2021-06-18 | 中国联合网络通信集团有限公司 | 数据备份方法、边缘节点、数据中心及计算机存储介质 |
CN112988461B (zh) * | 2021-02-08 | 2023-05-23 | 中国联合网络通信集团有限公司 | 数据备份方法、边缘节点、数据中心及计算机存储介质 |
CN113468528A (zh) * | 2021-06-29 | 2021-10-01 | 平安普惠企业管理有限公司 | 恶意设备识别方法、装置、服务器及存储介质 |
CN113590606B (zh) * | 2021-09-27 | 2021-12-31 | 浙江九州量子信息技术股份有限公司 | 一种基于布隆过滤器的大数据量密钥去重方法及系统 |
CN113590606A (zh) * | 2021-09-27 | 2021-11-02 | 浙江九州量子信息技术股份有限公司 | 一种基于布隆过滤器的大数据量密钥去重方法及系统 |
CN115186155A (zh) * | 2022-09-13 | 2022-10-14 | 南京百家云科技有限公司 | 一种数据过滤方法、装置、电子设备及存储介质 |
CN115186155B (zh) * | 2022-09-13 | 2022-12-02 | 南京百家云科技有限公司 | 一种数据过滤方法、装置、电子设备及存储介质 |
CN117370624A (zh) * | 2023-12-04 | 2024-01-09 | 北京四方启点科技有限公司 | 一种电子单据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103970744B (zh) | 2016-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970744A (zh) | 一种可扩展的重复数据检测方法 | |
Fu et al. | Design tradeoffs for data deduplication performance in backup workloads | |
US10303797B1 (en) | Clustering files in deduplication systems | |
US10579661B2 (en) | System and method for machine learning and classifying data | |
US9183216B2 (en) | Cluster storage using subsegmenting for efficient storage | |
US9047301B2 (en) | Method for optimizing the memory usage and performance of data deduplication storage systems | |
US8478799B2 (en) | Namespace file system accessing an object store | |
US9367448B1 (en) | Method and system for determining data integrity for garbage collection of data storage systems | |
CN105069111B (zh) | 云存储中基于相似性的数据块级数据去重方法 | |
US20080270729A1 (en) | Cluster storage using subsegmenting | |
Bauer et al. | Lightweight BWT construction for very large string collections | |
CN105468642A (zh) | 数据的存储方法及装置 | |
CN102831222A (zh) | 一种基于重复数据删除的差量压缩方法 | |
CN101963982A (zh) | 基于位置敏感哈希的删冗存储系统元数据管理方法 | |
CN110109617B (zh) | 一种加密重复数据删除系统中的高效元数据管理方法 | |
Strzelczak et al. | Concurrent Deletion in a Distributed {Content-Addressable} Storage System with Global Deduplication | |
CN108027713A (zh) | 用于固态驱动器控制器的重复数据删除 | |
CN108475508B (zh) | 音频数据和保存在块处理存储系统中的数据的简化 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
US20220156233A1 (en) | Systems and methods for sketch computation | |
Franke et al. | Parallel Privacy-preserving Record Linkage using LSH-based Blocking. | |
WO2021127245A1 (en) | Systems and methods for sketch computation | |
US20220100718A1 (en) | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories | |
CN112395275A (zh) | 经由关联相似性搜索的数据去重 | |
US20210191640A1 (en) | Systems and methods for data segment processing |
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 |