一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

差分压缩的方法和系统与流程

2022-02-22 17:55:48 来源:中国专利 TAG:


1.本公开在其一些实施例中,涉及数据压缩,并且更具体地但非排他地涉及一种差分压缩的方法和系统。


背景技术:

2.一些数据存储系统执行去重压缩。在标准的去重过程中,指定用于存储的数据被划分为对齐的固定大小的块。对于每个固定大小的块,通过对相应块内的数据进行哈希处理来计算哈希签名。由于两个不同块具有相同哈希签名的概率非常接近零,因此将具有相同哈希签名的块标识为具有相同数据。不会将相同的数据(通过存储两个块)存储两次,而是存储其中一个块,指向存储数据的指针表示另一个相同的块,从而有效地将多个相似的块压缩为大约一个块的大小。
3.其他数据存储系统使用标准方法执行差分压缩。通过压缩基本块和与其相似的其他块之间的差异来执行差分压缩。指定用于存储的数据分为对齐的固定大小的块。对于每个固定大小的块,计算相似性哈希函数。相似性哈希函数用于识别不完全相同但在大多数块相同的意义上相似的块(例如,两个块的90%的内容相同)。对于每个块,能找到多个相似的块。


技术实现要素:

4.本公开的目的是提供一种用于差分压缩的系统、方法和存储程序代码的计算机可读存储介质。
5.通过独立权利要求的特征实现上述和其他目的。根据从属权利要求,说明书和附图,进一步的实施形式是显而易见的。
6.根据第一方面,公开了一种用于差分压缩的系统。该系统被配置为:接收被选择用于压缩的多个输入数据块:对于每个输入数据块,将该输入数据块划分为至少两个段,对于该至少两个段中的每个段,计算相应段和排除相应数据块之外的该多个数据块中的每个数据块之间的相似度,对于该至少两个段中的每个段,将排除相应数据块之外的该多个数据块中,与该相应段具有最大相似度的数据块选择作为该相应段的最佳参考数据块,并响应于基于该输入数据块的段与对应的最佳参考块之间的相似度确定将应用差分压缩,将该差分压缩应用于该输入数据块和最佳参考块。
7.根据第二方面,公开了一种数据的差分压缩的方法。该方法包括:接收被选择用于压缩的多个输入数据块;对于每个输入数据块,将该输入数据块划分为至少两个段,对于该至少两个段中的每个段,计算该相应段和排除相应数据块之外的该多个数据块中的每个数据块之间的相似度,对于该至少两个段中的每个段,将排除相应数据块之外的该多个数据块中,与该相应段具有最大相似度的数据块选择作为该相应段的最佳参考数据块,并响应于基于该输入数据块的段与对应的最佳参考块之间的相似度确定将应用差分压缩,将该差分压缩应用于该输入数据块和最佳参考块。
8.该系统和方法相比标准差分和/或去重方法提高了输入数据块的压缩比,或者至少和标准差分和/或去重方法一样快地提供了压缩比。
9.在该第一方面的另一实现形式中,该系统还被配置为:响应于基于该输入数据块的该段与该对应的最佳参考块之间的相似度确定将不应用差分压缩,将标准压缩应用于该输入数据块。标准压缩对应于可用的任何数据压缩过程,例如,基于lempel-ziv的,zip,lzip,rar或任何其他压缩过程。
10.本文所述的实施方式与标准压缩方法兼容,其使得能够与该标准方法集成。
11.在该第一方面的另一实现形式中,该系统被配置为:将该输入数据块的该段与该对应的最佳参考块之间的相似度与阈值进行比较,以基于该相似度确定是否要应用差分压缩。
12.例如,可以设置(例如,手动和/或自动)阈值以获得压缩(例如,压缩比或压缩比)和计算资源消耗之间的最佳折衷。
13.在该第一方面的另一实现形式中,为该输入数据块选择两个最佳参考块。
14.所有选定的最佳参考块的总大小都明显大于该输入数据块的大小(例如,每个输入块有两个不重叠的段时,为两倍),这提供了更多可能与该输入数据块相似的数据,提高了压缩效率。
15.在该第一方面的另一实现形式中,该系统被配置为:通过以下为该输入数据块的该至少两个段选择最佳参考块的组合:在压缩该输入数据块时,迭代地计算表示参考数据块的不同组合的压缩效率的压缩比;以及根据该压缩比选择该最佳参考数据块的组合。
16.相比于单独选择每个最佳参考块,组合选择最佳参考块可以提供更高的压缩比。
17.在该第一方面的另一实现形式中,该系统被配置为:根据该最佳参考块与该输入数据块的其他段之间的最高相似度和该最佳参考块与该相应段之间的最高相似度的组合,为该输入数据块的每个相应段选择最佳参考块。
18.将提供该块的所有(或多于相应段)段的最大相似度覆盖范围的块选择作为最佳参考块,可以提高压缩效率。穷举方法可以找到提供最高压缩比的最佳参考块的组合。
19.在该第一方面的另一实现形式中,该系统被配置为:通过以下为该输入数据块选择最佳参考块:计算该输入数据块与参考数据块的多个不同组合中的每一个之间的差分压缩,并且选择具有最低差分压缩的最佳参考数据块的组合。
20.提供最佳不同压缩的最佳参考块的组合可以提供该输入块的最佳压缩效率。
21.在该第一方面的另一实现形式中,该系统被配置为:通过以下为该输入数据块选择最佳参考块:计算该输入数据块的一段与该多个数据块中具有与该相应段最大相似度的最佳参考数据块之间的差分压缩,并找到相对于该输入数据块和该最佳参考块之间的差分压缩具有最大相似度的另一个最佳参考块。
22.搜索相对于该差分压缩具有最大相似度的最佳参考块代表着机会性搜索,例如,与穷举搜索相比,其计算效率高。
23.在该第一方面的另一实现形式中,该系统被配置为通过对该最佳参考块进行解压缩并对差分压缩进行解压缩来对该输入数据块进行解压缩。
24.在该第一方面的另一实现形式中,该系统被配置为通过以下确定是否应用差分压缩:接收该输入数据块的每个段与每个对应的最佳参考块之间的计算出的相似度,将该计
算出的相似度与阈值进行比较,并在该相似度高于阈值时确定将应用该差分压缩。
25.在该第一方面的另一实现形式中,相似度是通过相似度哈希函数计算的。
26.可以通过处理资源来快速执行该相似性哈希函数,从而能够实现效率的计算。
27.在该第一方面的另一实现形式中,该对应的最佳参考块中的至少一个被划分为至少两个段,其中,每个段通过相似性依赖被映射到从该多个数据块中选择的更高级别的最佳参考数据块。
28.最佳参考块的多层可以提高压缩效率。
29.在该第一方面的另一实现形式中,该输入数据块,该最佳参考块和该更高级别的最佳参考数据块通过树数据结构的相似性依赖性被映射,其中,该输入数据块被表示为该树数据结构的根。
30.该树的级别数可以被定义为例如压缩与处理资源利用之间的折衷。例如,更高级别的树可能会增加压缩,但在解压缩过程中需要增加计算资源,因为要解压缩更多参考块。
31.在该第一方面的另一实现形式中,该系统被配置为通过遍历该树数据结构并根据被映射的相对更高级别的最佳参考数据块解压缩映射的该最佳参考数据块。
32.未直接链接到要被解压缩的块的参考数据块不会被解压缩,这可能会减少要解压缩的块数。
33.在该第一方面的另一实现形式中,该系统被配置为:将该输入数据块划分为至少两个非均分的段,计算每个非均分段的相似度,并且迭代地选择该数据块的新的非均等划分,计算该新的非均等划分的相似度,直到找到为对应的分段提供最高相似度的该输入数据块的该非均等划分的值。
34.划分为不相等(例如,在两个段的情况下为非偶数)大小的段和迭代选择新的非均等划分可以提高压缩效率。
35.在该第一方面的另一实施形式中,该至少两个段重叠。
36.段的重叠可以通过增加将为每个重叠段找到对应的最佳参考块的概率来提高压缩效率。
37.在该第一方面的另一实施形式中,该多个输入数据块中的每个具有固定的数据大小。
38.可以选择固定或可变数据大小的块以获得最佳压缩。
39.在该第二方面的另一实施形式中,还包括:响应于基于输入数据块的段与对应的最佳参考块之间的相似度确定将不应用差分压缩,将标准压缩应用于该输入数据块。
40.在该第二方面的另一实施形式中,还包括:将该输入数据块的段与该对应的最佳参考块之间的相似度与阈值进行比较,以基于该相似度确定是否要应用差分压缩。
41.在该第二方面的另一实施形式中,该多个输入数据块中的每个具有固定的数据大小。
42.根据第三方面,公开了一种计算机程序产品。该计算机程序产品包括计算机可读代码指令,当其在计算机中运行时,使该计算机执行该第二方面的方法或该第二方面的实现形式。
43.根据第四方面,公开了一种计算机可读存储介质。该计算机可读存储介质存储程序代码,该程序代码包括指令,当其在计算机上执行时,使该计算机执行该第二方面的方法
或该第二方面的实现形式。该计算机可读存储介质包括以下组中的一个或多个:rom(read-only memory,只读存储器),prom(programmable rom,可编程rom),eprom(erasable prom,可擦除prom),闪存,eeprom(electrically eprom,电eprom)和硬盘驱动器。
44.根据第五方面,公开了一种用于差分压缩的设备。该设备包括处理器和存储器。该存储器存储指令,其使该处理器执行根据该第二方面的方法。
45.可以将根据该第五方面的设备扩展成与根据该第二方面的方法的实现形式相对应的实现形式。因此,该装置的一种实施形式包括根据第二方面的方法的相应的实施形式的特征。
46.根据该第五方面的方法的优点与根据该第二方面的方法的相应实施形式的优点相同。
47.除非另有定义,否则本文所使用的所有技术和/或科学术语具有与本公开所属领域的普通技术人员通常所理解的相同含义。尽管与本文描述的那些类似或等同的方法和材料可以用于本公开的实施例的实践或测试中,下面描述了示例性的方法和/或材料。在有冲突的情况下,以专利说明书及其定义为准。另外,材料,方法和实施例仅是说明性的,并非意图是限制性的。
附图说明
48.这里仅通过示例的方式,参考附图描述了本公开的一些实施例。现在具体地参考附图细节,要强调的是,示出的细节是作为示例并且出于对本公开的实施例的说明性讨论的目的。就这一点而言,结合附图进行的描述对于本领域技术人员而言显而易见如何可以实践本公开的实施例。
49.在图中:
50.图1a是根据一些实施例的帮助理解标准差分压缩过程的压缩效率的降低的示意图,其被本文所述的差分压缩过程实施方式所用;
51.图1b是帮助理解使用本文描述的实施方式的差分压缩如何与具有与本文描述的实施方式所应用的固定块大小相同的平均块大小的可变大小去重一样好的示意图;
52.图2是根据一些实施例的基于为输入块的每个段选择最佳参考块的用于差分压缩的系统的组件的框图;
53.图3是根据一些实施例的基于为输入块的每个段选择最佳参考块的差分压缩方法的流程图;以及
54.图4是描绘根据一些实施例的经由相似性依赖被映射到更高级别的最佳参考数据块的段的树数据结构的示例的示意图。
具体实施方式
55.本公开在其一些实施例中,涉及数据压缩,并且更具体地但非排他地涉及一种差分压缩的方法和系统。
56.一些实施例的一方面涉及一种系统,方法和/或计算机可读存储介质,该计算机可读存储介质存储用于基于两个或更多个最佳参考块来差分压缩输入数据块的程序代码。该输入数据块被分为两个或更多个段。对于每个段,找到包括与该段的数据相似的数据的最
佳参考块。对于该输入数据块,找到两个或更多个最佳参考块。差分压缩应用于该输入数据块和该最佳参考块。
57.与标准方法相比,本文描述的系统,方法,代码指令的至少一些实施方式减小了压缩数据的大小。现在讨论使用标准方法进行的压缩中的各种技术问题,这些问题由在此描述系统,方法和/或存储程序代码的计算机可读存储介质的至少一些实施方式解决。
58.使用固定大小的对齐数据块的去重通常会遭受较低的压缩效率。由于去重(deduplication)过程不会标识相似的块,而只会标识相同的块(即,这些块的数据相同且偏移量相同)。去重过程无法识别将相同数据利用不同偏移量(与块大小相比)在不同块中存储两次的情况。例如,这些块具有相同的数据,但是一个块中的数据相对于另一块移位了512个字节。在另一示例中,两个块具有相同的数据,但是一个块在相同数据内的一个或多个位置具有附加的独特数据。在这些情况下缺乏识别和利用相似数据会导致应用去重以减小压缩数据大小的能力丧失。
59.标准差分压缩过程通过利用非相同块中数据的相似性来改善去重。标准差分压缩采用的一种方法是识别输入块与之相似的父块。找到该输入块的单个父块。通过压缩该输入块和参考块之间的差异,将父块用作压缩该输入块的参考。该参考块是单独压缩的。要对该输入块进行解压缩,需要事先提供被解压缩的该参考块的完整副本。在另一种方法中,将多个相似的块压缩为一组。为了解压缩该组的一个块,需要对整个组进行解压缩。因此,为了读取一个块,需要读取大量的参考块。而在本文所述系统,方法和/或存储程序代码的计算机可读存储介质的至少一些实现方法中,需要两个参考块来实现高于可变大小去重的压缩比。
60.当块之间的数据移位很大时,基于识别参考块的标准差分压缩过程无法提供有效的压缩。
61.现在参考图1a,其为根据一些实施例的帮助理解标准差分压缩过程的压缩效率的降低的示意图,其被本文所述的差分压缩过程实施方式所用。数据102a的原始序列(例如,大小为24kb)包括三个块106a-1、106b-1和106c-1。每个块具有固定大小,例如8kb。每个块存储两个4kb数据块。块106a-1存储104a和104b。块106b-1存储104c和104d。块106c-1存储104e和104f。数据102b的另一序列(例如,与原始序列102a大小相同,例如24k kb)以4kb的移位存储着与原始序列102a大部分相同的数据。数据102b的移位序列包括三个块106a-2、106b-2和106c-2。每个块具有与原始序列102a的块相同的固定大小,并存储两个4kb的数据块。块106a-2存储104b和104c。块106b-2存储104d和104e。块106c-2存储104f和104g。现在,通过查找参考块来应用标准差分过程,由于数据104b对两者都是公共的,因此将匹配块106a-1至106a-2,由于数据104d对两者都是公共的,因此将匹配块106b-1至106b-2,由于数据104f对两者都是公共的,因此将匹配块106c-1至106c-2。即使在序列102a和102b中,数据104b,104c,104d,104e和104f相同,匹配块的仅一半数据是相同的,导致无效的压缩。
62.本文描述的系统,方法和/或存储程序代码的计算机可读存储介质的至少一些实现方式提供了比诸如上面讨论的为特定输入块找到单个参考块的标准差分过程之类的标准方法更高的压缩效率。该改进基于利用在多个参考块之间扩展的每个输入块的相同数据。换句话说,与为单个输入块标识单个参考块的标准方法相反,为单个输入块标识了两个或多个参考块。如本文另外详细描述的,该输入块被分成两个或更多个段。为每个段找到一
个参考块。为每个输入块都找到多个参考块,与标准方法相比,可以提高压缩效率。例如,数据块106b-1被分成两个段,对应于数据104c和104d。包括数据104c的块106a-2被标识为第一段(即,包括数据104c)。包括数据104d的块106b-2被标识为第二段(即,包括数据104d)。使用参考块106a-2和106b-2(其一起包括与整个块106b-1相同的数据)对输入块106b-1执行差分压缩。类似地,使用参考块106b-2和106c-2(其一起包括与整个块106c-1相同的数据)对输入块106c-1执行差分压缩。
63.本文描述的系统,方法和/或存储程序代码的计算机可读存储介质的至少一些实现方式减少了用于解压缩参考块的参考块的解压缩量。为了解压缩该输入块,最多将为该输入块标识的两个或更多参考块解压缩。
64.本文描述的系统,方法和/或存储程序代码的计算机可读存储介质的至少一些实现方式实现的压缩比至少与具有与本文描述的实施方式所应用的固定块大小相同的平均块大小的可变大小去重的一样好。例如,基于可变长度的去重过程会将数据划分为可变大小的块。当两个可变大小的块相同时,如上所述进行去重。当使用可变长度去重对某个输入块的数据进行去重时,这意味着该某个输入块的数据已经出现在先前存储的参考数据中,但对齐方式不同。对准偏移最多可能导致相同的数据出现在其他两个参考块中。现在,如果将该两个参考块用于该输入块的差分压缩,则存储在该输入块中的数据将被完全差分压缩。
65.现在参考图1b,其是帮助理解使用本文描述的实施方式的差分压缩如何与具有与本文描述的实施方式所应用的固定块大小相同的平均块大小的可变大小去重一样好的示意图。数据集152a被划分为块154a-h,而数据集152b被划分为块160a-h。块154a-h和块160a-h中的每一个可以具有例如8kb的偏移对准的8kb的大小。应用可变长度去重过程在数据集152a和152b中标识相同的数据160(表示为“abcdef”),这可以通过将数据160的副本保持在另一数据集(例如,参考数据集152a)中实现(例如,在输入数据集152b中)一个数据160的完全压缩。本文描述的系统,方法和/或存储程序代码的计算机可读存储介质的至少一些实现方式,通过使用参考数据集152a的参考块154a和154b对输入数据集152b的156b中发现的数据160的部分进行差分压缩,使用参考块154b和154c对156c中发现的数据160的部分进行差分压缩,使用参考块154c和154d对156d中发现的数据160的部分进行差分压缩,使用参考块154d和154e对156e中发现的数据160的部分进行差分压缩,至少实现了类似的压缩效率。
66.在详细解释本公开的至少一个实施例之前,应理解,本公开的应用并不一定限于以下描述和/或在附图和/或示例中示出的部件和/或方法的构造和布置细节。本公开内容能够具有其他实施例或者能够以各种方式被实践或执行。
67.本公开可以是系统,方法和/或计算机程序产品。该计算机程序产品可以包括其上具有用于使处理器执行本公开的各方面的计算机可读程序指令的计算机可读存储介质。
68.该计算机可读存储介质可以是有形设备,其可以保留和存储供指令执行设备使用的指令。该计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备,光存储设备,电磁存储设备,半导体存储设备或前述的任何合适的组合。
69.可以经由例如因特网,局域网,广域网和/或无线网络等网络将本文描述的计算机可读程序指令从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算
机或外部存储设备。
70.该计算机可读程序指令可以完全地在用户计算机上,部分地在用户计算机上,作为独立软件包,部分地在用户计算机上并且部分地在远程计算机上或完全地在远程计算机或服务器上执行。在后一种情况下,该远程计算机可以通过任何类型的网络连接到该用户计算机,包括局域网(local area network,lan)或广域网(wide area network,wan),或者可以与外部计算机(例如,通过使用互联网服务提供商的互联网)建立连接。在一些实施例中,包括例如可编程逻辑电路,现场可编程门阵列(field-programmable gate array,fpga)或可编程逻辑阵列(programmable logic array,pla)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化该电子电路,以执行该计算机可读指令电子电路,从而执行本公开的方面。
71.这里参考根据本公开的实施例的方法,装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以通过计算机可读程序指令来实现。
72.附图中的流程图和框图示出了根据本公开的各种实施例的系统,方法和计算机程序产品的可能实现的架构,功能和操作。就这一点而言,流程图或框图中的每个方框可以代表指令的模块,片段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上将连续示出的两个框同时执行,或者有时可以以相反的顺序执行这些框。还应注意,框图和/或流程图的每个方框以及框图和/或流程图的方框的组合可以通过执行指定功能或动作,或执行专用用途的硬件和计算机指令的组合的基于硬件的专用用途系统来实现。
73.现在参考图2,其为根据一些实施例的基于为输入块的每个段选择最佳参考块的用于差分压缩的系统200的组件的框图。还参考图3,其是根据一些实施例的基于为输入块的每个段选择最佳参考块的差分压缩方法的流程图。系统200可以实现参考图3描述的方法的动作,通过计算设备204的一个或多个处理器202执行存储在存储器206中的代码指令(例如,代码206a)。
74.计算设备204和/或客户终端210和/或服务器216可以被实现为例如以下一个或多个和/或各项的组合:一组连接的设备,客户终端,服务器,虚拟服务器,计算云,虚拟机,传感器,照相机,台式计算机,瘦客户端,网络节点,网络服务器和/或移动设备(例如,智能手机,平板电脑,便携式计算机,可穿戴计算机,眼镜计算机和手表计算机)。
75.可以实现系统200的不同架构,例如:
76.计算设备204可以被实现为一个或多个服务器(例如,网络服务器,网页服务器,计算云,虚拟服务器,网络节点),其通过网络212向多个客户端终端210和/或服务器216提供服务。例如,软件即服务(software as a service,saas),对选定文件的压缩服务(例如,用于通过网络进行的存储和/或传输),和/或对存储在相应客户终端和/或服务器的存储设备上的文件的备份服务。
77.在一个示例中,用户使用客户终端210向计算设备204提供文件,其对该文件进行压缩,并且接收回文件的压缩版本。在另一示例中,用户使用移动设备来访问托管在服务器216上的网站,点击文件以进行下载。服务器216将所选择的文件提供给计算设备204,该计
算设备204对该文件进行压缩,并且将该文件的压缩版本提供给服务器216,该服务器216将该压缩文件发送给访问该网站的移动设备。在又一示例中,运行在服务器216上的备份程序通过将数据传输给计算设备204以进行压缩来执行数据的定期备份。
78.客户终端210和/或服务器216与计算设备204之间通过网络212的通信可以经由例如以下来实现:应用编程接口(application programming interface,api),软件开发套件(software development kit,sdk),添加到在客户端终端210和/或服务器216上执行的现有应用程序中的功能和/或库和/或附加组件(add-ons),用于在客户端终端210和/或与计算设备204通信的服务器216上下载并执行的应用,调用由计算设备204执行的代码的功能和/或接口,在由计算设备204托管的网站上执行的远程访问部分,该远程访问部分通过在客户端终端210上执行的网页浏览器访问。
79.计算设备204可以被实现为独立设备(例如,客户端,智能电话,智能电视,计算云,虚拟机,信息亭(kiosk)和传感器等),其包括实现了参考图3所描述的一个或多个动作的本地存储的代码。例如,计算设备204可以被实现为出于备份目的压缩存储数据的数据存储服务器。在另一个示例中,计算设备204可以被实现为感测数据并压缩感测数据的传感器。在又一个示例中,计算设备204可以被实现为捕获图像并压缩图像的相机。要注意的是,本文描述的实施方式可以在数据大多相似的情况下(例如在备份,传感器收集的数据和图像中)提供更高的压缩效率。
80.计算设备204的硬件处理器202可以被实现为例如中央处理单元(central processing unit,cpu),图形处理单元(graphics processing unit,gpu),现场可编程门阵列(fpga),数字信号处理器(digital signal processor,dsp)和专用集成电路(application specific integrated circuit,asic)。处理器202可以包括单个处理器或布置为并行处理,作为集群和/或作为一个或多个多核处理设备的多个处理器(同种或异类)。
81.存储器206存储可由硬件处理器202执行的代码指令,例如,随机存取存储器(random access memory,ram),只读存储器(read-only memory,rom)和/或存储设备,例如,非易失性存储器,磁性介质,半导体存储设备,硬盘驱动器,可移动存储和光学介质(例如dvd,cd-rom)。存储器206存储代码206a,当由硬件处理器202执行时,代码206a实现参照图3描述的方法的一个或多个特征和/或动作。
82.计算设备204可以包括用于存储数据(例如,输入数据块208a(将被压缩)和/或压缩数据块208b(如本文所述通过压缩输入数据块208a来创建))的数据存储设备208。数据存储设备208可以被实现为例如存储器,本地硬盘驱动器,虚拟存储,可移动存储单元,光盘,存储设备,和/或被实现为远程服务器和/或计算云(例如,使用网络连接访问)。
83.网络212可以被实现为例如互联网,局域网,虚拟网络,无线网络,蜂窝网络,本地总线,点对点链路(例如,有线的)和/或上述各项的组合。
84.计算设备204可以包括用于连接到网络212的网络接口218,例如,网络接口卡,天线,用于连接到无线网络的无线接口,为网络连通性连接到电缆的物理接口,以软件实现的虚拟接口,提供更高层网络连通性的网络通信软件和/或其他实现中的一个或多个。
85.计算装置204和/或客户端终端210和/或服务器216包括一个或多个物理用户接口214和/或与之通信,该物理用户接口214包括用于用户交互的机制,例如,输入数据(例如,
选择要压缩的文件)和/或查看数据(例如,查看指示文件已被压缩的消息)。
86.示例性物理用户接口214包括例如触摸屏,显示器,手势激活设备,键盘,鼠标和使用扬声器和麦克风的语音激活软件中的一个或多个。
87.在302处,接收被选择用于压缩和去重的输入数据块。可以手动选择(例如,用户单击文件并选择保存选项)该输入数据块和/或自动选择(例如,通过自动备份过程,该过程以预定时间间隔,例如每天,备份存储在服务器上的文件)该输入数据块,和/或由例如数据库的应用程序编写。
88.应注意,主机(例如,客户端终端,应用程序)可以将用于压缩的数据提供给计算设备。主机提供的该数据具有确定的偏移和/或大小。
89.接收的数据通过可选地由计算设备分为输入数据块进行进一步处理。可选地,接收的用于压缩的数据被划分为具有固定数据大小的输入数据块,例如,选择用于压缩的大文件被划分为固定大小的数据块。或者,接收的用于压缩的数据被划分为可变大小的输入数据块。可以例如基于标准可变长度去重过程来执行将接收的用于压缩的数据划分为可变大小,其中仅使用标准可变长度去重过程中执行可变划分的部分。由于使用了本文所述的差分压缩,因此未使用使用标准可变长度去重过程的去重压缩。
90.接收的用于压缩的数据(其被划分为输入数据块)例如可以由用户手动选择进行压缩(例如,用户单击文件并选择保存选项)和/或由代码自动选择(例如,通过压缩数据以在网络上传输的代码,和/或通过以预定时间间隔,例如每天,备份存储在服务器上的文件的自动备份过程)。
91.接收的用于压缩的数据可以存储例如文本,图像,二进制代码,符号,数字和/或其他数据格式。该输入数据块可以是数据文件的一部分。
92.针对每个相应的输入块执行参考304-316描述的特征。如本文所述,其他输入块(即,除了该相应输入块之外)可以被存储在存储器中并且被选择为用于相应输入块的最佳参考块。
93.在304处,将该输入数据块划分为两个或更多个段。例如,可以基于折衷来选择最佳数量的段,其中,增加段的数量提供改进的压缩效率(其可以在一定数量的段处达到峰值)但需要增加计算资源来执行。
94.段的示例性数量包括:两个,三个和四个。在一些实施方式中,使用两个段。
95.可选地,该输入数据块被分成相等大小的段。或者,将该输入数据块划分为大小不等的段。如以下参考310所描述的,分成大小不等的段可以提高压缩效率。
96.这些段可以是连续的,没有数据重叠。或者,这些段彼此重叠,可选地以预定百分比和/或数据量重叠,例如,约10%或20%或30%或其他值。段的重叠可以通过增加将为每个重叠段找到对应的最佳参考块的概率来提高压缩效率。例如,可以基于折衷来选择该段的最佳重叠或不重叠,其中增加重叠提供改善的压缩效率,但是太多的重叠降低压缩效率。
97.所有选定的最佳参考块的总大小都明显大于输入数据块的大小(例如,在每个输入块有两个不重叠的段的情况下,则为两倍),这提供了更多可能与该输入数据块相似的数据,提高压缩效率。
98.在306处,对于每个相应段,计算该相应段和数据块(排除包括相应段的相应数据块)之间的相似度。可选地,在相应段与每个数据块之间计算相似度。或者,例如,基于启发
式过程在一些其他数据块之间计算相似度,而不为其他数据块计算相似度,该启发过程首先基于可能相似的快速相关性计算选择候选块的子集,并针对每个候选块的子集计算相似度。
99.可选地,例如,通过相似性哈希函数来计算相似度,该相似度哈希函数计算两个数据集的相似度的指示,例如,minhash过程(也称为最小式(min-wise)独立排列局部敏感哈希方案),例如,参考broder,andrei z.(1997),“关于文件的相似性和包含性”,序列的压缩和复杂性:会议论文集,波西塔诺,阿马尔菲坦海岸,意大利萨勒诺,1997年6月11日至13日(pdf),ieee,第21

29页("on the resemblance and containment of documents",compression and complexity of sequences:proceedings,positano,amalfitan coast,salerno,italy,june 11-13,1997(pdf),ieee,pp.21

29)。可以通过处理资源来快速执行相似性哈希功能,从而实现计算效率的实现。
100.在308处,对于每个相应段,从数据块(即,排除包括相应段的相应数据块)当中选择最佳参考数据块。可以将最佳参考块选择作为与数据块(即,排除包括相应段的相应数据块)中的相应段具有最大相似度的数据块。
101.每段选择一个参考数据块。最佳参考数据块的示例性数量包括:两个,三个和四个。在一些实施方式中,选择两个最佳参考块。
102.可选地,为相应输入块的相应段独立地选择每个最佳参考块。可以针对每段进行最佳参考块的选择,而无需考虑相应输入块的段的其他最佳参考块的选择。可替代地或附加地,针对输入数据块的段,最佳参考块被选择为组合。
103.选择最佳参考块的示例过程包括:
104.·
通过在压缩该输入数据块时,迭代地计算表示参考数据块的不同组合的压缩效率的压缩比,为输入数据块的段选择最佳参考块的组合。该迭代可以基于穷举搜索,其中每个组合都被评估。可以针对最佳参考块的组合和输入参考块之间的差分压缩计算压缩效率。可以根据压缩比选择最佳参考块的组合,例如,选择提供最高压缩比的最佳参考块的组合。组合选择最佳参考块可以提供比单独选择每个最佳参考块更高的压缩比。穷举方法可以找到提供最高压缩比的最佳参考块的组合。
105.·
根据最佳参考块与输入数据块的其他段之间的最高相似度和最佳参考块与相应段之间的最高相似度的组合,为输入数据块的每个相应段选择最佳参考块。将提供块的所有(或多于相应段)段的最大相似度覆盖范围的块选择作为最佳参考块,可以提高压缩效率。
106.·
通过计算输入数据块(即,输入数据块的各段之间)与参考数据块的多个不同组合中的每个之间的差分压缩,为该输入数据块选择最佳参考块。选择具有最低差分压缩的最佳参考数据块的组合。该组合可以是唯一的,因为唯一的组合是最佳参考块被选为一组的唯一情况。提供最佳不同压缩的最佳参考块的组合可以提供该输入块的最佳压缩效率。
107.·
通过计算该输入数据块的相应段与在数据块中与该相应段具有最大相似度的最佳参考数据块之间的差分压缩,为该输入数据块选择最佳参考块。在该输入数据块之间(即,在相应段,和/或在整个块之间)和最佳参考块之间计算差分压缩。对于该数据块的其他段,找到相对于该差分压缩具有最大相似度的另一个最佳参考块。搜索相对于该差分压缩具有最大相似度的最佳参考块代表着机会性搜索,例如,与穷举搜索相比,其计算效率
高。
108.可选地,一个或多个被选择的最佳参考数据块被分成两个或更多个段,其中一个或多个段经由相似性依赖被映射到从数据块中选择的更高级别的最佳参考数据块。最佳参考块可能有两个或多个级别。可选地,该输入数据块,该(第一级)最佳参考块和一个或多个更高级别的最佳参考数据块通过树数据结构的相似性依赖被映射。该输入数据块被表示为该树数据结构的根。最佳参考块的多层可以提高压缩效率。提高压缩效率的折衷是为了对该输入数据块进行解压缩,从而对整个该树数据结构进行解压缩。
109.现在参考图4,其是描绘根据一些实施例的经由相似性依赖映射到更高级别的最佳参考数据块的段的树数据结构402的示例的示意图。输入数据块404(显示为树402的根)被划分为段404b和404c。段404b被映射到最佳参考块406,其中最佳参考块406没有被映射到更高级别。段404c被映射到最佳参考块408,其中最佳参考块408经由相似性依赖被映射到更高级别的最佳参考块410、412和414。注意,最佳参考块408被分成三个段(未示出)。最佳参考块408的每个段被映射到一个相应的更高级别的最佳参考块410,412和414。为了解压缩块408,对块410、412和414解压缩。没有来自块404和406的数据用于解压缩块408。
110.现在回到参考图3,在310处,可以根据要求,例如,与阈值和/或范围进行比较,可以对该输入数据块的段(例如,每个段)和对应的最佳参考块(例如,每个对应的最佳参考块)之间的相似度进行评估。可以基于该输入数据块的段与对应的最佳参考块之间的相似度来确定是否要应用差分压缩。
111.当段被不均等地划分时,针对每个不均等地划分的段计算相似度。可选地,迭代地执行数据块的新的不等分(例如,非均等)划分,并且针对该新的不等分划分的段迭代地计算相似度,直到针对对应的不等分划分的段,找到提供最高相似度的输入数据块的不等分的值。划分为不相等(例如,在两个段的情况下为非均等)大小的段并迭代选择新的非均等划分可以提高压缩效率。
112.在312a处,响应于如参考310所描述的确定要应用差分压缩,将差分压缩应用于该输入数据块和最佳参考块。该差分压缩过程可以压缩该输入数据的没有出现在该最佳参考块内的一部分,而出现在该最佳参考块内的该输入数据块的相同部分被(例如,使用指向相同数据的位置的指针)完全压缩。
113.当该相似度高于该阈值和/或在该范围内时,可以应用该差分压缩。该范围可以排除相同的段(例如,相似度等于100%或1)。相同的段可能会被其他过程(例如去重)压缩。例如,可以根据折衷来选择该阈值,其中,相似度的增加导致较高的压缩效率,但是减小了找到块的可能性。
114.作为312a的替代,在312b处,将标准压缩应用于该输入块。
115.如参考310所描述的,响应于确定不应用该差分压缩而应用该标准压缩。当该输入数据块的段与对应的最佳参考块之间的相似度低于该阈值和/或超出该范围时,可以应用该标准压缩。该标准压缩可以是任何可用的数据压缩过程,例如,基于lempel-ziv的,zip,lzip,rar或任何其他压缩过程。
116.或者,该标准压缩可以是标准去重,当该输入数据块的段与该对应的最佳参考块之间的相似度指示精确匹配时,应用标准去重。在这种情况下,由于在对应的最佳参考块中有输入数据块的完整副本,因此可以完全压缩输入数据块,例如,使用标准去重方法,使用
指针来指示相同数据的对应位置方法。
117.在314处,提供了被压缩的块。例如,该被压缩的块可以本地存储在存储器和/或其他数据存储设备中,和/或通过网络传输(例如,其中数据被压缩以改善通过网络的传输),和/或提供给另一个设备(例如,提供给云存储设施进行存储,和/或响应于由客户端终端提供给服务器用于压缩服务的文件,提供给客户端终端)。
118.例如,可以提供与选择用于压缩的多个输入数据块相对应的多个被压缩的块作为单个压缩文件。
119.在316处,该输入压缩数据块可以被解压缩,例如,以恢复备份数据,和/或由通过网络接收压缩数据的设备进行解压缩。
120.当如参考312a所述通过差分压缩来压缩被压缩的数据块时,通过解压缩(即,为被压缩的数据块的段选择的)最佳参考块并解压缩为该输入数据块和所选的最佳参考块计算的差分压缩来对该被压缩的数据块进行解压缩。
121.当最佳参考块被映射到相对更高级别的最佳参考块时,例如,在如本文所述的树数据结构中,通过遍历该树数据结构并根据映射的相对更高级别的最佳参考数据块解压缩被映射的最佳参考数据块来对该输入数据块进行解压缩。通过解压缩该最高级别的最佳参考块并解压缩在较低级别的最佳参考块和较高级别的最佳参考块之间计算的差分压缩来对被映射的最佳参考数据块进行解压缩。例如,回到参考图4,为了解压缩输入块404,块404的段404b和404c被解压缩。为了解压缩段404b,最佳参考块406被解压缩,并且块406与段404b之间的差分压缩被解压缩。为了解压缩段404c,最佳参考块408被解压缩,并且块408与段404c之间的差分压缩被解压缩。然而,为了解压缩最佳参考块408,映射的更高级别的最佳参考块410,412和414被解压缩,并且块410,412,414和块408之间的差分压缩被解压缩。
122.现在回到参考图3的316处,当如参考312b所述通过标准压缩对将被压缩的数据块进行压缩时,通过与该标准压缩相对应的标准解压缩对被压缩的数据块进行解压缩。
123.通过检查以下附图和详细描述,本公开的其他系统,方法,特征和优点对于本领域技术人员将是或变得显而易见的。本文旨在将所有这样的附加系统,方法,特征和优点包括在本说明书内,在本公开的范围内,并由所附权利要求书保护。
124.已经出于说明的目的给出了本公开的各种实施例的描述,但是其并不旨在是穷举的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变形对于本领域普通技术人员将是显而易见的。本文选择使用的术语是为了最好地解释实施例的原理,对市场上发现的技术的实际应用或技术上的改进,或者使本领域的其他普通技术人员能够理解这里公开的实施例。
125.可以预期的是,在本技术到期(mature)的专利的有效期内,将开发许多相关的数据块,并且术语“数据块”的范围旨在优先地包含所有此类新技术。
126.如本文所用,术语“约”是指
±
10%。
127.术语“包括”,“包含”,“包括”,“包含”,“具有”及其共轭词表示“包括但不限于”。这些术语包括术语“由...组成”和“基本上由...组成”。
128.短语“基本上由
……
组成”是指该组合物或方法可以包括另外的成分和/或步骤,但前提是该另外的成分和/或步骤没有实质上改变所要求保护的组合物或方法的基本和新颖的特征。
129.如本文所使用的,单数形式“一个”,“一种”和“该”包括复数引用,除非上下文另外明确指出。例如,术语“一种化合物”或“至少一种化合物”可以包括多种化合物,包括其混合物。
130.词语“示例性”在本文中用来表示“用作示例,实例或说明”。被描述为“示例性”的任何实施例不必被解释为比其他实施例优选或有利和/或排除来自其他实施例的特征的并入。
131.词语“可选地”在本文中用来表示“在一些实施例中提供而在其他实施例中不提供”。本公开的任何特定实施例可以包括多个“可选”特征,除非这些特征冲突。
132.在整个本技术中,可以以范围格式来呈现本公开的各种实施例。应当理解,范围格式的描述仅是为了方便和简洁,而不应被解释为对本公开范围的不灵活的限制。因此,应该将范围的描述视为已具体公开了所有可能的子范围以及该范围内的相应数值。例如,对范围从1到6的描述应视为已明确公开了子范围,例如从1到3,从1到4,从1到5,从2到4,从2到6,从3到6等,以及该范围内的单个数字,例如1、2、3、4、5和6。这与范围的广度无关。
133.每当在本文中指示数值范围时,其意在包括在指示范围内的任何引用数字(分数或整数)。短语“在第一指示数字和第二指示数字之间的范围/范围”和从第一指示数字“到”第二指示数字的“范围/范围”在本文中可互换使用,并且意在包括第一和第二指示数字以及它们之间的所有小数和整数。
134.应当领会,为清楚起见在单独的实施例的上下文中描述的本公开的某些特征也可以在单个实施例中组合提供。相反,为简洁起见,在单个实施例的上下文中描述的本公开的各种特征也可以单独地或以任何合适的子组合或如在本公开的任何其他所述的实施例中合适地提供。在各种实施例的上下文中描述的某些特征不应被认为是那些实施例的必要特征,除非该实施例没有那些要素就不起作用。
135.本说明书中提及的所有出版物,专利和专利申请都通过引用整体并入本文,其程度与每个单独的出版物,专利或专利申请被具体地和单独地指示通过引用并入本文的程度相同。另外,在本技术中对任何参考文献的引用或标识均不应解释为承认该参考文献可用作本公开的现有技术。就使用章节标题的程度而言,不应将其解释为必要的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献