CN102687404B - 用于数据压缩的数据值出现信息 - Google Patents

用于数据压缩的数据值出现信息 Download PDF

Info

Publication number
CN102687404B
CN102687404B CN201080059819.5A CN201080059819A CN102687404B CN 102687404 B CN102687404 B CN 102687404B CN 201080059819 A CN201080059819 A CN 201080059819A CN 102687404 B CN102687404 B CN 102687404B
Authority
CN
China
Prior art keywords
data
histogram
batch
value
post
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.)
Expired - Fee Related
Application number
CN201080059819.5A
Other languages
English (en)
Other versions
CN102687404A (zh
Inventor
李天超
O·德雷泽
P·本德尔
N·赫尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN102687404A publication Critical patent/CN102687404A/zh
Application granted granted Critical
Publication of CN102687404B publication Critical patent/CN102687404B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6058Saving memory space in the encoder or decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6094Selection strategies according to reasons other than compression rate or data type

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

讨论了数据值的出现数据的生成,以用于支持数据集的编码。确定当前数据批次中的数据值的出现。确定针对当前数据批次中的至多第一数目(M)的最频繁的数据值的出现计数信息,出现计数信息标识最频繁的数据值及其出现计数。针对当前数据批次中的其余数据值,生成具有第二数目(N)的柱的至少第一直方图。将当前数据批次的出现计数信息和第一直方图合并到较早处理的数据批次的合并的出现计数信息以及合并的直方图中。将下一数据批次作为当前数据批次来处理,直到已经处理了整个数据集为止。至少基于与数据集相对应的合并的出现计数信息以及合并的直方图来确定编码方案。

Description

用于数据压缩的数据值出现信息
技术领域
本发明总体上涉及数据压缩和数据编码。特别地,本发明涉及生成要被编码或者压缩的数据集中的数据值的出现(occurrence)信息。
背景技术
数据压缩是各种计算和存储系统的重要方面。此处,作为一个系统示例而详细地讨论数据仓库,其中数据压缩是相关的,但是可以理解,在存储大量数据的多种其他系统中,数据压缩和经压缩的数据的有效处理是相关的。数据仓库是组织的电子存储的数据的仓储。数据仓库被设计为支持报告和分析。
采用用于查询的快速处理的表扫描的数据仓库的有效性依赖于数据的有效压缩。利用恰当的数据压缩方法,表扫描可以直接应用于经压缩的数据,而不是必须首先解码每个值。而且,设计良好的算法可以在每个循环中在被封装为一个词大小的多个经压缩的值上进行扫描。因此,较短的代码通常意味着较快的表扫描。以下压缩方法是公知的。基于词典的压缩利用词典代码来编码来自较大值空间但是相对小很多的实际值集(基数)的值。基于偏移的压缩通过从原始值中的每一个中减去基准值来对数据进行压缩,并且使用其余偏移来表示原始值。前缀-偏移压缩通过将其二进制表示分为前缀比特和偏移比特来对值进行编码,并且将前缀比特与偏移比特的词典代码连接为编码代码。
压缩效率的最重要标准之一是平均码长度,该平均码长度是经压缩的数据的总大小除以其中的值的数目。实现较好的压缩效率(即,较小的平均码长度)的一种方式是利用较短码来对具有较高概率的值进行编码。
存在多种编码技术,其对于为具有较高概率的值指派较短码的基于词典的压缩。公知的霍夫曼编码使用可变长度前缀码。在美国专利申请20090254521A1中描述的频率分区方法,其根据值的出现概率来对值进行分区并且为每个分区的值指派固定长度的词典码,其中分区包含较多的具有较短码长度的频率值。
在图1的表中示出使用公知的霍夫曼代码的一个示例;在该示例中,要被压缩的数据如下:{apple,apple,orange,banana,orange,banana,apple,peach,banana,apple}。该表示出了如何首先对每个离散值的出现进行计数以便计算概率,并且继而指派压缩码。这仅在离散值的量有限的情况下可行,以使得可以在计算机系统的存储器内建立值/计数对的完整列表。然而,当值的基数非常大时,例如,64比特整数具有264(~1.8E19)个可能值时,不是这种情况。
针对前缀-偏移压缩,当在词典中对前缀比特进行编码时,此类概率相关编码技术也可以应用于改进编码效率。也已知的是,降低偏移比特的长度可以有益于压缩效率,但是其具有存储器设置的上限(因为每个离散前缀码需要在词典内进行维护),并且偏移部分中通常总是浪费某些比特,因为从不会使用特定组合。实际上,如果可以使用无限的存储器,则前缀-偏移压缩总是不如单纯的基于词典的压缩有效,单纯的基于词典的压缩可以视作使用最大数目的前缀比特和零偏移比特的前缀-偏移压缩的极端情况。
基于偏移的压缩完全不考虑值概率。虽然其也从来不会比单纯的基于词典的压缩有效,但是根据原始值的属性,其编码效率可以比前缀-偏移压缩更好或者更差——相同的共同基准值可以应用于原始值中的所有值以导出可以有效存储的偏移。另外,由于其对于数值稳定性的隐含需求,其可应用性仅限制于特定数据类型。
因此,可期望的是,在特定存储器约束下,使用以上提到的不同数据压缩方法的混合来获得最佳压缩。图2示出了这样的一种混合压缩方法,其中可以针对最频繁的值(图2的上半部分)应用基于词典的压缩,并且可以针对较不频繁的值(图2的中间部分)应用前缀-偏移压缩,以及在适当的时候可以针对其余的值应用基于偏移的压缩(图2的下半部分)。备选地,当基于偏移的压缩不可应用或者无益时,可以不压缩不常见的值。通过限制所涉及的两个词典(一个用于基于词典的压缩,一个用于前缀-偏移压缩)的大小,仍然可以控制存储器使用。
为了能够确定哪个数据压缩方法用于数据集中的哪些值,应当确定数据集中的所有区别值的频率。这对于可能包含太字节的数据并且包含数百万区别值的大数据集来说存在挑战。可用的存储器可能不足以用于存储出现信息,并且在很多情况下,使用磁盘空间来存储出现信息是不可行的。由此,应用此类混合压缩方法的主要困难在于:在不能够构造每个个体值的出现的完整表的情况下,如何将数据分区为最频繁值、较不频繁值和不频繁值。
另外,在保序编码用于支持使用对经压缩的数据的扫描的有效查询处理的情况下,所有区别值的频率的需要变得更加重要。一种需要是确保在词典中正确地定位每个个体值。采样是没有作用的,因为其总是可能遗漏采样中的部分值。
本发明的一个目的是在利用非常大的基数(即,区别数据值)收集大量数据的出现信息期间,提供有效地限制必要存储器的量同时保留最重要的概率信息的解决方案。当此类信息可用时,有可能最优地使用例如混合压缩技术。
发明内容
本发明的第一方面提供了一种用于生成用于支持数据集的编码的数据值的出现数据的计算机化方法,所述方法包括:
确定当前数据批次中的数据值的出现;
确定针对当前数据批次中的至多第一数目(M)的最频繁的数据值的出现计数信息,所述出现计数信息标识所述最频繁的数据值及其出现计数;
针对所述当前数据批次中的其余数据值生成具有第二数目(N)的柱(bucket)的至少第一直方图;
将当前数据批次的所述出现计数信息合并到较早处理的数据批次的合并的出现计数信息中;
将当前数据批次的所述第一直方图合并到与较早处理的数据批次相对应的合并的直方图中;以及
将下一数据批次作为当前数据批次来处理,直到按批次处理了要被编码的数据集为止。
本发明的第二方面提供了一种数据处理系统,包括:
输入装置,用于接收要被编码的数据;
分割装置,用于将要被编码的数据分割为数据批次;
批次直方图装置,用于确定数据批次中的数据值的出现,所述批次直方图装置适于:
确定针对数据批次中的至多第一数目(M)的最频繁数据值
的出现计数信息,所述出现计数信息标识所述最频繁的数据值及其出现计数;
针对所述数据批次中的其余数据值生成具有第二数目(N)的柱的至少第一直方图;
合并装置,可操作地连接至所述批次直方图装置,用于将第一数据批次的所述出现计数信息合并到至少一个另外的数据批次的合并的出现计数信息中,以及用于将第一数据批次的所述第一直方图合并到与所述至少一个另外的数据批次相对应的合并的直方图中。
本发明的第三方面提供了一种计算机程序产品,包括计算机可使用介质和计算机可读程序。
附图说明
为了更好地理解本发明以及如何可以实现本发明,现在将仅通过示例的方式参考附图,在附图中:
图1将使用霍夫曼编码的出现计数和词典压缩的一个示例的表;
图2示意性地示出了可以与本发明的实施方式一起使用的混合数据压缩方法的一个示例;
图3示出了用于连同本发明的实施方式一起使用的多粒度直方图的一个示例;
图4示出了根据本发明的实施方式的方法的流程图;
图5示出了将两个多粒度直方图合并到一起的一个示例;
图6示出了作为可以实现本发明的系统的一个示例的数据处理系统的示意性框图;以及
图7示出了数据处理系统的某些进一步细节,尤其有关于如何将多粒度直方图用于编码数据。
具体实施方式
基本思想是将要被压缩的数据集划分为优选的固定大小的批次。利用多粒度直方图来跟踪每个批次中的值的出现,其中单独地跟踪最频繁值(项),并且使用直方图柱来跟踪其余数据,并且可选地,作为噪声(参见图3和以下的相关描述)。继而将后续批次的多粒度直方图合并到一起。在第一数据批次的处理期间,可以计算直方图柱的最优参数(即,当前缀-偏移编码用于直方图柱中的值时,前缀-偏移编码的前缀比特与偏移比特之间的分割点)。备选地,可以采用单独的预处理步骤,其中对要被编码的数据进行采样,并且确定直方图柱的参数。随后可以在合并多粒度直方图期间调整柱宽度。
图3示出了多粒度直方图的一个示例。多粒度直方图是以不同的粒度表示值的出现的数据结构。将最频繁值单独地作为项来计数,并且作为结果的出现计数信息指示个体值及其出现计数。使用直方图柱来计数较不频繁的值,当假设前缀-偏移编码用于柱中的值时,每个柱包含具有相同前缀比特的值(所有的柱具有相同的偏移比特长度)。针对柱,跟踪哪个值范围与柱相关联以及该值范围中存在多少值的出现。可选地,最不频繁值被全局地作为噪声处理。项、柱和噪声构成出现计数的三个不同粒度水平,从最精细到最粗糙。
多粒度直方图的配置参数包括以下内容。项的最大数目(最频繁值)限于M,并且直方图柱的最大数目限于N。M和N二者都是预定义的参数;优选地,它们的值被定义为2的幂。针对柱,前缀比特与偏移比特之间的分割点通过偏移比特的长度S来定义,偏移比特的长度S表示柱的宽度。另外,最不频繁值是否被作为噪声计数或多或少是用户的偏好。即使基于偏移的压缩并非总是可应用,有噪声的数据也可以在原始未压缩格式中使用。通过使用足够大的柱宽度,可以避免任何值被作为噪声计数。
每个项通过其值来标识,并且与项有关的信息(出现计数信息)包含值和该值的出现计数。在通用柱宽度和前缀-偏移编码用于柱中的值的情况下,每个柱通过前缀比特来标识,并且包含具有该前缀的所有值的计数。对于噪声,收集所有其余值的计数,并且在适当的情况下收集最小值和最大值。图3在右手面板中示出了多粒度直方图中的出现的计数。最频繁值(图3的左手侧面板中的直方图中的6个最高峰值)被作为项来计数,并且较不频繁的值(图3的左手侧面板中的其余峰值)被计数在图3的右手侧面板中的多粒度直方图中的柱中。
多粒度直方图保留足够的信息,以使得混合压缩方法可以一次性地应用于已经进行处理的所有批次的数据,并且产生的合并的多粒度直方图表示整个数据集。构造多粒度直方图的这一过程需要一些计算工作量。然而,因为先前提到的难题——由于存储限制而无法构造非常大基数的大量数据中的每个个体值的出现的完整表,所以这一过程是必要的。在不知道个体值的出现的情况下,难以决定其应当单独计数还是与相同前缀的其他值一起计数。
可以对项(即,对M个最频繁的值)应用任何基于词典的压缩方法,以使得最高压缩速率可以成为可能。对于柱中的值,可以用于任何前缀-偏移压缩。并且在适当的情况下,可以对作为噪声计数的值(如果有的话)应用基于偏移的压缩。备选地,如以上提到的,可以不压缩噪声值。
基于每个项和柱的概率,对于较高的编码效率,可以应用概率相关编码技术。作为一个示例,可以对最频繁值应用针对基于词典的压缩的频率分区方法,如在美国专利申请US20090254521A1中解释的那样。也即,将最频繁值划分为具有递减的个体值频率的递增大小的分区。利用固定(也可以是递增的)长度的代码来编码每个分区。
可以用于编码与柱相关联的值的前缀-偏移编码的一个示例是保序(order-preserving)前缀-偏移编码,该方法在由本申请人在与本申请相同的日期提交的专利申请“Prefix-offset encoding method”中描述。
可以理解,该多粒度直方图技术与具有用于频繁值的词典编码、用于柱的前缀-偏移编码、和用于噪声值的基于偏移的编码、或者不编码噪声值的混合压缩一起应用是非常有益的。然而,其他压缩方法也可以通过使用多粒度直方图技术而获益。可以通过将前缀-偏移编码替换为具有与柱相似的概念的另一备选,而将柱的具体定义进行概括,意味着更加粗糙的粒度。作为简单的示例,可以具有表示针对偏移编码的不同的值范围(最小和最大值,其必须是互斥的,并且其全体覆盖整个实际值范围)以及落入该范围的计数值的各个柱。
图4示出了根据本发明的实施方式的方法400的流程图。该方法400生成用于支持数据集的编码或者压缩的出现数据,并且该方法通常在计算机系统中实现。将要被压缩(或者编码)的数据集划分为批次,并且依次对批次进行处理。该处理例如可以在将数据加载到内存数据库中时进行。
对要被处理的数据划分为批次,每个批次优选地包含固定数目的值。批次大小B被选择为使得包含在数据批次中的个体值的全部计数将不会耗尽可用于该出现信息确定任务的存储器。大小B甚至需要足够小到能够具有临时在存储器中的两个直方图,这两个直方图继而将在随后的操作中被合并为一个结合的直方图。由于过多批次的计数和合并的原因,也应当避免过小的大小B。也需要批次大小的合理大小以便有效地应用自动最优柱宽度计算算法(以使得存在足够的初始值计数),该算法将在随后介绍。
针对每个数据批次,系统通过以下步骤401-403来确定个体多粒度直方图。在步骤401中,计算系统确定第一(当前)数据批次中的数据值的出现计数。换言之,系统构建所有个体项的临时直方图,即,系统对第一(当前)数据批次中的每个个体值的出现进行计数。通过控制每个数据批次的大小,可以保证存储器不会被耗尽。步骤401的输出是图3的左手侧面板中所示的信息。
在步骤402和步骤403中,系统确定针对第一(当前)数据批次的多粒度直方图。在步骤402中,系统确定针对当前数据批次中的最频繁数据值中的最多M个的出现计数信息。出现计数信标识最频繁的数据值及其出现计数。
在步骤403中,系统针对当前数据批次中的其余数据值生成具有第二数目(N)的柱的直方图。此处,可以将较不频繁的数据值(没有在步骤402中处理的)放置到N个柱中。备选地,如果在直方图中具有多余N个柱,则将N个最频繁的柱保留在直方图中,并且将其余的数据值作为噪声来处理。
针对第一数据批次,可以在填充柱之前确定用于多粒度直方图的最优柱宽度。这可以通过迭代地比较各种备选的熵来进行,各种备选的熵将在下文中更加详细地描述。备选地,可以使用预定的柱宽度。例如在预先知道数据的分布的情况下,这可以是可能的。
在与第一数据批次无关而是与后续数据批次相关的步骤404和步骤405中,将当前数据批次的多粒度直方图合并到与该数据集的较早数据批次相对应的多粒度直方图中。图5及以下相关联的描述更加详细地讨论了该合并。在步骤404中,系统将当前数据批次的出现计数信息(与前M个最频繁的值有关的信息)与较早处理的数据批次的合并的出现计数信息(也是与前M个最频繁的值有关的信息)合并。由此,根据当前批次和较早批次中的数据分布,合并的出现计数信息至少临时包含在针对当前数据批次和较早数据批次的出现计数信息中指示的值中的每一个。如果合并的出现信息中的频率值的数目增加得过快,则可能需要在(可选的)步骤406(下文详述)中对合并的多粒度直方图进行重新分组。
在步骤405中,系统将当前数据批次的直方图合并到与较早处理的数据批次相对应的合并的直方图中。由此,将两个多粒度直方图的柱合并到一起。如果数据分布随着数据批次而改变,则合并的直方图中的柱的数目有可能变为大于N。在这种情况下,可以在可选的步骤406(下文详述)中调整柱宽度。
在确定出现信息的过程期间的任何时候,仅存在两个多粒度直方图的实例:所有的先前数据批次的合并的多粒度直方图和正在针对当前批次进行计数的多粒度直方图。
在步骤407中,系统检查是否已经处理了数据集的所有数据批次。如果仍存在要处理的数据批次,则该方法继续从步骤401开始,并且将下一数据批次作为当前数据批次来处理,直到按照批次处理了要被编码的数据集为止。在已经处理了最后一个数据批次之后,系统进行到步骤408,并且基于与数据集相对应的合并的频率计数信息和与数据集相对应的合并的直方图,来确定用于数据集的编码方案。在步骤409中,系统继而使用该编码方案来编码数据集。通常,词典编码用于最频繁的值,前缀-偏移编码用于柱中的值,并且在适当的情况下,偏移编码用于噪声(如果可用)。
可以理解,根据本发明的所有方法的步骤的顺序不需要按照图4所示出的那样,并且某些步骤是可选的。作为示例,如果可选的重新分组步骤406不需要,则可以将其省略,或者可以在已经处理了整个数据集之后执行重新分组。
当前缀-偏移编码用于柱中的值时,直方图中的柱的宽度被定义为前缀-偏移编码中的偏移比特的数目。柱宽度对编码效率的影响是双重的。一方面,较短的偏移比特(即,较小的柱宽度)将造成针对柱中包含的值的更加有效的编码,这是前缀-偏移编码的经证实的特性。另一方面,较小的柱宽度意味着每个柱可以包含较少的区别值,并且需要较大数目的柱,该数目具有上限N。这也可能造成溢出,最不频繁的值被作为噪声计数。
可以通过用于第一数据批次的优化过程,或者通过在单独的预处理步骤中采样要被编码的整个数据集来自动地检测最优柱宽度。总体的目标是最小化前缀-偏移码的大小,该前缀-偏移码包括在词典的指定最大大小约束下的用于前缀比特和偏移比特的词典码。
可以通过比较各种可能的柱宽度而导出产生最佳编码效率的最优柱宽度。简化的算法可以描述如下:
输入:
M:=直方图中的项的最大数目
N:=直方图中的柱的最大数目
V:=数据值的集合
Z:=按照比特的数据大小
输出:
best#OffsetBits:=偏移比特的最优数目
算法:
该算法在偏移比特的不同数目上循环,并且因此构建直方图。通过比较不同直方图的平均编码大小来确定最优柱宽度。简单的算法可以在多个方面进行改进:首先,由于柱宽度不影响作为项计数的值的编码效率,所以仅需要计算作为柱和噪声计数的值而不是整个直方图的平均编码大小;其次,在#offsetBits上循环的较大步骤大小可以应用于类似于串的数据类型。
在不允许卸载要被作为噪声计数的最不频繁的值的情况下,柱宽度对编码效率的影响是确定的,并且由用于前缀比特的词典的大小而单独限定。可以利用这样的搜索来简化以下算法:柱宽度从最大可能值逐渐减小,并且在所需要的柱的数目超过预先配置的最大值时停止。另一种类似的情形是当以非压缩的格式存储噪声时。
采样方法构造了采样数据的集合的完全直方图(每个区别值的出现),并且继而通过向完全直方图应用上述算法来计算最优柱宽度。采样数据的选择可以是任意的,包括但不限于随机采样。也有可能对数据流进行特别处理,以使得第一批次包含采样数据。在这种情况下,使用采样和使用第一批次的数据没有区别。否则,根据采样数据来计算柱宽度被视作预处理步骤,并且在柱宽度计算之后将抛弃采样数据。
在确定用于初始数据批次的柱宽度或者通过采样而确定柱宽度之后,针对所有/后续批次使用相同的柱宽度(偏移长度)以允许有效的合并。接下来参照图5来讨论合并两个多粒度直方图的细节。
将当前数据批次的计数合并到已经处理的数据批次的计数中(参见图5):项与项、柱与柱、以及噪声与噪声(如果有的话)。对于具有相同值的项以及对于具有相同前缀比特的柱,将其计数相加。
需要向合并的多粒度直方图应用项和柱的最大数目的限制M和N。这可能需要对多粒度直方图进行重新分组,即,对合并的多粒度直方图的项和柱进行重新分类,并且将超过限制M的最频繁的项转移到柱中,并且去除将被作为噪声计数的过多的柱(多余N)(在允许的情况下)。
然而,如果在每次合并之后执行重新分组,则潜在地在随后出现的值上引入了偏置。实际上,在数据没有时间倾斜(time-skewed)的通常情况下,每个批次的多数频繁值或多或少是相同的,并且由此,合并的多粒度直方图没有比原始的直方图大很多。在这样的通常情况下,优选的是最后,即,在合并了所有数据批次的多粒度直方图之后,执行一次重新分组。通过这种方式,可以排除包括在出现计数信息中的那些项,因为那些项仅偶尔在一个或几个柱中出现。
当要被编码的数据是时间相关的,并且在每个新的数据批次中出现很多不同的数据值时,多粒度直方图的大小可能增长过快。在非常糟的情况下,可能出现项(M*批次)和柱(N*批次)的数目的线性增长。为了解决这种情况,可以具有对合并的直方图中的项和柱的数目(即,x*M和x*N)施加另一上限,并且在一旦超过该另一上限时就执行重新分组的均和解决方案。
当噪声不被允许时,合并的多粒度直方图可以包含多于N个柱。在这样的情况下,调整(增加)偏移比特的长度S并且重新组织柱,直到柱的数目不超过N为止是必要的。除了该重新组织过程应用于柱而不是个体值以外,该方法在本质上与如上所述的确定最优柱宽度相同。
上述多粒度直方图包含针对出现计数的三个(如果噪声不被允许则是两个)粒度水平。通过允许多个柱水平可以具有更多的粒度水平,每个水平的最大柱的数目和柱宽度递增。
如上所述,项、柱和噪声构成了从最精细到最粗糙的用于出现计数的三个不同的粒度水平。可以添加具有不同的柱宽度的柱的附加层的另外粒度水平。柱宽度应当被布置为使得较精细的粒度层(即,较小的柱宽度)应当放置在层级中较高的位置,这意味着更接近于个体值出现计数。一般而言,较高的层应当比较低的层包含更频繁的值。实际上,可以递归地进行柱的多个层的形成,这一过程类似于根据项形成柱的过程。作为示例,考虑包括具有较精细粒度的柱层L1和具有较粗糙粒度的L2的两个层的直方图。直方图的构造开始于个体值计数,并且按照与上述相同的过程,将值分为在柱中计数的不频繁项和频繁项,此时具有L1柱。当将L1柱减小至其最大大小时,较不频繁的过多的柱以较粗糙的粒度(这也意味着较大的容量)在L2柱中进行计数。当针对所有的柱水平预定义柱的宽度时,应用这一过程。也可以通过比较不同备选的熵来确定多个柱水平的最优宽度的自动确定,而不管具有在多个层上的嵌套循环的简单的暴力猜解(brut-force)算法可能由于过多的可能组合而遭受较差的性能。然而,这可以通过应用很多运行较快的用于优化问题的公知的算法或者试探而得到解决。
图6示出了作为可以实现本发明的系统的一个示例的数据处理系统600的示意性框图。数据处理系统600经由其输入框610从数据源602接收要被编码的数据。数据源602例如可以是磁盘或者数据库。
数据处理系统600具有可用于存储和处理要被编码的数据的出现计数信息的有限的存储器量。在分割框620中,将所接收的数据流分割为批次。作为一个示例,数据处理系统600被示出为具有用于支持并行处理的两个批次直方图框630a、630b。批次直方图框可以驻留在各种计算单元上,或者可以仅具有一个批次直方图框存在于数据处理系统600中。批次直方图框提供了:功能632a、632b,用于确定数据批次中的数据值的出现;以及功能634a、634b,用于确定数据批次中的最多第一数目(M)的最频繁数据值的出现计数信息,以及针对数据批次中的其余数据值生成具有第二数目(N)的柱的直方图。
数据处理系统600被示出为具有一个合并框640,该合并框640可操作地连接至批次直方图框630a、630b。也可以通过数据处理系统600的计算单元的数目,以分布式的方式提供合并功能。合并框640提供用于将出现计数信息的两个实例合并到一起以及用于将直方图的两个实例合并到一起的功能。合并框640的最终输出是反映要被编码的整个数据集的多粒度直方图642。
图7示出了数据处理系统600的某些进一步细节,尤其有关于多粒度直方图642如何用于编码数据。作为编码数据的准备,多粒度直方图642用作词典构建的输入。针对每个频率个体值并且针对每个前缀比特,使用任何适当的词典编码方法来创建词典条目。图7示出了用于最频繁的值和用于前缀值的单独的多个词典710,但是具有用于该值和前缀比特的一个共同词典的简化配置也可以操作。继而将所导出的一个或多个词典710用于编码和解码值。图7的右侧表示使用多粒度直方图642和从其导出的词典710来编码数据的框图。将要被编码的数据被馈送至输入框610中,该数据第二次从外部数据源602流入,或者来自在直方图构建期间的数据馈送期间存储数据的本地数据存储。输入框610将每个个体值转发至编码框720,该编码框720包含并且管理用于编码的子组件。编码管理器首先尝试在框722中确定:是否可以通过查找词典710中的值而对当前值进行词典编码。如果找到了该值,则在框724中,将利用找到的词典码来对该值进行编码。否则,编码管理器720将测试前缀-偏移编码的可应用性。其通过根据直方图642中使用的偏移比特的数目划分前缀和偏移比特来进行,并且继而尝试在词典710中查找前缀比特。成功的查找将产生前缀码,并且将通过前缀-偏移编码组件726将该前缀码与偏移比特连接。否则,如果已经在直方图642中定义了用于偏移编码的共同基本值,则将调用偏移编码组件728。可以将经编码的数据值(码)730保留在存储器(尤其是内存数据库)中,或者存储在永久存储装置740中。
数据的解码遵循类似的系统架构,但是应当将整个过程和组件的功能反转。
数据处理系统600可以是数据库,例如,内存数据库。作为另一示例,数据处理系统600可以是数据仓库系统。作为又一示例,数据处理系统600可以是存储来自测量仪器的(通常是大量的)测量数据的系统。
其他示例是需要有效地存储或者传送大量(半)结构化数据的所有数据处理系统。此类数据处理系统的某些示例是备份、内容管理和归档解决方案,其可以基于文件系统而不是数据库。而且,在分布式系统的上下文中,可以在通信系统中采用本发明来减少要通过线路传送的数据的量。另一种可能的使用是从较大的数据库中提取数据的子集,使用这里所述的技术压缩数据,并且将其存储在个人使用的移动设备上(而不需要使用数据库来访问数据)。
图6中的系统作为其中可应用本发明的计算和/或存储系统的一个示例而给出。可以理解,本发明可以应用于其中需要将被压缩或者编码的数据的出现信息的任何计算或者存储系统。
本发明的实施方式适用于使用多粒度直方图对来自具有大基数的大量数据的值的出现进行计数,多粒度直方图在给定存储器约束下保留了尽可能足够多的出现概率信息,并且允许应用混合压缩方法来实现较好的压缩效率。本发明的实施方式设法解决在不具有值的完整出现计数的情况下,与将所有值分类为频繁的值、较不频繁的值和最不频繁的值的需要的冲突。
在此使用的术语仅是为了描述特定实施方式的目的,而并非旨在限制本发明。如在此使用的,除非上下文另外明确指出,单数形式“一个”、“一种”和“该”旨在也包括复数形式。还可以理解,当在本说明书中使用术语“包括”和/或“包含”时,指定所陈述的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或者附加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其组合。
下文所附权利要求中的所有装置或者步骤加功能元件的相应结构、材料、动作和等同物旨在包括如具体要求保护的与用于执行其他要求保护的元件相结合的功能的任何结构、材料或者动作。已经为了示意和描述的目的呈现了对本发明的描述,但是本发明并非旨在穷尽或者被限制于所公开形式中的本发明。在不脱离本发明的范围和精神的情况下,多种修改和变形对本领域技术人员将是易见的。选择和描述了实施方式以便最佳地解释本发明的原理和实际应用,并且使得本领域其他技术人员能够理解本发明的具有适于所预期的特定使用的各种修改的各种实施方式。
本领域技术人员可以理解,本发明的方面可以实现为系统、方法或者计算机程序产品。因此,本发明的方面可以采用完全硬件的实施方式、完全软件的实施方式(包括固件、驻留软件、微代码等)或者组合了软件和硬件方面的实施方式,其在此通常可以称为“电路”、“模块”或者“系统”。另外,本发明的方面可以采用在一个或多个计算机可读介质中实现的计算机程序产品的形式,所述一个或多个计算机可读介质具有实现在其上的计算机可读程序代码。
可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电子、磁、光、电磁、红外或者半导体系统、装置或者设备或者上述的任何适当组合。计算机可读存储介质的更特定示例(非穷尽的列举)将包括以下项:具有一个或多个线路的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪速存储器)、光纤、便携式紧凑光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或者上述的任何适当组合。在本文档的上下文中,计算机可读存储介质可以是可以包含或者存储用于由指令执行系统、装置或者设备使用或者与其相结合使用的程序的任何有形介质。
计算机可读信号介质可以包括例如在基带中或者作为载波的一部分具有实现在其中的计算机可读程序代码的传播数据信号。此类传播信号可以采用各种形式中的任何形式,包括但不限于电磁、光或者其任何适当的组合。计算机可读信号介质可以是:并非计算机可读存储介质并且可以传送、传播或者发送用于由指令执行系统、装置或者设备使用或者与其结合使用的程序的任何计算机可读介质。
可以使用任何适当的介质来传输实现在计算机可读介质上的程序代码,适当的介质包括但不限于无线、有线、光纤电缆、RF等或者以上的任何适当组合。
用于实现本发明的方面的操作的计算机程序代码可以按照一种或多种编程语言的任何组合来编写,编程语言包括面向对象的编程语言(诸如Java、Smalltalk、C++等)和传统的过程编程语言(诸如“C”编程语言或者类似的编程语言)。程序代码可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或者服务器上执行。在后一场景中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或者广域网(WAN))连接至用户的计算机,或者可以(例如通过使用因特网服务提供商的因特网)连接至外部计算机。
以上参照根据本发明的实施方式的方法、装置(系统)和计算机程序产品的流程图示图和/或框图描述了本发明的方面。可以理解,可以通过计算机程序指令来实现流程图示图和/或框图中的每个框或者流程图示图和/或框图中的框的组合。可以向通用计算机、专用计算机或者其他可编程数据处理装置的处理器提供这些计算机程序指令,以产生机器,从而使得经由计算机或者其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。
这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指示计算机、其他可编程数据处理装置或者其他设备以特定方式运行,以使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个或多个框中指定的功能/动作的指令的产品。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或者其他设备上,以使得在计算机、其他可编程装置或者其他设备上执行一系列操作步骤,从而使得在计算机或者其他可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个框中指定的功能/动作的过程。
附图中的流程图和框图示出了根据本发明的各种实施方式的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或者框图中的每个框可以表示代码的模块、段或者部分,所述代码包括用于实现所指定的逻辑功能的一个或多个可执行指令。应当注意,在一些备选实现中,在框中标注的功能可以不按照附图中提到的顺序而发生。例如,根据所涉及的功能,连续示出的两个框实际上可以基本上并发地执行,或者框有时可以按照相反的顺序执行。还应当注意,可以通过专用的基于硬件的系统来实现框图和/或流程图示图的每个框、以及框图和/或流程图示图的框的组合,所述专用的基于硬件的系统执行所指定的功能或者动作,或者专用硬件和计算机执行的组合。
在所附权利要求中,计算机化方法是指通过计算系统执行的其步骤的方法,计算系统包含一个或多个处理器、存储器装置和存储装置的适当组合。
虽然上文已经参照了本发明的特定实施方式,但是本领域技术人员可以理解,可以在不脱离本发明的原理和精神的情况下对这些实施方式进行改变,本发明的范围由所附权利要求限定。

Claims (14)

1.一种用于生成数据值的出现数据以用于支持数据集编码的计算机化方法,所述方法包括:
确定当前数据批次中的数据值的出现;
确定针对所述当前数据批次中的至多第一数目的最频繁的数据值的出现计数信息,所述出现计数信息标识所述最频繁的数据值及其出现计数;
针对所述当前数据批次中的其余数据值生成具有第二数目的柱的至少第一直方图;
将所述当前数据批次的所述出现计数信息合并到较早处理的数据批次的合并的出现计数信息中;
将所述当前数据批次的所述至少第一直方图合并到与较早处理的数据批次相对应的合并的直方图中;
将下一数据批次作为当前数据批次来处理,直到按批次处理了要被编码的所述数据集为止。
2.根据权利要求1所述的方法,包括:至少基于与所述数据集相对应的合并的出现计数信息以及与所述数据集相对应的合并的直方图,来确定用于所述数据集的编码方案。
3.根据权利要求1或者2所述的方法,包括:在处理所述当前数据批次时,确定针对所述至少第一直方图的柱的宽度。
4.根据权利要求3所述的方法,其中前缀-偏移编码被用于编码直方图柱中的值,并且所述柱的宽度等于偏移比特的数目,前缀-偏移编码的大小是偏移比特的数目和前缀码的大小的和,所述方法包括:在用于所述当前数据批次的前缀码词典的给定最大大小的约束下,通过最小化所述前缀-偏移编码的大小来确定偏移比特的数目。
5.根据权利要求3所述的方法,包括:对所述数据集进行采样,以用于确定所述柱的宽度。
6.根据权利要求1或者2所述的方法,包括:通过执行以下步骤中的至少一个来对所述合并的出现计数信息和所述合并的直方图进行重新分组:
将与所述合并的出现计数信息相关联的所述最频繁的数据值中的至少一个转移到所述合并的直方图中;
如果所述合并的直方图中的柱的数目大于所述第二数目,则调整所述合并的直方图中的柱的宽度;以及
移除所述合并的直方图的至少一个柱,并且将与所述至少一个柱相关联的值作为噪声来计数。
7.根据权利要求1或者2所述的方法,包括:
为利用所述合并的出现计数信息跟踪的出现计数所针对的数据值的数目提供第一预定义阈值,并且为所述合并的直方图中的柱的数目提供第二预定义阈值,以及
响应于所述第一预定义阈值和所述第二预定义阈值中的至少一个被超过,将所述合并的出现计数和所述合并的直方图重新分组为至多所述第一数目的频繁数据值和具有所述第二数目的柱的直方图。
8.根据权利要求1或者2所述的方法,包括:
将字典编码用于与所述合并的出现计数信息相关联的值;以及
将前缀-偏移编码用于与所述至少第一直方图相关联的值。
9.根据权利要求1或者2所述的方法,包括:
与所述至少第一直方图和所述合并的直方图单独地维护最不频繁的值;以及
使用以下格式中的至少一种来存储所述最不频繁的值:未压缩格式、偏移编码。
10.根据权利要求1或者2所述的方法,包括:使用直方图的层级,其中与较频繁的值相关联的直方图的柱宽度小于与较不频繁的值相关联的直方图的柱宽度。
11.一种数据处理系统,包括:
输入装置,用于接收要被编码的数据集;
分割装置,用于将要被编码的数据集分割为数据批次;
批次直方图装置,用于确定数据批次中的数据值的出现,所述批次直方图装置适于:
确定针对所述数据批次中的至多第一数目的最频繁数据值的出现计数信息,所述出现计数信息标识所述最频繁的数据值及其出现计数;
针对所述数据批次中的其余数据值生成具有第二数目的柱的至少第一直方图;
合并装置,可操作地连接至所述批次直方图装置,用于将所述数据批次的所述出现计数信息合并到至少一个另外的数据批次的合并的出现计数信息中,以及用于将所述数据批次的所述至少第一直方图合并到与所述至少一个另外的数据批次相对应的合并的直方图中。
12.根据权利要求11所述的数据处理系统,还包括:
编码方案装置,用于至少基于与所述数据集相对应的合并的出现计数信息以及与所述数据集相对应的合并的直方图,来确定用于所述数据集的编码方案。
13.根据权利要求12所述的数据处理系统,还包括:
编码装置,用于根据所述编码方案来编码所述数据集。
14.根据权利要求11至13中任一项所述的数据处理系统,包括多个计算单元,并且所述批次直方图装置在所述计算单元中以分布式方式提供。
CN201080059819.5A 2009-12-29 2010-12-07 用于数据压缩的数据值出现信息 Expired - Fee Related CN102687404B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09180917 2009-12-29
EP09180917.8 2009-12-29
PCT/EP2010/069086 WO2011080030A2 (en) 2009-12-29 2010-12-07 Data value occurrence information for data compression

Publications (2)

Publication Number Publication Date
CN102687404A CN102687404A (zh) 2012-09-19
CN102687404B true CN102687404B (zh) 2015-07-22

Family

ID=44121629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080059819.5A Expired - Fee Related CN102687404B (zh) 2009-12-29 2010-12-07 用于数据压缩的数据值出现信息

Country Status (6)

Country Link
US (1) US8653993B2 (zh)
CN (1) CN102687404B (zh)
DE (1) DE112010004531B4 (zh)
GB (1) GB2490068B (zh)
TW (1) TW201143305A (zh)
WO (1) WO2011080030A2 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2511834A1 (en) * 2011-04-11 2012-10-17 Alcatel Lucent Method of encoding a data identifier
CN104216914B (zh) 2013-06-04 2017-09-15 Sap欧洲公司 大容量数据传输
US9189520B2 (en) 2013-06-24 2015-11-17 Sap Se Methods and systems for one dimensional heterogeneous histograms
CN104714976B (zh) * 2013-12-17 2018-08-24 阿里巴巴集团控股有限公司 数据处理方法及设备
US9870382B2 (en) 2014-03-25 2018-01-16 Sap Se Data encoding and corresponding data structure
WO2015145626A1 (ja) * 2014-03-26 2015-10-01 株式会社日立製作所 時系列データ管理方法及び時系列データ管理システム
GB201410028D0 (en) 2014-06-05 2014-07-16 Soletanche Freyssinet Sas Spectral data compression
US10726005B2 (en) 2014-06-25 2020-07-28 Sap Se Virtual split dictionary for search optimization
US10282874B2 (en) 2014-09-17 2019-05-07 Circonus, Inc. Efficient time-series histograms
US10027346B2 (en) * 2015-05-11 2018-07-17 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that maintains sorted symbol list concurrently with input block scanning
US10339121B2 (en) * 2015-08-06 2019-07-02 Sap Se Data compression
GB2544083B (en) * 2015-11-05 2020-05-20 Advanced Risc Mach Ltd Data stream assembly control
US10922347B2 (en) * 2016-01-28 2021-02-16 Hyland Switzerland Sàrl Hierarchical dictionary with statistical filtering based on word frequency
CN107204776A (zh) * 2016-03-18 2017-09-26 余海箭 一种基于浮点数情况的Web3D数据压缩算法
US10235100B2 (en) 2016-08-23 2019-03-19 Sap Se Optimizing column based database table compression
JP6629165B2 (ja) * 2016-10-07 2020-01-15 株式会社東芝 データ圧縮装置、及び、データ伸張装置、並びに、データ圧縮伸張装置
US10628442B1 (en) 2018-11-09 2020-04-21 Hewlett Packard Enterprise Development Lp Histograms based on varying data distribution
US11561797B2 (en) * 2019-08-19 2023-01-24 Ati Technologies Ulc Decompression engine for decompressing compressed input data that includes multiple streams of data
US11210290B2 (en) * 2020-01-06 2021-12-28 International Business Machines Corporation Automated optimization of number-of-frequent-value database statistics
CN116388768B (zh) * 2023-06-06 2023-08-22 上海海栎创科技股份有限公司 一种信号数据的压缩方法和系统
CN117439616B (zh) * 2023-12-21 2024-03-08 大连凌一科技发展有限公司 基于Linux系统的数据沙盒实现方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311931A (zh) * 2007-05-21 2008-11-26 Sap股份公司 基于值的出现的表压缩

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4290470B2 (ja) * 2002-05-09 2009-07-08 パナソニック株式会社 受信品質を推定する受信方法および受信装置と、この受信装置を利用した通信システム
JP4577574B2 (ja) * 2006-02-07 2010-11-10 日本電気株式会社 データ送信装置及びデータ受信装置並びにデータ送信方法及びデータ受信方法
US7339501B2 (en) * 2006-03-28 2008-03-04 International Business Machines Corporation Method and apparatus for recognition and tagging of multiple layered entropy coding system
JP4517306B2 (ja) * 2007-05-17 2010-08-04 ソニー株式会社 情報処理装置および方法
US7609179B2 (en) 2008-01-08 2009-10-27 International Business Machines Corporation Method for compressed data with reduced dictionary sizes by coding value prefixes
US7827187B2 (en) 2008-04-04 2010-11-02 International Business Machines Corporation Frequency partitioning: entropy compression with fixed size fields
TW201141081A (en) 2009-12-29 2011-11-16 Ibm Prefix-offset encoding method for data compression

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311931A (zh) * 2007-05-21 2008-11-26 Sap股份公司 基于值的出现的表压缩

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IBM Research Report,Efficient Index Compression in DB2 LUW;B.Bhattacharjee et al;《Computer Science》;20090623;全文 *
Teradata Multi-Value Compression;Mark Morris;《Data Warehousing》;20070731;全文 *

Also Published As

Publication number Publication date
WO2011080030A2 (en) 2011-07-07
US20130033389A1 (en) 2013-02-07
CN102687404A (zh) 2012-09-19
US8653993B2 (en) 2014-02-18
WO2011080030A3 (en) 2011-08-25
GB2490068A (en) 2012-10-17
TW201143305A (en) 2011-12-01
DE112010004531T5 (de) 2012-08-30
DE112010004531B4 (de) 2016-11-10
GB201213200D0 (en) 2012-09-05
GB2490068B (en) 2015-07-22

Similar Documents

Publication Publication Date Title
CN102687404B (zh) 用于数据压缩的数据值出现信息
US10140357B2 (en) Anomaly, association and clustering detection
US10200060B1 (en) Content-aware lossless compression and decompression of floating point data
EP3297285B1 (en) Digital image recompression
US8615138B2 (en) Image compression using sub-resolution images
CN102017634A (zh) 重新排序的变换系数的多级表示
CN104283567A (zh) 一种名称数据的压缩、解压缩方法及设备
JP4893957B2 (ja) 符号化装置、復号化装置、符号化方法及びプログラム
JP2003218703A (ja) データ符号化装置及びデータ復号装置
CN110162290B (zh) 一种针对OLED屏DeMURA数据的压缩方法
KR20190038747A (ko) 데이터 인코딩 방법, 장치 및 저장매체
KR20190038746A (ko) 데이터 인코딩 방법, 장치 및 저장매체
KR20090025886A (ko) 데이터 압축 및 복원 장치 및 방법
JP4893956B2 (ja) 符号化装置、復号化装置、符号化方法及びプログラム
WO2013087250A1 (en) Dynamic anomaly, association and clustering detection
Mohideen et al. A systematic evaluation of coding strategies for sparse binary images
CN116208171A (zh) 数据压缩和解压缩方法、装置、电子设备及存储介质
US20090112900A1 (en) Collaborative Compression
Niemi et al. Interpolative coding as an alternative to arithmetic coding in bi-level image compression
KR20220089211A (ko) 문자 빈도 기반 서열 재정렬을 통한 fastq 데이터 압축 방법 및 장치
CN107026652B (zh) 基于分区的正整数序列压缩方法
Koc et al. A new context-model for the pseudo-distance technique in lossless compression of color-mapped images
Williams Performance Overhead of Lossless Data Compression and Decompression Algorithms: A Qualitative Fundamental Research Study
Hernández-Cabronero et al. Standard and specific compression techniques for DNA microarray images
US8990173B2 (en) Method and apparatus for selecting an optimal delete-safe compression method on list of delta encoded integers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150722

Termination date: 20181207