CN101084499B - 用于搜索和存储数据的***和方法 - Google Patents
用于搜索和存储数据的***和方法 Download PDFInfo
- Publication number
- CN101084499B CN101084499B CN2005800390868A CN200580039086A CN101084499B CN 101084499 B CN101084499 B CN 101084499B CN 2005800390868 A CN2005800390868 A CN 2005800390868A CN 200580039086 A CN200580039086 A CN 200580039086A CN 101084499 B CN101084499 B CN 101084499B
- Authority
- CN
- China
- Prior art keywords
- collection
- data
- seed
- rdc
- input
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1453—Management of the data involved in backup or backup restore using de-duplication of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- 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/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种使用定义的相似性的指标在库中搜索与输入数据相似的数据的位置的***和方法,其搜索时间与库的大小无关并与输入数据的大小成线性关系,空间需求与库的大小的一小部分成比例。进一步分析被定位的相似数据段,以确定其共同(相同)数据部分,而不考虑共同数据部分在库中的顺序和位置。通过执行远程差分运算,使用显著降低的***带宽来实现远程运算。
Description
发明领域
本发明涉及用来搜索数据以识别已存储的数据并根据已存储的数据有效地存储新数据的***和方法。例如,这些***和方法在备份和恢复***内用于产生和维护大型数据的库(repository)是有用的。
背景技术
在设计备份和恢复***的时候,特别是在必须保存数字数据的大规模库的情况下,其设计关注的重点是在时间和空间上有效地存储大规模数据。例如,某个用户或用户群可能希望定期地(如每天或每周)将所有存储在其电脑上的数据备份至库,以防止可能的故障、破坏或意外地删除重要的数据。通常的情况是,大多数数据,有时超过99%,在上一次备份之后并没有发生改变,因此当前数据的大部分都能在库中找到,而只有一些很少的变化。如果库中那些与当前备份数据相似的数据能被有效地定位,就没有必要再将该数据存储一遍,仅需要记录那些改变的数据就可以了。这种仅一次性存储共同数据的处理被称为数据分解(data factoring)。
实现分解的大型备份和恢复***在其库中可以具有一拍字节(petabyte,PB)或更大。例如,记录客户交易的银行,或为多个用户存储电子邮件的因特网服务供应商,通常其库的大小从几百吉字节(gigabyte,GB)至多个拍字节。众所周知,1PB=1024TB(垓字节terabyte),1TB=1024GB(吉字节),1GB=1024MB(兆字节),1MB=1024KB(千字节),1KB=1024字节。换句话说,1拍字节是250个字节,或大约1015个字节。
在如此庞大的***内,要添加到库中的输入(备份)数据流可能超过100GB或更大。很有可能该输入数据与已存储在该库内的数据非常类似,但不完全相同。而且,可以不将备份数据流安排在与已存储在库内的数据相同的数据边界(例如,块对齐)。为了更有效地进行后续的分解步骤,备份和恢复***必须能够在库中有效地找到与输入流充分相似的数据的位置,而无需依赖库中数据与输入流数据的有关对齐。备份和恢复***也必须能够有效地将输入流添加至数据库,并将库中已被删除或替换的旧输入流从库中删除。
通常,可以假设数据变化是局部的。因此,例如,如果1%的数据被改变,则这些变化集中在局部区域,在这些区域里,可能有一些重要的变化,但数据区域的绝大部分维持不变。通常(尽管不是必须),例如1%的数据被改变,假如将数据看作512字节的块的流,而不是看作字节的流,则只有略微超过1%的块被改变。然而,由于输入流和库内没有预定的数据对齐,要找到局部化数据改变是一项艰巨的任务。
搜索相似的数据可以被认为是传统的模式匹配(pattern matching)问题的扩展,其中,在长度为n的文本T内搜索长度为m的字符串P的出现。通常,文本长度n比搜索字符串长度m要大很多。许多出版物公开了试图有效求解该问题的搜索方法,即,这些搜索方法比通过测试文本T中的每个位置来确定字符串P是否在此出现这种平凡方法要更快。通过对模式进行预处理,一些算法达到了更好的复杂性,例如可参见:
《字符串快速模式匹配》,见《SIAM Journal on Computing》6(1977)323-350页,作者:Knuth D.E.、Morris J.H.和Pratt V.R.。
《快速字符串搜索算法》,见《Communication of the ACM》20(1977)762-772页,作者:Boyer R.S.和Moore J.S.。
《有效的随机化模式匹配算法》,见《IBM研发杂志》31(1987)249-260页,作者:Karp R.和Rabin M.。
所有这些算法运算的时间量级为O(n+m),这是指搜索时间随着文本的大小线性增长。这些算法的一个问题是它们不能扩展到特定的界限之外。例如,如果能在1秒钟内完成1GB文本(大约300份钦定本圣经的大小)的搜索,则搜索一个一拍字节的文本需要超过12天的CPU时间才能完成。具有一拍字节(PB)或更大的库的备份和恢复***不会使用这种算法。上述算法的另一个缺点是其仅查找完全的匹配,不容易扩展来执行近似匹配。
代替对模式进行预处理,可以对文本本身进行预处理,建立被称为后缀树的数据结构,下面的出版物对些作了描述:
《线性模式匹配算法》,第14届状态转换和自动机理论研讨会会议录(Proceedings of the 14thIEEE Symposium on switching andAutomata Theory,1973)1-11页,作者:Weiner P.。
《在线构造后缀树》,Algorithmica 14(3)(1995)249-260页,作者:Ukkonen E.。
如果离线进行预处理,则预处理的时间就不会成为问题。然后可以使用后缀树,仅花O(m)的时间(即只取决于模式的大小,与文本的大小无关)进行后续的搜索。但是同样仅能找到完全的匹配;而且,尽管后缀树的大小与文本大小成线性,但也是难以承受的,因为有可能超过原始文本的6倍。
为了备份和恢复数据,期望能使用一种近似模式匹配的算法,因为通常是这样的情况:根据一些定义的相似性准则,不能在数据库中找到输入数据的完全拷贝,而是在严格表述上不同而又非常相似的拷贝。近似模式匹配已经得到广泛的研究,如在下列出版物中所描述的:
《字符串匹配与其他产品》,在R.M.Karp编辑的论文集《计算复杂性》,SIAM-AMS Proceedings 7(1974)113-125页,作者:Fischer M.J.和Paterson M.S.。
《快速并行与串行近似字符串匹配》,见《算法杂志》10(2)(1989)157-169页,作者:Landau G.M.和Vishkin U.。
《近似字符串匹配指南》,见ACM Computing Survey,33(1)(2001)31-88页,作者:Navarro G.。
最近一种算法时间复杂性为其中n是文本的大小,k是所允许的模式与文本之间不匹配的数量,如参见:
《带有K个不匹配的字符串匹配快速算法》,见《算法杂志》50(2)(2004)257-275页,作者:Amir A.、Lewenstein M.和Porat E.。
然而,对于大规模数据的库,不是可接收的复杂度。进入备份和恢复***的输入数据流的长度可能超过100GB或更大。如果假设库中存在与该输入流几乎相同的拷贝,仅有1%的数据改变,则仍然有大约1GB的差别,即k=230字节。为了在库中找到近似匹配的位置,该算法将花大约与文本大小n的180,000倍成比例的时间。我们的前提是文本长度n本身很大,算法扫描该文本一次都太慢,因此这是不能接受的。
另一个算法族基于哈希函数。在存储行业内这些被称为CAS(内容寻址存储),如在下列专利中描述的:
《Hash File System And Method For Use In A CommonalityFactoring System》,美国专利No.6,704,730,发明人:Moulton G.H.和Whitehill S.B.。
一般的范型如下:库数据被分成块,为每个块产生一个哈希值,该哈希值也被称为指纹或签名;所有这些哈希值被存储在索引中。为了定位一些给定的称为模本(version)的输入数据,该给定的输入数据也被分成块,并将相同的哈希函数(已经应用于库块的哈希函数)应用于每个模本块。如果在索引中找到模本块的哈希值,则宣布匹配。
与以前的方法相比,CAS的优势在于在索引中搜索相似数据,而不是在库文本上进行搜索,而且如果使用适当的数据结构来存储该索引,将会显著地缩短搜索时间。例如,如果以二杈树或更通用的B树来存储索引,则搜索时间仅为O(log(n/s)),其中n是文本的大小,s是块的大小。如果索引存储成排序的列表,则排序列表的插补搜索的预期时间为O(log(log(n/s)))。如果索引存储成哈希表,预期时间甚至能缩短至O(1),这意味着能够在恒定的预期时间内,特别是与库文本的大小无关的时间内,完成对索引的搜索。
但是,该方案也有一些缺陷。如前所述,该方案仅能找到完全的匹配,即只有当输入数据块与库数据块完全相同时才宣布匹配。好的哈希函数的一个要求是当两个块不同即使只有一点点不同时,相应的哈希值应完全不同,这需要确保哈希值的良好分布。但是在备份和恢复应用中,这意味着如果两个块仅是近似等同,哈希方案不会检测到它们的近似。在找到的哈希值附近进行搜索也不能找到近似匹配。而且,宣布的匹配不必对应于两个块的真正匹配:由于哈希函数h通常不是一一对应,所以通常可以找到块X和Y,X≠Y而h(X)=h(Y)。
更进一步,更新库和通过网络传输数据所需的带宽要求也为改善提供了机会。
这些问题导致在块大小选择上的两难境地:如果选择大块,则得到较小的索引(由于索引需要存储n/s个元素)且误匹配的概率会降低,但同时,找到匹配块的概率也降低,这最终降低了压缩率(假设在压缩方法中使用哈希函数,则仅存储不匹配的块,并指向匹配的块)。另一方面,如果选择小块,整个压缩效率可能会提高,但误匹配的概率也提高,增加的块的数量要求大的索引,这样索引本身就成了一个存储问题。
总之,建议了许多较好的方法来解决这类问题,但相对于大规模数据的库的数据量,这些方法都不能以合理的时间和空间进行扩展。
发明内容
本发明涉及用于有效的搜索、存储和/或归约的***和方法。而且,通过实现鲁棒的索引和远程差异处理来减少***之间传输的数据量。
与本发明一个实施例相一致的***和方法能够使用定义的相似度指标,在二进制未解释数据的库中搜索与输入数据相似的数据的位置,并且完成这样的搜索,时间开销与库的大小无关而与输入数据的大小成线性,空间开销与库大小的一小部分成比例。
与本发明的其他实施例相一致的***和方法能够进一步分析库和输入数据的相似数据段(segment),并有效地确定其共同(相同)部分,不考虑共同数据在库和输入数据中的顺序和位置,并且时间开销与段的大小成线性,空间开销恒定。
提供本发明特定实施例的一种***和方法用于减少用来存储数据的网络带宽量。该***/方法不需要通过网络来发送已存在于目的地的数据。在一个实施例中,数据的库位于第一位置。第二位置具有待存储在数据库内的新数据。将新数据与已存储在库内的数据进行比较。优选,不是将所有新数据发送到该库用于比较,发送已存储在库内的数据会浪费带宽,通过发送比整个新数据小很多的新数据的代表,这些新数据的代表具有足够的信息并能够根据这些信息进行新数据与库数据的比较,由此完成新数据与库数据的比较,以确定相似或不同。
在一个实施例中,一种方法包括:识别库数据内的输入数据,其中库数据包括库数据块(chunk),输入数据包括输入数据块,并且其中每个库数据块具有相应的包含一个或多个库数据块区别特征(RDC)的集合,该方法为每个输入数据块执行以下步骤:确定包含一个或多个输入数据块区别特征(IDC)的集合;将所确定的IDC集与一个或多个RDC集进行比较;以及根据所确定的IDC集与一个或多个RDC集的比较来识别与输入数据块相似的库数据块。
在一个实施例中,输入数据位于第一位置,库数据位于远程位置,该方法进一步包括:在第一位置确定IDC集;将所确定的IDC集从第一位置发送到远程位置;以及在远程位置将所确定的IDC集与一个或多个RDC集进行比较。
在另一个实施例中,第一位置是第一计算机,远程位置是不同于第一计算机的远程计算机,第一和远程计算机相互网络通信,并且库数据存储在通过该远程计算机访问的数据库内。
识别IDC集与RDC集的相似性依赖于相似性阀值,当在RDC集内找到预定数量的ICD集内的区别特征时,满足相似阀值。
确定区别特征集包括:识别相应数据块内的一个或多个数据部分;以及计算相应数据块内的一个或多个数据部分的每个的数学哈希值。
根据本发明的另一个实施例,一种在库数据内搜索与输入数据相似的数据方法包括:将库数据分成一个或多个库块;并且为每个库块计算相应的库区别特征(RDC)集,每个RDC集包括至少一个区别特征;维持与每个RDC集和对应的库块相关联的索引;将输入数据分成一个或多个输入块,并且对每个输入块:计算对应的输入区别特征(IDC)集,该IDC集包括至少一个区别特征;将该IDC集与存储在索引内的一个或多个RDC集进行比较;如果在索引内所存储的RDC集内找到IDC集内的区别特征的相似阀值j,则判定该输入块与相应的库块之间存在相似性。
每个RDC集和IDC集通过以下步骤获得:将相应的数据块划分成多个种子(seed),每个种子是该相应数据块的更小部分并以种子序列排列;对每个种子应用哈希函数以产生多个哈希值,其中每个种子产生一个哈希值;选择该多个哈希值的子集;确定种子序列中与所选择哈希值的子集对应的种子的位置;对确定的位置应用函数以确定种子序列中对应的其他位置;以及将区别特征集定义成位于所确定的其他位置的种子的哈希值。
另一个实施例是用于识别库数据内的输入数据的***,其中库数据包括库数据块,输入数据包括输入数据块,并且其中每个库数据块具有对应的包括一个或多个库数据块区别特征(RDC)的集合,该***包括:为每个输入数据块确定包括一个或多个输入数据块区别特征(IDC)的集合的装置;为每个输入数据块将所确定的IDC集与一个或多个RDC集进行比较的装置;以及为每个输入数据块根据所确定的IDC集与一个或多个RDC集的比较来识别与输入数据块相似的库数据块的装置。
在一个实施例中,该***还可以进一步包括:为每个输入数据块,通过比较各个块的全部数据,确定输入数据块和所识别的相似库数据块之间的一个或多个差异的装置。
在一个实施例中,用于确定区别特征集的装置包括:用于识别相应数据块内的一个或多个数据部分的装置;以及用于计算相应数据块内的一个或多个数据部分的每个的数学哈希值的装置。
在另一个实施例中,该***进一步包括:用于在一个集合中确定k个最大数学哈希值的装置,k是预定的整数;用于对k个最大数学哈希值中的每一个识别相应数据部分的装置;以及确定一组区别特征作为下一个顺序数据部分的数学哈希值的装置,该下一个顺序数据部分与对应于k个最大数学哈希值中每一个的每个数据部分相关。
区别特征由下列中的一个确定:哈希函数;滚动哈希函数;以及模数哈希函数,并且至少以下列方式之一将RDC集存储在索引里:二杈树、B树、排序列表以及哈希表。
一种在库数据内搜索与输入数据相似的数据的***,该***包括:用于将库数据分成一个或多个库块的装置;用于为每个库块计算对应的库区别特征(RDC)集的装置,每个库区别特征集包括至少一个区别特征;用于维持与每个RDC集和对应的库块相关联的索引的装置;用于将输入数据分成一个或多个输入块并且为每个输入块执行下列步骤的装置:计算对应的输入区别特征(IDC)集,该IDC集包括至少一个区别特征;将该IDC集与存储在索引内的一个或多个RDC集进行比较;如果在索引内所存储的一个或多个RDC集内找到该IDC集内的区别特征的相似阀值j,则判定输入块与对应的库块之间的相似性。
每个RDC集和IDC集通过以下步骤获得:将相应的数据块划分成多个种子,每个种子是各个数据块的更小部分并以种子序列排列;对每个种子应用哈希函数以产生多个哈希值,其中每个种子产生一个哈希值;选择多个哈希值的子集;确定种子序列中与所选择的哈希值的子集对应的种子的位置;对所确定的位置应用函数以确定种子序列中对应的其他位置;以及将区别特征集定义为位于所确定的其他位置的种子的哈希值。
通过识别k个最大哈希值来选择哈希值的子集;并且应用函数确定对应的其他位置是用来识别种子序列中的下一个种子。
在另一个实施例中,一种计算机可读介质,该介质上编码有使计算机执行一种方法的计算机可执行的指令,该方法包括:识别库数据内的输入数据,其中库数据包括库数据块,输入数据包括输入数据块,并且其中每个库数据块具有对应的包含一个或多个库数据块区别特征(RDC)的集,该方法为每个输入数据块执行以下步骤:确定包含一个或多个输入数据块区别特征(IDC)的集;将所确定的IDC集与一个或多个RDC集进行比较;以及根据所确定的IDC集与一个或多个RDC集的比较来识别与输入数据块相似的库数据块。
进一步,一种计算机可读介质,该介质上编码有使计算机执行一种在库数据内搜索与输入数据相似的数据的方法的计算机可执行的指令,该方法包括:将库数据分成一个或多个库块;并且为每个库块计算相应的库区别特征(RDC)集,每个RDC集包括至少一个区别特征;维持与每个RDC集和对应的库块相关联的索引;将输入数据分成一个或多个输入块,并且为每个输入块计算对应的输入区别特征(IDC)集,该IDC集包括至少一个区别特征;将IDC集与存储在索引内的一个或多个RDC集进行比较;如果在存储在索引内的一个或多个RDC集内找到IDC集内的区别特征的相似阀值j,则确定输入块与相应的库块之间存在相似性。
更进一步,该计算机可读介质还包括执行获取每个RDC集和IDC集的步骤的计算机可执行的指令,该获取步骤包括以下步骤:将对应的数据块分成多个种子,每个种子是各个数据块的更小部分并以种子序列排列;为每个种子应用哈希函数以产生多个哈希值,其中每个种子产生一个哈希值;选择多个哈希值的子集;确定种子序列中与所选择的哈希值的子集对应的种子的位置;对所确定的位置应用函数以确定种子序列中对应的其他位置;以及将区别特征集定义为位于所确定的其他位置的种子的哈希值。
通过识别k个最大哈希值来选择哈希值的子集;并且应用函数确定对应的其他位置是用来识别种子序列中的下一个种子。
附图说明
附图包含在说明书中并构成本说明书的一部分,描述各种实施例和本发明的各个方面,并与本说明书共同解释本发明的特定原理。附图包括:
附图1示出了示范的备份和恢复***的一般***结构,该***可能在本发明的特定描述的实施例中用到;
附图2是根据本发明的一个实施例处理输入模本流的步骤的流程图;
附图3是根据一个实施例处理输入模本流的数据块的详细步骤序列;
附图4是根据一个实施例寻找库中模本块位置的更详细步骤序列;
附图5示出根据一个实施例模本块中的种子与库块中的种子之间的对应;
附图6是示出特定示例中相似搜索的结果的三维图形表示,其示出如何在数据变化的情况下基本上保留区别特征;
附图7是模本和库中对应区间的示意表示,定义了在二进制差分算法(Binary Difference Algorithms)的实施例中使用的记号;
附图8是模本和库中对应区间的示意表示,示出了锚集;
附图9是根据本发明的实施例示出计算锚集和对每个锚集执行二进制差分处理的示范步骤的流程图;
附图10是根据一个实施例处理锚集的更详细步骤序列;
附图11是模本和库的示意表示,根据本发明的一个实施例示出锚集中的锚;
附图12是附图11中相同模本和库的示意表示,示出在锚周围扩展匹配的步骤;
附图13是附图11中相同模本和库的示意表示,示出计算库中扩展的锚匹配之间的哈希值的步骤;
附图14是附图11中相同模本和库的示意表示,示出扩展匹配的步骤以及模本和库中匹配的对应;
附图15示出示例的***环境;
附图16示出替换的一般***结构;
附图17是示出使用最小带宽更新远程库的示范步骤的流程图;以及
附图18是示出从一个***向另一个***传输模本数据的示范步骤的流程图。
具体实施方式
如在下面的实施例中所使用的,库(repository)是在计算机的存储器和/或存储装置内存储的数字数据的集合;其大小没有限制,且库可以是一个或多个PB的数量级。在特定的应用中,将数据作为二进制未解释的数据存储。输入数据类型可以与库数据的类型相同,也可以不同;输入数据也被称为模本(version)。在特定的应用中,模本和库都被分成块或称存储块(chunk)。块的大小m是参数,如是32MB。术语“种子(seed)”指连续的数据元素的序列,如字节序列。种子的大小s也是参数,如为512字节,或(在其他非限制性的示例中)为4KB或甚至8KB。通常,种子的大小s远远小于块的大小m。
根据本发明特定实施例,使用哈希函数。哈希函数通过对第一空间中的元素分配一个被称为哈希值的数值,将一些较大空间的元素映射到一些较小空间的元素。哈希函数通常为数学函数,在使用时,以第一空间的基础元素的某种数值解释作为输入。多数情况下,好的哈希函数为第一空间元素的即使微小变化产生统计不相关的哈希值。
在下面的实施例中使用模数哈希函数(modular hash function)。但是,这是非限制性的示例。众所周知,模数哈希函数具有这样的特性,当已知某个流中s个连续的基础元素的哈希值后,就能够按O(1)量级的运算来计算该流中从后一个基础元素开始(并因此与前一个基础元素的序列相重叠)的s个基础元素的哈希值。按照这种方式,块中所有种子的所有哈希值可以按O(m)量级而不是按O(m*s)量级来计算。由于此特性,该哈希函数被称为滚动哈希函数(rolling hash function)。注意本发明并不限于特别地使用滚动哈希函数或一般地使用哈希函数。
索引(index)是促进有效搜索的数据结构。其应当是空间有效的。对于一些应用(如当前的实施例),其应支持有效的动态运算,如***和删除。可以用哈希表来实现索引,这样就能分别按O(1)量级的运算支持搜索、***和删除。根据下面所描述的本发明的特定实施例,用关键字(key)来标引索引,关键字是一些种子的哈希值,每个关键字值识别产生该关键字的种子。
在附图1中,示出了根据本发明的一个实施例的一般存储***结构。当然,本发明并不限于该特定的***结构。在附图1中,存储区域网络SAN(12)将四个备用服务器(11)连接至服务器(13)。服务器(13)包括虚拟带接口(14)和RAM存储器(15);索引(16)存储在RAM(15)。服务器(13)连接至库(17),库(17)存储在一个或多个(可能是外部)辅助存储单元。
应注意本发明并不局限于存储区域网络(SAN)及其特定的技术特征,如光纤通道。本领域的普通技术人员知道可以使用任何网络技术来促进包括但不局限于网际协议(IP)和TCP/IP的服务器之间的网络通信。尽管附图以及下面的描述指的是SAN,但这仅仅用于说明的目的,不限制本发明的任何实施例,除非在权利要求书中明确提出。
附图2中的流程图示出根据本发明的一个实施例的***生命周期的步骤。如图所示,处理从空索引(21)开始。索引的内容和功能将在下面详细描述。接下来,***进入等待状态直至接收到模本(22),然后处理该模本(23),将在下面更详细描述此处理。在处理模本之后,***返回到等待状态(22)直至接收到另一个模本。随着接收到更多的输入模本,序列(22,23)一直继续。输入模本可以或不可以更新库和/或索引。在本文所描述的一个分解(factoring)应用中,如果识别出输入模本是新的(与库中的数据不是很相似),则将其全部并入库中。另一方面,如果识别出输入模本与库中已存在的数据很相似,则利用库数据对其进行分解,只存储该模本的不匹配的部分。从上面可以看出,***操作时间越长,库的容量越大。在特定应用中,库的大小从几百吉字节至多个拍字节不等。因此,有必要以有效的方式定位和识别与输入数据非常相似的库数据;否则,处理时间太长,且***在经济上或商业上都不可行。
通过类比的方式,作为说明的替换的方法,但不局限于此方式,假设一种情况,有两个差异很大的文件A和B。在一个初始化的***中,即空库中,根据本发明的一个实施例,每个文件A和B被分成块或区段并存储(将在下面更详细地讨论块)。为了更容易地说明此情况,块的大小如下:每个文件A和B为四个块长——每半个文件有两个块长。然后将这八个块存储在库中。应注意,根据此实施例,这些块不是基于文件名存储的。存储这些块使得库能够根据块重建文件。
接着,假设剪切文件A的前半部分并粘贴(至文件C)随后剪切文件B的后半部分并粘贴(至文件C),并且不增加其他附加数据,由此创建一个新的文件C。可以看出,文件C与每个文件A和B有基本相似之处,但又与每个文件有基本不同之处。
本实施例将文件C分成四个块,并在库中寻找相似的块。在文件C的前两个块和文件A的前两个块之间,以及在文件C的后两个块和文件B的后两个块之间,识别出相似的块。由于***仅识别相似的块,而不是完全相同的块,因此***将确定相似块之间的差异(分解)。这里,相似块是相同的。因此,在此情况下,文件C已经有效地存储(如A和B块),并且存储文件C所需的空间,即能够重建和检索文件C所需的空间,比存储整个文件C所需的空间要小很多。在基于文件名称的***中,将会再次存储文件C的四个块(作为文件C),由于这些块已经存储在***里面,因此这是多余的。
为了重建文件C,根据本发明,***将检索已经为文件A的前半部分存储的两个块和已经为文件B的后半部分存储的两个块。
在另一种情况下,通过剪切文件A的前半部分并粘贴(至文件D),然后剪切文件B的后半部分并粘贴(至文件D),来创建一个新的文件D。结果,文件的标题从“约翰·亚当斯的一生”变为“给约翰·安普的贷款”,但没有其他变化。可以再次看出文件D和A之间以及文件D和B之间存在基本相似,但又存在基本不同。
本实施例将文件D分成四个块,然后寻找已经存储的相似块。在此情况下,***将从文件A找到前两个块,从文件B找到后两个块,作为与文件D相似的块。然后,***将确定文件D的第一个块和其各个相似的块之间的差异。将判定差异,即标题中的改变的位置。因此,在库中,文件D用文件A的前两个块和文件B的后两个块表示,但带有标识,即增量(δ)或差异,由于表示文件D的第一个块与所识别的相似块之间的不同之处以及如何不同,在该示例中,第一个块与文件A关联。因此,库中表示文件D所需的空间的量比存储整个文件D要小得多。
尽管前述的情况参照文件名即文档来描述,但是由于比较是根据块来进行,本发明的各种实施例对任何文件***都是透明的,将在下面详细描述特征。有了本***,就有可能在基于文件或基于文件名称的***内,即使文件A、B、C和D不与同一个用户关联,但仍然能够确定相似性并完成有效的存储。当备份***或某人试图寻找相似的***,如果是基于文件***,就不能确定上述情况中的文件A、B、C和D的部分之间的相似性。有利地,本发明对大多数公知的文件***是透明的。
附图3详细示出根据本发明的一个实施例的处理模本(附图2中的步骤23)的方法。当接收到模本之后(31),模本被分成更小的块(32),如每块32MB。选择第一输入块(33);处理该输入块以在库中寻找充分相似的块及其位置(34)。下面将参照附图4更详细地描述步骤(34)。在找到相似的库块之后,进一步处理模本块(35),根据本实施例,该步骤需要利用库来分解模本块。对输入模本其他块(34-37)重复此处理,直至模本中不再有其他块,此时处理结束(38)。
根据本发明的不同实施例,假设输入块与特定库数据匹配,则首先测试该输入块之后的输入块与该相匹配的库块之后的库数据块是否匹配,因此直接进至其特定应用的处理(35)。另一方面,假如其后的输入块测试失败,则进行完整处理以寻找其相似的库数据(34,35)。
同步算法和分解
附图4示出根据本发明的一个实施例的在库中有效寻找充分相似块的位置的步骤序列(附图3中的步骤34)以及随后的分解步骤序列。用来寻找与输入(模本)块相似的库块的算法在本文中被称为同步算法,因为其输出包括库和模本中的共同点,这些共同点对后面用于有效地对齐(在相同的数据边界)以前未对齐的数据段的处理有用。
以下面的方式处理大小为m如32MB的输入块(41)。首先,计算模本块的k个区别特征集(42),其中k是该算法的参数,下面将解释(通常数量级是几十),且k<<m(块大小)。根据一个实施例(如将在下面参照特定的示例进一步描述的),可以用下列方法计算k个区别特征集(未在附图4中示出):
(1)计算输入数据块的每个种子的哈希值。种子的大小s大大小于字符串长度m,如4KB。通过此非限制性的实施例,使用在每步迭代中按一个字节步进的滚动哈希函数来计算每个种子的哈希值。相对于包含在此范围内的4KB种子大小,在每步迭代中计算哈希值。该示例中输入块大小m=32MB,种子大小s=4KB,对每个块,获得3,550,337(32MB-4KB+1)个哈希值,块中每个可能的字节偏移有一个哈希值。滚动哈希函数具有这样的优势:一旦知道具有s个字节的种子的哈希值后,就能够以O(1)的运算量级、而不是O(s)的运算量级来计算下一个s字节的哈希函数(即相对于前一个s个字节移动了一字节的s个字节,因此其具有s-1个重叠字节)。注意本发明不限于使用哈希函数,也不限于使用滚动类型的哈希函数。
(2)然后,从计算的哈希值(33,550,337个)中选择k个最大哈希值,即相应k个种子的按降序排列的最大哈希值;这k个种子构成k个最大种子。然后,分别选择该k个最大种子后移一个字节(重叠s-1个字节)的相应k个种子的k个哈希值。这k个种子构成k个区别种子,且其相应的哈希值构成k个输入区别特征。注意最大值本身具有不均匀的概率分布。但是,如果使用好的哈希函数,则后面得到的k个值的概率分布会非常接近均匀,因此基本会更好地用于所期望的应用。均匀分布指k个区别特征被大致均匀分配为某个数值范围内的数。
注意本发明不限于按上述的方式计算区别特征。任何在很高程度上导致鲁棒性、良好分散特性以及对指定的块可重复的选择都可用于本发明的该实施例。
定义:
鲁棒性:在块经历了适度变化(如多至25%的种子)之后,分配给块的特征将保持不变。
良好分散性:特征位置在块中很好地(大致均匀地)分散(地理分散)。
可重复性:特定形式的块基本总是分配给相同的特征。
这些方法可以只考虑块的种子的子集。例如,根据特定实施例,可按块的区间来进行特征选择,区间之间的距离由数学或地理序列定义。其他的方法考虑块的所有种子,如前面所描述的方法。
根据此实施例,能够加强特征之间的最小地理(位置)的分散,因此扩大了覆盖范围。总之,可以应用任何基于所计算种子值的数学特征的可重复选择。
例如,可以选择k个最小哈希值,即最小的哈希值,或靠近块中所计算的所有哈希值的中值(median)的k个哈希值,或甚至是靠近一些预定常数的k个哈希值。另一个示例是选择k个对(pair)的和数作为k个特征,如第一对由最小值和最大值构成,第二对由第二最小值和第二最大值构成,等等。也可以使用其他变形,这取决于特定的应用。
同样,代替使用最大值所对应种子的一字节移动,也可以使用一些其他预定的常量移动或甚至是依据位置和/或所计算的哈希值的不同移动。因此,使用最大哈希值和一字节移动的示例仅是一个可能的实施例。
下面给出此计算区别特征的步骤的特定示例。
在该实施例中,库与索引关联,索引相对于每个库块存储有n个区别特征,其中n<=k。n个区别特征分别是n个大小为s字节的种子的哈希值,这些种子分别是该库块中具有最大哈希值的n个种子后移一个字节(重叠s-1个字节)的s个字节。为每个输入块计算k个区别特征而索引却仅对每个库块包含n个区别特征的原因在下面解释。索引进一步在库中存储每个区别特征的位置。本发明不限于该特定的索引结构以及上述内容。
为了更好地了解索引结构,根据本发明的实施例,附图5示出了索引(44)以及输入块(51)内的区别特征(55i-59i)集(如5个)和对应的位于基本相似的库块(52)之中的区别特征(55r-59r)集(如5个)之间的对应。库块(52)形成库(53)的一部分,这里库(53)存储大量的块(50)。如上所述,区别特征是选择的哈希值集,哈希值根据良好分散的种子产生,如输入块(51)内的五个三角形(55i)至(59i)所示的种子。在基本相似的库块(52)内示同样有五个区别特征(55r至59r)。索引(44)保存有库块(包括库块(52)的五个区别特征以及关联的位置数据(如库中块(52)的相关位置))。因此,在相似搜索期间,当发现库块(52)的值与输入块(51)的值匹配时,通过提取相关联的位置数据,就可知道在库内找到的块(52)的位置。随着新的模本进入库,与每个模本的块关联的哈希值(以上述的方法计算的)被添加至索引,索引(44)不断地增长。
回到附图4,搜索索引(44)寻找区别特征的哈希值,直至找到至多n个匹配(步骤43)。更具体地说,在索引中搜索输入块集的k个区别特征的每一个区别特征来寻找匹配,一直这样搜索,直至找到至多n个区别特征匹配。设j(j<=n)是所匹配的区别特征的数量。显而易见,如果在检查输入块的k个区别特征的整个集之前(比方说仅检查k个值中的i个值)找到n个匹配,则无需再对剩余值(在该示例中为k-i个值)进行检查。
注意由于要求搜索索引(在该示例中为哈希表)至多k次,因此寻找这j个匹配的计算复杂性较低,每次复杂性为O(1)。
在一个实施例中,具有j≥2个匹配区别特征的模本块被认为与一个或多个库块匹配。另一方面,具有j<2个匹配区别特征的模本块被认为与任何库块不匹配。单个匹配(j=1)被认为不具有统计重要性,因为对每个大型的库来说,单个匹配的出现并非罕见的事件。
应注意模本块的区别特征可以与库块的多个区别特征匹配。也有可能两个模本区别特征与两个相距甚远并可能属于两个不同的库块的库区别特征匹配。从上述可以得出:一个模本块可能与多个库块匹配。对于每个这样的库块i,设hi是这种匹配区另特征的数量。在一个实施例中,库块i和模本块之间的相似程度按hi和n之间的比率来度量;当该比率超过阀值时,就能够确定该库块与模本块充分相似(附图4中的步骤45)。
例如,假如某个模本与存储在库中的二进制数据的旧模本相比有一些变化。通常,这种变化反映在经历一些局部变化的一小部分种子中。对于一个指定的块,实际影响是其中大部分没有变化。由于选择将块的区别特征的位置适当地分散(地理上在整个块中分散),因此,如果有局部变化,则该局部变化仅影响区别特征的极少部分,而其余部分不会变化。换句话说,即使有大量的局部变化,许多区别特征仍然没有变化,因此该方法是鲁棒的。据统计,在特定实施例中,如果该搜索找到一个库块至少有两个匹配(指在后一个例子中,j≥2),则该库和模本块充分相似,值得作进一步的比较。
在选择实施例中,为了改善区别特征在模本块上分散的均匀性(该模本块有可能最终也是库的一部分),块被进一步分成u个子块。为每个子块计算k/u个区别特征,总共构成k个区别特征。
在选择实施例中,为了改善区别特征的每个匹配的重要性,维持一个频繁重现的区别特征的列表。当为数量上超过一定阀值的若干模本块计算了某个区别特征时,该区别特征被认为是属于数据内的某种***模式,从而产生减少的区别信息。然后,将其添加到重现值的列表,以避免当其对随后的块出现时而被使用。当计算区别特征时,检查该值是否在该列表中存在,如果在,则丢弃该值,并代替它计算另一个区别特征。
在所述的实施例中,可能在索引中搜索大于n且最多为k个区别特征,而针对每个库块,仅有n个区别特征存储在索引中。在该实施例中,对最大哈希值可能有两种影响,这些影响可能由模本块相对于库的变化所产生的:1)由于包括其相应种子的数据被修改,因此最大哈希值会消失;以及2)改变的数据会引入较高的最大值,来替换已存在的最大值。在涉及第二种影响的情况下,由于先前的最大值没有消失而仅是被替换,因此搜索更多的区别特征会提供更大的稳定性。这两种影响就是为什么按降序选择最大值和/或为什么选择k>n的原因。
附图6示出如何不管数据变化而基本上保留区别特征的示例。在该示例中,数据是mp3数据,库大小为20GB,模本大小为几万块,块大小为32MB,以及为每个块计算的区别特征的数量为8。在所示的搜索结果的三维图形中,水平轴(宽度)表示找到的关键字(区别特征)的数量和搜索的数。左边的边轴(深度)表示模本中被改变的数据种子的百分比。右边的边轴(高度)表示对其搜索到和找到关键字的块的数量。因此,每行(按深度)表示给定一些种子改变百分比对区别特征的数量的影响。
例如,在第5行,10%的数据被改变,然而平均大约5000个块其8个区别特征中仍有7个没有变化,超过95%的这些块仍然存在其8个区别特征中的4个或更多。从第1行至第4行,分别有5%、3%、2%和1%的数据被改变,区别特征的保留逐渐比上一行多。随着数据改变的百分比的增加,设置较低的阀值(在库与输入中的最少匹配的区别特征的数量)能够找到更多的相似数据。在该示例中,25%数据变化(第8行)的顶峰位于大约找到4个关键字的位置,如果将阀值设为4(在k个输入区别特征中),则相似性搜索基本返回所有超过25%数据变化的库位置。如果对于相同的25%数据变化,将阀值设置得更高,如6,则搜索返回更低百分比的相似库位置。因此,如附图6这样的图,能够帮助用户在特定的应用中选择值j、k、m和n。
再次回到附图4,当找到一个或多个充分相似的库块时,从索引(45-46)提取每个匹配的库块的位置。上面曾描述过可以从索引中检索库块的位置数据(与j个找到的哈希值相关)。在随后的步骤中可以使用一个或多个匹配的库块,并可以根据其相似程度来对库块分等级。在该实施例中,随后的步骤是涉及模本块和其匹配的库块的分解步骤(47),这导致按存储有效的方式将模本块添加到库中。在这样的分解备份和恢复***中,进一步的步骤包括识别模本和库中共同(相同)的和非共同(不相同)的数据,并仅存储模本中的非共同的数据(使用合适的指针保持流的一致),从而节省存储空间。例如,在典型的备份和恢复***中,在不同的备份之间的数据可能仅改变了1%。可以通过仅将其1%的数据添加到库中,并将指针保持在能够找到剩余数据的地方,这样将第二个备份添加到库中,这样能有效地节省所要求的99%的空间。
在该实施例的下一个步骤(48)中,从索引中删除库的匹配部分的区别特征。执行该步骤是为了从索引中消除对任何当前由更新模本的新输入块所代替的“旧”部分的引用。在下一个步骤(49)中,将n个最重要的区别特征添加到索引中。在该实施例中,如果A的最大种子的哈希值比B的最大种子的哈希值大,则区别特征A比区别特征B更重要。注意由于n较小,且可以按O(1)量级的运算从哈希表中删除和***n个值中的每一个,因此该步骤基本是无开销地完成。模本块的处理至此结束(404)。
在附图4中,如果没有找到匹配(即j小于某个找到匹配的阀值),则由于没有找到相似库数据,用某种其他方法来处理新模本块(403)。在一个示例中,模本块无需分解就存储在库中。根据本实施例的索引更新策略,将该模本块的区别特征添加到索引中(49)。然后处理结束(404)(既在上述的匹配成功路线中也在匹配失败路线中),直至处理新模本块。
注意本发明不限于上述的索引更新策略的示例。对于其他应用,可以同时保留模本块和其匹配库部分的所有区别特征;或替换地,避免添加模本块的区别特征;或可能地,用模本和库块的区别特征的混合来更新索引。
具体地说,在该实施例中,当模本块的区别特征替换所有匹配的库部分的特征时,可以使用另一个被称为“反向(inverse)索引”的索引,来识别所有与相关的库部分关联的区别特征(一些可能与模本块的区别特征不匹配)。该反向索引按库中的位置标引,并将这些位置映射到其所关联的区别特征。在删除库中的一部分时,该反向索引还便于保持主索引的一致性。
注意本发明不限于索引从空白开始的实施例。对于其他应用,可以根据库数据的现有的数据体,按上述将该库分成块,计算其区别特征并根据该信息来建立索引的方法来恰当地加载索引。在此情况下,根据一些前面提到的更新策略,索引可能进一步利用输入的模本块更新,或可能不更新。
应强调,在库中搜索与模本数据相似的数据,其计算复杂性与模本的大小成正比,即O(模本大小)的量级,与库的大小无关。根据上述非限制性的实施例,该搜索对每个模本块需要不超过k次的哈希表搜索,运算复杂度O(1)。由于k<m(m为模本块的大小),因此根据给定的实施例,在库中搜索与模本数据相似的数据的计算复杂性没有超过O(码本大小),即计算区别特征的复杂性,这确实与库的大小无关。因此,即使是非常大的库,该相似数据的搜索方法非常有效。
而且,应强调,索引的空间需求与对库的每块存储的区别特征的数量和块大小的比率有关,即与n和m的比率有关。根据一个实施例,当n为8,m为32MB时,用于存储每个区别特征的空间是16字节,索引中为库的每32MB存储128个字节,比率超过250,000∶1。换句话说,一个具有4GB随机存储器(RAM)的计算机***能够在其存储器内存储用于1PB库的索引,便于索引的迅速搜索,并在非常大的库中为任意输入块迅速找到相似数据。
应注意,一旦以上述的方式根据识别匹配的区别特征找到了相似块,则可能有兴趣识别相似块之间具体的差别。在此情况下,可以应用更详细的比较(或辅助)算法,用来比较各个块的所有数据(并不仅是n个区别特征)。通常,但不限于,这些算法的示例为二进制差分(binary difference)和按字节分解型的算法。下面描述改善的二进制差分算法,其可以有利地用于选择实施例中。
与刚才描述的同步(相似性搜索)算法相比,辅助算法可能效率较低(在计算资源方面)。降低的效率可能根源于这样一个事实:在辅助算法中,处理指定库的所有数据,而在相似性搜索算法中,仅处理与块相关的部分数据(即包括区别特征的数据)。但是,由于辅助算法仅用于大小为m(如32MB)的一个库块,或可能用于少数这种已经找到的与该输入块充分相似的库块,该降低的性能在替换应用中可能相对不明显。与在整个库,特别是1PB或更大的库上执行辅助算法相比,这尤其微不足道。
上述相似性搜索算法的实施例示出了使用索引来解决一种类型的近邻查询,为此寻找与输入模本块最相似的库块。该实施例并不限制本发明。该索引可以用来解决其他类型的查询,如范围查询;由特定应用确定的特定类型的查询。
为了更好地理解上述的相似性搜索,下面将描述本发明的特定实施例。本发明并不限于该示例。为了便于说明,库包括单个块,示例将说明如何归类输入块确定其与库块充分相似。
示例1
步骤1:为库建立索引
该示例使用了下面的库字符串:“Begin-at-the-beginning-and-go-on-till-you-come-to-the-end;-then-stop”.注意该步骤是前述算法的迭代的副产品。在这里明确指出是用于清晰地说明示例。
步骤1a计算哈希值
该示例使用滚动哈希函数按每个字节偏移计算哈希值。该示例使用模数哈希函数,为便于说明,模数哈希函数使用素数8388593;使用的哈希函数是
h(X)=X mod 8388593
在该示例中,种子大小为8字节。输入字符串为:“Begin-at-the-beginning-and-go-on-till-you-come-to-the-end;-then-stop”
所计算的哈希值:
位置 | 子串 | 哈希值 |
0 | Begin-at | 2631922 |
1 | egin-at- | 2153376 |
2 | gin-at-t | 4684457 |
3 | in-at-th | 6195022 |
4 | n-at-the | 6499883 |
5 | -at-the- | 7735648 |
6 | at-the-b | 0614663 |
7 | t-the-be | 6086781 |
8 | -the-beg | 1071229 |
9 | the-begi | 5796378 |
10 | he-begin | 2225405 |
11 | e-beginn | 5559942 |
12 | -beginni | 4351670 |
13 | beginning | 6729979 |
14 | Eginning | 2678539 |
15 | ginning- | 4908613 |
16 | inning-a | 4858800 |
17 | nning-an | 8359373 |
18 | ning-and | 5615355 |
19 | ing-and- | 7788491 |
20 | ng-and-g | 3386892 |
位置 | 子串 | 哈希值 |
21 | g-and-go | 7726366 |
22 | -and-go- | 4784505 |
23 | and-go-o | 95438 |
24 | nd-go-on | 7382678 |
25 | d-go-on- | 7239157 |
26 | -go-on-t | 6674727 |
27 | go-on-ti | 5842463 |
28 | o-on-til | 655214 |
29 | -on-till | 4407765 |
30 | on-till- | 4313035 |
31 | n-till-y | 1287538 |
32 | -till-yo | 7161694 |
33 | till-you | 4677132 |
34 | ill-you- | 910513 |
35 | 11-you-c | 4229050 |
36 | 1-you-co | 5739894 |
37 | -you-com | 6640678 |
38 | you-come | 5514508 |
39 | ou-come- | 4252699 |
40 | u-come-t | 2618703 |
41 | -come-to | 2171878 |
42 | come-to- | 2350287 |
43 | ome-to-t | 5286613 |
44 | me-to-th | 7254292 |
位置 | 子串 | 哈希值 |
45 | e-to-the | 8189031 |
46 | -to-the- | 6310941 |
47 | to-the-e | 4987766 |
48 | o-the-en | 4935558 |
49 | -the-end | 1270138 |
50 | the-end; | 6385478 |
51 | he-end;- | 2040253 |
52 | e-end;-t | 104001 |
53 | -end;-th | 137211 |
54 | end;-the | 1568370 |
55 | nd;-then | 5917589 |
56 | d;-then- | 1274465 |
57 | ;-then-s | 6437500 |
58 | -then-st | 5140383 |
59 | then-sto | 7314276 |
60 | hen-stop | 4932017 |
61 | en-stop. | 2199331 |
步骤1b:计算最大值
使用最大哈希值寻找n个文本位置。在该示例中,对n=4,有:
17 | nning-an | 8359373 |
45 | e-to-the | 8189031 |
19 | ing-and- | 7788491 |
5 | -at-the- | 7735648 |
步骤1c:向右移动一个字符
如前面所提到的,最大哈希值本身并不具有充分均匀的概率分布,因此,对于每个与最大哈希值相对应的种子,我们使用其后移一个字符的相应种子的哈希值。为了本示例的目的,把这些哈希值作为区别特征,并与其位置一起构成该示例的索引。
18 | ning-and | 5615355 |
46 | -to-the- | 6310941 |
20 | ng-and-g | 3386892 |
6 | at-the-b | 614663 |
步骤2:匹配模本
库被修改为:“Start-at-the-beginning-and-continue-to-the-end;-then-cease”。这样被修改的库被看作模本(在该示例中,仅具有一个块)。
步骤2a:计算哈希值
输入字符串:“Start-at-the-beginning-and-continue-to-the-end;-then-cease”。
所计算的哈希值:
位置 | 子串 | 哈希值 |
0 | Start-at | 3223635 |
1 | tart-at- | 6567590 |
2 | art-at-t | 6718044 |
3 | rt-at-th | 8274022 |
4 | t-at-the | 7882283 |
5 | -at-the- | 7735648 |
6 | at-the-b | 614663 |
7 | t-the-be | 6086781 |
8 | -the-beg | 1071229 |
9 | the-begi | 5796378 |
10 | he-begin | 2225405 |
位置 | 子串 | 哈希值 |
11 | e-beginn | 5559942 |
12 | -beginni | 4351670 |
13 | beginnin | 6729979 |
14 | eginning | 2678539 |
15 | ginning- | 4908613 |
16 | inning-a | 4858800 |
17 | nning-an | 8359373 |
18 | ning-and | 5615355 |
19 | ing-and- | 7788491 |
20 | ng-and-c | 3386888 |
21 | g-and-co | 7725342 |
22 | -and-con | 4522439 |
23 | and-cont | 115291 |
24 | nd-conti | 4076448 |
25 | d-contin | 8092248 |
26 | -continu | 6962606 |
27 | continue | 4042146 |
28 | ontinue- | 2195597 |
29 | ntinue-t | 4481950 |
30 | tinue-to | 2849052 |
31 | inue-to- | 2683241 |
32 | nue-to-t | 5063413 |
位置 | 子串 | 哈希值 |
33 | ue-to-th | 708899 |
34 | e-to-the | 8189031 |
35 | -to-the- | 6310941 |
36 | to-the-e | 4987766 |
37 | o-the-en | 4935558 |
38 | -the-end | 1270138 |
39 | the-end;r | 6385478 |
40 | he-end;- | 2040253 |
41 | e-end;-t | 104001 |
42 | -end;-th | 137211 |
43 | end;-the | 1568370 |
44 | nd;-then | 5917589 |
45 | D;-then- | 1274465 |
46 | ;-then-c | 6437484 |
47 | -then-ce | 5136272 |
48 | then-cea | 6261846 |
49 | hen-ceas | 3944916 |
50 | en-cease | 1159320 |
51 | n-cease. | 1863841 |
步骤2b:计算最大值
使用最大哈希值寻找k个文本位置。在该示例中,k=8,有:
17 | nning-an | 8359373 |
3 | rt-at-th | 8274022 |
34 | e-to-the | 8189031 |
25 | d-contin | 8092248 |
4 | t-at-the | 7882283 |
19 | ing-and- | 7788491 |
5 | -at-the- | 7735648 |
21 | g-and-co | 7725342 |
步骤2c:向右移动一个字符
如前面所提到的,最大哈希值本身并不具有充分均匀的概率分布,因此,我们使用其后移一个字符的相应种子的哈希值。这些位置用作区别位置,这八个哈希值用来搜索索引。
18 | ning-and | 5615355 |
4 | t-at-the | 7882283 |
35 | -to-the- | 6310941 |
26 | -continu | 6962606 |
5 | -at-the- | 7735648 |
20 | ng-and-c | 3386888 |
6 | at-the-b | 614663 |
22 | -and-con | 4522439 |
步骤2d:匹配
在索引中找到模本哈希值5615355(模本位置18)、6310941(模本位置35)和614663(模本位置6)。它们分别对应库中的位置18、46和6。公布一个匹配:该算法识别出“start-at-the-beginning-and-continue-to-the-end;-then-cease”是“Begin-at-the-beginning-and-go-on-till-you-come-to-the-end;-then-stop”的相似数据,并找到对应的位置。
注意在该示例中,相似性阀值(区别特征的最少匹配数量)为j≥2。假如该阀值设为4,由于仅找到三个匹配,因此这些块不会被认为是充分相似。也注意在该示例中,n设为4,这是指库块的区别特征的数量为4,且k设为8,这是指为一个模本块计算的区别特征的数量为8。通过设置k>n,搜索返回数值7735648的库位置,该值从库中的第四最大值变为输入中的第五最大值,因此如果k设为4(k=n),就不会被找到。
该示例说明了如何在库仅有一个块这种退化情形下寻找相似的块。但是,即使是对于存储数个块的区别特征的索引,由于搜索在索引(如这里作为哈希表存储)内以非常有效的方式完成,因此即使是在大的索引内,搜索步骤仍然非常有效。也请注意存储在各个索引条目中的数据比较小(在该示例中,是哈希值和位置),因此在许多应用中,索引能够容纳在计算机的内部快速存储器(RAM)内,这样避免了执行缓慢的I/O运算,从而进一步促进了索引中的搜索。
(同步算法的)复杂性
由于使用滚动哈希值,因此计算模本块的种子的哈希值所需的时间与块的大小成线性。计算k个最大值所需的时间是O(m*log(k)),由于k较小,所以这是合理的。如果索引是二杈树,则在索引中搜索k个区别特征所需的时间是O(k*log(r)),其中r=(R*k)/m,是索引中条目的数量,R是库的大小(最大为250),k较小(通常为23),m是块的大小(通常为225),因此r通常为228,并且log(r)=28。由于k较小,因此按这种复杂度搜索整个索引是可接受的。如果索引用哈希表表示,则在索引中搜索k个区别特征所需的时间是k*O(1)。因此,块搜索时间由计算和排序最大值所花的时间即O(m*log(k))来主导,从而等同于模本块的少量线性扫描。由于k较小,因此整个搜索时间是可接受的。注意该结果相对于蛮力算法的复杂性O(R*m),只是其一小部分,蛮力算法的复杂性是库大小R的块大小m的乘积。
将模本块***索引所需的时间的计算复杂性与搜索索引相同。无需额外的时间来计算n个区别特征,因为这些已经计算。
该算法的空间要求就是索引所需的空间。对指定的示例,每个条目具有16个字节的参数,包括关键字(区别特征)和位置数据,228个字节(上述计算的r值)为1PB,因此管理1PB的库数据需要4GB的索引。
本实施例所述的***可以在一个合适编程的计算机上执行。同样,本发明公开一种由计算机可读的、用于执行本发明的方法的计算机程序。本发明进一步公开一种机器可读的存储器,该存储器有形地体现用于执行本发明的方法、机器可执行的指令的程序。
二进制差分算法(Binary Difference Algorithm)
现在描述一种新的二进制差分算法,这种方法可有效地用于计算两个数据区间(interval)的共同部分。在所描述的实施例中,该算法使用前面描述的相似性搜索(同步)算法的输出,该输出针对给定的模本块指出了多对匹配区别特征在模本数据和库数据中的位置。在本文中,一对匹配区别特征(一个在库中,一个在模本中)被定义为锚(anchor)。锚用来进行数据对齐,并在进一步的处理中剪除那些看来不包含与模本的匹配的库区间,因此仅关注与模本块非常相似的库区间。这缩短了算法的处理时间。
基于锚,非常可能包含匹配部分(相同数据)的模本区间和库区间的对(pair)就定义了相对应的区间。对这些区间对的每一对使用二进制差分处理。使用滑动窗口的模拟来取代按匹配偏移定位库和模本窗口,根据锚来定位库和模本窗口(可能按非匹配的偏移)。
本算法的一个优点是在区间对的一个区间中使用种子步长。尽管公知的二进制差分或增量(delta)算法在两个区间中都按字节步长移动,但本算法仅在一个区间(模本区间)中按字节步长移动,并在另一个区间(库区间)中以种子大小(如多个字节)的步长移动。该技术加速了处理并降低了空间要求,同时又没有降低匹配率(由于在后向和前向都扩展匹配)。本算法的另一个优点是,公知的二元增量算法产生添加指示(add directive)和复制指示(copy directive),但可使用本算法按排序的顺序仅产生复制指示。如需要,可以根据复制指示隐式地推导出添加指示,这样就降低了算法输出所需的存储空间。
下表定义了本实施例使用的符号,图7和8用图形示出这些元素。
符号 | 说明 |
A<sub>i</sub><sup>R</sup> | 库中的锚i。 |
A<sub>i</sub><sup>V</sup> | 模本中的锚i。 |
AS<sub>j</sub> | 锚集j,其组合有两个或更多的具有相同库偏移估计器的锚。 |
C<sub>i</sub><sup>R</sup> | 库中锚周围的复制区间(扩展)i。 |
C<sub>i</sub><sup>V</sup> | 模本中锚周围的复制区间(扩展)i。 |
I<sub>i</sub><sup>V</sup> | 与模本中锚关联的对应区间i。 |
I<sub>i</sub><sup>R</sup> | 与库中锚关联的对应区间i。 |
O(A) | 串内锚的偏移。 |
LO(C/I) | 区间最左边(最前)字节的偏移。 |
RO(C/I) | 区间最右边(最后)字节的偏移。 |
S(C/I) | 区间大小。 |
附图9是高级(概述)流程图,示出在锚集上运算的二进制差分处理的一个实施例的步骤。附图10是更详细的流程图,示出在锚集中运算的算法。附图11-14示出本实施例所述的在模本区间和库区间上运算的示例。
在所述的实施例中,输入为模本块、与模本块关联的按字节偏移的哈希值的阵列以及与模本块和库数据相联系的锚集。后两个输入由同步(相似性搜索)算法产生。二进制差分算法的输出是该模本块和库数据中匹配(即相同)区间对的集。一对匹配区间定义成“复制区间”。每个复制区间可以被编码成复制指示,包含模本和库中的关联区间的起始偏移和区间大小。复制指示是指分离的(非重叠的)模本区间,由该算法产生,按照模本偏移的升序来排序。
图9为流程图(80),示出执行二进制差分算法的一个实施例的步骤。如图所示,该过程从相似性搜索接收锚和按字节偏移的模本块的哈希值作为输入(81)。然后,计算锚集(步骤82)这可以按照下面所描述的步骤1来完成。然后,使用第一锚集(83),对该锚集执行二进制差分算法;这可以按照附图10所示的步骤来完成。为其他的锚集重复该处理(步骤84-86),直至模本中再没有锚集,至此,处理结束(87)。
现在参照附图10-14来进行更详细的描述。在附图10中,流程图(90)示出了在锚集上运算的二进制差分算法的一个实施例(附图9中的步骤84)。附图11-14示出了模本块120和对应的库数据118的一个区间上运算的序列。该区间被记为当前锚集122,其包括模本块120的区别特征124的多个位置,其中一些在库数据118内具有匹配的区别特征125。
步骤1一计算锚集(附图9中的步骤82):按照其模本偏移的升序来排序各锚。遍历排序的锚,并按照下列方式使各锚与各锚集相关联:如果一对相继的锚Ai和Ai+1具有相同的库偏移估算,则这两个锚在同一个锚集内,作为示例,这里的估算由下式来确定:其中C是常数,可选择C以满足期望的性能特征(在下面有关复杂性的描述中将进一步说明)。只要相继的锚对属于相同的集,就将它们添加到当前的集。当相继的锚对不属于相同的集时,就关闭当前集并打开新集,并将后一个锚添加到新集。将该步骤的输出记为{ASj}1 m,其中m是所识别的相分离的各锚集的数量。图7示出了包括两个与模本120和库118相联系的锚Ai和Ai+1的锚集ASj。附图11-14示出了模本120和库118中当前锚集122。对{ASj}1 m中的每个锚集执行下面描述的步骤2-6(附图9中的步骤84)。设ASj是当前锚集(附图10中的步骤91)。
步骤2-计算模本区间(附图10中的步骤92):模本区间Ij V与当前锚集ASj关联(参照附图7)。区间Ij V从上一个复制指示的右偏移的后一个字节开始,该上一个复制指示由在前一个模本区间Ij-1 V上运行的二进制差分步骤产生,或在块的开始处(如果没有前一个锚集ASj-1),在ASj+1中最左锚的前一个字节结束,或在该块的结尾处结束(如果没有ASj+1)。
步骤3-计算库区间(附图10中的步骤93):库区间Ij R与当前锚集ASj关联。设Ai R(附图11中,i为124b)为ASj最左边的锚,Ar R(附图11中,r为124g)为ASj最右边的锚,则有
我们将区间对Ij V和Ij R称为对应区间。附图8示出了4对对应区间(由模本120和库118之间的虚线连接),每对与独立的锚集A-D关联。对在该步骤中计算的每对对应区间Ij V和Ij R,执行下面详细描述的二进制差分步骤(步骤4、5和6)。
当目前算法为分解应用的一部分时,将库中对应的库区间Ij R读取到存储器(附图10中的步骤94),从而能够将Ij V和Ij R内的数据进行比较。
步骤4(参照附图12)-扩展锚匹配(附图10中的步骤95):在当前锚集ASj的锚周围向前和向后扩展匹配,并将这些匹配编码为复制指示。如附图12中的模本120中的区域128和库118中的区域129所示的这些匹配被称为锚匹配。将这些复制指示存储在临时的指示缓冲器内。该步骤的输出用集{Ci R}1 n和{Ci V}1 n表示,其中n是锚集中的锚的数量。
步骤5(参照附图13)-将库区间哈希值加载到哈希表(附图10中的步骤96):计算Ij R内的所有连续的非重叠种子的哈希值,去除Ij R内的各库锚的扩展(129),然后把这些哈希值存储在称为RhashT的哈希表内。
步骤6(参照附图14)-搜索匹配(附图10中的步骤97-105):针对Ij+1 V内的每个连续(按字节偏移)的种子,去除Ij V内的各锚的扩展(图14中的区域128):取得其哈希值(这些哈希值是作为同步算法的结果而接收的),在RhashT表内搜索该值(附图10中的步骤98)。如果找到匹配,则将其向前和向后扩展(附图10中的步骤99)至最大扩展(附图14中的区域134和136),该最大扩展不与模本中的前一个复制指示或下一个锚匹配重叠,或者是Ij V的开始或结尾,编码该匹配作为复制指示,并输出(附图10中的步骤100)。如果在模本中到达锚匹配(附图10中的步骤101),则输出其对应的存储在临时指示缓冲器内的复制指示(附图10中的步骤102),下一个即将处理的种子是位于模本中的该锚匹配之后的第一个种子。如果没有到达锚匹配,并且也不没有到达Ij V的结尾(附图10中的步骤103),则Ij V中该即将处理的下一个种子(附图10中的步骤104)是下一个未匹配的种子,定义如下:如果当前种子不匹配,则从当前种子的第一个字节的后一个字节开始的种子作为下一个未匹配的种子;另一方面,如果当前种子匹配并被扩展,则从包括在该扩展中的最后一个种子的最后一个字节后一个字节开始作为下一个未匹配的种子。如果到达Ij V的结尾(附图10中的步骤103),则该锚集ASj和相关联的对应区间的处理结束(附图10中的步骤105)。如果没有下一个锚集(附图9中的步骤85),则模本块的二进制差分处理结束(附图9中的步骤87)。否则,处理从步骤2继续至下一个锚集ASj+1(附图9中的步骤86),详细内容如上所述。
复杂性(二进制差分)
存储:本文所描述的二进制差分算法的实施例使用固定大小的哈希表(RHashT),由于块的大小是库区间大小的上限,因此哈希表的最大容量正比于块的大小除以种子大小的结果。因此,表的大小与块的大小是近乎线性的关系。此外,需要锚匹配的复制指示的临时存储。该临时存储与块中锚的数量,即块的区别特征的数量成比例,该区别特征的数量较少。因此,算法的整个存储要求与块的长度是近乎线性的关系。
时间:扩展锚匹配(步骤95)和把库哈希值装入RHashT表(步骤96)的阶段所花的时间是在对应区间上的一个线性遍历(linear pass)。在RHashT表中搜索模本哈希值(步骤98)并扩展其找到的匹配(步骤99)的阶段类似于贪吃算法,该算法的最差状况时间是对应区间长度的平方。但是,通过将哈希表链的长度限制在固定大小,该阶段的平均时间在1至哈希链的长度的之间,即对应区间上的线性遍历。注意运行时间也依赖于模本和库区间之间相似(相同的数据)的数量(越相似,所需的时间越短)。还有处理相继的对应区间的重叠所花的额外时间。从而得到所需的平均总时间为对应区间上的2个线性遍历。
本文所公开的***和方法可以用各种形式实施,这些形式包括,例如数据处理器,如计算机。而且,上述提到的本发明的特征、其他方面以及原理可以在各种环境下实施。可以特别地构建这些环境和应用,用于执行本发明的各种处理和运算,或者这些环境和应用可以包括通用的计算机或计算平台,用编码有选择地启动或重新配置这些计算机或计算平台,来提供必要的功能性。本文所公开的这些处理本质上不与任何特定的计算机或其他装置相关,这些处理可以由硬件、软件和/或固件的组合来实施。例如,根据本发明的教导,各种通用机器可以与按本发明教导编写的程序一起使用,或构建一个特定的装置或***来执行所需的方法和技术,这也许更方便。
与本发明一致的***和方法还包括计算机可读介质,其包括根据本发明的方法和处理执行各种计算机实施的操作的程序指令或编码。介质和程序指令是那些专为本发明的用途或设计和构建的介质,或者是那些公知的、对计算机软件领域的普通技术人员可用的介质和程序指令。而且,计算机可读介质也可以是信号或载波的形式,或是存储介质,如硬盘的形式。程序指令的例子包括,例如由编译器产生的机器代码,以及包含高级编码的文件,该高级编码能够由计算机使用解释程序来执行。
如附图15所示,数据处理器300接收输入305,并可以包括中央处理单元320、存储模块350和/或输入/输出(I/O)模块330。I/O模块330可以包括一个或多个输入/输出设备,该输入/输出设备包括显示器335、键盘、鼠标、输入存储设备、打印机336以及网络接口338。网络接口允许数据处理器通过网络如通信信道来进行通信。中央处理单元可以包括,例如,下列中的一个或多个:中央处理单元、协处理器、存储器、寄存器以及其他合适的处理设备和***。
存储设备可以由各种能够提供存储的组件或子***实施,例如,硬盘驱动、光驱动、通用存储设备、可移除的存储设备和/或存储器。
本文所描述的本发明的方法和***的各种实施例可以用来识别已经存在于库中的输入流中的数据。使用这种***和方法的产品包括向硬盘备份的产品,这些产品通过不重复存储自上次备份后未改变的备份数据来节省硬盘的存储空间。当在相同的库中存储多个备份时,这样就节省了终端用户硬盘的存储空间。
本发明的***和方法可以包括在存储设备、智能交换设备、服务器以及软件应用内。这些***和方法也可以与包括其他组件的衍生产品捆绑使用。服务供应商能够使用这些***和方法来提供所述的服务的能力。这些***和方法在数据保护市场,例如备份和恢复、复制、介质以及媒体管理也特别有用。
本文所描述的***和方法涉及管理的存储介质和管理的库中的数据的表示。这可以包括硬盘、磁带以及任何其他形式的可商用的存储介质。本发明并不限于使用硬盘或固定介质,也可以用于可移除的介质。例如,可移动硬盘可作为目标输出设备,其可按与磁带类似的方式来管理,这两个都是可移除的介质。
设计一种包括可移除介质如磁带的***的一个方法是使该***将硬盘用作那些最常引用的块或元素的存储装置,而将不常引用块转移到磁带介质上。这应该由考虑任何块的新旧程度的管理***来平衡。而且,该***可以将相关的库块移到磁带上,作为待存档的整个集合,并可以根据存档的集合来进行恢复。这就突出了本发明的优点。例如,如果不使用本发明时,需要100个介质,但如果使用了本发明,则仅可能使用10个介质。介质可以包括作为库的虚拟介质。
本文所描述的同步算法和二进制差分算法的各种实施例,其执行时间与模本大小成线性,而空间耗费是固定的(取决于块和锚集的大小)。在算法之间重复使用所计算的值节省了计算时间。
所描述的实施例也描述了两个存储器层次的使用。同步算法计算并临时存储输入数据表示(如哈希)值的集,从该集中导出区别特征集,用来识别库中相似的数据区,当输入数据存放在库中时,该区别特征就存储在索引内。然后,可以在二进制差分算法中使用临时存储器内的输入数据的表示值,用来识别与库数据完全匹配的数据。二进制差分算法计算库中所关注数据区的表示(如哈希)值的集,并将该值临时存储在存储器内,用于与输入数据的表示值进行对比。通过处理库数据和输入数据的对应区间,可以使用相对较小的存储器来存储表示值。而且,由于匹配的数据段是按输入数据的位置顺序产生的,因此这缩短了存储时间并减少了存储空间的要求。
而且,本文所描述的同步算法和二进制差分算法的实施例适合于PB规模的库。在各种实施例中,库规模与索引规模的比最高可达250,000∶1,从而4GB的索引能够表示1PB的库,并且该索引可以装进商用的、产品型的计算机。当使用哈希表作为索引时,对于直到1PB的库,搜索索引是时间和空间恒定的O(1)运算,并且查找处理与库的大小无关。如果库不限于1PB的规模,则索引可以使用二叉树或B-树。索引的规模仍然是库规模的1∶250,000,搜索该索引的运算所需时间为O(log(m/250,000)),其中m是库的大小。对于1PB的库,m为250,因此log(m/250,000)等于32。
本文所描述的***和方法能够提供数据存储***,该数据存储***通过将输入数据划分为库中已有的部分和库中没有的部分,相对于库,执行输入数据的大规模无损数据裁减。该划分由两个步骤的处理完成:
(1)为输入数据的每个块,在库中查找包含有与其相似数据的所有区域,其中该查找处理还提供了粗略的相似性估计,从而提供了划分相似性等级的能力。尽管库非常大,可以使用索引和存储器来完成该查找处理,库与索引的规模之比最高可达250∶000∶1,并且,在每个找到的区域内,该搜索查找一个或多个对应的实际位置,以及
(2)为所有找到的区域在库中选择最相似的区域,并通过下述步骤对其执行二进制差分:将库的该部分读进存储器,将输入块与库的该部分进行比较来查找确切的变化,同时使用实际的对应位置作为指导,
该过程的输出就是上面识别的划分。在库中找到的输入数据中的数据无需再次存储。输入数据的特征可以添加到索引中。
本文所描述的二进制差分算法具有许多优点。由相似性搜索(索引的)提供的区别特征形成二进制差分处理的参考框架,以及该框架内的逻辑划分(例如锚)。二进制差分算法仅需一个哈希表,且该哈希表较小,因为该表仅仅对所关注的库数据段的每个种子存储一个值。按每个小于种子步长(例如字节),输入数据的表示值是已知的,因为他们是在索引搜索期间计算的。二进制差分处理的增加开销较低,其与输入数据的大小成线性关系。由于在每个小于种子的区间(例如字节)搜索库哈希表,因此二进制差分能够找到未对齐的数据。
在各种实施例中,二进制差分方法能被用来进行线性时间和恒定空间的O(1)量级处理,用于将输入数据与库中被识别为相似的区域进行比较。该处理使用先前计算的相似性搜索的结果,以及仅一个比库中识别的区域小的库哈希表,所识别区域的大小与该库哈希表大小之比是种子大小。二进制差分处理能够找到相同的数据,即使其被掉换位置或未对齐。当哈希表足够大时,其寻找所有至少为种子大小长度的相同数据。从该处理获得找到的输入数据中的子区域的列表,该列表中的子区域以其在输入数据中出现的顺序排列。
在本发明的另一个实施例中,模本数据或新数据可位于一个***或计算机内,而库可以位于另一个与该第一***不同的***或计算机。在此情形下,必须通过第一***和第二***或远程***之间的通信来确定增量信息。如在前面所描述的,由于处理大量的数据,因此应尽可能地降低***中使用的带宽。根据本发明的一个方面,用最小带宽来完成位于远程的库根据新数据或模本数据的更新。
如附图16所示,***(1600)与附图1中所示的***相似,其包括网络(1601),如上所述,其可以是SAN或基于TCP/IP的网络,在服务器A(1602)、服务器B(1604)、服务器C(1606)以及服务器D(1608)之间提供通信。为了说明的目的,服务器B(1604)连接至库B(17),服务器D(1608)连接至库D(17)。库D(17)可以是库B(17)的全部或部分镜像、备份或复制拷贝,因此其上存储有与库B(17)相同的信息。服务器A(1602)和服务器C(1606)没有各自的库。
在一个说明性的情形中,服务器A(1602)具有新数据或模本数据,库B(17)上存储有上面所描述的库数据和块。
在该说明性的情形中,服务器A(1602)具有需要存储在库B(17)中的新数据。从上述描述中可以理解,应该计算新数据的区别或识别特征集,并将其转发给服务器B(1604),用于搜索索引,查找与新数据或模本数据相似的库数据的位置,从库B(17)中检索较旧或相似的数据,将新数据和旧数据进行比较来确定增量或差异。
由于服务器A(1602)包含新数据,为了确定增量,可能会决定将库B(17)中的相似数据发送到服务器A(1602)。但是,该发送会占用网络(1601)较大百分比的带宽。一旦服务器A(1602)确定了增量,为了更新库B(17),必须通过网络(1601)将增量信息从服务器A(1602)发送到服务器B(1604),以用来更新库B(17)。
根据本发明的实施例的一个方面,降低了更新库B(17)所需的带宽。有利地,为了确定增量信息,没有将相似数据从库B(17)发送到服务器A(1602)。
现在根据本发明的一个实施例,参照附图17中所示的方法(1700)来描述使用最小带宽更新库B(17)的处理。在步骤(1702),服务器A(1602)在本地计算存储在服务器A(1602)上的模本或新数据的特征集。在步骤(1704),服务器A(1602)将计算的特征集发送给服务器B(1604)。如果在步骤(1708)找到匹配,则控制传递到步骤(1710),在该步骤,服务器B(1604)从库B(17)内检索相似的数据块。
为了确定新数据与在库B(17)中找到的被识别为相似的远程数据之间的增量,在步骤(1712),使用了低通信成本的远程差分程序的修改版本,例如rsync实用程序。通过使用如rsync的修改版的现有远程差分程序,能够显著地减少用来识别增量信息所需的网络带宽量。
修改的现有远程差分程序确定新数据与所识别的相似远程数据之间的差异,不需要所有的新数据和识别的相似远程数据都在同一个***上。因此,该修改的程序降低了必须通过网络传输的数据量。在运算中,可以为该应用修改多个不同远程差分处理中的任一个。
因此,在修改的远程差分处理的一个实施例中,分别由本地***和服务器A(1602)以及远程***(17)和服务器B使用相同的算法来计算新数据和所识别的相似远程数据的哈希值。然后比较这些哈希值,不同的哈希值代表各个数据的不同部分。然后,将不同部分的数据从服务器A(1602)发送到服务器B,用于存储在库B中。哈希值的产生和比较降低了在确定数据中差异时所需的数据带宽量。
在步骤(1712)之后,识别了数据增量,如果在步骤(1714)确定要更新库B(17),则控制转移到步骤(1716),在该步骤,按上面所描述的方法更新远程库B(17)。
回到步骤(1708),如果没有找到匹配,则控制传递到步骤(1714),在该步骤确定更新库B(17),如果无需进行更新,则控制传递到步骤(1718)。
在另一个操作情形下,有可能是这样一种状况:服务器A(1602)具有要发送给服务器C(1602)的新数据或模本数据。如***(1600)中所示,服务器A(1602)和服务器C(1602)都没有库。在本发明的一个实施例中,当新数据的量非常大时,能够使从服务器A(1602)向服务器C(1602)发送新数据所需的数据带宽量尽可能小。
下面将参照附图18来描述使用网络(1601)的最小带宽从服务器A(1602)向服务器C(1602)发送新数据的方法(1800)。步骤(1702-1712)与附图17中所描述的相同。在步骤(1712)之后,在步骤(1802),服务器A(1602)向第二***,即服务器C(1606)发送增量信息和相似数据的标识符信息。相似数据的标识符信息包括关于库数据所在的库的位置信息,在此情况中,为库B(17),库B(17)的地址可能是服务器B(1604)的IP地址;关于被识别为相似的特定库块的信息,例如,参考标签;以及用来同步库B(17)状态的时间戳,在步骤(1712)从库B(17)产生差异或增量信息。在步骤(1712)确定差异时,需要该时间戳信息来保证服务器C(1606)后续的操作相对于库B(17)具有相同的状态。
在步骤(1804),第二***服务器C(1606)将使用从服务器A(1602)接收到的信息从库B(17)检索识别的相似数据块。在一个实施例中,服务器C(1606)可以请求整个识别的库块并利用从服务器A(1602)接收到的增量信息来替换那些改变的部分,或者服务器C(1606)从库B(17)仅请求未改变的库数据的部分,并将其与从服务器A(1602)接收到的增量信息组合,以形成来自服务器A(1602)的新数据。
有利地,服务器A(1602)能够使用最小带宽,仅发送增量信息和存储在库B(17)中的相似数据的标识符信息,将新数据发送到服务器C(1606)。
现在参照附图18描述方法1600的替换实施例。在该替换实施例中,在步骤(1804),用于接收的服务器C(1606)访问库D(17),而不是访问库B(17),以重建从服务器A(1602)发送的数据。服务器C(1606)可以知道库D(17)具有与库B(17)相同的数据,并可以有充分理由确定从库D(17)获得相似数据是更好的选择。这些理由可以包括下列中的任一个或多个:***加载特性、***可用性、***响应时间以及***质量服务等级合同。服务器C(1606)、***D(1608)和库D(17)之间的协作与前面描述的服务器C(1606)、服务器B(1604)和库B(17)之间的协作相同。一旦服务器C(1606)从库D(17)检索到信息,可更新库D(17)来反映通过服务器C(1606)从服务器A(1602)接收的当前数据。
然而,在另一个实施例中,一旦用来自服务器A(1602)的差异数据来更新服务器B(1604)和库B(17),可以通过服务器B(1604)和库B(17)之间的事务来更新库D(17)。
当然,本领域的普通技术人员会理解为了***的简化或效率,可以将服务器C(1606)和服务器D(1608)配置成相同的计算机。
通过对说明书的理解以及对本文中所公开的发明的实践,本发明的其他实施例对本领域的普通技术人员来说是显而易见的。本说明书和实施例仅作用作说明,本发明的范围由权利要求书限定。
Claims (79)
1.一种在库数据中识别输入数据的方法,其中所述库数据包括库数据块,所述输入数据包括输入数据块,并且其中每个库数据块具有对应的含有一个或多个库数据块区别特征RDC的集,对于每个输入数据块,所述方法包括下列步骤:
确定含有一个或多个输入数据块区别特征IDC的集;
将所确定的IDC集与一个或多个RDC集进行比较;以及
根据所确定的IDC集与所述一个或多个RDC集的比较来识别与所述输入数据块相似的库数据块。
2.如权利要求1所述的方法,进一步包括:
通过比较相应各块的所有数据,确定所述输入数据块和所识别的相似库数据块之间的一个或多个差异。
3.如权利要求1所述的方法,其中所述输入数据位于第一位置,所述库数据位于远程位置,该方法进一步包括:
在所述第一位置确定所述IDC集;
将所述确定的IDC集从所述第一位置发送到所述远程位置;以及
在所述远程位置将所述确定的IDC集与所述一个或多个RDC集进行比较。
4.如权利要求3所述的方法,进一步包括:
在不需要把全部所述输入数据块发送到所述远程位置且不需要把全部所述识别的相似库数据块发送到所述第一位置的情况下,确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异。
5.如权利要求4所述的方法,进一步包括:
用所述一个或多个确定的差异更新所述远程位置。
6.如权利要求5所述的方法,其中:
所述第一位置是第一计算机,所述远程位置是与所述第一计算机不同的远程计算机,所述第一计算机和远程计算机彼此网络通信;以及
所述库数据存储在通过所述远程计算机访问的数据库内。
7.如权利要求1所述的方法,其中识别IDC集与RDC集的相似性是相似性阀值的函数。
8.如权利要求7所述的方法,其中当在RDC集中找到所述IDC集中的预定数量的所述区别特征时,则满足所述相似性阀值。
9.如权利要求8所述的方法,其中确定区别特征集包括:
在相应数据块内识别一个或多个数据部分;以及
计算相应数据块的一个或多个数据部分的每个的数学哈希值。
10.如权利要求9所述的方法,进一步包括:
确定某个集当中的k个最大数学哈希值,k是预定的数;
对所述k个最大哈希值的每个识别相应数据部分;以及
确定区别特征集是与每个所述k个最大数学哈希值所对应的每个数据部分相关的顺序下一个数据部分。
11.如权利要求2所述的方法,进一步包括在库中存储所述确定的差异。
12.如权利要求11所述的方法,其中确定一个或多个差异至少包括:确定二进制差异;以及按字节分解。
13.如权利要求1所述的方法,其中所述区别特征由下列中的一个确定:哈希函数;滚动哈希函数;模数哈希函数。
14.如权利要求1所述的方法,其中至少以下列一种方式将所述RDC集存储在索引中:二杈树;B树;排序表;以及哈希表。
15.如权利要求1所述的方法,其中每个所述库数据块和所述输入数据块包括多个种子,每个种子是基本元素的连续的序列并具有相同的种子大小;并且其中所述区别特征是相应块的各种子的选定的子集的哈希值。
16.如权利要求15所述的方法,其中所述种子包括重叠的种子。
17.如权利要求1所述的方法,其中所述方法至少用于下列目的中的一个:数据分解;以及数据备份。
18.如权利要求1所述的方法,其中所述确定相似库块的步骤所花的时间与所述库的大小无关,并与所述输入数据的大小成线性。
19.一种在库数据中搜索与输入数据相似的数据的方法,该方法包括:
将所述库数据分成一个或多个库块;
为每个库块计算对应的库区别特征RDC集,每个RDC集包括至少一个区别特征;
维持索引,该索引使每个RDC集和对应的库块关联;
将所述输入数据分成一个或多个输入块;并为每个输入块:
计算对应的输入区别特征IDC集,该IDC集包括至少一个区别特征;
将该IDC集与存储在所述索引中的一个或多个RDC集进行比较;
如果在所述索引中所存储的所述RDC集中找到所述IDC集中的所述区别特征的相似性阀值j,则确定在所述输入块和所述对应的库块之间存在相似性。
20.如权利要求19所述的方法,其中每个所述RDC集和所述IDC集通过以下步骤获得:
将相应数据块分成多个种子,每个种子是该相应数据块的更小部分,并按种子序列排序;
对每个所述种子应用哈希函数以产生多个哈希值,其中每个种子产生一个哈希值;
选择所述多个哈希值的子集;
确定所述种子序列中与所述选择的哈希值子集对应的各种子的位置;
对所确定的各位置应用某个函数,确定在所述种子序列中对应的其他位置;以及
将所述区别特征集定义为在所确定的其他各位置的种子的哈希值。
21.如权利要求20所述的方法,其中:
通过识别k个最大函数值来选择哈希值的所述子集;以及
用来确定所述对应的其他各位置的所述函数是用来识别在所述种子序列中的下一个种子。
22.如权利要求19所述的方法,进一步包括:
通过比较相应数据块的所有数据,确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异。
23.如权利要求22所述的方法,进一步包括:
将所述确定的差异存储在用来存储所述库数据的相同库中。
24.如权利要求19所述的方法,其中所述输入数据位于第一位置,所述库数据和所述索引位于远程位置,该方法进一步包括:
在所述第一位置确定所述IDC集;
将所述确定的IDC集从所述第一位置发送到所述远程位置;
在所述远程位置将所述确定的IDC集与所述一个或多个RDC集进行比较;以及
在不将全部所述输入数据块发送到所述远程位置且不将全部所述识别的相似库数据决发送到所述第一位置的情况下,确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异。
25.如权利要求24所述的方法,进一步包括:
在所述远程位置存储所述确定的差异。
26.如权利要求19所述的方法,其中所述方法至少用于下列目的中的一个:数据分解;以及数据备份。
27.一种在库数据中识别输入数据的***,其中所述库数据包括库数据块,所述输入数据包括输入数据块,并且其中每个库数据块具有对应的含有一个或多个库数据块区别特征RDC的集,所述***包括下列装置:
用来为每个输入数搪块确定含有一个或多个输入数据块区别特征(IDC)的集的装置;
用来为每个输入数据块把所述确定的IDC集和一个或多个RDC集做比较的装置;以及
用来为每个输入数据块根据所确定的IDC集与所述一个或多个RDC集的比较来识别与所述输入数据块相似的库数据块的装置。
28.如权利要求27所述的***,进一步包括:
用来为每个输入数据块通过比较相应块的所有数据,确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异的装置。
29.如权利要求27所述的***,其中所述输入数据位于第一位置,所述库数据位于远程位置,该***进一步包括:
用于在所述第一位置确定所述IDC集的装置;
用于将所述确定的IDC集从所述第一位置发送到所述远程位置的装置;以及
用于在所述远程位置将所述确定的IDC集与一个或多个RDC集进行比较的装置。
30.如权利要求29所述的***,进一步包括:
用于在不将所有的所述输入数据块发送到所述远程位置且不将所有的所述识别的相似库数据块发送到所述第一位置的情况下,确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异的装置。
31.如权利要求30所述的***,进一步包括:
用于使用所述一个或多个确定的差异来更新所述远程位置的装置。
32.如权利要求31所述的***,其中:
所述第一位置是第一计算机,所述远程位置是与所述第一计算机不同的远程计算机,所述第一计算机和远程计算机通过网络通信;以及
所述库数据存储在通过所述远程计算机访问的数据库内。
33.如权利要求27所述的***,其中识别IDC集和RDC集之间的相似性是相似性阀值的函数。
34.如权利要求33所述的***,其中当在RDC集中找到所述IDC集中的预定数量的所述区别特征时,则满足所述相似性阀值。
35.如权利要求34所述的***,其中用于确定区别特征集的装置包括:
用于识别相应数据块内一个或多个数据部分的装置;以及
用于计算相应数据块内一个或多个数据部分的每个的数学哈希值的装置。
36.如权利要求35所述的***,进一步包括:
用于确定某个集当中k个最大数学哈希值的装置,k为预定数值;
用于为所述k个最大哈希值的每个识别相应数据部分的装置;以及
用于把区别特征集确定为与每个所述k个最大数学哈希值对应的每个数据部分相关的顺序下一个数据部分的数学哈希值的装置。
37.如权利要求28所述的***,进一步包括用于在库中存储所述确定的差异的装置。
38.如权利要求37所述的***,其中确定一个或多个差异的装置至少包括下列装置中的一个:
用于确定二进制差分的装置;以及
用于确定按字节分解的装置。
39.如权利要求27所述的***,其中所述区别特征由下列中的一个确定:哈希函数;滚动哈希函数;模数哈希函数。
40.如权利要求27所述的***,其中至少以下列一种方式将所述RDC集存储在索引中:二杈树:B树;排序表;以及哈希表。
41.如权利要求27所述的***,其中每个所述库和所述输入数据块包括多个种子,每个种子是基本元素的连续的序列并具有相同的种子大小,并且其中所述区别特征是相应块的各种子的选定的子集的哈希值。
42.如权利要求41所述的***,其中所述种子包括重叠的种子。
43.如权利要求27所述的***,其中所述***至少用于下列目的中的一个:数据分解;以及数据备份。
44.如权利要求27所述的***,其中所述确定相似库块的步骤所花的时间与所述库的大小无关,并与所述输入数据的大小成线性。
45.一种用于在库数据中搜索与输入数据相似的***,该***包括:
用于将所述库数据分成一个或多个库块的装置:
用于为每个库块计算对应的库区别特征RDC集的装置,每个RDC集包括至少一个区别特征;
用于维持索引的装置,该索引使每个RDC集和对应的库块关联;
用于将所述输入数据分成一个或多个输入块以及为每个输入块执行以下步骤的装置:
计算对应的输入区别特征IDC集,所述IDC集包括至少一个区别特征;
将IDC集与存储在所述索引中的一个或多个RDC集进行比较;以及
如果在存储在所述索引中的所述RDC集中找到所述IDC集中的所述区别特征的相似性阀值j,则确定在所述输入块和所述对应的库块之间存在相似性。
46.如权利要求45所述的***,其中每个所述RDC集和所述IDC集通过以下步骤获得:将所述各个数据块分成多个种子,每个种子是相应数据块的更小部分,并按种子序列排序;
对每个所述种子应用哈希函数,以产生多个哈希值,其中每个种子产生一个哈希值;
选择所述多个哈希值的子集;
确定所述种子序列中与所述选择的哈希值子集对应的各种子的位置;
对所确定的各位置应用某个函数,确定在所述种子序列中对应的其他各位置;以及
将所述区别特征集定义为在所确定的其他各位置的种子的哈希值。
47.如权利要求46所述的***,其中:
通过识别k个最大函数值来选择哈希值的所述子集;以及
用来确定所述对应的其他位置的所述函数是识别在所述种子序列中的下一个种子。
48.如权利要求45所述的***,进一步包括:
用于通过比较相应数据块的所有数据以确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异的装置。
49.如权利要求48所述的***,进一步包括:
用于将所述确定的差异存储在用来存储所述库数据的相同库中的装置。
50.如权利要求45所述的***,其中所述输入数据位于第一位置,所述库数据和所述索引位于远程位置,该***进一步包括:
用于在所述第一位置确定所述IDC集的装置;
用于将所述确定的IDC集从所述第一位置发送到所述远程位置的装置;
用于在所述远程位置将所述确定的IDC集与所述一个或多个RDC集进行比较的装置;以及
用于在不将所有的所述输入数据块发送到所述远程位置,且不将所有的所述识别的相似库数据块发送到所述第一位置的情况下,确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异的装置。
51.如权利要求50所述的***,进一步包括:
用于将所述确定的差异存储在所述远程位置的装置。
52.如权利要求45所述的***,至少用于下列目的中的一个:数据分解;以及数据备份。
53.一种用于向库(53)提供输入数据以在所述库中的库数据内搜索与该输入数据相似的数据的***,所述输入数据分成一个或多个输入块(51),该***包括:
用于为每个输入块计算对应的输入区别特征IDC集的装置,每个IDC集包括多个区别特征(55i~59i),安排所述装置用于将相应数据块分成多个种子,每个种子是该相应数据块的更小部分并按种子序列来排序,对每个所述种子应用哈希函数,以产生多个哈希值,其中每个种子产生一个哈希值,其特征在于:
所述计算装置可操作用于选择所述多个哈希值的子集;
确定该种子序列中与所选择的哈希值的子集所对应的各种子的位置;
对所确定的各位置应用某个函数,以确定所述种子序列中对应的其他各位置;以及
将所述区别特征集定义为位于所确定的其他各位置的各种子的哈希值。
54.如权利要求53所述的***,包括用于将所述确定的IDC集发送到所述库所在的远程位置的装置。
55.一种用于在库数据内搜索与输入数据相似的数据的***,所述库数据被分成一个或多个库块(50),该***包括:
用于为每个库块计算对应的库区别特征RDC集的装置,每个RDC集包括多个区别特征(55r~59r),安排所述装置用于将该相应数据块分成多个种子,每个种子是该相应数据块的更小部分并按种子序列来排序,对每个种子应用哈希函数,以产生多个哈希值,其中每个种子产生一个哈希值;
用于维持索引(44)的装置,该索引(44)使每个RDC集与相对应的库块相关联;
用于将输入数据的输入块(51)的输入区别特征(55i~59i)与所述索引中存储的一个或多个RDC集进行比较的装置,以识别所述输入块和该对应的库块之间是否存在相似,其特征在于:
如果在所述索引中所存储的RDC集中找到输入区别特征集的相似性阀值j,则所述比较装置可操作用于判定存在相似;以及
所述计算装置可操作用于选择所述多个哈希值的子集k;
确定所述种子序列中与所选择的哈希值子集对应的各种子的位置;
对所确定的各位置应用某个函数,以确定所述种子序列中对应的其他各位置;以及
将所述区别特征集定义为位于所确定的其他各位置的各种子的哈希值。
56.如权利要求55所述的***,其中:
通过识别k个最大哈希值来选择哈希值的所述子集k;以及
用来确定所述对应的其他各位置的所述函数是在所述种子序列中识别下一个种子。
57.如权利要求55所述的***,进一步包括:
用于通过比较相应数据块的全部数据来确定所述输入数据块(51)和所述识别的相似的库块之间的一个或多个差异的装置。
58.如权利要求57所述的***,进一步包括:
用于将所确定的差异存储在用于存储所述库数据的相同的库(53)中的装置。
59.如权利要求57所述的***,至少用于下列目的之一:数据分解,以及数据备份。
60.一种网络化的计算机***包括:位于第一位置的第一计算机,所述第一计算机提供权利要求53所述的***,以及位于远程位置的第二计算机,所述第二计算机提供权利要求55所述的***,所述第一和第二计算机彼此通过网络通信,并且其中所述库数据存储在通过所述第二计算机访问的数据库(17)内。
61.如权利要求60所述的网络化的计算机***,包括装置,该装置用于在不需要向所述远程位置发送全部所述输入数据块并且不需要向所述第一位置发送全部所述识别的相似库数据块的情况下,确定所述输入数据块与所述识别的相似库数据块之间的一个或多个差异。
62.一种用于在库数据内搜索与输入数据相似的数据的方法,其中所述库数据被分成一个或多个库块(50),该方法包括:
为每个库块(52),计算对应的库区别特征RDC集(55r~59r),每个RDC集包括多个区别特征(55r~59r);
维持将每个RDC集与对应的库块相关联的索引(44);
为数据的输入块(51)计算输入区别特征(55i~59i)IDC;
将所述IDC(55i~59i)与存储在所述索引(44)中的一个或多个RDC集(55r~59r)进行比较,以确定该输入块和对应的库块之间是否存在相似,其中所述RDC和IDC通过以下步骤获得:
将相应数据块(51,52)分成多个种子,每个种子是该相应数据块的更小部分,并以种子序列排序;
对每个所述种子应用哈希函数,以产生多个哈希值,其中每个种子产生一个哈希值;
其特征在于:为每个输入数据块计算IDC集,该集包括多个区别特征,将所述集与所述各RDC集进行比较;
如果在所述索引中存储的RDC集中找到所述IDC集的所述区别特征的相似性阀值j,则确定存在相似;以及
通过进一步选择所述多个哈希值的子集k的步骤来获得每个RDC和IDC集;
确定所述种子序列中与所选择的哈希值子集对应的各种子的位置;
对所确定的各位置应用某个函数,以确定所述种子序列中对应的其他各位置;以及
将所述区别特征集定义为位于所确定的其他各位置的各种子的哈希值。
63.如权利要求62所述的方法,其中:
通过识别k个最大哈希值来选择哈希值的所述子集;以及
用来确定所述对应的其他各位置的所述函数是在所述种子序列中识别下一个种子。
64.如权利要求62所述的方法,进一步包括:
通过比较相应数据块的全部数据,确定所述输入数据块和所述识别的相似库数据块之间的一个或多个差异。
65.如权利要求64所述的方法,进一步包括:
将所确定的差异存储在用于存储所述库数据的相同的库(53)内。
66.如权利要求65所述的方法,其中所述输入数据位于第一位置,所述库数据和所述索引位于远程位置,该方法进一步包括:
在所述第一位置(1602)确定所述IDC集(55i~59i);
将所确定的IDC集从所述第一位置发送到所述远程位置(1604);在所述远程位置将所述确定的IDC集与一个或多个RDC集进行比较;以及
在不需要向所述远程位置发送全部所述输入数据块并不需要向所述第一位置发送全部所述识别的相似库数据块的情况下,确定所述输入数据块与所述识别的相似库数据块之间的一个或多个差异。
67.如权利要求66所述的方法,进一步包括:
将所确定的差异存储在所述远程位置(1604)。
68.如权利要求62至67任一项所述的方法,其中该方法至少用于下列目的之一:数据分解以及数据备份。
69.如权利要求62至67任一项所述的方法,其中如果在RDC集中找到该IDC集的预定数量的区别特征,则满足相似性阀值。
70.如权利要求62至67任一项所述的方法,其中所述多个哈希值的子集k是某个集中所述k个最大数学哈希值,且应用于所确定的各位置的函数是选取与每个所述k个最大数学哈希值所对应的每个种子相关的按顺序的下一个种子。
71.如权利要求62至67任一项所述的方法,其中所述哈希函数选自滚动哈希函数和模数哈希函数。
72.如权利要求62至67任一项所述的方法,其中至少按下列方式之一将RDC集存储在所述索引里:二杈树、B树、排序列表以及哈希表。
73.如权利要求62至67任一项所述的方法,其中每个种子是基本元素的连续序列,并具有相同的种子大小s。
74.如权利要求73所述的方法,其中所述种子包括重叠的种子。
75.如权利要求62至67任一项所述的方法,其中所述比较所述IDC与一个或多个RDC以确定是否存在相似的步骤,其执行时间与所述库的大小无关,且与所述输入数据的大小成线性。
76.一种用于在库数据内搜索与输入数据相似的数据的方法,其中所述库数据被分成一个或多个库块(52),该方法包括:
为每个库决(52),计算对应的库区别特征RDC集,每个RDC集包括多个区别特征(55r~59r),并通过将相应数据块分成多个种子而获得,每个种子是该相应数据块的更小部分,并按种子序列排序,并对每个所述种子应用哈希函数,以产生多个哈希值,其中每个种子产生一个哈希值;
维持将每个RDC集与对应的库块相关联的索引(44);
将输入数据的输入块的输入区别特征(55i~59i)与存储在所述索引中的一个或多个RDC集进行比较,以确定该输入块和所述对应的库块之间是否存在相似,其特征在于:
如果在所述索引中存储的RDC集中找到所述IDC集的所述区别特征的相似性阀值j,则判定在所述输入块和所述对应的库块之间存在相似;以及
通过下列步骤来获得RDC集:
选择所述多个哈希值的子集k;
确定所述种子序列中与所选择的哈希值子集对应的各种子的位置;
对所确定的各位置应用某个函数,以确定所述种子序列中对应的其他各位置;以及
将所述区别特征集定义为所确定的其他各位置的种子的哈希值。
77.一种用于向库(53)提供输入数据以在所述库中的库数据内搜索与所述输入数据相似的数据的方法,该方法包括:
将所述输入数据分成一个或多个输入块(51);
为每个块计算输入区别特征IDC集,所述输入区别特征集包括多个特征(55i~59i),并通过下列步骤获得:
将该相应数据块分成多个种子,每个种子是该相应数据块的更小部分,并按种子序列排序;
对每个所述种子应用哈希函数,以产生多个哈希值,其中每个种子产生一个哈希值;
选择所述多个哈希值的子集k;
确定所述种子序列中与所述选择的哈希值子集对应的各种子的位置;
对所确定的各位置应用某个函数,其他各位置;以及
以确定所述种子序列中对应的将所述区别特征集定义为所确定的其他各位置的种子的哈希值。
78.一种在库数据中识别输入数据的方法,其中所述库数据包括库数据块(50),所述输入数据包括输入数据块(51),并且其中每个库数据块具有对应的库数据块区别特征RDC集,每个区别特征(55r至59r)与一个特征位置存储在一起,所述各特征位置分散在整个所述块上,针对每个输入数据块,所述方法包括下列步骤:
确定输入数据块区别特征IDC集,每个区别特征(55i至59i)具有特征位置,所述各特征位置分散在整个所述块上;
将所确定的IDC集中的IDC与一个或多个RDC集进行比较;以及
根据所确定的IDC集与所述一个或多个RDC集的比较,识别与所述输入数据相似的库数据块。
79.一种在库数据中识别输入数据的方法,其中所述库数据包括库数据块,所述输入数据包括输入数据块,并且其中每个库数据块具有对应的库数据块区别特征RDC集,每个区别特征(55r至59r)与一个RDC特征位置存储在一起,对每个输入数据块,所述方法包括下列步骤:
确定输入数据块区别特征IDC集,每个区别特征具有IDC特征位置;
将所述确定的IDC集与一个或多个RDC集进行比较;
根据所确定的IDC集与所述一个或多个RDC集的比较来识别与所述输入数据相似的库数据块,其中当发现所述IDC集中的预定数量的所述区别特征与RDC集中的区别特征匹配时,库数据块被识别为相似;以及
输出至少一对匹配的IDC和RDC的所述IDC特征位置和RDC特征位置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/941,632 | 2004-09-15 | ||
US10/941,632 US7523098B2 (en) | 2004-09-15 | 2004-09-15 | Systems and methods for efficient data searching, storage and reduction |
US11/194,086 US8725705B2 (en) | 2004-09-15 | 2005-07-29 | Systems and methods for searching of storage data with reduced bandwidth requirements |
US11/194,086 | 2005-07-29 | ||
PCT/US2005/033363 WO2006032049A1 (en) | 2004-09-15 | 2005-09-15 | Systems and methods for searching and storage of data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101084499A CN101084499A (zh) | 2007-12-05 |
CN101084499B true CN101084499B (zh) | 2010-06-16 |
Family
ID=36035351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800390868A Active CN101084499B (zh) | 2004-09-15 | 2005-09-15 | 用于搜索和存储数据的***和方法 |
Country Status (2)
Country | Link |
---|---|
US (10) | US7523098B2 (zh) |
CN (1) | CN101084499B (zh) |
Families Citing this family (193)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890464B2 (en) * | 2003-06-20 | 2011-02-15 | Innopath Software, Inc. | Processing software images and generating difference files |
US7676506B2 (en) * | 2003-06-20 | 2010-03-09 | Innopath Software, Inc. | Differential file compression of software image versions |
US20060047855A1 (en) * | 2004-05-13 | 2006-03-02 | Microsoft Corporation | Efficient chunking algorithm |
US8346739B1 (en) * | 2004-08-27 | 2013-01-01 | Affiliated Computer Services, Inc. | Segmenting documents among multiple data repositories |
US8725705B2 (en) * | 2004-09-15 | 2014-05-13 | International Business Machines Corporation | Systems and methods for searching of storage data with reduced bandwidth requirements |
US7523098B2 (en) | 2004-09-15 | 2009-04-21 | International Business Machines Corporation | Systems and methods for efficient data searching, storage and reduction |
US7613787B2 (en) * | 2004-09-24 | 2009-11-03 | Microsoft Corporation | Efficient algorithm for finding candidate objects for remote differential compression |
US7783688B2 (en) * | 2004-11-10 | 2010-08-24 | Cisco Technology, Inc. | Method and apparatus to scale and unroll an incremental hash function |
US20070022066A1 (en) * | 2005-04-12 | 2007-01-25 | Goldstein Elizabeth J | Computational intelligence system |
US7606816B2 (en) | 2005-06-03 | 2009-10-20 | Yahoo! Inc. | Record boundary identification and extraction through pattern mining |
JP4810915B2 (ja) * | 2005-07-28 | 2011-11-09 | 日本電気株式会社 | データ検索装置及び方法、並びにコンピュータ・プログラム |
US8392684B2 (en) * | 2005-08-12 | 2013-03-05 | Silver Peak Systems, Inc. | Data encryption in a network memory architecture for providing data based on local accessibility |
US8095774B1 (en) | 2007-07-05 | 2012-01-10 | Silver Peak Systems, Inc. | Pre-fetching data into a memory |
US8370583B2 (en) * | 2005-08-12 | 2013-02-05 | Silver Peak Systems, Inc. | Network memory architecture for providing data based on local accessibility |
US8171238B1 (en) | 2007-07-05 | 2012-05-01 | Silver Peak Systems, Inc. | Identification of data stored in memory |
US7483903B2 (en) * | 2005-08-17 | 2009-01-27 | Yahoo! Inc. | Unsupervised learning tool for feature correction |
US8929402B1 (en) | 2005-09-29 | 2015-01-06 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data by predicting subsequent data |
US8489562B1 (en) | 2007-11-30 | 2013-07-16 | Silver Peak Systems, Inc. | Deferred data storage |
US8811431B2 (en) | 2008-11-20 | 2014-08-19 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data |
US7627571B2 (en) * | 2006-03-31 | 2009-12-01 | Microsoft Corporation | Extraction of anchor explanatory text by mining repeated patterns |
US7562186B2 (en) * | 2006-04-11 | 2009-07-14 | Data Domain, Inc. | Efficient data storage using resemblance of data segments |
US7949824B2 (en) * | 2006-04-11 | 2011-05-24 | Emc Corporation | Efficient data storage using two level delta resemblance |
US7844652B2 (en) * | 2006-04-11 | 2010-11-30 | Emc Corporation | Efficient computation of sketches |
US8543782B2 (en) * | 2006-04-25 | 2013-09-24 | Hewlett-Packard Development Company, L.P. | Content-based, compression-enhancing routing in distributed, differential electronic-data storage systems |
US8190742B2 (en) * | 2006-04-25 | 2012-05-29 | Hewlett-Packard Development Company, L.P. | Distributed differential store with non-distributed objects and compression-enhancing data-object routing |
EP3336707A1 (en) | 2006-05-05 | 2018-06-20 | Hybir Inc. | Group based complete and incremental computer file backup system, process and apparatus |
WO2007133559A2 (en) * | 2006-05-10 | 2007-11-22 | Innopath Software | Processing of compact functional differences |
US7640262B1 (en) * | 2006-06-30 | 2009-12-29 | Emc Corporation | Positional allocation |
US7930559B1 (en) * | 2006-06-30 | 2011-04-19 | Emc Corporation | Decoupled data stream and access structures |
US8755381B2 (en) | 2006-08-02 | 2014-06-17 | Silver Peak Systems, Inc. | Data matching using flow based packet data storage |
US8885632B2 (en) | 2006-08-02 | 2014-11-11 | Silver Peak Systems, Inc. | Communications scheduler |
US7950062B1 (en) * | 2006-08-15 | 2011-05-24 | Trend Micro Incorporated | Fingerprinting based entity extraction |
US20080097992A1 (en) * | 2006-10-23 | 2008-04-24 | Donald Martin Monro | Fast database matching |
US9846739B2 (en) | 2006-10-23 | 2017-12-19 | Fotonation Limited | Fast database matching |
US7733910B2 (en) * | 2006-12-29 | 2010-06-08 | Riverbed Technology, Inc. | Data segmentation using shift-varying predicate function fingerprinting |
US9152706B1 (en) | 2006-12-30 | 2015-10-06 | Emc Corporation | Anonymous identification tokens |
US8577680B2 (en) * | 2006-12-30 | 2013-11-05 | Emc Corporation | Monitoring and logging voice traffic on data network |
US9497205B1 (en) | 2008-05-19 | 2016-11-15 | Emc Corporation | Global commonality and network logging |
US8768895B2 (en) * | 2007-04-11 | 2014-07-01 | Emc Corporation | Subsegmenting for efficient storage, resemblance determination, and transmission |
US8458460B2 (en) * | 2007-09-27 | 2013-06-04 | Intel Corporation | Digest generation from instruction op-codes |
DE112007003693B4 (de) * | 2007-10-25 | 2014-05-15 | Hewlett-Packard Development Co., L.P. | Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung |
US8099573B2 (en) * | 2007-10-25 | 2012-01-17 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
US8150851B2 (en) * | 2007-10-25 | 2012-04-03 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
GB2466581B (en) * | 2007-10-25 | 2013-01-09 | Hewlett Packard Development Co | Data processing apparatus and method of deduplicating data |
US8332404B2 (en) * | 2007-10-25 | 2012-12-11 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
WO2009054834A1 (en) * | 2007-10-25 | 2009-04-30 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
US8140637B2 (en) | 2007-10-25 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Communicating chunks between devices |
US9251291B2 (en) * | 2007-11-29 | 2016-02-02 | Microsoft Technology Licensing, Llc | Data parallel searching |
US8307115B1 (en) | 2007-11-30 | 2012-11-06 | Silver Peak Systems, Inc. | Network memory mirroring |
US8775441B2 (en) * | 2008-01-16 | 2014-07-08 | Ab Initio Technology Llc | Managing an archive for approximate string matching |
US8442052B1 (en) | 2008-02-20 | 2013-05-14 | Silver Peak Systems, Inc. | Forward packet recovery |
JP2009225260A (ja) * | 2008-03-18 | 2009-10-01 | Fujitsu Ten Ltd | 制御装置、制御方法、車両の制御装置、及び車両の制御システム |
GB2472520B (en) * | 2008-04-25 | 2012-11-21 | Hewlett Packard Development Co | Data processing apparatus and method of deduplicating data for data backup |
US8743683B1 (en) | 2008-07-03 | 2014-06-03 | Silver Peak Systems, Inc. | Quality of service using multiple flows |
US8832034B1 (en) | 2008-07-03 | 2014-09-09 | Riverbed Technology, Inc. | Space-efficient, revision-tolerant data de-duplication |
US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
US8370309B1 (en) | 2008-07-03 | 2013-02-05 | Infineta Systems, Inc. | Revision-tolerant data de-duplication |
US10805840B2 (en) | 2008-07-03 | 2020-10-13 | Silver Peak Systems, Inc. | Data transmission via a virtual wide area network overlay |
US7913114B2 (en) * | 2008-07-31 | 2011-03-22 | Quantum Corporation | Repair of a corrupt data segment used by a de-duplication engine |
US8078593B1 (en) | 2008-08-28 | 2011-12-13 | Infineta Systems, Inc. | Dictionary architecture and methodology for revision-tolerant data de-duplication |
TW201027375A (en) * | 2008-10-20 | 2010-07-16 | Ibm | Search system, search method and program |
US8484215B2 (en) | 2008-10-23 | 2013-07-09 | Ab Initio Technology Llc | Fuzzy data operations |
US8117343B2 (en) * | 2008-10-28 | 2012-02-14 | Hewlett-Packard Development Company, L.P. | Landmark chunking of landmarkless regions |
US9135396B1 (en) | 2008-12-22 | 2015-09-15 | Amazon Technologies, Inc. | Method and system for determining sets of variant items |
US8375182B2 (en) * | 2009-02-10 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | System and method for segmenting a data stream |
US8001273B2 (en) * | 2009-03-16 | 2011-08-16 | Hewlett-Packard Development Company, L.P. | Parallel processing of input data to locate landmarks for chunks |
US7979491B2 (en) * | 2009-03-27 | 2011-07-12 | Hewlett-Packard Development Company, L.P. | Producing chunks from input data using a plurality of processing elements |
US9141621B2 (en) * | 2009-04-30 | 2015-09-22 | Hewlett-Packard Development Company, L.P. | Copying a differential data store into temporary storage media in response to a request |
US20100281077A1 (en) * | 2009-04-30 | 2010-11-04 | Mark David Lillibridge | Batching requests for accessing differential data stores |
US8793257B2 (en) * | 2009-05-24 | 2014-07-29 | Roger Frederick Osmond | Method for improving the effectiveness of hash-based data structures |
US20100299362A1 (en) * | 2009-05-24 | 2010-11-25 | Roger Frederick Osmond | Method for controlling access to data containers in a computer system |
US9015198B2 (en) * | 2009-05-26 | 2015-04-21 | Pi-Coral, Inc. | Method and apparatus for large scale data storage |
US20100318759A1 (en) * | 2009-06-15 | 2010-12-16 | Microsoft Corporation | Distributed rdc chunk store |
US8660994B2 (en) * | 2010-01-28 | 2014-02-25 | Hewlett-Packard Development Company, L.P. | Selective data deduplication |
GB2467239B (en) * | 2010-03-09 | 2011-02-16 | Quantum Corp | Controlling configurable variable data reduction |
US8442942B2 (en) * | 2010-03-25 | 2013-05-14 | Andrew C. Leppard | Combining hash-based duplication with sub-block differencing to deduplicate data |
US8909781B2 (en) | 2010-05-24 | 2014-12-09 | Pi-Coral, Inc. | Virtual access to network services |
US8682873B2 (en) | 2010-12-01 | 2014-03-25 | International Business Machines Corporation | Efficient construction of synthetic backups within deduplication storage system |
US8930431B2 (en) * | 2010-12-15 | 2015-01-06 | International Business Machines Corporation | Parallel computation of a remainder by division of a sequence of bytes |
US8458145B2 (en) | 2011-01-20 | 2013-06-04 | Infinidat Ltd. | System and method of storage optimization |
US8644620B1 (en) * | 2011-06-21 | 2014-02-04 | Google Inc. | Processing of matching regions in a stream of screen images |
US9063822B2 (en) * | 2011-09-02 | 2015-06-23 | Microsoft Technology Licensing, Llc | Efficient application-aware disaster recovery |
US8832655B2 (en) | 2011-09-29 | 2014-09-09 | Accenture Global Services Limited | Systems and methods for finding project-related information by clustering applications into related concept categories |
US9130991B2 (en) | 2011-10-14 | 2015-09-08 | Silver Peak Systems, Inc. | Processing data packets in performance enhancing proxy (PEP) environment |
US20130103653A1 (en) * | 2011-10-20 | 2013-04-25 | Trans Union, Llc | System and method for optimizing the loading of data submissions |
US9626224B2 (en) | 2011-11-03 | 2017-04-18 | Silver Peak Systems, Inc. | Optimizing available computing resources within a virtual environment |
AU2012340418C1 (en) | 2011-11-15 | 2017-11-16 | Ab Initio Technology Llc | Data clustering, segmentation, and parallelization |
US8667032B1 (en) | 2011-12-22 | 2014-03-04 | Emc Corporation | Efficient content meta-data collection and trace generation from deduplicated storage |
US8914338B1 (en) | 2011-12-22 | 2014-12-16 | Emc Corporation | Out-of-core similarity matching |
US9286934B2 (en) * | 2012-02-06 | 2016-03-15 | Hewlett Packard Enterprise Development Lp | Data duplication in tape drives |
CN102624545A (zh) * | 2012-02-22 | 2012-08-01 | 中兴通讯股份有限公司 | 网管***的数据备份方法、装置和恢复方法、装置 |
US9128951B1 (en) * | 2012-04-25 | 2015-09-08 | Symantec Corporation | Systems and methods for variable-length chunking for deduplication |
US8972415B2 (en) * | 2012-04-30 | 2015-03-03 | Hewlett-Packard Development Company, L.P. | Similarity search initialization |
US9141301B1 (en) | 2012-06-13 | 2015-09-22 | Emc Corporation | Method for cleaning a delta storage system |
US8918390B1 (en) * | 2012-06-13 | 2014-12-23 | Emc Corporation | Preferential selection of candidates for delta compression |
US10135462B1 (en) | 2012-06-13 | 2018-11-20 | EMC IP Holding Company LLC | Deduplication using sub-chunk fingerprints |
US9026740B1 (en) | 2012-06-13 | 2015-05-05 | Emc Corporation | Prefetch data needed in the near future for delta compression |
US8972672B1 (en) | 2012-06-13 | 2015-03-03 | Emc Corporation | Method for cleaning a delta storage system |
US8712978B1 (en) | 2012-06-13 | 2014-04-29 | Emc Corporation | Preferential selection of candidates for delta compression |
US9116902B1 (en) | 2012-06-13 | 2015-08-25 | Emc Corporation | Preferential selection of candidates for delta compression |
US9400610B1 (en) | 2012-06-13 | 2016-07-26 | Emc Corporation | Method for cleaning a delta storage system |
US8688685B2 (en) * | 2012-06-15 | 2014-04-01 | Sap Ag | Accelerated searching of substrings |
US9223812B2 (en) * | 2012-08-16 | 2015-12-29 | Exagrid Systems, Inc. | Adaptive scheduled periodic caching |
US9634522B2 (en) * | 2012-09-19 | 2017-04-25 | International Business Machines Corporation | Power grid data monitoring and control |
US9262414B1 (en) * | 2012-09-28 | 2016-02-16 | Emc Corporation | Detecting time zones using historical date sampling |
US9020954B2 (en) | 2012-09-28 | 2015-04-28 | International Business Machines Corporation | Ranking supervised hashing |
US8756237B2 (en) * | 2012-10-12 | 2014-06-17 | Architecture Technology Corporation | Scalable distributed processing of RDF data |
US9110937B2 (en) | 2013-01-30 | 2015-08-18 | Dropbox, Inc. | Providing a content preview |
US9171063B2 (en) * | 2013-03-13 | 2015-10-27 | Facebook, Inc. | Short-term hashes |
US9678975B2 (en) * | 2013-03-15 | 2017-06-13 | International Business Machines Corporation | Reducing digest storage consumption in a data deduplication system |
US9715576B2 (en) * | 2013-03-15 | 2017-07-25 | II Robert G. Hayter | Method for searching a text (or alphanumeric string) database, restructuring and parsing text data (or alphanumeric string), creation/application of a natural language processing engine, and the creation/application of an automated analyzer for the creation of medical reports |
US9471582B2 (en) | 2013-04-04 | 2016-10-18 | International Business Machines Corporation | Optimized pre-fetch ordering using de-duplication information to enhance network performance |
US10191934B2 (en) * | 2013-05-13 | 2019-01-29 | Hitachi, Ltd. | De-duplication system and method thereof |
US8907461B1 (en) * | 2013-05-29 | 2014-12-09 | Intel Corporation | Heat dissipation device embedded within a microelectronic die |
US10754834B1 (en) | 2013-06-15 | 2020-08-25 | Veritas Technologies Llc | System and method for operational continuity of backup operations to a deduplicated storage |
US10282256B1 (en) | 2013-06-15 | 2019-05-07 | Veritas Technologies Llc | System and method to enable deduplication engine to sustain operational continuity |
US10296597B2 (en) | 2013-07-15 | 2019-05-21 | International Business Machines Corporation | Read ahead of digests in similarity based data deduplicaton |
US9892127B2 (en) | 2013-07-15 | 2018-02-13 | International Business Machines Corporation | Global digests caching in a data deduplication system |
US10339109B2 (en) | 2013-07-15 | 2019-07-02 | International Business Machines Corporation | Optimizing hash table structure for digest matching in a data deduplication system |
US9836474B2 (en) | 2013-07-15 | 2017-12-05 | International Business Machines Corporation | Data structures for digests matching in a data deduplication system |
US9268786B2 (en) | 2013-07-15 | 2016-02-23 | International Business Machines Corporation | Applying a minimum size bound on content defined segmentation of data |
US9594766B2 (en) | 2013-07-15 | 2017-03-14 | International Business Machines Corporation | Reducing activation of similarity search in a data deduplication system |
US9286314B2 (en) | 2013-07-15 | 2016-03-15 | International Business Machines Corporation | Applying a maximum size bound on content defined segmentation of data |
US9892048B2 (en) | 2013-07-15 | 2018-02-13 | International Business Machines Corporation | Tuning global digests caching in a data deduplication system |
US10296598B2 (en) | 2013-07-15 | 2019-05-21 | International Business Machines Corporation | Digest based data matching in similarity based deduplication |
US20150019815A1 (en) * | 2013-07-15 | 2015-01-15 | International Business Machines Corporation | Utilizing global digests caching in data deduplication of workloads |
US9922042B2 (en) * | 2013-07-15 | 2018-03-20 | International Business Machines Corporation | Producing alternative segmentations of data into blocks in a data deduplication system |
US9891857B2 (en) | 2013-07-15 | 2018-02-13 | International Business Machines Corporation | Utilizing global digests caching in similarity based data deduplication |
US10133502B2 (en) * | 2013-07-15 | 2018-11-20 | International Business Machines Corporation | Compatibility and inclusion of similarity element resolutions |
US10789213B2 (en) | 2013-07-15 | 2020-09-29 | International Business Machines Corporation | Calculation of digest segmentations for input data using similar data in a data deduplication system |
US9244830B2 (en) | 2013-07-15 | 2016-01-26 | Globalfoundries Inc. | Hierarchical content defined segmentation of data |
US10229132B2 (en) | 2013-07-15 | 2019-03-12 | International Business Machines Corporation | Optimizing digest based data matching in similarity based deduplication |
US10229131B2 (en) | 2013-07-15 | 2019-03-12 | International Business Machines Corporation | Digest block segmentation based on reference segmentation in a data deduplication system |
US10073853B2 (en) * | 2013-07-17 | 2018-09-11 | International Business Machines Corporation | Adaptive similarity search resolution in a data deduplication system |
US9405479B1 (en) | 2013-08-26 | 2016-08-02 | Western Digital Technologies, Inc. | Faster file compression using sliding compression window and backward compound pointers |
US10545917B2 (en) | 2014-02-19 | 2020-01-28 | Snowflake Inc. | Multi-range and runtime pruning |
US10325032B2 (en) | 2014-02-19 | 2019-06-18 | Snowflake Inc. | Resource provisioning systems and methods |
US9948496B1 (en) | 2014-07-30 | 2018-04-17 | Silver Peak Systems, Inc. | Determining a transit appliance for data traffic to a software service |
US9990352B2 (en) * | 2014-08-06 | 2018-06-05 | Quest Software Inc. | Chunk compression in a deduplication aware client environment |
US10459886B2 (en) | 2014-08-06 | 2019-10-29 | Quest Software Inc. | Client-side deduplication with local chunk caching |
US9984093B2 (en) | 2014-08-06 | 2018-05-29 | Quest Software Inc. | Technique selection in a deduplication aware client environment |
US9917894B2 (en) | 2014-08-06 | 2018-03-13 | Quest Software Inc. | Accelerating transfer protocols |
US9875344B1 (en) | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
CN104391915B (zh) * | 2014-11-19 | 2016-02-24 | 湖南国科微电子股份有限公司 | 一种数据重删方法 |
US9858303B2 (en) | 2015-01-12 | 2018-01-02 | International Business Machines Corporation | In-memory latch-free index structure |
EP3303996A1 (en) | 2015-06-04 | 2018-04-11 | HERE Global B.V. | Incremental update of compressed navigational databases |
US10650024B2 (en) | 2015-07-30 | 2020-05-12 | Google Llc | System and method of replicating data in a distributed system |
US20170038978A1 (en) * | 2015-08-05 | 2017-02-09 | HGST Netherlands B.V. | Delta Compression Engine for Similarity Based Data Deduplication |
US20170060924A1 (en) * | 2015-08-26 | 2017-03-02 | Exablox Corporation | B-Tree Based Data Model for File Systems |
CN111506801B (zh) * | 2015-09-07 | 2023-04-25 | 创新先进技术有限公司 | 一种应用App中子应用的排序方法及装置 |
US10990626B2 (en) * | 2015-09-24 | 2021-04-27 | Trustees Of Boston University | Data storage and retrieval system using online supervised hashing |
US10083185B2 (en) | 2015-11-09 | 2018-09-25 | International Business Machines Corporation | Enhanced data replication |
US9690512B2 (en) | 2015-11-23 | 2017-06-27 | Samsung Electronics Co., Ltd. | Method of similarity testing by syndromes and apparatus therefore |
US9678977B1 (en) * | 2015-11-25 | 2017-06-13 | International Business Machines Corporation | Similarity based deduplication of snapshots data |
US9871797B2 (en) | 2016-02-09 | 2018-01-16 | Lookingglass Cyber Solutions, Inc. | Information security apparatus and methods for credential dump authenticity verification |
US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
US10885009B1 (en) * | 2016-06-14 | 2021-01-05 | Amazon Technologies, Inc. | Generating aggregate views for data indices |
US10437780B2 (en) | 2016-07-14 | 2019-10-08 | Snowflake Inc. | Data pruning based on metadata |
EP3279811B1 (en) | 2016-08-04 | 2023-10-04 | HERE Global B.V. | Reducing size of update package data for navigation databases |
US9967056B1 (en) | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
US10282127B2 (en) | 2017-04-20 | 2019-05-07 | Western Digital Technologies, Inc. | Managing data in a storage system |
WO2018200348A1 (en) * | 2017-04-24 | 2018-11-01 | President And Fellows Of Harvard College | Systems and methods for accelerating exploratory statistical analysis |
US10963483B2 (en) * | 2017-04-26 | 2021-03-30 | Oracle International Corporation | Sequential storage volume replication based on comparison of write session identifiers |
US10809928B2 (en) | 2017-06-02 | 2020-10-20 | Western Digital Technologies, Inc. | Efficient data deduplication leveraging sequential chunks or auxiliary databases |
CN107368235B (zh) * | 2017-06-27 | 2020-09-08 | 上海展扬通信技术有限公司 | 功能机的多任务切换方法和功能机 |
US10503608B2 (en) | 2017-07-24 | 2019-12-10 | Western Digital Technologies, Inc. | Efficient management of reference blocks used in data deduplication |
WO2019037878A1 (en) | 2017-08-25 | 2019-02-28 | Huawei Technologies Co., Ltd. | APPARATUS AND METHOD FOR STORING DATA BLOCKS RECEIVED AS DEDPLICATED DATA BLOCKS |
US11212210B2 (en) | 2017-09-21 | 2021-12-28 | Silver Peak Systems, Inc. | Selective route exporting using source type |
US10862672B2 (en) * | 2017-10-24 | 2020-12-08 | Intuit, Inc. | Witness blocks in blockchain applications |
CN107798389B (zh) * | 2017-11-06 | 2021-05-14 | 国网重庆市电力公司电力科学研究院 | 一种图像数据集构建方法、***及计算机可读存储设备 |
US10637721B2 (en) | 2018-03-12 | 2020-04-28 | Silver Peak Systems, Inc. | Detecting path break conditions while minimizing network overhead |
CN110427391B (zh) * | 2018-04-28 | 2023-07-28 | 伊姆西Ip控股有限责任公司 | 确定重复数据的方法、设备和计算机程序产品 |
US11055327B2 (en) | 2018-07-01 | 2021-07-06 | Quadient Technologies France | Unstructured data parsing for structured information |
US11270339B1 (en) * | 2018-08-21 | 2022-03-08 | Amdocs Development Limited | System, method, and computer program for using full and partial dynamic customer criteria sets for targeting promotions |
CN109445703B (zh) * | 2018-10-26 | 2019-10-25 | 黄淮学院 | 一种基于块级数据去重的Delta压缩存储组件 |
CN109840245B (zh) * | 2019-01-31 | 2020-12-18 | 中铁工程装备集团有限公司 | 一种基于分片存储和折半索引的数据查询引擎 |
CN110334106A (zh) * | 2019-05-06 | 2019-10-15 | 深圳供电局有限公司 | 一种基于大数据分析的运维故障分析预警方法 |
US11288368B1 (en) * | 2019-06-26 | 2022-03-29 | Support Intelligence, Inc. | Signature generation |
US11119999B2 (en) | 2019-07-24 | 2021-09-14 | Sap Se | Zero-overhead hash filters |
US11126401B2 (en) | 2019-09-18 | 2021-09-21 | Bank Of America Corporation | Pluggable sorting for distributed databases |
US11016978B2 (en) | 2019-09-18 | 2021-05-25 | Bank Of America Corporation | Joiner for distributed databases |
US11520738B2 (en) | 2019-09-20 | 2022-12-06 | Samsung Electronics Co., Ltd. | Internal key hash directory in table |
US11556497B2 (en) * | 2020-01-06 | 2023-01-17 | Armiq Co., Ltd. | Real-time archiving method and system based on hybrid cloud |
CN113672575A (zh) * | 2021-07-16 | 2021-11-19 | 深圳智慧林网络科技有限公司 | 数据压缩方法及装置、存储介质 |
CN114139189B (zh) * | 2021-12-08 | 2023-03-24 | 广西民族大学 | 一种基于互模拟等价的数据安全处理方法和装置 |
US20230216690A1 (en) * | 2021-12-30 | 2023-07-06 | Gm Cruise Holdings Llc | Data transfer acceleration via content-defined chunking |
CN116010362A (zh) * | 2023-03-29 | 2023-04-25 | 世优(北京)科技有限公司 | 文件存储和文件读取的方法、装置及*** |
US11797508B1 (en) * | 2023-06-02 | 2023-10-24 | Black Cape Inc. | Systems and methods for geospatial correlation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5721907A (en) * | 1994-01-14 | 1998-02-24 | Traveling Software, Inc. | Remote file transfer method and apparatus |
US6101507A (en) * | 1997-02-11 | 2000-08-08 | Connected Corporation | File comparison for data backup and file synchronization |
CN1298523A (zh) * | 1998-02-26 | 2001-06-06 | 太阳微***公司 | 数据库中多项目和多模块匹配方法和*** |
US6771703B1 (en) * | 2000-06-30 | 2004-08-03 | Emc Corporation | Efficient scaling of nonscalable MPEG-2 Video |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4586620A (en) * | 1984-04-23 | 1986-05-06 | Andrews Russell J | Railroad car coupler alignment device |
US4686620A (en) * | 1984-07-26 | 1987-08-11 | American Telephone And Telegraph Company, At&T Bell Laboratories | Database backup method |
US5202982A (en) | 1990-03-27 | 1993-04-13 | Sun Microsystems, Inc. | Method and apparatus for the naming of database component files to avoid duplication of files |
US5479654A (en) * | 1990-04-26 | 1995-12-26 | Squibb Data Systems, Inc. | Apparatus and method for reconstructing a file from a difference signature and an original file |
EP0541281B1 (en) * | 1991-11-04 | 1998-04-29 | Commvault Systems, Inc. | Incremental-computer-file backup using signatures |
JPH06103127A (ja) | 1992-09-22 | 1994-04-15 | Kanebo Ltd | ハッシュファイルデータ管理装置およびハッシュファイルデータ管理方法 |
US5748783A (en) * | 1995-05-08 | 1998-05-05 | Digimarc Corporation | Method and apparatus for robust information coding |
US6757406B2 (en) * | 1993-11-18 | 2004-06-29 | Digimarc Corporation | Steganographic image processing |
US5574906A (en) * | 1994-10-24 | 1996-11-12 | International Business Machines Corporation | System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing |
US5646997A (en) * | 1994-12-14 | 1997-07-08 | Barton; James M. | Method and apparatus for embedding authentication information within digital data |
WO1996025801A1 (en) * | 1995-02-17 | 1996-08-22 | Trustus Pty. Ltd. | Method for partitioning a block of data into subblocks and for storing and communicating such subblocks |
US6788800B1 (en) * | 2000-07-25 | 2004-09-07 | Digimarc Corporation | Authenticating objects using embedded data |
US5727197A (en) * | 1995-11-01 | 1998-03-10 | Filetek, Inc. | Method and apparatus for segmenting a database |
US5850565A (en) * | 1996-08-26 | 1998-12-15 | Novell, Inc. | Data compression method and apparatus |
US6038665A (en) * | 1996-12-03 | 2000-03-14 | Fairbanks Systems Group | System and method for backing up computer files over a wide area computer network |
US5875249A (en) * | 1997-01-08 | 1999-02-23 | International Business Machines Corporation | Invisible image watermark for image verification |
US6374250B2 (en) * | 1997-02-03 | 2002-04-16 | International Business Machines Corporation | System and method for differential compression of data from a plurality of binary sources |
US6119124A (en) * | 1998-03-26 | 2000-09-12 | Digital Equipment Corporation | Method for clustering closely resembling data objects |
US6067574A (en) * | 1998-05-18 | 2000-05-23 | Lucent Technologies Inc | High speed routing using compressed tree process |
US6263348B1 (en) * | 1998-07-01 | 2001-07-17 | Serena Software International, Inc. | Method and apparatus for identifying the existence of differences between two files |
US6366986B1 (en) * | 1998-06-30 | 2002-04-02 | Emc Corporation | Method and apparatus for differential backup in a computer storage system |
US6604236B1 (en) * | 1998-06-30 | 2003-08-05 | Iora, Ltd. | System and method for generating file updates for files stored on read-only media |
US6233589B1 (en) | 1998-07-31 | 2001-05-15 | Novell, Inc. | Method and system for reflecting differences between two files |
WO2000032049A1 (en) | 1998-11-27 | 2000-06-08 | Btg International Limited | Electrical animal stun/kill apparatus |
US6487561B1 (en) | 1998-12-31 | 2002-11-26 | Emc Corporation | Apparatus and methods for copying, backing up, and restoring data using a backup segment size larger than the storage block size |
US6385706B1 (en) * | 1998-12-31 | 2002-05-07 | Emx Corporation | Apparatus and methods for copying a logical object to a primary storage device using a map of storage locations |
US6920537B2 (en) | 1998-12-31 | 2005-07-19 | Emc Corporation | Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel |
US6397308B1 (en) * | 1998-12-31 | 2002-05-28 | Emc Corporation | Apparatus and method for differential backup and restoration of data in a computer storage system |
US6785815B1 (en) * | 1999-06-08 | 2004-08-31 | Intertrust Technologies Corp. | Methods and systems for encoding and protecting data using digital signature and watermarking techniques |
US6306132B1 (en) * | 1999-06-17 | 2001-10-23 | Vivant Medical | Modular biopsy and microwave ablation needle delivery apparatus adapted to in situ assembly and method of use |
US6560620B1 (en) | 1999-08-03 | 2003-05-06 | Aplix Research, Inc. | Hierarchical document comparison system and method |
EP2148284A1 (en) * | 2000-01-10 | 2010-01-27 | Iron Mountain Incorporated | Administration of a differential backup system in a client-server environment |
US6704730B2 (en) * | 2000-02-18 | 2004-03-09 | Avamar Technologies, Inc. | Hash file system and method for use in a commonality factoring system |
WO2001061563A1 (en) | 2000-02-18 | 2001-08-23 | Avamar Technologies, Inc. | Hash file system and method for use in a commonality factoring system |
US7080257B1 (en) | 2000-03-27 | 2006-07-18 | Microsoft Corporation | Protecting digital goods using oblivious checking |
US6675177B1 (en) * | 2000-06-21 | 2004-01-06 | Teradactyl, Llc | Method and system for backing up digital data |
US6470329B1 (en) * | 2000-07-11 | 2002-10-22 | Sun Microsystems, Inc. | One-way hash functions for distributed data synchronization |
US6757675B2 (en) * | 2000-07-24 | 2004-06-29 | The Regents Of The University Of California | Method and apparatus for indexing document content and content comparison with World Wide Web search service |
US7660819B1 (en) * | 2000-07-31 | 2010-02-09 | Alion Science And Technology Corporation | System for similar document detection |
EP1317715A1 (en) * | 2000-08-04 | 2003-06-11 | Infoglide Corporation | System and method for comparing heterogeneous data sources |
DE10042427A1 (de) * | 2000-08-30 | 2002-03-14 | Philips Corp Intellectual Pty | Plasmabildschirm mit verbessertem Kontrast |
US6694337B1 (en) * | 2000-10-26 | 2004-02-17 | Intel Corporation | Synchronizing databases |
US6810398B2 (en) | 2000-11-06 | 2004-10-26 | Avamar Technologies, Inc. | System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences |
US6658423B1 (en) * | 2001-01-24 | 2003-12-02 | Google, Inc. | Detecting duplicate and near-duplicate files |
US6738779B1 (en) * | 2001-02-21 | 2004-05-18 | Telecom Italia S.P.A. | Apparatus for and method of multiple parallel string searching |
US6532516B1 (en) * | 2001-09-27 | 2003-03-11 | Coriolis Networks, Inc. | Technique for updating a content addressable memory |
US7139756B2 (en) * | 2002-01-22 | 2006-11-21 | International Business Machines Corporation | System and method for detecting duplicate and similar documents |
CA2374298A1 (en) * | 2002-03-01 | 2003-09-01 | Ibm Canada Limited-Ibm Canada Limitee | Computation of frequent data values |
JP3673234B2 (ja) | 2002-03-20 | 2005-07-20 | 株式会社東芝 | 暗号処理を行う情報記録再生装置と情報記録再生方法 |
US6983020B2 (en) * | 2002-03-25 | 2006-01-03 | Citrix Online Llc | Method and apparatus for fast block motion detection |
US7092972B2 (en) | 2002-05-09 | 2006-08-15 | Sun Microsystems, Inc. | Delta transfers in distributed file systems |
JP4035600B2 (ja) | 2002-05-22 | 2008-01-23 | 国立大学法人 東京大学 | イマチニブに対する感受性の判定方法 |
CA2390350A1 (en) | 2002-06-10 | 2003-12-10 | Ibm Canada Limited-Ibm Canada Limitee | Incremental cardinality estimation for a set of data values |
US6928526B1 (en) * | 2002-12-20 | 2005-08-09 | Datadomain, Inc. | Efficient data storage system |
US7065619B1 (en) * | 2002-12-20 | 2006-06-20 | Data Domain, Inc. | Efficient data storage system |
US7055008B2 (en) * | 2003-01-22 | 2006-05-30 | Falconstor Software, Inc. | System and method for backing up data |
US7490116B2 (en) * | 2003-01-23 | 2009-02-10 | Verdasys, Inc. | Identifying history of modification within large collections of unstructured data |
US20040153614A1 (en) | 2003-02-05 | 2004-08-05 | Haim Bitner | Tape storage emulation for open systems environments |
US6839724B2 (en) * | 2003-04-17 | 2005-01-04 | Oracle International Corporation | Metamodel-based metadata change management |
US7299221B2 (en) * | 2003-05-08 | 2007-11-20 | Oracle International Corporation | Progressive relaxation of search criteria |
US20050132197A1 (en) | 2003-05-15 | 2005-06-16 | Art Medlar | Method and apparatus for a character-based comparison of documents |
US20050004954A1 (en) * | 2003-07-01 | 2005-01-06 | Hand Held Products, Inc. | Systems and methods for expedited data transfer in a communication system using hash segmentation |
US7447917B2 (en) | 2003-11-12 | 2008-11-04 | Microsoft Corporation | Obfuscated state store for rights management system and the like |
WO2005050489A1 (en) * | 2003-11-13 | 2005-06-02 | Commvault Systems, Inc. | System and method for stored data archive verification |
US7475061B2 (en) * | 2004-01-15 | 2009-01-06 | Microsoft Corporation | Image-based document indexing and retrieval |
US7392262B1 (en) * | 2004-02-11 | 2008-06-24 | Aol Llc | Reliability of duplicate document detection algorithms |
US20050262167A1 (en) * | 2004-05-13 | 2005-11-24 | Microsoft Corporation | Efficient algorithm and protocol for remote differential compression on a local device |
US7814056B2 (en) | 2004-05-21 | 2010-10-12 | Computer Associates Think, Inc. | Method and apparatus for data backup using data blocks |
US8725705B2 (en) | 2004-09-15 | 2014-05-13 | International Business Machines Corporation | Systems and methods for searching of storage data with reduced bandwidth requirements |
US7523098B2 (en) | 2004-09-15 | 2009-04-21 | International Business Machines Corporation | Systems and methods for efficient data searching, storage and reduction |
US20070214198A1 (en) | 2006-03-10 | 2007-09-13 | Nathan Fontenot | Allowing state restoration using differential backing objects |
-
2004
- 2004-09-15 US US10/941,632 patent/US7523098B2/en not_active Expired - Fee Related
-
2005
- 2005-09-15 CN CN2005800390868A patent/CN101084499B/zh active Active
-
2009
- 2009-03-19 US US12/407,765 patent/US8275755B2/en not_active Expired - Fee Related
- 2009-03-19 US US12/407,786 patent/US8275782B2/en not_active Expired - Fee Related
- 2009-03-19 US US12/407,774 patent/US9400796B2/en active Active
- 2009-03-19 US US12/407,779 patent/US9378211B2/en active Active
- 2009-03-19 US US12/407,782 patent/US9430486B2/en active Active
- 2009-03-20 US US12/407,789 patent/US20090228456A1/en not_active Abandoned
- 2009-03-20 US US12/407,788 patent/US8275756B2/en not_active Expired - Fee Related
-
2016
- 2016-07-25 US US15/219,127 patent/US10282257B2/en active Active
- 2016-08-01 US US15/225,510 patent/US10649854B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5721907A (en) * | 1994-01-14 | 1998-02-24 | Traveling Software, Inc. | Remote file transfer method and apparatus |
US6101507A (en) * | 1997-02-11 | 2000-08-08 | Connected Corporation | File comparison for data backup and file synchronization |
CN1298523A (zh) * | 1998-02-26 | 2001-06-06 | 太阳微***公司 | 数据库中多项目和多模块匹配方法和*** |
US6771703B1 (en) * | 2000-06-30 | 2004-08-03 | Emc Corporation | Efficient scaling of nonscalable MPEG-2 Video |
Non-Patent Citations (2)
Title |
---|
S. SCHLEIMER,D.S.WIKERSON,A.AIKEN.Winnowing:Local Algorithms for Document Fingerprinting.PROCEEDINGS OF THE 2003 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA.2003,76-85. * |
S.SCHLEIMER D.S.WIKERSON |
Also Published As
Publication number | Publication date |
---|---|
US20090234821A1 (en) | 2009-09-17 |
US20090228453A1 (en) | 2009-09-10 |
US9378211B2 (en) | 2016-06-28 |
US8275755B2 (en) | 2012-09-25 |
US20090228454A1 (en) | 2009-09-10 |
US20060059173A1 (en) | 2006-03-16 |
US20090228456A1 (en) | 2009-09-10 |
US9430486B2 (en) | 2016-08-30 |
US20160342482A1 (en) | 2016-11-24 |
US10282257B2 (en) | 2019-05-07 |
US9400796B2 (en) | 2016-07-26 |
US8275782B2 (en) | 2012-09-25 |
CN101084499A (zh) | 2007-12-05 |
US20090228455A1 (en) | 2009-09-10 |
US20090234855A1 (en) | 2009-09-17 |
US20160335285A1 (en) | 2016-11-17 |
US7523098B2 (en) | 2009-04-21 |
US20090228534A1 (en) | 2009-09-10 |
US10649854B2 (en) | 2020-05-12 |
US8275756B2 (en) | 2012-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101084499B (zh) | 用于搜索和存储数据的***和方法 | |
JP4939421B2 (ja) | データを検索し記憶するシステム及び方法 | |
CN101553813B (zh) | 管理可单独访问的数据单元的存储器 | |
US6694323B2 (en) | System and methodology for providing compact B-Tree | |
Alsberg | Space and time savings through large data base compression and dynamic restructuring | |
JP2008513891A6 (ja) | データを検索し記憶するシステム及び方法 | |
CN104731791A (zh) | 一种市场销售分析数据集市*** | |
US20100174714A1 (en) | Data mining using an index tree created by recursive projection of data points on random lines | |
US7653624B1 (en) | File system change tracking | |
CN103733195A (zh) | 管理用于基于范围的搜索的数据的存储 | |
EP1006460A2 (en) | Symbol dictionary compiling method and symbol dictionary retrieving method | |
EP1609081A2 (en) | System and method for storing and accessing data in an interlocking trees datastore | |
CN101960454A (zh) | 多维数据库体系 | |
CN100465949C (zh) | 用于识别和存储表格变化的***和方法 | |
EP1265155A2 (en) | File tree comparator | |
CN103064908A (zh) | 一种通过内存快速去重名单的方法 | |
CN101226552A (zh) | 一种利用多维结构树构成的目录管理海量信息的方法 | |
EP1200907B1 (en) | Database table recovery system | |
Meshjal | A Hybrid Data Warehouse Model to Improve Mining Algorithms | |
Belford | Research in network data management and resource sharing, technology summary, CAC No. 161 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20090320 Address after: American New York Applicant after: International Business Machines Corp. Address before: Massachusetts, USA Applicant before: Diligent Technologies Corp. |
|
ASS | Succession or assignment of patent right |
Owner name: INTERNATIONAL BUSINESS MACHINE CORP. Free format text: FORMER OWNER: DILIGHENT TECHNOLOGIES CO.,LTD. Effective date: 20090320 |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |