CN101842785A - 协同压缩 - Google Patents
协同压缩 Download PDFInfo
- Publication number
- CN101842785A CN101842785A CN200880114543A CN200880114543A CN101842785A CN 101842785 A CN101842785 A CN 101842785A CN 200880114543 A CN200880114543 A CN 200880114543A CN 200880114543 A CN200880114543 A CN 200880114543A CN 101842785 A CN101842785 A CN 101842785A
- Authority
- CN
- China
- Prior art keywords
- file
- data element
- storehouse
- value
- data
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Computer And Data Communications (AREA)
Abstract
特别提供用于协同压缩的系统、方法和技术,其中获得(41)文件集(61-66),其中每个文件(61-66)包括一个有序数据元集(56-58)(例如位位置),每个数据元(56-58)在不同文件(61-66)中具有不同值,但这个有序数据元集(56-58)在所述多个文件(61-66)之间具有共同性。基于文件集(61-66)之间数据元(56-58)的值的统计将数据元(56-58)分割(44)成已标识的仓集,且基于数据元(56-58)的仓压缩(47)接受的文件(131)。
Description
发明领域
本发明涉及用于压缩文件的系统、方法和技术,并适用于例如压缩多个相似文件的问题。
背景
考虑到无损地压缩相似文件集的问题。这种问题一般由于海量数据聚集在文件存档、图像库、基于盘的备份工具以及照片集中所引起。多数传统压缩技术将每个文件作为独立实体处理,并利用文件中的冗余来减少存储文件所需的空间。然而,这种方法在未使用的文件之间留下了冗余。
通过对将一个文件转换成另一文件的修改进行编码而相对于另一文件压缩一个文件的问题已在数据压缩文献中受到大量的关注。这个问题也被称为“差分压缩”。然而,在现有技术中尚未提出使用这种技术并将其延伸至压缩大文件集,并且这种延伸是不平凡的。可能由于这些困难,用于压缩多个相似文件的传统技术已采用其它方法。
例如,一种这样的方法是基于字符串匹配的。落在这个范畴内的多数方案(例如M.Factor和D.Sheinwald的“存在共享数据时的压缩(Compression inthe presence of shared data)”,信息科学135:29--41,2001)可视为将全部要压缩的文件串联成一个巨型字符串,并使用LZ 77压缩法压缩该字符串的方案变例。如果缓存大小是固定的,则通过这些技术获得的压缩量一般很低;另一方面,如果缓存大小不固定,则这种技术一般变得计算很复杂,并引发涉及存储器溢出的问题。
通常称为“组块(chunking)”的又一方法将文件解析成长度可变的短语,并通过存储每个短语的单实例以及用于查找该短语的散列(码字)进行压缩(例如K.Eshghi、M.Lillibridge、L. Wilcock、G.Belrose和R.Hawkes的“巨量存储:提供有效增量上传和利用渲染服务的描述(Jumbo Store:Providingefficient incremental upload and versioning for a utility rendering service)文件和存储技术第五届USENIX会议议程(FAST′07),pp.123-138,San Jose,加利福尼亚,2007年2月))。这种方法一般比字符串匹配更快。然而,如果频繁地观察到新组块,则需要频繁的盘存取。此外,即使是文件相似性的简单模型,通过这类方法获得的压缩比也可能不是最理想的。
发明概述
本发明通过尤其基于文件集之间数据元的值的统计将文件间的公共数据分割成经标识的仓(bin)集,并基于数据元经标识的仓压缩所接受文件来解决这个问题。
因此,本发明的一个方面针对协同压缩,其中获得一文件集,其单独一个文件包括一个有序数据元集(例如位位置),而单独一个数据元在不同文件中具有不同的值,但具有文件之间共同的一个有序数据元集。基于文件集之间的数据元值的统计将数据元分割成经标识的多个仓集,并基于数据元的仓压缩所接受的文件。
借助前面的配置,它经常可有效地压缩相似文件的整个集。在某些代表性实施例中,仓用于构造源文件估计,源文件估计则用来有区别地压缩各个文件。其它实施例基于仓分割产生数据值流,并随后单独地压缩这些流而无需源文件估计的介入。
在另一方面,本发明针对协同压缩,其中获得一文件集,其单独一个文件包括有序数据元集,而单独一个数据元在不同文件中具有不同的值,但具有文件之间共同的一个有序数据元集。基于文件集之间的数据元值的统计来构造源文件估计,并相对于源文件估计来压缩所接受的文件。
意图是使前面的概述仅提供对本发明某些方面的简述。可通过参见权利要求书以及结合附图对较佳实施例的下列详细说明来获得本发明更完整的理解。
附图简述
在下面的公开中,参照附图对本发明进行说明。然而应当理解,附图仅描绘了本发明某些代表性和/或示例性实施例和特征,并不旨在以任何方式限制本发明的范围。下面是对每张附图的详细说明。
图1是示出已从单个源文件获得的多个相似文件的理念的方框图。
图2是示出根据本发明某些较佳实施例的文件压缩的一般方法的流程图。
图3示出包括数据元共同集的文件集。
图4是示出使用源文件估计的压缩方法的总览的流程图。
图5是示出基于源文件估计对文件进行压缩和解压缩的系统的方框图。
图6是示出构造源文件估计的方法的流程图。
图7示出两位字符串上下文的序列的De Bruijn图表。
图8是示出压缩文件而不构造源文件估计的第一方法的流程图。
图9示出将源文件分割成数据流以供单独压缩。
图10是示出压缩文件而不构造源文件估计的第二方法的流程图。
较佳实施例说明
本发明尤其涉及利于多个相似文件压缩的技术。在许多情形下,如图1所示,已随着同一底层源文件15的修改或推导而产生认为要设法压缩的文件11-14。即,从源文件15开始,可通过对源文件15作出适当修改而构造产生每个单独文件11-14,其中这些修正一般对于各个文件11-14在质和量方面都是不同的。
事实上,假设文件11-14彼此充分相似,即便尚未从共同源文件15获取文件11-14中的一些或全部,这种概念经常也是可能的。例如,这种相似性可能由于以相似方式产生文件11-14,比如各自表示为位图图像的多张不同照片,从大略同一优越位置拍摄艾菲尔铁塔,但使用不同相机和/或相机设定和/或在某些不同的采光条件下。
如下文更详细说明的那样,本发明某些实施例明确地试图构造源文件估计,并随后相对于该源文件来压缩一个或多个文件。其它实施例不依赖于这种构造。在任何情况下,本发明的较佳实施例通过跨文件集分割共同数据元(例如位位置),并要么直接要么间接地使用这些分割,以利于压缩的方式来组织和/或处理文件数据。
图2是示出根据本发明某些较佳实施例用于压缩文件的进程40的流程图。以预定方式较佳地执行进程40中每个步骤,以通过执行机器可读进程步骤的计算机处理器或以本文所述的其它方式实现整个进程40。
一开始,在步骤41中输入文件集(例如包括m个不同文件)。较佳地,已知这些文件是彼此相似的,要么是收集它们的方式相同(例如进展中不同版本的文档),要么由于已从较大文件集中针对相似性对它们进行了筛选。
在步骤42中执行任何要求的预处理,其较佳目标是确保每个文件中的数据元集对应于每个其它文件中的数据元集。要注意,在一些情形下,可不执行这样的预处理(例如高度构造全部文件,使其具有以确切相同的顺序排列的一组共同字段)。在一种这样的特例中,所获得的文件是对机构的计算机网络上的全部个人计算机(PC)的Microsoft WindowsTM登记。这里可以预见,不仅字段相同,而且这些字段中的数据值一般具有明显的相似性,尤其是机构在其全部或大量计算机之间具有强制的共同设定的情况下。
在其它情形下,需要一些量的预处理。例如,在可能最普遍的情形下,数据元只是文件中位位置(例如,连续排列并从1-n编号)。在这种情形下,可以零来填充长度比n位更短的任何文件以使集中的全部文件具有相等的长度(即n位长)。在某些实施例中,这种填充均等地施加于最初短于n位的每个文件的开头或末尾。然而在其它实施例中,这种填充施加于文件中间,例如在文件具有自然分割(例如PDF或PowerPoint文档文件中的页)或它们作为预处理部分进行分割(例如基于已标识的相似性标志)的情形下;在这些情形中,可在必要时采用填充以使各分段的长度相等。
就已在文件上执行任何预处理而言,较佳地关联于文件存储这种处理的细节以供之后的解压缩逆过程。
在任意情况下,所得到的文件集较佳地表现为图3所示的形式,其中每个行对应于不同文件(例如文件61-66),而每个列对应于不同数据元(例如数据元56-58)。即,每个文件较佳地具有以完全相同顺序排列的相同的数据元集,尽管这些数据元的值在文件之间多少有些差异。更佳地,没有文件(在相同位置)具有其它每个文件中不存在的任何数据元,以使用文件指定和数据元指定来唯一地指定文件集中的每个值。尽管图3仅示出少数文件和数据元,然而这只是为了便于说明;在实践中,经常存在数十、数百、甚至更多文件以及数百、数千、数万、甚至更多数据元。另外,尽管根据文件类型表示为一维数据元序列,然而每个文件也可以较佳地表示为二维甚至更多维的数据元阵列。每个数据元在本文中表示为具有某一“值”,例如根据数据元的特性,所述值可以是二进制值(其中数据元对应于不同位位置)、整数、实数、次值向量或任意其它形式的值。
返回到图2,在步骤44中,基于跨文件集的数据元值统计将数据元分割成仓。例如,在每个数据元对应于单个位位置的一个实施例中,基于在该位位置具有特定值(例如值“1”)的文件分数将每个位位置赋予一个仓。更具体地说,假设存在八个仓,在本例中,如果在该位位置具有值“1”的文件分数小于0.125则将位位置分配给第一仓,如果分数大于或等于0.125但小于0.25则将位位置分配给第二仓,如果分数大于或等于0.25但小于0.375则将位位置分配给第三仓,依此类推。要注意,在本实施例中,跨文件(例如跨全部文件)的单个统计度量(例如平均值或中间值的代表值)用于将数据元分配给某一仓,并且该单个统计度量只是基于跨文件的数据元本身的值(而不参照任意其它数据元的值)。
在替代实施例中,仓分配是上下文敏感的,例如,特定数据元的分配基于紧邻数据元的值以及特定数据元本身的值。例如,在一个特定实施例中,把一组位位置{1,2,...,n}分割成仓如下。对于每个位位置1≤j≤n以及每个k位字符串c∈{0,1}k,由nj(c)作出判断,当其上下文(本实施例中为k之前几个位)等于c时,文件分数中“1”出现在位位置j处。随后将位位置的组{1,2,…,n}分割成最多l个仓,B1,B2,...,Bl,以对于全部1≤j1≠j2≤n,只有对于全部c∈{0,1}k,j1和j2才落在同一仓内,其中l是建立仓的最大数的输入整数(例如在2-32之间),且设置T较佳地等于A是粗略地对应于最大簇宽度(例如,在2-3的近似范围内)的输入实数。在这方面,要注意,本方法可理解为一种形式的数据元上下文敏感分簇。在本实施例中,跨全部上下文c的任意两个位位置的全部分数nj(c)必须落在规定的最大值距离中。如果不是,在本实施例的某些实现中,(例如通过减去k)调整一个或多个参数,直到满足该条件为止。另外,要注意,在替代实施例中,可使用其它上下文敏感的分簇标准,例如通过将较小的权重分配给较少统计意义的上下文。
在向特定仓分配数据元(这发生在多个文件之间)时,前面的实施例利用单个统计度量。然而在其它实施例中,可使用这些度量和/或任意其它要求度量的组合来作出这类分配。
在任何情况下,一旦该步骤44完成,则已将数据元分割成仓。因此,例如参照图3,数据元56、57(在每个文件61-66中各自具有一个值)被分配给一个仓,且数据元58(在每个文件61-66中也具有一个值)被分配给不同的仓。在较佳实施例中,较佳地基于一些分簇标准将每个数据元分配给其中一个仓。要注意,尽管在本文中称某些分割为“仓”,然而这种称呼并非限定性的;事实上,如下文中更详细说明的那样,尤其在引入不同数据值的情况下,这类分割有时更好地表现为“流”。
再次返回到图2,在步骤45中,执行基于文件专门特性的任何要求的分割。因此,例如,可进一步基于一种或多种文件专门标准(例如文件中的上下文)将与步骤44中标识的单独仓中的数据元对应的值分割成子仓(或子数据流)。更具体地说,在一具体实施例中,基于紧邻三个在先位的值将每个仓中的位值分割成八个子仓。因此,将该实施例应用于图3所示例子的话,每个位的位值(61,56),(62,56),(63,56),(64,56),(65,56),(66,56),(61,57),(62,57),(63,57),(64,57),(65,57),(66,57)……——其中(x,y)代表文件x中位位置y处的位——如果文件中之前三个值为000,则被分配给子仓0,如果文件中之前三个值为001,则被分配给子仓1,如果文件中之前三个值为010,则被分配给子仓2,依此类推。因此,根据这种定义,应当指定为(61,56)的位70被分配给子仓5,因为其文件中的之前三个位71-73的值分别为101。同时,数据元58的值较佳地分成独立子流,因为数据元58与数据元56、57分属不同的仓。
尽管图示和讨论了步骤45为发生在步骤44之后,然而要理解,这种顺序可颠倒和/或以任意合需的顺序执行。例如,在一替代实施例中,首先基于文件专门考量或特性分割数据元和/或值,随后基于跨文件的统计或其它考量进行子分割,然后进一步基于其它文件专门考量或特性进行子分割。
最后,在步骤47中,基于已作出的分割压缩一个或多个文件。如下文中更完整的说明的那样,本发明一般考虑两个范畴的实施例。在第一范畴中,用所标识的分割来构造源文件估计(例如图1所示的源文件15的估计),然后用该源文件估计作为差分地压缩这些文件的基准。在第二范畴中,视分割(或子分割)为数据值的流(或子流),并对其进行独立压缩而不产生任何种类的源文件估计。
一般来说,在本发明的较佳实施例中,以这种方式压缩最初在步骤41中获得的集中的全部文件(例如用于确定分割的全部文件)。然而在一些情形中,只压缩这些文件的子集,和/或在一些情形下,基于在步骤44和/或步骤45获得的分割信息压缩附加文件(例如,不用于确定分割的文件)。后一种情形尤为有用,例如,在期望新接受的数据具有与步骤44和/或步骤45中使用的文件相似的统计特征的情形下。
现在更详细地描述本发明若干更具体的实施例。下面实施例的较佳实现基本遵循上文描述的方法40。然而,如下面更详细说明的那样,执行方法40各个步骤的方式在下面实施例的不同实现之间是可变的。在下文描述的其它实现/实施例中,可根据需要延伸、修改和/或省去上面结合方法40描述的特征。
图4中描绘了根据本发明较佳实施例的使用源文件估计压缩文件的方法100。以预定方式较佳地执行图4所示的每个步骤,以由执行机器可读进程步骤的计算机处理器或以本文描述的任意其它方式来实现整个进程100。
简单地说,参见图4,在步骤101中获得文件集,在步骤102中,基于这些文件构造源文件估计,并随后在步骤103中,基于源文件来压缩一个或多个文件。有关步骤101的考量与有关如上所述步骤41、42的考量相同。有关压缩步骤103的考量与如上所述步骤47的考量相同,(一旦已构造源文件),所采用的实际压缩技术是相对于另一个文件来差分地压缩一个文件的任意可用(例如传统)技术(例如P.Subrahmanya和T.Berger,“渐进传输中差分层编码的滑窗Lempel-Ziv算法(A sliding-window Lempel-Zivalgorithm for differential layer encoding in progressive transmission)”,IEEE信息理论讨论会的议程,266页,1995)。超出上述考量并出现在本公开中的本实施例多数重要方面有关于步骤102中的源文件估计的构造;下面详细描述该步骤。
然而,一开始,图5示出本实施例较佳地工作的背景。将在步骤101中最早获得的文件集131输入到源文件估计器132,该源文件估计器132较佳地执行进程170(下文所述)以产生假定的底层源文件的估计135。从概念上可将源文件估计135归结为一种输入文件131集的质心。在较佳实施例中,以最终在压缩模块137中执行的、考虑差分压缩类型的一种方式来构造源文件估计135。将文件131和源文件估计135两者输入到源知悉的压缩器137,压缩器137较佳地,例如,使用针对该目的的任意可用技术(例如相对于另一文件较佳无损地差分压缩一个文件的任意传统技术)相对于源文件估计135独立地压缩每个输入文件131(以及未示出的任意附加文件,当以与文件131相似的方式产生时,已经较佳地标识这些附加文件)。之后,当需要检索任何特定文件时,就将其压缩版本与源文件估计135一起输入到源知悉的解压缩器140,解压缩器140随后执行相应的解压缩。这种解压缩较佳为模块137中使用的压缩技术的直接逆操作。
文件131较佳地享有共同的数据元集(要么通过其特性要么作为步骤101中执行的任意预处理的结果)。因此,文件131较佳地表现为图3中的文件61-66。更佳地,每个数据元较佳地为不同的位位置,因此认为每个文件为有序位位置的序列。本实施例的方法尤为适用于这样一种背景:即相对于一种模型,在该模型中,存在真实或假定的源文件15,以及假定已通过开始于源文件15并改变各位值(或其它数据元的值)而产生输入文件131(或61-66),尤其是这种位翻转是取决于背景的。
现在参照图6描述用于构造源文件估计135的代表方法170。以预定方式较佳地执行方法170的每个步骤,以可通过执行机器可读进程步骤的计算机处理器或本文描述的任意其它方式来实现整个进程170。
起初,在步骤171中,将数据元分割成仓。为了简化本论述,假设每个数据元是不同的位位置。然而要理解,本例仅旨在使所表现的理念更具体些,并且通常本文中对“位位置”的任何引用可归结为任意其它类型的数据元。
步骤171中执行的分割可采用上文中结合图1的步骤44、45描述的任意技术。然而对本实施例而言,较佳地单独或主要基于跨文件集131的数据元值的统计来实现分割。因此在一种较佳实现中,例如,使用上面结合步骤44描述的任意技术,基于跨文件集131的上下文敏感代表值来将数据元分割成2k个仓。在本例中,数据元是位位置(它们各自具有0或1的值),可等同地宣告这样的分割标准为位位置具有值1(或,等效地0)的文件的上下文敏感分数。如上所述,可使用任意合需的分簇技术基于该上下文敏感分数将数据元分簇成2k个不同的仓。
在步骤172中,在2k个仓和要构造的源文件估计135中的2k个相应最初上下文(例如,在本例中为k位字符串)之间标识出一个或多个映射(较佳为一一对应映射)。也就是说,目的是将每个数据元映射到源文件估计135中的单个上下文,其中每个仓中的全部数据元被映射到源文件估计135中的同一上下文。
最终源文件估计中的每个位位置fi具有由fi自身构成的上下文,可能一定数量的位在fi之前而一定数量的位在fi之后。尽管该“上下文窗”对于不同i可以是不同的(就大小和/或相对于fi的位置而言),本论述假设所有这些上下文窗是相同的。即,假设每个这样的上下文窗在fi左边具有相同数量的位l并在fi右边具有相同数量的位r,以使源文件估计135中的第i个位的上下文为fi-1……fi……fi+r,其中r+l+1=k,这是表述上下文所需的位总数。
每个映射f:{1,2,...2k}→{0,1}k,从一个仓集至{0,1}k,定义了上下文的序列。为此假设B:{l+1,l+2,...,n-r}→{1,2,...,2k}代表位位置的分割。那么,给出上下文序列为:
f(B(l+1)),f((B(l+2)),...,f((B(n-r)).2k个仓存在2k!种对于不同k位字符串的可能的一一对应映射。在较佳实施例中,在可能的映射中进行选择的唯一或至少主要的考量为:哪些可能的映射导致上下文序列最接近有效的上下文序列?即,在本例中,选定的映射将某一位位置序列转换成上下文序列。然而在许多情形下,标识出的上下文序列是无效的,即无法出现在源文件中。
在本论述中,c1+1c1+2……cn-r代表上下文序列,其中每个ci是k位字符串。这种上下文序列是有效的,或换句话说,只有在对全部i来说ci的最末k-1个位等于ci+1的最先k-1个位的情形下,代表连续位的上下文序列。可由下文描述的图表Gk=(Vk,Ek)上的全部有效路径集来表示上下文有效序列集。顶点集Vk是全部k位字符串的集。在且仅在由顶点α表征的上下文的最末k-1个位等于由b表示的上下文的最先k-1个位的情形下,从顶点a至顶点b才具有直达边。该图表被称为De Bruijn图(参见Van Lint和Wilson,“组合数学教程(A course in combinatorics)”,剑桥大学期刊)。每个有效上下文序列对应于图表上的有效路径。在本论述中,假设Lk代表在长度n字符串中k位上下文的全部有效序列的集。
图7示出De Bruijn图表G2。如图所示,对应于顶点201、202、204、202和203的上下文序列00、01、10、01、11各自为上下文的有效序列,而各自对应于顶点201、202、204、203的上下文序列00、01、10、11不是上下文的有效序列,因为从顶点204过渡到顶点203是不允许的。
在该背景下,可观察到由于不管是分割还是映射都无法保证正确,因此由任何所选映射标识出的上下文的最初序列经常是无效的。为了解决这个问题,一旦选定了映射,就较佳地对上下文序列进行修改,以产生有效的上下文序列。因此,一种选择最佳映射的方法是通过在全部可能的2k!个映射或这些映射的所有可能修改中进行彻底搜索来组合这两个步骤,从而寻找导致最少,或更具体地说,最低成本修改的组合。遗憾的是,这种方法的计算复杂度为2k!2kn,这仅适用于非常小的k值。
因此,较佳实施例将判断分成两个独立步骤。在当前步骤172中,较佳地通过基于与有效上下文序列的匹配度从可能的映射中标识映射的一个小集而标识单个映射(或在某些实施例中标识可能映射的一个小集)。更佳地,执行这种标识如下。
对于每对仓u,v∈{1,2,...2k},计算权重w(u,v)=|i:B(i)=u,B(i+1)=v |,其中i是仓u中的次数,而i+1是仓v中的次数。然后,对于每个映射f,定义失配集为:,即所有对(u,v)的集,以使其映射(f(u),f(v))不在De Bruijn图表Gk的边集Ek中。那么,定义f的失配损失为即失配总数的计数。因此选择映射f为:即具有最小失配损失的映射,再次,在本技术中,简单地是失配次数的未加权计数。然而在替代实施例中,可定义失配损失为失配的任意其它函数。可通过彻底搜索实现前面的最小化。这种操作的时间复杂度为O(2k!),这可通过利用某些对称自变量而略为减小。注意,时间复杂度不取决于n(数据元的数目)或m(被压缩的文件数目)。因此,如果k是loglogn的量级,则相比其余压缩技术而言计算是可忽略的。
在某些实施例中,仅在该步骤172中选择具有绝对最小失配损失的映射。然而要注意,这种映射不能保证得出最有效的上下文序列。因此在其它实施例中,在步骤172中选择具有最低失配损失的小映射集(例如固定数量的映射,或如果出现具有最低失配损失的自然映射簇,则选择该簇中的全部映射)。
在步骤174,对步骤172中选择的下一个(或如果在方法170的整个执行中这是第一次重复则选择第一个)映射进行评估。较佳地,通过对该映射标识“最接近”有效上下文序列并计算“最接近”序列和最初上下文序列(即由映射直接产生的上下文序列)之间距离的测量值来执行该步骤。
在较佳实施例中,确定具体映射的“最接近”有效上下文序列为:
其中1(·)是指示函数,即如果其自变量为真则等于1,否则为0。换句话说,所标识的最接近的有效上下文序列是与f(B(l+1)),f((B(l+2)),...,f((B(n-r))区别最小的一个。可通过与维特比算法(例如G.D.Forney.,IEEE61(3)学报:268-278,1973年3月的“维特比算法The Viterbi Algorithm”)相似的标准动态编程算法来实现最小值搜索。这种算法的时间复杂度为O(2kn)。要注意,本实施例使用对上下文序列中每个差赋予相等权重的特定成本函数。在代替实施例中,也可使用替代的任意其它成本函数,例如对需要改变以导致有效序列的最小数目的位进行计数。
在步骤175中,判断是否已对步骤172中标识的全部映射进行了评估。如果不是,则进程返回到步骤174以评估下一个。如果是,则进程前进至步骤177。
在步骤177中,标识最佳映射。较佳地,如果在步骤172中标识一个以上的映射,则选择将其最初上下文序列转化成有效上下文序列所产生的成本为最低的一个映射(例如,使用步骤174中使用的同一成本函数)。
最后,在步骤179中,使用为步骤177中标识的映射而在步骤174中选择的有效上下文序列来产生源文件估计135。可以直接方式实现该步骤,例如,其第一上下文定义源文件估计135的最先k个位,而每个后继上下文的最末位定义源文件估计135的下一位。
前面的方法明确地确定了源文件估计135,并随后将源文件估计135用作压缩多个其它文件的基准。根据本发明某些理念的其它进程提供压缩而不需要明确地确定源文件估计。
图8示出了一个这样的进程230。较佳地以预定方式执行方法230的每个步骤,以由执行机器可读进程步骤的计算机处理器执行整个进程230,或以本文所述任意其它方式执行。
一开始,在步骤231中获得一文件集。该步骤与上面结合图4描述的步骤101相似,并在这里具有相同的考量。在该技术中,所获得的文件较佳包含共同的数据元集。
在步骤232中,将那些数据元分割成不同的仓。该步骤类似于上文结合图6描述的步骤171,并且在这里一般采用相同集的考量。然而在步骤171中,将数据元较佳地分割成2k个仓,而在步骤232中,不一定优选所产生的仓的数目为2的幂。
在步骤234中,一个或多个文件中的数据值是基于(较佳地专门基于)本地数据值本身分割的。在一个示例中,特定文件基于位的上下文——例如文件中最先k个位——分割成若干个流。更具体地,对于该例,假设k=3。然后,文件中由000开头的所有位形成一个流,由001开头的所有位形成另一个流,依此类推。
在代替实施例中,使用其它本地标准(作为代替或附加),例如将它们本身赋予不同流的特定数据值,尤其是当数据元具有更宽范围值时。在这种情形下,例如,将落在某个范围内的数据值引向某些流。
在任何情况下,结果如图9所示。这里,已评估整个文件的数据值260的序列(例如包含数据值261和262),并分割成若干流,在本实施例中称其为“主流”。例如,根据该主流270的规定标准(例如上文所述的任何标准),通过从原始数据值260序列取的某些数据值(例如数据值271和272)来产生主流270。同样,较佳地基于分割标准将原始序列260中的每个值引向预定义流中的一个。
在步骤235中,基于步骤232中标识的仓分割将每个主流进一步分割成若干子流。例如,将主流中与属于同一仓的数据元对应的全部数据值一同编组在一个子流中。因此,再次参见图9,(例如,单纯地基于它们相关的数据元)将某些值从流262中取出以创建子流264。更具体地说,与上文描述的同一示例相似,从主流270中取出数据值281和282以仅创建子流280,由于它们对应于原始数据文件266中的第6和第39个位位置,而且已在步骤232中将这些位位置赋予这些相同的仓。
最后在步骤237中,分别压缩各个流。较佳地,经压缩的流是步骤235中产生的子流。然而在某些实施例中,压缩步骤234中产生的主流而不产生任何子分割(在这种情形下,可省去步骤232和235)。在任何情况下,可使用任意可用(较佳为无损的)压缩技术来压缩每个相关流,例如Lempel-Ziv算法(LZ’77,LZ’78)或Krichevsky-Trofimov概率分布随后执行算术编码(例如R.Krichevsky和V.Trofimov,“通用编码的性能(The performance ofuniversal encoding)”,关于信息理论的IEEE学报,1981)。
可以前述方式压缩各文件(例如步骤231中获得的每个文件)生成的流。代替地,例如,可通过将其相应流级联并随后单独压缩这些合成流而将多个文件压缩在一起。
现在结合附图10讨论用于压缩文件而不构造源文件估计中间步骤的某种程度不同的方法300。较佳地以预定方式执行每个所示步骤,以通过执行机器可读进程步骤的计算机处理器或以本文所述任意其它方式执行整个进程300。
最初地,在步骤301中获得文件集。该步骤与上面结合图4描述的步骤101相似,并且在这里采用相同的考量。在该技术中,所获得的文件较佳地包含相同数据元集。
在步骤302中,将这些数据元分割成不同的仓。该步骤类似于上面结合图8描述的步骤232,并且在这里通常采用相同的考量。然而在本实施例中,视各个仓内的数据元的值为独立的主数据流(例如图9所示的主流270)。
在步骤304中,较佳地基于本地上下文(例如每个数据值的上下文)将这些主流分割成子流。更具体地,对于给定的文件,将每个仓Bj(1≤j≤l)中的数据值分割成2p个子流,以使子流中的全部数据值在中具有相同的上下文,例如给定子流中的全部数据值的开头p个位是相似的。
最后在步骤305中,单独地压缩各流。较佳地,压缩的流是步骤304中产生的子流。然而在某些实施例中,压缩步骤302中产生的主流而没有任何子分割(在这种情形下可省去步骤304)。在任何情况下,可使用例如Krichevsky-Trofimov概率分布随后执行算术编码的任意可用(较佳无损的)压缩技术来压缩每个相关流。
可以这种方式压缩对各文件产生的流(例如步骤301中获得的每个文件)。代替地,例如,可通过级联其相应流并随后单独地压缩这些合成流而将多个文件压缩在一起。
要注意,前面的讨论主要侧重于压缩技术。通常可基于实际采用的压缩种类以直接方式实现解压。即,本发明一般侧重于使用可用(例如传统的)压缩算法压缩相似文件集的某一预处理。因此,解压步骤一般是所选压缩算法的直接逆操作。
还要注意,本技术服从两种不同的设定——分批设定和连续设定。在分批压缩设定中,压缩器同时访问全部文件。这种技术产生这些文件之间的适宜统计信息(例如只有仓分割或使用这些分割构造的源文件估计),然后基于该信息压缩每个文件。在这种设定中,为了对特定文件解压,只需要适宜的统计信息(例如只有仓分割或源文件估计)和相关的文件。
在连续压缩设定中,文件按顺序到达要求联机压缩文件的压缩器。因此,统计信息随着每个新来文件的检查而改变。在检查i个文件后,相对于源文件估计压缩第i个文件。另一方面,如上所述,如果假设新文件以与之前文件相似的方式产生或统计上类似于这些之前文件,则可对其进行压缩而无需修改这些统计信息。
在上述某些实施例中,数据(一般跨多个文件)被分割成仓、子仓、流和/或子流,随后在某些方面以不同的方式对它们进行处理(例如单独对每一个进行压缩,即使对每个都采用同一压缩方法)。除非清楚和明确表示相反情况,否则这些称谓不旨在暗示单独存储如此不同的仓、子仓、流和/或子流的任意必需条件。同样,可通过考虑各数据值所属的单独仓、子仓、流和/或子流而一起处理不同仓、子仓、流和/或子流。
还要注意,在没有明确地构造源文件估计的情形下,较佳地压缩源文件估计135或分割成仓、子仓、流和/或子流的信息(例如使用传统技术),并存储以供将来在需要时用于对文件进行解压。然而,也可以未压缩形式存储任一类型的信息。
系统环境
总的来说,除非明确指出外,可使用一个或多个可编程通用计算设备来实现本文描述的所有系统、方法和技术。这类设备典型地包括,例如,通过公共总线彼此互连的下列组件中的至少一些:一个或多个中央处理单元(CPU)、只读存储器(ROM)、随机存取存储器(RAM)、与其它设备接口的输入/输出软件和电路(比如使用如串行端口、并行端口、USB连接或火线连接的硬线连接,或使用例如蓝牙或802.11协议的无线协议);例如使用硬线连接(例如以太网卡)连接于一个或多个网络的软件和电路或无线协议(例如码分多址(CDMA)、全球移动通信系统(GSM)、蓝牙、802.11协议或任意其它基于蜂窝或不基于蜂窝的系统),这些网络在本发明的许多实施例中连接于因特网或任意其它网络;显示器(例如阴极射线管显示器、液晶显示器、有机光发射显示器、聚合物光发射显示器或任意其它薄膜显示器);其它输出设备(例如一个或多个扬声器、耳机组和打印机);一个或多个输入设备(例如鼠标、触摸垫、写字板、触敏显示器或其它定点设备、键盘、小键盘、话筒和扫描仪);海量存储单元(例如硬盘驱动器)、实时时钟;可移动存储读/写设备(例如用于对RAM、磁盘、磁带、磁光盘、光盘等进行读出和写入)以及调制解调器(例如用于发送传真或经由拨号连接连接于因特网或任意其它计算机网络)。在操作中,在一定程度上由例如通用计算机执行的、实现上述方法和功能的进程步骤,一般最初存储在海量存储器(例如硬盘)中,下载至RAM中,并由RAM外的CPU执行。然而,在一些情形下,进程步骤最初存储在RAM或ROM中。
可从多个商家获得用于实现本发明的合用设备。在各实施例中,根据任务的大小和复杂性使用不同类型的设备。合用设备包括大型计算机、多处理器计算机、工作站、个人计算机以及例如PDA、无线电话的更小型计算机或任意其它设施或设备,不管是独立的、硬线连接于网络的还是无线连接于网络的。
另外,尽管已描述了通用可编程设备,然而在其它实施例中可使用一个或多个专用处理器或计算机作为代替(或附加)。总的来说,要注意,除了明确表示相反情形,可以软件、硬件、固件或其任意组合来实现上文中任何功能描述,基于已知工程折衷来选择其特定实施。更具体地说,在以固定、预定或逻辑方式实现上述功能时,可通过编程(例如,软件或固件)、逻辑器件(硬件)的合理配置或两者组合来达成,如本领域内技术人员清楚理解的那样。
应当理解,本发明还涉及机器可读介质,其上存储用于实现本发明的方法和功能的程序指令。例如,该介质包括磁盘、磁带、例如CD ROM和DVD ROM的光可读介质或例如PCMCIA卡的半导体存储器、各种类型的存储卡、USB存储器设备等。在每种情形下,介质可表现为便携物品,例如迷你盘驱动器或小盘片、软盘、卡带、插入式片盒、卡、棒等,或表现为相对较大或不可移动的物品,例如设置在计算机或其它设备中的硬盘驱动器、ROM或RAM。
前面说明主要侧重于电子计算机和设备。然而要理解,也可使用其它计算设备或其它类型的设备,例如利用电子、光学、生物和化学处理的任意组合的设备。
附加考量
上文中描述了本发明的若干不同实施例,其中每个实施例描述为包含某些特征。然而,结合任何一个单独实施例的讨论描述的特征不局限于这个实施例,而是可包含和/或配置在任意其它实施例的各种组合中,如本领域内技术人员所能理解的那样。
同样,在上面说明中,有时将功能归结为某一特定模块或组件。然而,一般可根据需要在任意不同的模块或组件中再分配功能,在一些情形下,完全省去特定组件或模块和/或需要追加新组件或模块。参照本发明的特定实施例,正如本领域内技术人员所能理解的那样,根据已知的工程折衷较佳地作出功能的准确分配。
因此,尽管已参照其示例性实施例和附图对本发明进行了详细说明,然而本领域内技术人员很清楚,可不脱离本发明精神和范围地达成本发明的各种调整和修改。因此,本发明不局限于附图和上文所示的准确实施例。相反,旨在使不脱离本发明精神的所有这些变化均落在如所附权利要求书完全地限定的范围内。
Claims (10)
1.一种协同压缩的方法,包括:
获得(41)文件集(61-66),其中每个文件(61-66)包括有序数据元集(56-58),每个数据元(56-58)在不同文件(61-66)中具有不同值,但所述有序数据元集(56-58)在所述文件(61-66)之间具有共同性;
基于对所述数据元(56-58)在所述文件集(61-66)之间的值的统计将所述数据元(56-58)分割(44)成标识的仓集;以及
基于所述数据元(56-58)的仓来压缩(47)接收的文件(131)。
2.如权利要求1所述的方法,其特征在于,所述压缩步骤(47)包括构造源文件估计(135)并且相对于所述源文件估计(135)来压缩(137)接收的文件(131)。
3.如权利要求2所述的方法,其特征在于,所述源文件估计(135)是通过将标识的仓集映射到源文件估计(135)中的初始上下文集(172)并随后基于所述映射产生有效的上下文序列(174)而构造的。
4.如权利要求3所述的方法,其特征在于,所述映射是通过基于对有效上下文序列的匹配度来评估多个可能映射而标识的(177)。
5.如权利要求2所述的方法,其特征在于,所述源文件估计(135)是主要基于标识所述源文件估计(135)中与所标识的仓集对应的有效上下文序列(174)的准则来构造的。
6.如权利要求1所述的方法,其特征在于,所述压缩步骤(47)包括基于所述仓产生数据值流并随后分别压缩所述流(237)。
7.如权利要求6所述的方法,其特征在于,所述流是通过执行各文件(234)中的数据值的本地分割(234)并随后基于所述仓进一步执行分割(235)来产生的。
8.如权利要求6所述的方法,其特征在于,所述流通过基于本地上下文分割所述仓中的数据值而产生的(304)。
9.如权利要求1所述的方法,其特征在于,所述数据元(56-58)是所述文件中不同的位位置,以致单个数据元(56)表示所述文件(61-66)之间共同的位位置。
10.如权利要求1所述的方法,其特征在于,数据元(56)是基于该数据元在所述集中的全部文件(61-66)之间的代表值而被赋予所述仓中的一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/930,982 | 2007-10-31 | ||
US11/930,982 US20090112900A1 (en) | 2007-10-31 | 2007-10-31 | Collaborative Compression |
PCT/US2008/081872 WO2009059060A2 (en) | 2007-10-31 | 2008-10-30 | Collaborative compression |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101842785A true CN101842785A (zh) | 2010-09-22 |
Family
ID=40584231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880114543A Pending CN101842785A (zh) | 2007-10-31 | 2008-10-30 | 协同压缩 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20090112900A1 (zh) |
CN (1) | CN101842785A (zh) |
DE (1) | DE112008002820T5 (zh) |
WO (1) | WO2009059060A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023978A (zh) * | 2009-09-15 | 2011-04-20 | 腾讯科技(深圳)有限公司 | 一种海量数据处理方法及系统 |
CN106844479A (zh) * | 2016-12-23 | 2017-06-13 | 光锐恒宇(北京)科技有限公司 | 文件的压缩、解压方法及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9298722B2 (en) * | 2009-07-16 | 2016-03-29 | Novell, Inc. | Optimal sequential (de)compression of digital data |
WO2011014182A1 (en) * | 2009-07-31 | 2011-02-03 | Hewlett-Packard Development Company, L.P. | Non-greedy differential compensation |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4242970B2 (ja) * | 1998-07-09 | 2009-03-25 | 富士通株式会社 | データ圧縮方法及びデータ圧縮装置 |
US6438556B1 (en) * | 1998-12-11 | 2002-08-20 | International Business Machines Corporation | Method and system for compressing data which allows access to data without full uncompression |
WO2001013237A1 (fr) * | 1999-08-13 | 2001-02-22 | Fujitsu Limited | Traitement de fichier, dispositif informatique et support memoire |
US6539391B1 (en) * | 1999-08-13 | 2003-03-25 | At&T Corp. | Method and system for squashing a large data set |
JP4774145B2 (ja) * | 2000-11-24 | 2011-09-14 | 富士通株式会社 | 構造化文書圧縮装置および構造化文書復元装置並びに構造化文書処理システム |
US7146054B2 (en) * | 2003-06-18 | 2006-12-05 | Primax Electronics Ltd. | Method of digital image data compression and decompression |
US7507897B2 (en) * | 2005-12-30 | 2009-03-24 | Vtech Telecommunications Limited | Dictionary-based compression of melody data and compressor/decompressor for the same |
-
2007
- 2007-10-31 US US11/930,982 patent/US20090112900A1/en not_active Abandoned
-
2008
- 2008-10-30 WO PCT/US2008/081872 patent/WO2009059060A2/en active Application Filing
- 2008-10-30 DE DE112008002820T patent/DE112008002820T5/de not_active Withdrawn
- 2008-10-30 CN CN200880114543A patent/CN101842785A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023978A (zh) * | 2009-09-15 | 2011-04-20 | 腾讯科技(深圳)有限公司 | 一种海量数据处理方法及系统 |
CN102023978B (zh) * | 2009-09-15 | 2015-04-15 | 腾讯科技(深圳)有限公司 | 一种海量数据处理方法及系统 |
CN106844479A (zh) * | 2016-12-23 | 2017-06-13 | 光锐恒宇(北京)科技有限公司 | 文件的压缩、解压方法及装置 |
CN106844479B (zh) * | 2016-12-23 | 2020-07-07 | 光锐恒宇(北京)科技有限公司 | 文件的压缩、解压方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20090112900A1 (en) | 2009-04-30 |
WO2009059060A2 (en) | 2009-05-07 |
DE112008002820T5 (de) | 2010-12-09 |
WO2009059060A3 (en) | 2009-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liang et al. | SZ3: A modular framework for composing prediction-based error-bounded lossy compressors | |
US9805080B2 (en) | Data driven relational algorithm formation for execution against big data | |
Lam et al. | Mining compressing sequential patterns | |
AU2007336337B2 (en) | System and method for optimizing changes of data sets | |
US7809771B2 (en) | Automatic reduction of table memory footprint using column cardinality information | |
Jiang et al. | Topological representations of crystalline compounds for the machine-learning prediction of materials properties | |
US10122379B1 (en) | Content-aware compression of data with reduced number of class codes to be encoded | |
CN107111623A (zh) | 用于基于词典的压缩的并行历史搜索和编码 | |
US10133551B1 (en) | Content-aware compression of data using multiple parallel prediction functions | |
CN101842785A (zh) | 协同压缩 | |
CN101911058A (zh) | 代表性数据串的产生 | |
CN101192220B (zh) | 适用于资源搜寻的标签建构方法及系统 | |
Zou et al. | Performance optimization for relative-error-bounded lossy compression on scientific data | |
US7827305B2 (en) | Determination of a state of flow through or a cut of a parameterized network | |
Lee et al. | Progressive 3D mesh compression using MOG-based Bayesian entropy coding and gradual prediction | |
CN110389953B (zh) | 基于压缩图的数据存储方法、存储介质、存储装置和服务器 | |
CN104598485A (zh) | 处理数据库表的方法和设备 | |
CN108090034B (zh) | 基于集群的单证代码统一编码生成方法和系统 | |
US11720592B2 (en) | Generating overlap estimations between high-volume digital data sets based on multiple sketch vector similarity estimators | |
Li et al. | Erasing-based lossless compression method for streaming floating-point time series | |
WO2004075008A2 (en) | Method and apparatus for information factoring | |
Li et al. | Federated learning communication-efficiency framework via corset construction | |
Verster | Autobin: A predictive approach towards automatic binning using data splitting | |
Hijazi et al. | A MILP approach for designing robust variable-length codes based on exact free distance computation | |
WO2016110125A1 (zh) | 高维向量的哈希方法、向量量化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100922 |