用于实时选择压缩操作的方法和系统转让专利

申请号 : CN201310000678.5

文献号 : CN103197924B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : J·阿秘特L·德米多N·哈罗瓦尼

申请人 : 国际商业机器公司

摘要 :

本发明公开提供了用于实时选择压缩操作的方法、系统和计算机程序产品实施例。在一个实施例中,仅作为例子,根据所分配的成功因子将可用的压缩操作初始化。测试所述可用的压缩操作,以确定所述可用的压缩操作中的至少一个是否产生大于最小压缩比的压缩比。应用实时选择的所述可用的压缩操作中的至少一个,以压缩数据块中的至少一个。附加的系统和计算机程序产品实施例被公开,并且提供了相关的优点。

权利要求 :

1.一种用于在计算环境中通过处理器设备实时选择压缩操作的方法,所述方法包括:根据所分配的成功因子将多个可用的压缩操作初始化,所述成功因子被用于将压缩操作的列表重新排序;

测试所述多个可用的压缩操作中的至少一个,以确定所述多个可用的压缩操作中的至少一个是否产生大于最小压缩比的压缩比;和如果所述多个可用的压缩操作中的至少一个产生大于最小压缩比的压缩比,应用所述产生大于最小压缩比的压缩比的至少一个压缩操作,以压缩多个数据块中的至少一个,所述成功因子至少包含被选为产生大于所述最小压缩比的压缩比的所述多个可用的压缩操作中的每一个的频率的累积和值,所述方法还包括:

根据所述应用实时选择的所述多个可用的压缩操作中的至少一个,继续应用用于压缩所述多个数据块中的至少一个的随后的一个的所述多个可用的压缩操作中的至少一个,直到所述压缩比小于所述最小压缩比,所述方法还包括:

结合所述应用实时选择的所述多个可用的压缩操作中的至少一个,如果所述多个可用的压缩操作中的至少一个的每一个的压缩比小于所述最小压缩比,那么选择所述多个可用的压缩操作中的在列表中首先用于所述应用的至少一个;

根据所述初始化,按照所述成功因子在列表中配置所述多个可用的压缩操作中的至少一个;以及在所述应用实时选择的所述多个可用的压缩操作中的至少一个之后,更新所述多个可用的压缩操作中的至少一个的每一个的成功因子,其中,所述列表被重新排序。

2.根据权利要求1所述的方法,还包括:

限定最小压缩比,所述最小压缩比用于确定要选择所述多个可用的压缩操作中的至少一个中的哪些。

3.一种用于在计算环境中实时选择压缩操作的系统,包括:

能够在所述计算环境中操作的处理器设备,其中,所述处理器设备适于:根据所分配的成功因子将多个可用的压缩操作初始化,所述成功因子被用于将压缩操作的列表重新排序;

测试所述多个可用的压缩操作中的至少一个,以确定所述多个可用的压缩操作中的至少一个是否产生大于最小压缩比的压缩比;和如果所述多个可用的压缩操作中的至少一个产生大于最小压缩比的压缩比,应用所述产生大于最小压缩比的压缩比的至少一个压缩操作,以压缩多个数据块中的至少一个,其中,所述成功因子至少包含被选为产生大于所述最小压缩比的压缩比的所述多个可用的压缩操作中的每一个的频率的累积和值,并且,所述处理器设备进一步适于根据所述应用实时选择的所述多个可用的压缩操作中的至少一个,继续应用用于压缩所述多个数据块中的至少一个的随后的一个的所述多个可用的压缩操作中的至少一个,直到所述压缩比小于所述最小压缩比,并且所述处理器设备进一步适于:结合所述应用实时选择的所述多个可用的压缩操作中的至少一个,如果所述多个可用的压缩操作中的至少一个的每一个的压缩比小于所述最小压缩比,那么选择所述多个可用的压缩操作中的在列表中首先用于所述应用的至少一个;

根据所述初始化,按照所述成功因子在列表中配置所述多个可用的压缩操作中的至少一个;以及在所述应用实时选择的所述多个可用的压缩操作中的至少一个之后,更新所述多个可用的压缩操作中的至少一个的每一个的成功因子,其中,所述列表被重新排序。

4.根据权利要求3所述的系统,其中,所述处理器设备进一步适于限定最小压缩比,所述最小压缩比用于确定要选择所述多个可用的压缩操作中的至少一个中的哪些。

说明书 :

用于实时选择压缩操作的方法和系统

技术领域

[0001] 本发明公开一般涉及计算机,更特别地,涉及计算环境中的压缩操作的实时选择。

背景技术

[0002] 在当前社会,计算机系统是十分普及的。计算机系统遍布工作场所、家庭和学校。计算机系统可包含用于处理和存储数据的数据存储系统或盘存储系统。近年来,软件和硬件技术均取得令人瞩目的进展。通过新的技术,增加了越来越多的功能,并且,更便于供这些电子装置使用。通过最近的计算机技术引入的最值得注意的变化中的一个是包括图像、视频和音频以增强计算机和电子装置的能力。在多媒体时代,要处理的信息量大大增加。处理大的数据文件的一种流行方法是压缩数据以供存储或传送。因此,处理非常大的数量的信息是要解决的关键问题。

发明内容

[0003] 伴随更快、更强大且更有效的存储信息的方式的需求的不断增加,存储技术的优化变为关键性挑战。可为了传送和/或存储而压缩逻辑数据对象(数据文件、图像文件、数据块等)。特别是当由于密集的中央处理单元(CPU)使用而使得压缩操作的数量增加时,需要为每个数据组找到最佳压缩操作(例如,产生大于或高于所限定的最小压缩比的压缩比的压缩算法)。
[0004] 因此并且鉴于以上情况,提供用于实时选择压缩操作的各种示例性的方法、系统和计算机程序产品实施例。在一个实施例中,仅作为例子,根据所分配的成功因子将可用的压缩操作初始化。为了确定压缩操作中的至少一个是否产生大于最小压缩比的压缩比,测试可用的压缩操作。应用为了压缩数据块中的至少一个而实时选择的可用的压缩操作。附加的系统和计算机程序产品实施例被公开,并且提供了相关的优点。
[0005] 除了以上的示例性的方法实施例以外,其它示例性的系统和计算机产品实施例被提供,并提供了相关的优点。已经提供了以上的发明内容以便以简化的形式介绍对概念的选择,在后面的具体实施方式中进一步描述所述概念。本发明内容不是要识别要求权利的主题的关键特征或基本特征,也不是要被用于帮助确定要求权利的主题的范围。要求权利的主题不限于解决在背景技术中提出的任意或全部缺点的实现。

附图说明

[0006] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。在附图中:
[0007] 图1示出可以实现本发明的各方面的具有示例存储装置的计算机存储环境;
[0008] 图2示出表示可以实现本发明的各方面的计算机系统中的数据存储系统的硬件结构的示例性框图;
[0009] 图3示出用于计算成功因子的示例性框图;
[0010] 图4是示出用于在压缩比大于最小压缩比的情况下应用压缩比的示例性方法的流程图;
[0011] 图5是示出用于在压缩比大于最小压缩比的情况下选择压缩比的示例性方法的流程图;以及
[0012] 图6是示出用于通过使用压缩操作列表应用压缩操作的示例性方法的流程图。

具体实施方式

[0013] 如上所述,伴随着对于更快、更强大且更有效的存储信息的方式的需求的不断增加,存储技术的优化变为关键性的挑战。对于特定的数据组,在存储阵列中,专门化的压缩算法可实现比通用的算法高的压缩比。数据压缩比可被用于量化通过数据压缩算法产生的数据表示(data-representation)尺寸的减小。数据压缩比可以是压缩尺寸与未压缩尺寸之间的比。压缩比依赖于被存储的数据。例如,对于图像数据组使用图像压缩算法将产生高的压缩比。另一方面,对于数据组中的视频内容,应用完全不同的算法可增加存储压缩比。因此,当在存储阵列中存储了多个内容类型(例如,联合图像专家组(JointPhotographic Experts Group,“JPEG”)、运动图像专家组(MovingPicture Experts Group“MPEG”)、MPEG-
3“MP3”、第三代合作项目文件格式(Third Generation Partnership Project File Format,“3GP”)、标签图像文件格式(Tagged Image File Format,“TIFF”)、图像互换格式(Graphics Interchange Format,“GIF”)、ZLIB和可移植网络图形(Portable Network Graphics,“PNG”))时,为每个数据组选择最佳算法是关键的。在许多情况下,数据组内容在压缩操作中是未知的。例如,在不检测内容类型的情况下,块存储阵列可能不知道存储于块存储阵列中的文件和文件类型。当内容被嵌入其它文件中时,数据类型的内容类型的检测也可被隐藏。例如,word文档可包含图像和音频内容。在云存储(blob storage)中数据库文件也可包含视频,由于不能检测数据组的内容,因此,这也妨碍实现需要的压缩比。
[0014] 相反,并且为了解决上述的低效率,所示实施例的机制(mechanism)用于产生一种方案,其通过获得对如何构建给定文件的理解并从一组算法(例如,压缩操作)中选择对于目标数据组最有效的一个,来桥接应用与单纯存储平台之间的间隙。通过理解特定应用文件/块的布局,本发明的机制智能决定选择产生比在目标数据组上限定的最小接受压缩比大的压缩比的最佳压缩算法以供最佳存储之用。为了实现这些目标,在一个实施例中,从用于压缩数据块的列表中选择的至少一个压缩操作被应用于数据组。压缩操作中所选择的至少一个中的一个具有最高的压缩比。应当注意,本发明的机制寻求选择实现比限定的最小压缩比大或高的压缩比的压缩操作(例如,压缩算法)。本发明的机制可能未必找到、获得或定位产生最高压缩比的压缩操作。因此,可能不必检查和测试每一个可用的压缩比。
[0015] 转向图1,示出了可实现本发明的各方面的示例计算机系统10。计算机系统10包含与大容量存储设备14和存储器设备16连接的中央处理单元(CPU)12。大容量存储设备可包含可以以独立盘(RAID)的冗余阵列配置的硬盘驱动(HDD)设备。可以在位于系统10或别处的设备14上执行进一步描述的后备操作。存储器设备16可包含诸如电可擦可编程只读存储器(EEPROM)的存储器或大量的有关装置。存储器设备16和大容量存储设备14通过信号承载介质与CPU12连接。另外,CPU12通过通信端口18与具有附连的多个附加计算机系统22和24的通信网络20连接。计算机系统10可包含用于计算机系统10的每个单个部件的一个或更多个处理器装置(例如,CPU12)和附加的存储器设备16,以运行和执行这里描述的每个操作以实现本发明的目的。
[0016] 图2是示出根据本发明的计算机系统中的数据存储系统的硬件结构的示例性框图200。示出了主机计算机210、220、225,其每一个作为数据存储系统200的一部分,可以用作为用于执行数据处理的中央处理单元。主机(物理或虚拟的设备)210、220和225可以是数据存储系统200中的用于实现本发明的目的的一个或更多个新的物理装置或逻辑装置。在一个实施例中,仅作为例子,数据存储系统200可实现为 System StorageTM DS8000TM。
网络连接260可以是光纤信道构造(fibre channel fabric)、光纤信道点对点链接、以太网构造上的光纤信道构造或点对点链接、FICON或ESCON I/O接口、任何其它的I/O接口类型、无线网络、有线网络、LAN、WAN、异质、同质、公共(即,因特网)、私人或它们的任意组合。主机
201、220和225可以是局部的或者分布在一个或更多个位置中,并且可配有到存储装置控制器240的任何类型的构造(或构造信道)(图2未示出)或网络适配器260,诸如光纤信道、FICON、ESCON、以太网、光学纤维、无线或共轴适配器。因此,数据存储系统200配有用于通信的适当的构造(图2未示出)或网络适配器260。数据存储系统200在图2中被示为包含存储装置控制器240和存储装置230。
[0017] 为了有利于更清楚地理解这里描述的方法,存储装置控制器240在图2中被示为单个处理单元,包含在后面更详细地描述的微处理器242、系统存储器243和非易失性存储装置(“NVS”)216。应当注意,在一些实施例中,存储装置控制器240包含多个处理单元,每个具有它们自己的处理器集合体和系统存储器,并且通过数据存储系统200内的专用网络被互连。存储装置230可包含通过存储网络与存储装置控制器240连接的一个或更多个诸如存储阵列的存储设备。
[0018] 在一些实施例中,可以在回路架构中连接包含于存储装置230中的装置。存储装置控制器240管理存储装置230,并且有利于处理希望针对存储装置230的写入和读取请求。存储装置控制器240的系统存储器243存储处理器242可访问的程序指令和数据,以便执行与管理存储装置230相关的功能和方法步骤并执行计算机存储环境中的快照操作(snapshot operation)的本发明的步骤和方法。在一个实施例中,系统存储器243可包含用于执行包含这里描述的方法和操作的计算机存储环境中的舍弃扫描的操作软件250、与其相关或者通信。如图2所示,系统存储器243还可包含这里也称为“高速缓存存储器”的用于存储装置230的高速缓存245或与其通信,该高速缓存245用于缓存分别参照写入/读取请求和它们的相关数据的“写入数据”和“读取数据”。在一个实施例中,在系统存储器243外面的设备中分配高速缓存245,然而该高速缓存245保持可由微处理器242访问,并且除了实施这里描述的操作以外,还可用于提供防止数据丢失的额外安全。
[0019] 在一些实施例中,高速缓存245通过易失性存储器和非易失性存储器来实现,并且为了增强数据存储系统200的性能而通过局部总线(图2未示出)与微处理器242耦合。包含于数据存储装置控制器中的NVS216可由微处理器242访问,并且用于为在其它附图中描述的本发明的操作和执行提供附加的支持。NVS216也可被称为“永久”高速缓存或“高速缓存存储器”,并且通过可以利用或者可以不利用外部电力以保持存储于其中的数据的非易失性存储器来实现。出于适于实现本发明的目标的目的,NVS可存储于高速缓存245中或者通过其被存储。在一些实施例中,诸如电池的备用电源(图2未示出)向NVS216供给足够的电力以在数据存储系统200存在电力损失的情况下保持存储于其中的数据。在某些实施例中,NVS216的容量小于等于高速缓存245的总容量。
[0020] 存储装置230可在物理上包含一个或更多个存储器件,诸如存储阵列。存储阵列是诸如硬盘的各单个存储器件的逻辑分组。在某些实施例中,存储装置230包含JBOD(Just a Bunch Of Disks,磁盘簇)阵列或RAID(独立盘的冗余阵列)阵列。物理存储阵列的集合可进一步被组合以形成层级(rank),其使物理存储装置与逻辑配置不相关。层级中的存储空间可被分配到限定在写入/读取请求中规定的存储位置的逻辑体积(logical volume)中。
[0021] 在一个实施例中,仅作为例子,图2所示的存储系统可包含逻辑体积,或者简称为“体积”,可具有不同类型的分配。存储装置230a、230b和230n被示为数据存储系统200中的层级,并且在这里被称为层级230a、230b和230n。层级可以是数据存储系统200本地的,或者可位于物理远程位置上。换句话说,局部存储装置控制器可与远程存储装置控制器连接,并且管理远程位置上的存储装置。层级230a被示为配有两个整个体积234和236以及一个部分体积232a。层级230b被示为具有另一部分体积232b。因此,体积232跨层级230a和230b被分配。层级230n被示为完全分配给体积238-即,层级230n指的是用于体积238的整个物理存储装置。从以上的例子,可以理解,层级可被配置为包含一个或更多个部分和/或整个体积。体积和层级可进一步被分成所谓的“轨道(track)”,该轨道代表存储装置的固定块。轨道因此与给定的体积相关,并且可被赋予给定的层级。
[0022] 存储装置控制器240可包含压缩操作模块255和压缩操作列表模块257。压缩操作模块255和压缩操作列表模块257可与存储装置控制器240、主机210、220、225和存储设备230中的每一个部件结合工作。压缩操作模块255和压缩操作列表模块257均可在结构上是一个完整的模块,并且可与其它的单个模块相关和/或包含在一起。压缩操作模块255和压缩操作列表模块257也可位于高速缓存245或其它部件中。
[0023] 存储装置控制器240包含用于控制对于主机计算机210、220、225的光纤信道协议的控制开关(control switch)241;用于控制存储装置控制器240的全部的微处理器242;用于存储用于控制存储装置控制器240的操作的微程序(操作软件)250、用于控制的数据和后面描述的每个表的非易失性控制存储器243;用于暂时存储(缓存)数据的高速缓存245;和用于帮助高速缓存245读取和写入数据的缓冲器244;用于控制用于控制去向/来自存储设备230的数据传送的协议的控制开关241和可以设定其中信息的压缩操作模块255和压缩操作列表模块257。多个缓冲器244可通过本发明实现为帮助进行这里描述的操作。
[0024] 在一个实施例中,主机计算机或一个或更多个物理或虚拟设备210、220、225和存储装置控制器240通过作为接口的网络适配器(可以是光纤信道)260——即,通过称为“构造”的开关——被连接。在一个实施例中,描述图2所示的系统的操作。微处理器242可控制存储器243以存储来自主机设备(物理的或虚拟的)210的命令信息和用于识别主机设备(物理的或虚拟的)210的信息。控制开关241、缓冲器244、高速缓存245、操作软件250、微处理器242、存储器243、NVS216、压缩操作模块255和压缩操作列表模块257相互通信,并且可以是分开的或各单个部件(一个或多个)。并且,可将诸如操作软件250的数个部件,如果不是全部部件的话,与存储器243包括在一起。所示的设备内的部件中的每一个可被链接在一起,并且可出于适于本发明的目的而相互通信。
[0025] 图3示出用于计算成功因子的示例性框图300。在一个实施例中,机制寻求通过为每一数据组的内容选择最佳压缩方法(例如,选择产生大于或高于限定的最小压缩比的压缩比的压缩操作)来增加存储阵列的压缩比。通过选择产生大于最小接受和限定的压缩比的压缩比的第一压缩操作,而不是通过迭代和测试可用的压缩操作中的每一个,来增加效率和生产率。对于不同压缩算法中的每一个,机制测试事先实现的压缩比。不同于应用专用压缩算法,其中所应用的算法中的每一个都使用密集数量的CPU并且不能被用于大量的算法,机制通过在不限制所使用的压缩算法的数量的情况下实时地测试/尝试产生最高压缩比的压缩操作,来选择产生与在使用专用压缩算法时获得的压缩比类似的压缩比的压缩操作。并且,所使用的压缩算法的无限数量不影响CPU负载。机制使用收集的统计信息、成功和失败的学习机和用于选择应用于要被存储的数据的压缩算法的阈值算法测试。
[0026] 如图3所示,机制知道数据组的用于压缩的内容类型。为了通过为每一类型的数据内容选择最佳压缩操作(例如,选择产生大于或高于限定的最小压缩比的压缩比的压缩操作)来帮助增加数据存储的压缩比,使用下式:
[0027]
[0028] 其中,Si代表用于累积成功因子值的算法,如果算法没有被选择为产生最高压缩操作,则D可以是0,或者,如果算法被选择为产生最高压缩操作,则D可以为1,Si可包含曲线ln(x)的因子中的所有成功值的和 其中n为被测试的压缩操作的数量,并且ln(x)被定义为曲线下面的面积,诸如从1到x的函数f(x)=1/x下的面积,它由下式代表:
[0029]
[0030] 其中,t代表时间,数量1是第一数据块决定因子(0或1),x是从1到x取(1/t)的对数的积分的当前块决定因子。换句话说,随着机制继续处理数据块,该式表示Si上的较旧数据块决定效果(例如,开始时被处理的那些块)变得越来越不重要,而更相关(例如,最新)的数据块对于Si的值具有更多的影响和作用。因此,机制将通过尝试各种压缩操作中的每一个就知道内容,这意味着,随时间过去,压缩操作的列表次序反映真实环境数据分布和块内的每个数据出现的可能性,因此,机制更可能仅选择列表内的第一组压缩操作。选择使用压缩操作的次序根据Si值进行(例如,为了选择最高压缩操作而首先选择具有最高Si值的压缩操作)。
[0031] 图4是示出用于在压缩比大于最小压缩比的情况下应用压缩比的示例性方法的流程图。方法400开始(步骤402)。根据所分配(例如,预定)的成功因子将可用的压缩操作初始化(步骤404)。成功因子至少包含被选择为产生大于最小接受和/或限定的压缩比的压缩比的可用压缩操作中的每一个的频率的累积和值。成功因子被用于将压缩操作的列表重新排序。列表次序可反映测试和/或尝试哪些压缩操作以及以什么次序进行。方法400可测试可用的压缩操作,直到获得比最小接受的压缩比高的压缩比(步骤406)。找到的压缩比可产生或者可以不产生最高的压缩比。因此,不是所有的可用压缩操作都需要被测试。应用为了压缩数据块中的至少一个而实时选择的可用压缩操作(步骤408)。方法400结束(步骤410)。
[0032] 图5是示出用于在压缩比大于最小压缩比的情况下选择压缩比的示例性方法500的流程图。方法500开始(步骤502)。方法500将压缩表列表初始化(步骤504)。阻挡分析器的光栅可读取输入的块,并且,如果存在协议层则去除所有的协议层信息,并确保输入仅包含有效载荷数据(步骤506)。为了选择适当的压缩操作(在图中标为压缩方法)(步骤516),方法500可测试压缩操作1(例如,压缩操作1)(步骤508)、压缩操作2(步骤510)和压缩操作n(步骤512)。方法500测试以确定是否压缩操作中的至少一个产生大于最小压缩比的压缩比。方法500可更新压缩操作的比率和列表(步骤514)。可以选择压缩操作(例如,压缩方法)(步骤516)。可以选择获得大于最小压缩比的压缩比的压缩比。方法500可配置封装器以适合于容器(步骤518),该容器包含具有规定所使用的选定压缩操作的第一字节、规定压缩数据和压缩缓冲器的长度的4个字节的报头。然后方法500可返回(步骤506)并继续每个连续的步骤。步骤结束(步骤520)。
[0033] 在一个实施例中,机制可如下选择最佳压缩算法(例如,产生高于最小压缩比的最高压缩比的压缩算法)。机制可限定要接受的用于确定要选择压缩操作中的哪些的最小压缩比。根据比率(例如,分配给代表所实现的压缩比值的压缩操作中的每一个的比率)将压缩操作的列表排序,其中,比率包含通过压缩操作中的至少一个实现的压缩比。可为了选择最佳压缩比(例如,选择产生大于或高于限定的最小压缩比的压缩比的压缩操作)而分析和测试压缩操作中的每一个。机制可连续应用选自用于压缩随后的数据块的列表中的压缩操作中的至少一个,直到建立小于最小压缩比的压缩比。一旦当前应用的压缩操作低于限定的最小压缩比,机制就可尝试列表中的下一压缩操作,直到识别出产生大于最小接受和/或限定的压缩比的压缩比的新的压缩操作。机制只要产生大于最小限定的压缩比的压缩比,就可继续进行新选择的压缩操作。与第一次选择的压缩操作类似,一旦新选择的压缩操作的压缩比低于和/或小于最小限定的压缩比,机制就测试/尝试来自列表的压缩操作,直到压缩操作中的一个产生大于最小限定的压缩比的压缩比。随着时间,选择和测试正确的压缩算法的效率增加,从而允许机制简单地对于每10个块尝试小于3次的压缩操作。并且,作为选择过程的一部分,如果列表中的压缩操作的压缩比小于最小压缩比,那么机制可选择在列表中处于首先的压缩操作。在施加之后可更新压缩操作中的每一个的比率,并且可以更新列表。通过具有反映随时间的数据分散的表按照成功比率(success rate)将列表排序。
[0034] 图6是示出用于通过使用压缩操作列表应用压缩操作的示例性方法600的流程图。方法600从限定最小接受的压缩比(步骤604)开始(步骤602)。方法600可尝试压缩操作,直到压缩比大于所接受的最小压缩比(步骤606)。通过具有所接受的最高(最佳)压缩比的压缩操作(例如,选择产生大于或高于所限定的最小压缩比的压缩比的压缩操作)压缩缓冲器(步骤608)。方法600也可将当前的列表次序冲刷(flush)到文件中。这允许基于先前掌握的状态次序的环境过程的将来的重新开始/执行的初始化。在选择压缩操作之后,方法600可确定所选择的压缩操作的压缩比是否仍大于最小压缩比(步骤610)。如果是,那么方法600可继续使用为压缩数据块而选择的压缩比。如果不是,那么方法600可根据为压缩操作中的每一个分配的新的比率将列表重新排序(步骤612)。方法600可继续测试和尝试压缩操作,直到压缩比大于所接受的最小压缩比(步骤606)。
[0035] 为了解释本发明的机制,考虑以下的例子。例如,假定接收以下的输入块流:10文本流、5个JPEG流和5个PNG流。假定根据以下限定的方式在列表中将压缩操作排序:1)ZLIB、2)JPEG、3)GIF和4)PNG。出于本例子的目的,最小接受的压缩比被限定为至少百分之二十(20%)。机制通过用ZLIB压缩操作测试/尝试第一块而开始。ZLIB压缩操作对于10个文本块中的每一个产生百分之八十(80%)的压缩比。对于ZLIB压缩操作,用D=1更新Si(这种情况下的列表将保持相同,但可在后面的时间被重新排序)。机制将继续进行ZLIB压缩操作,直到ZLIB压缩操作的压缩比低于最小压缩比,该最小压缩比在本例子中被定义为百分之二十(20%)。当达到作为JPEG流的第十一(第11)块时,通过ZLIB压缩操作获得的压缩比处于百分之零(0%)与百分之一(1%)之间。由于获得的压缩比小于设为百分之二十(20%)的最小压缩比,因此,Si通过等于零的D(例如,D=0)被更新,并继续测试/尝试在本例子中为JPEG压缩操作的下一可用的压缩操作。机制然后选择JPEG压缩操作。由于是特定于JPEG的,因此,所获得的压缩比为大于设为百分之二十(20%)的最小压缩比的百分之三十(30%)。并且,机制对于第十一(第11)块用等于1的D(例如,D=1)更新JPEG压缩操作的Si。机制继续进行JPEG压缩操作,直到作为PNG块的第十六(第16)块。JPEG压缩操作被应用于PGN块,但压缩比小于设为百分之二十(20%)的最小压缩比。JPEG压缩操作的Si通过等于零的D(例如,D=0)被更新。机制然后选择ZLIB压缩操作,原因在于即使在先前使用JPEG压缩操作之后,它仍然是列表内的最高层级压缩操作。但是,通过ZLIB压缩操作获得的压缩比小于设为百分之二十(20%)的最小压缩比,因此,机制继续应用压缩操作中的每一个,直到达到PGN压缩操作。PGN压缩操作获得大于设为百分之二十(20%)的最小压缩比的25%压缩比,因此,PGN压缩操作被选择。(对于本例子,测试并应用GIF压缩操作,但是,压缩比小于最小压缩比。)用于第十六(第16)块Si的PNG压缩操作的Si被更新为D等于1(例如,D=1)。然后对于剩余的PNG流中的每一个应用PGN压缩操作。
[0036] 所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0037] 可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0038] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0039] 以上参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0040] 也可以把这些计算机程序指令存储在能使得计算机、其它可编程数据处理装置或其它设备以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令的制造品(manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0041] 以上附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0042] 虽然详细示出本发明的一个或更多个实施例,但是,本领域技术人员可以理解,在不背离在以下的权利要求中阐述的本发明的范围的情况下,可以提供这些实施例的修改或调整。