数据压缩装置和方法与流程

文档序号:17584736发布日期:2019-05-03 21:13阅读:210来源:国知局
数据压缩装置和方法与流程
本发明涉及一种用于压缩数据流的数据压缩装置和方法。本发明也涉及一种用于存储程序代码的计算机可读存储介质,所述程序代码包括用于执行压缩数据流的方法的指令。
背景技术
:传统的基于同一性的重复数据删除是一种用于消除重复数据的重复副本的技术。该技术可以应用于存储系统以提高存储利用率,也可以应用于网络数据传输以提高吞吐量。典型的重复数据删除过程将搜索重复的数据块。在存储系统的情况下,传统的重复数据删除可以通过用硬链接代替数据的重复部分以节省空间,从而节省系统中已存储的相同部分数据。当处理小块数据时,类似硬链接的技术可以提供良好的空间增益。基于相似性的重复数据删除与传统的基于同一性的重复数据删除的不同之处在于如何消除冗余数据。传统的基于同一性的重复数据删除旨在检测数据的精确匹配。与查找精确匹配的基于同一性的重复数据删除相比,基于相似性的重复数据删除系统尝试识别相似的数据块,并通过应用差分压缩来移除冗余数据,即计算两个数据块a和b之间的差异d,然后用差异d代替b并链接到a。当精确匹配无法找到相同的块时,基于相似性的重复数据删除可以在处理较小修改的大文件,例如,数据库、文本文档、演示文稿时提供额外的好处。寻找一个相似的数据块(来应用差分压缩)是一项计算复杂且耗时的任务。为了加速搜索,典型的基于相似性的重复数据删除系统使用最近数据块的缓存及其局部敏感哈希指纹(locality-sensitivefingerprint,简称lsh指纹)。lsh指纹是数据的一小部分,使得如果两个数据块a和b具有相似的lsh指纹lsh_a和lsh_b,则块本身具有高概率的大量共同信息。通过计算其lsh指纹之间的距离,该属性使得可以在所述缓存中搜索与给定数据块相似的数据块。典型的重复数据删除系统包含决策模块、压缩模块和内置ram缓存。所述决策模块通常具有以下职责:–所述决策模块接受新的数据块作为输入。–所述决策模块查询缓存以找到与给定数据块相似的数据块(最适合应用差分压缩的数据块)。–所述决策模块决定应用何种压缩:两块差分压缩、单块压缩或不压缩。–所述决策模块决定是否应该将新块放入缓存。缓存的目的是存储将来用作差分压缩候选的最近数据块。典型的缓存具有以下职责:–所述缓存存储一组数据块及其指纹。–所述缓存支持快速搜索具有与给定指纹相似的指纹的参考数据块。通常,所述压缩模块支持多种压缩,包括两块差分压缩、单块传统压缩和不压缩。典型的重复数据删除过程涉及重复数据删除系统的所有三个主要模块,即内置ram缓存、决策模块和压缩模块的合作。现有技术中已经提出了不同的压缩方法,但是这些压缩方法通常涉及显著的计算量或实现次优的压缩比。技术实现要素:本发明的目的在于提供一种用于压缩数据流的数据压缩装置和方法,其中,所述用于压缩数据流的数据压缩装置和方法解决了现有技术中的一个或多个上述提及的问题。本发明的第一方面提供了一种用于压缩数据流的数据压缩装置,所述数据压缩装置包括:-数据分离器,用于将所述数据流分割成数据块;-分类器,用于将所述数据块分为多个数据类;-参考块检测器,用于为所述多个数据类中的每一个检测参考块;-第一数据压缩器,用于基于第一数据类的数据块和为第一数据类检测到的参考块之间的差异来压缩第一数据类的数据块。所述数据流可以是从存储设备、文件、网络、因特网和/或数据压缩装置内部或外部的多个数据源读取的任何类型的数据。所述第一数据压缩器可以用于(使用为所述多个数据类检测到的对应参考块)来压缩来自所有多个数据类的数据块。换句话说,所述第一数据压缩器可以使用为所述第一数据类检测到的参考块来压缩所述第一数据类的数据块,并且可以使用为第二数据类检测到的参考块来压缩第二数据类的数据块,等等。所述数据压缩装置也可以包括第二数据压缩器,该第二数据压缩器使用完全不同的压缩方案。第一方面的数据压缩装置解决了基于高效相似性重复数据删除的问题。所述数据压缩装置不仅适用于特定类型的输入流数据(例如,oracle、mysql数据库、日志等),也适用于混合类型的数据。所提议装置是自适应的,并且自动调整以适应输入流特征,从而实现了更高的总体压缩比和更低的计算复杂性。根据测试,所述数据压缩装置在重复数据删除率方面胜过许多顶级重复数据删除系统,同时保持相同或相似的计算复杂性。第一方面的数据压缩装置可以使用大块重复数据删除(bigblockdeduplication,简称bbd)。bbd是指一组压缩方法,其借助于另一个所谓的参考预定义数据块来压缩输入(所谓的目标)数据块。下文中,在不失一般性的情况下,通过调用bbd指的是来自增量压缩系列的任何方法,例如,lz-delta压缩。通常增量压缩比传统的压缩方法提供更高的压缩比,但需要搜索适当的参考数据块。结合第一方面,在所述数据压缩装置的第一种实现方式中,所述分类器包括多个相似性检测器,对应于所述多个数据类。例如,所述多个相似性检测器中的每一个可以用于确定给定数据块的得分。然后,可以分配对应于最高得分的数据类。具有包括多个相似性检测器的分类器具有以下优点:通过添加另一个相似性检测器,可以容易地将所述分类器扩展为包括另一个数据类。类似地,通过移除相应的相似性检测器,可以轻松地从分类器中移除数据类。结合第一方面或第一方面的第一种实现方式,在所述数据压缩装置的第二种实现方式中,所述数据压缩装置用于:如果对于给定数据块,所述多个相似性检测器中的每一个产生低于预定阈值的检测得分,则所述给定数据块被分配到第二数据压缩器,该第二数据压缩器用于以与所述第一数据压缩器不同的方式操作。如果相似性检测器产生低得分,则这可以指示数据块与任何现有数据类不相似,因此对应于不同数据类的第一数据压缩器可能都不适合用于压缩该数据块。因此,可能优选的是分配以不同方式操作的第二数据压缩器来压缩该数据块。例如,可以是第二数据压缩器,其独立于关于数据块的相似性的任何先前假设而操作。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第三种实现方式中,所述数据压缩装置用于:如果对于给定数据块,所述多个相似性检测器中的每一个产生低于预定阈值的检测得分,则将数据块累积到数据块的日志中,并且如果所述数据块的日志的大小大于预定阈值,则基于所述数据块的日志对新的相似性检测器进行训练,并且将所述新的相似性检测器添加到所述多个相似性检测器。这具有以下优点:所述数据压缩装置能够适应在所述数据流中找到的新类的数据块。第三种实现方式的数据压缩装置可以实现为根据第二种实现方式的数据压缩装置:通过独立的第二数据压缩器压缩来自每个相似性检测器的得分较低的数据块。然而,同时这些“未分类的”数据块被累积到数据块的日志中,使得可以用未分类的数据块来训练新的相似性检测器。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第四种实现方式中,所述多个相似性检测器中的相似性检测器包括基于机器学习的相似性检测器,尤其是支持向量机(supportvectormachine,简称svm)。支持向量机已被证明是特别好的二进制分类器。支持向量机可以看作是线性分类器,但是,通过使用所谓的内核技巧也可以适用于对非线性分离的数据进行分类。特别地,svm适用于处理非常高维度的输入数据。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第五种实现方式中,对所述多个相似性检测器中的相似性检测器的输入包括:-待分类数据块的n元元素的直方图;-待分类数据块的n元元素的哈希直方图;和/或-二进制向量,指示待分类数据块的n元元素的直方图和/或待分类数据块的n元元素的哈希直方图的一个或多个最大值。查看数据块的n元元素的直方图具有以下优点:数据块的可能非常高的维度可以显著地减少,从而简化了进一步的处理。查看n元哈希而不是n元本身具有以下优点:可以进一步降低维度。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第六种实现方式中,所述参考块检测器用于基于为数据类的相似性检测器的svm的支持向量来为数据类检测参考块。svm可以用大量训练数据进行训练,并将svm识别为对数据分类特别有用的所谓“支持向量”数据点。因此,因为支持向量数量通常是训练数据数量的一小部分,所以另一输入数据的分类被简化。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第七种实现方式中,所述装置用于在初始训练阶段之后在线适配所述分类器的一个或多个参数。所述初始训练阶段可以被执行,例如,从所述数据流中选择特殊的数据块。随后,所述分类器的一个或多个参数可以基于来自所述数据流的其它数据块的处理而被适配。因此,所述数据压缩装置可以随时间适应所述数据流中数据的变化。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第八种实现方式中,所述数据压缩装置用于通过对所述数据流的多个数据块进行聚类来确定所述多个数据类。聚类是一种非监督的机器学习技术。因此,即使没有“地面真值”标签可用,所述数据压缩装置也可以识别所述数据流中的不同数据类。有用的聚类技术包括例如k-means聚类。如果数据块的维度过高,则可以在聚类之前降低所述数据块的维度。例如,可以对数据块的n元元素的直方图和/或基于数据块的n元元素的直方图的哈希进行聚类。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第九种实现方式中,参考块检测器用于基于下述规则来检测所述参考块:mod(block_index,cn)==0,其中,block_index是数据类内的块的索引,并且1/cn是参考块频率。换句话说,对于给定数据类,所述参考块检测器可以用于检测每个第cn块作为参考块,其中,cn是可以为每个数据类单独选择的数字。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第十种实现方式中,所述参考块检测器用于基于所述分类器的分类得分,尤其是基于与数据类相对应的数据类的相似性检测器的检测得分来适配数据类的参考块频率。结合第一方面或第一方面的前述实现方式中的任一种,在所述数据压缩装置的第十一种实现方式中,适配所述参考块频率包括如果所述分类得分随时间增加,则减小所述参考块频率的步骤。如果分类得分增加,这意味着数据块变得越来越类似于类。这意味着数据不会随时间显著地变化。因此,可以减少数据块的频率(1/cn),这意味着增加cn值。本发明的第二方面涉及一种用于压缩数据流的方法,所述方法包括:-将所述数据流分割成数据块;-将所述数据块分为多个数据类;-为所述多个数据类中的每一个检测参考块;-基于第一数据类的数据块和为第一数据类检测到的参考块之间的差异来压缩第一数据类的数据块。根据本发明的第二方面所述的方法可以由根据本发明的第一方面所述的数据压缩装置执行。根据本发明的第二方面所述的方法的其它特征或实现方式可以执行根据本发明的第一方面及其不同的实现形式所述的数据压缩装置的功能。在第二方面的所述用于压缩数据流的方法的第一种实现方式中,所述方法包括:确定所述数据类的初始训练阶段和后续在线阶段,其中,所述在线阶段包括适配一个或多个分类参数的步骤。本发明的第三方面涉及一种用于存储程序代码的计算机可读存储介质,所述程序代码包括用于执行如第二方面或第二方面的实现方式所述的方法的指令。附图说明为了更清楚地说明本发明实施例中的技术特征,下面将对实施例描述中所需要使用的附图作简单地介绍。下面描述中的附图仅仅是本发明的一些实施例,这些实施例在不违背本发明如权利要求书中所定义的保护范围的情况下,可以进行修改。图1为描述数据压缩装置的框图;图2为一种用于压缩数据流的方法的流程图;图3为一种用于压缩数据流的另一方法的流程图;图4为集合l=[2,2,3,1,4,2,1,4]的一元和二元的直方图的图示;图5为一种用于数据片分类的方法的流程图;图6为一种用于确定新的相似性检测器的方法的流程图。具体实施方式这里,重复数据删除可以指一种用于消除重复数据的重复副本的方法。基于相似性的重复数据删除可以指一种利用数据相似性的压缩方法。相似性检测可以指检测两部分数据是否相似的过程。相似度可以指显示两个数据块相似程度的数字或计算这样的数字的函数。哈希可以指从任意长度的数据块中计算固定大小指纹的方法。局部敏感哈希(locality-sensitivehash,简称lsh)可以指保存数据局部性的哈希方法,即如果两个数据块a和b具有相似的lsh指纹,则a和b以高概率相似。在处理lsh哈希时,必须定义两个相似性度量:一个用于数据块,另一个用于lsh指纹。指纹可以指一个固定大小的小数据,通常描述更大的数据片。如果两个指纹相同,其所描述的数据片也是以高概率相同。差分压缩可以指计算两个二进制数据块之间差异的无损压缩方法。svm是指支持向量机。svm可以用来线性分离两类或两类以上的样本。n元可以指来自给定符号序列的n个项目的连续序列。相似性检测器可以是找到给定样本的“最相似”样本类,以便在类数量未知时进行给定相似性度量的检测器。相似性检测是模式识别问题的一个子类。重复数据删除率可以是一个等于非压缩数据量除以通过某种方法重复数据删除的数据量的比率。图1示出了一种用于压缩数据流的数据压缩装置100。所述数据压缩装置100包括数据分离器110、分类器120、参考块检测器130和第一数据压缩器140。所述数据分离器110用于将所述数据流分割成数据块。例如,所述数据块可以是大小为n字节的块,并且所述数据分离器用于基于所述数据流的每n个字节创建新的块。所述分类器120用于将所述数据块分为多个数据类。所述参考块检测器130用于为所述多个数据类中的每一个检测参考块。所述第一数据压缩器140用于基于第一数据类的数据块和为第一数据类检测到的参考块之间的差异来压缩第一数据类的数据块。图1中的所述数据压缩装置100可以包括以下优点:所述数据压缩装置100可以适用于基于文件以及基于常量和变量数据块的重复数据删除架构。所述数据压缩装置100可以提供比已知架构更高的压缩比(与现有方案相比,平均提高12%)。所述数据压缩装置100可以以自适应的方式实现,以便所述数据压缩装置100自然地适应更改输入流特征(因为所述数据压缩装置100使用数据局部性)。所述数据压缩装置100计算复杂性低,并且适用于内联重复数据删除甚至ram重复数据删除。图2示出了一种用于压缩数据流的方法200。所述方法包括第一步骤210:将所述数据流分割成数据块。所述方法包括第二步骤220:将所述数据块分为多个数据类。所述方法包括第三步骤230:为所述多个数据类中的每一个检测参考块。所述方法包括第四步骤240:基于第一数据类的数据块和为第一数据类检测到的参考块之间的差异来压缩第一数据类的数据块。基于机器学习技术的用于数据局部性感知重复数据删除的另一方法包括以下步骤:–通过以下方式检测输入数据流(基于文件以及常量或变量块长度)中的局部性类:·将数据流分割成块;和·使用任何机器学习技术对给定块应用相似性类检测。–使用分片索引取模规则独立地为每个相似性流检测参考分片。–对给定参考块使用用于每个相似性流中的块的大块重复数据删除(例如,增量压缩)方法。在另一实施例中,重复数据删除机制可以使用多组相似性检测器将输入流分割成子流。相似性检测器重建数据局部性特征,数据局部性特征通常存在于足够的输入数据中。该组相似性检测器是自适应的,并且如果现有的相似性检测器不能充分识别输入数据块,则可以通过新的检测器来扩大。在流分割之后,每个子流负责处理一个局部性类,因此这样的流中的所有块都以相似的方式处理。每个流都有其自己的参考检测机制来提取参考数据块。参考检测由自适应分片类型检测规则管理。在找到参考分片之后,将增量压缩方法应用于大量后续数据片。当相似性检测器中没有一个能够找到近似相似性类时,可以提供特殊分支处理。在这种情况下,可以应用一些传统的压缩方法(例如,lempel-ziv4压缩)。总体而言,基于相似性检测器反馈(例如,svm得分)来重建数据局部性和自适应参考分片检测能够提供更高的压缩比。与竞争重复数据删除方案相比,测试显示压缩比最多提高了15%。图3为一种用于压缩数据流的另一方法的流程图。在下文中,分片为数据块。在方法300中,接收一些输入302。在该输入302中,在步骤304中确定大小为“t”的数据片。数据片被馈送到n个相似性检测器中,包括第一相似性检测器306和第n相似性检测器308。相似性检测器306和308可以通过支持向量机实现。svm是一种分类器方法,分类器方法可以以最好的方式分离两个不同类的给定样本。在一种实现方式中,svm得分是加权总和,即score=a1*t1+…+an*tn+bias,其中,(t1,…,tn)是系数,bias是常数项(均描述分离超平面)。典型的二进制svm决策规则是:score>0。在此,训练svm检测器指计算最佳系数集合和最佳偏置。重新训练svm检测器可以指在线重新计算系数和偏置。如果相似性检测器中没有一个检测到相似性,则在步骤312中确定所有得分是否低,例如,通过比较所有得分与预定阈值。如果所有得分都低,则该方法继续进行步骤318:添加并应用新的相似性检测器。否则,该方法继续进行步骤320:应用传统的重复数据删除方法。如果相似性检测器306和308检测到相似性,则该方法继续进行步骤310:更新检测规则。随后,在步骤312中,检测分片类型。如果检测到分片是参考分片,则在步骤314中,将该分片设置为当前参考块。如果在步骤312中确定分片是增量块,则该方法继续进行步骤316:基于当前参考块应用块重复数据删除。如果相似性检测器306和308中没有一个检测到相似性,则在步骤318中确定所有相似性得分是否低,例如,是否所有得分都低于预定阈值。若是,则在步骤320中添加并应用新的相似性检测器。若否,则应用传统的重复数据删除方法。相似性检测可以基于所谓的n元。考虑一个长度为k的字符串l=a1a2…ak,其中,k>=n。n元是长度为n的任何子串:si=aiai+1…ai+n-1,其中,i=1,…,k–n+1。n元的直方图是输入字符串中所有n元的频率。1元称为一元;2元称为二元。图4为在字母a={1,2,3,4}上的集合l=[2,2,3,1,4,2,1,4]的一元的第一直方图410和二元的第二直方图420的图示。可以使用合适的密码函数基于直方图410和420来计算哈希。图5为一种用于数据片分类的方法500的流程图。数据片是数据块。为了检测最近的相似性类,可以使用不同的基于机器学习的相似性检测方法,例如,基于数据片直方图分析的计算效率高的支持向量机方法。在第一步骤502中,该方法在系统的输入处提供有相同的固定大小t(例如,t=4096)字节的数据片。在第二步骤504中,计算给定数据片的n元表示的密码哈希函数。对于所有数据片重复这一步骤。在第三步骤506中,计算n元表示的密码哈希。密码函数最好以一个n元的哈希大小小于n个字节的方式来选择。在第四步骤508中,进行哈希的频率计算(产生哈希的直方图)。在第五步骤510中,选择m个最频繁的位置。优选地,这一步骤如下进行:由于所有哈希都是可列举的:h1,h2,...h2m,其中,m表示密码函数的位计数,因此提取p1,…,pm和形式向量,其中,0≤pi≤2m,1≤i≤m,并且2m位计数中的m个被放置在位置p1,…,pm上。在第六步骤512中,通常包括大部分零的该向量被馈送到所有分类器的输入。在最后的步骤514中,除了类索引之外,累积输出分类器得分。在一个实施例中,t=4096,n=4,m=8,并且循环冗余校验(cyclicredundancycheck,简称crc)码被用作密码哈希。图6为一种用于确定新的相似性检测器的方法600的流程图。如果没有为新的输入分片找到相似性类,则相似性检测器会返回低的反馈得分。为了提高压缩比,提议加入额外的相似性检测器。由于新的相似性检测器需要训练,因此提议将这些“难以识别的”分片累积到历史池中。当池已满时,将开始一个新的分类器训练过程。特别地,方法600接收得分的向量602作为输入。在步骤604中,确定所有得分是否为第一预定阈值thr_1。如果不是,则该方法在步骤606结束。如果所有得分都低于所述第一预定阈值,则该方法继续进行步骤608并将当前分片累积到未分类分片的日志中。然后在步骤610中,确定该日志的大小,称为history_size,是否大于第二阈值thr_2。如果是,则在步骤612中针对新的相似性类训练svm系数。否则,如果该日志还不够大,则该方法继续进行步骤614:处理更多的数据片。因为增量压缩直接取决于参考/目标块对,因此参考块选择非常重要。更大数量的参考块将获得更好的数据局部性响应,但另一方面,需要额外的参考块存储空间。为了保持平衡,提议使用自适应阈值cn,并将其设置为参考块的检测频率。自适应由“更新检测规则”块执行。在一个实施例中,使用分片类型检测的以下方法(应当注意,可以应用更多的复合方法)。为了检测当前分片是否是用于大块压缩的参考分片,使用以下规则:ifmod(chunk_index,cn(i))==0thensetchunkasreference,i=1,..,sdn,其中,sdn代表相似性检测器索引。阈值cn(i)对于每个相似性类i是唯一的,并且可以取决于当前类的局部性特征。在初始化阶段,可以将cn(i)设置为某个预定义常数值(例如1000),或者可以通过下面描述的“更新检测规则”块在每个步骤更新cn(i)。为了更新检测规则中的阈值,可以使用以下过程:–如果类#i的分类器反馈得分[i]随时间增加(这意味着数据局部性增长),则增加cn(i)以实现更高的压缩比;和/或–如果类#i的得分[i]随时间减少(这意味着数据局部性较少),则减少cn(i)。更新机制可能不同。例如,可以使用以下方法而不失一般性:ifscore[i](t)-score[i](t-1)>cn_2(i),thencn(i)=max(1,cn(i)-0.02*max_cn),elsecn(i)=min(max_cn,cn(i)+0.02*max_cn).这里,cn_2表示阈值差异阈值,并且max_cn=min1<i<sdncn(i)。通过各种场景和配置进行详尽的模拟表明,基于所提议方法的重复数据删除系统几乎在每次测试中都大大优于参考方案,并且在重复数据删除率方面,至少在测试的次要部分上不会更差。分析表明,重复数据删除系统具有与竞争的重复数据删除系统级别相同的计算复杂性,并且等于参考方案的复杂性。表1示出了与现有emc方案和不同输入场景的参考方案相比,所提议系统的重复数据删除率。表1各种输入场景的压缩比测试结果输入场景所提议方法emcxtremio参考方案数据库oracle4gb2.632.12.44重组数据库4gbv12.592.41重组数据库4gbv22.592.38本发明实施例包括:■一种用于高效的数据局部性感知重复数据删除的方法和系统包括:–通过以下方式检测输入数据流(基于文件以及常量或变量块长度)中的局部性类:·将数据流分割成数据块;和·使用机器学习技术对给定数据块应用相似性类检测。–使用分片索引取模规则,即mod(chunk_index,cn)==0,独立地为每个相似性流检测参考分片。–对给定参考块使用用于每个相似性流中的数据块的大块重复数据删除(例如,增量压缩)方法。■上述所描述的方法在对应于n元直方图最大值的二进制向量上使用计算效率高的支持向量机检测器来检测局部性类。–可以通过将有限数量的svm滤波器系数进行求和来实现方法。■上述所描述的方法可选地应用得分分析过程来动态地构建新的相似性类或更新svm滤波器系数。■上述所描述的方法基于给定流的相似性检测得分,通过改变参考块选择参数cn来可选地更新每个相似性流中的参考块的检测策略。■上述所描述的方法通过使用某种通用重复数据删除方法中的单个流来对未被任何相似性流检测器(即,在所有相似性流中检测得分低于预定义得分阈值)检测到的数据块进行分类。上文描述仅仅为本发明的实施方式,本发明的范围并不仅限于此。本领域技术人员可以容易地做出任何变化或替换。因此,本发明的保护范围应以所附权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1