CN105191144B - 压缩装置、压缩方法、解压装置、解压方法以及信息处理系统 - Google Patents

压缩装置、压缩方法、解压装置、解压方法以及信息处理系统 Download PDF

Info

Publication number
CN105191144B
CN105191144B CN201380074817.7A CN201380074817A CN105191144B CN 105191144 B CN105191144 B CN 105191144B CN 201380074817 A CN201380074817 A CN 201380074817A CN 105191144 B CN105191144 B CN 105191144B
Authority
CN
China
Prior art keywords
symbol
data
compressed
compressed encoding
compression
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.)
Active
Application number
CN201380074817.7A
Other languages
English (en)
Other versions
CN105191144A (zh
Inventor
片冈正弘
坂井正德
大田贵文
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN105191144A publication Critical patent/CN105191144A/zh
Application granted granted Critical
Publication of CN105191144B publication Critical patent/CN105191144B/zh
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/146Coding or compression of tree-structured data
    • 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/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3071Prediction
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • 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/70Type of the data to be coded, other than image and sound
    • H03M7/705Unicode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明涉及压缩装置、压缩方法、解压装置、解压方法以及信息处理系统。根据一个侧面,目的在于在通过符号来表示构成数据的单位间的划分的数据的压缩中提高压缩率。压缩装置包含:存储部,其将与构成数据的要素之一的第一要素和在上述数据中表示上述要素间的划分的第一划分符号的组合对应的一个压缩编码与上述第一要素建立对应关系地进行存储;获取部,其从上述存储部获取与从上述数据读出的上述第一要素建立对应关系地存储的上述压缩编码;以及写入部,其将获取的上述压缩编码写入对上述数据的压缩数据进行储存的储存区域。

Description

压缩装置、压缩方法、解压装置、解压方法以及信息处理系统
技术领域
涉及数据的压缩技术或者解压技术的至少一方。
背景技术
根据使用了哈夫曼编码、算术压缩等可变长度压缩编码的压缩算法,使用与压缩对象数据内的字符代码对应的压缩编码来生成压缩数据。另外,有利用哈夫曼编码等压缩算法,分配与作为字符代码的组合的单词建立有对应关系的压缩编码来进行压缩数据的生成的压缩技术(例如,参照专利文献1等)。
专利文献1:日本特开2010-93414号公报
在特定的语言(例如,英语、德语等)中,根据构成文档的字符串中所包含的空格符号,来表示作为构成文档单位的单词的划分。在上述压缩算法中,对包含多个字符的单词分配一个压缩编码,另一方面对空格符号也分配压缩编码。由于与单词等同地对空格符号也分配压缩编码,所以压缩所使用的压缩编码数目增多,而成为压缩率降低的重要因素。
发明内容
根据本发明的一个侧面,目的在于在用符号来表示构成数据的单位间的划分的数据的压缩中提高压缩率。
根据一个实施方式,压缩装置包含:存储部,其将一个压缩编码与第一要素建立对应关系地存储,所述一个压缩编码与构成数据的要素之一的第一要素和在上述数据中表示上述要素间的划分的第一划分符号的组合对应;获取部,其从上述存储部获取与从上述数据读出的上述第一要素建立对应关系地存储的上述压缩编码;以及写入部,其将获取的上述压缩编码写入对上述数据的压缩数据进行储存的储存区域。
根据一个实施方式,解压装置包含:存储部,其将与构成数据的要素之一的第一要素和在上述数据中表示上述要素间的划分的第一划分符号的组合与一个压缩编码建立对应关系地存储;获取部,其从上述存储部获取与从对上述数据进行压缩而得到的压缩数据中读出的上述压缩编码对应的上述组合;以及写入部,其将获取的上述组合所包含的上述第一要素以及上述第一划分符号双方写入对上述压缩数据进行解压而得到的解压数据的储存区域。
根据一个实施方式,信息处理系统包含存储装置和信息处理装置,信息处理装置包含:存储部,其存储对构成数据的要素之一的第一要素和在上述数据中表示上述要素间的划分的划分符号的组合与一个压缩编码建立有对应关系的转换词典;接收部,其从上述存储装置接受对数据进行压缩而得到的压缩数据;第一获取部,其从上述转换词典获取与从上述压缩数据读出的上述压缩编码对应的上述组合;第一写入部,其将获取的上述组合所包含的上述第一要素以及上述划分符号双方写入对上述压缩数据进行解压而得到的解压数据的第一储存区域;处理部,其对写入上述第一储存区域的上述解压数据进行信息处理;第二获取部,其从上述转换词典获取与从进行了上述信息处理的上述解压数据读出的上述第一要素建立对应关系地存储的上述压缩编码;第一写入部,其将获取的上述压缩编码,写入储存上述数据的压缩数据的第二储存区域;以及发送部,其将写入上述第二储存区域的压缩数据发送至上述存储部。
根据一个实施方式,计算机可读取的存储介质存储一种压缩词典数据,该压缩词典数据具有按照数据要素的每个种类包含将与在数据中表示要素间的划分的划分符号和被上述划分符号划分的一个数据要素的组合对应的一个压缩编码与上述数据要素建立有对应关系的压缩处理用信息的结构,且是在计算机的压缩处理中,基于上述一个数据要素来参照上述一个压缩编码的上述压缩词典数据。
根据一个实施方式,计算机可读取的存储介质存储一种解压词典数据,该解压词典数据具有按照数据要素的每个种类包含将在数据中表示要素间的划分的划分符号和被上述划分符号划分的一个数据要素的组合同与上述组合对应的一个压缩编码建立有对应关系的解压处理用信息的结构,且是在计算机的解压处理中,基于上述一个压缩编码来参照上述组合的上述解压词典数据。
根据一个侧面,能够提高使用空格符号的文档数据的压缩效率。
附图说明
图1表示压缩词典的例子。
图2表示朝向压缩编码的转换例。
图3表示朝向解压数据的转换例。
图4表示功能模块的结构例。
图5表示压缩功能的处理步骤例。
图6表示压缩词典生成的处理步骤例。
图7表示统计处理的处理步骤例。
图8表示统计表T1的数据结构的例子。
图9表示压缩数据生成处理的处理步骤例。
图10表示压缩数据生成处理的处理步骤例。
图11表示压缩词典的数据结构例。
图12表示解压功能的处理步骤例。
图13表示解压词典生成的处理步骤例。
图14表示解压数据生成处理的处理步骤例。
图15表示解压词典的数据结构例。
图16表示计算机1的硬件构成例。
图17表示通过计算机1动作的程序构成例。
图18表示使用了计算机1的系统构成例。
图19表示使用了计算机1的系统构成例。
图20表示压缩词典的数据结构例。
图21表示解压词典的数据结构例。
图22表示csv形式的数据结构的例子。
图23表示压缩词典的数据结构例。
图24是解压词典的数据结构例。
具体实施方式
以下示出实施方式。
[压缩编码的例子]
图1表示压缩词典的例子。压缩词典D0包含符号压缩词典D01以及符号串压缩词典D02。符号压缩词典D01示出表示字符、数字等符号的字符代码与压缩编码的对应关系。符号串压缩词典D02示有表示单词、标签等符号串的字符代码串与压缩编码的对应关系。压缩词典D1包含符号压缩词典D11、符号串压缩词典D12以及控制符号压缩词典D13。符号压缩词典D11示有表示字符、数字等符号的字符代码与压缩编码的对应关系。符号串压缩词典D12示有表示单词、标签等符号串以及空格符号的组合的字符代码串与压缩编码的对应关系。控制符号压缩词典D13示有表示删除之前的空格符号的意思的控制符号以及划分符号的组合的字符代码串与压缩编码的对应关系。
在图1所例示的压缩词典D0以及压缩词典D1中以建立有对应关系的方式登录有压缩编码和与压缩编码建立有对应关系的符号或者符号串。读出与被登录到压缩词典D0、压缩词典D1的符号或者符号串中,与从压缩对象的数据读出的符号或者符号串一致的符号或者符号串对应的压缩编码。
在本实施方式中,用“c′()”表示压缩词典D0所包含的压缩编码。在将压缩编码表示为“c′()”的情况下在圆括号内示有与压缩编码对应的符号或者符号串。另外,用“c()”表示压缩词典D1所包含的压缩编码。在压缩编码c()中,在圆括号内也示出与压缩编码对应的符号或者符号串。例如,与“a”对应的压缩编码被表示为“压缩编码c(a)”等,与“about△”对应的压缩编码被表示为“压缩编码c(about△)”等。空格符号是ASCII码系统中用0x20来表示的符号,在本实施方式的说明中被表示为“△”。
另外,详细内容后述,将删除之前解压的空格符号的意思的控制符号表示为“[-△]”。例如,压缩编码c([-△];)与控制符号[-△]以及划分符号“;”的组合对应。
压缩词典D0内的符号串压缩词典D02将压缩编码与符号串和空格符号的每一个建立对应关系,相对于此压缩词典D1内的符号串压缩词典D12不是符号串单体,而是将一个压缩编码与符号串和空格符号的组合建立对应关系。在使用压缩词典D1来进行压缩的情况下,通过与被登录于符号串压缩词典D12的组合对应的压缩编码对存在于压缩对象的数据内的符号串和空格符号的组合进行编码。
另一方面,符号串和空格符号以外的划分符号(逗号、冒号等)的组合未被登录到符号串压缩词典D11内。在压缩对象的数据内,不光存在空格符号后续的符号串,也有可能存在空格符号以外的划分后续的符号串。若对于逗号、冒号等与空格符号不同的划分符号每一个符号设置符号串压缩词典D12,则压缩编码的种类增大,其结果,压缩词典的数据尺寸增大。因此,表示删除空格符号的意思的控制符号被各单词通用使用。在压缩词典D1内的控制符号压缩词典D13中,控制符号和划分符号的组合与一个压缩编码建立对应关系。将压缩对象的数据内的符号串和空格符号以外的划分符号的组合与符号串压缩词典D12内的压缩编码、以及控制符号压缩词典D13内的压缩编码组合并进行编码。登录到控制符号压缩词典D13的压缩编码被登录到符号串压缩词典D12的各单词通用使用,与对各划分符号分别独立地设置符号串压缩词典D12相比,压缩词典的数据尺寸难以增大。
图2表示朝向压缩编码的转换例。在图2中示有英语例文E1“He△spent△much△time△for△talking△about△his△invention.”。在图2的例子中,是英语例文E1被储存于存储区域A1的状态。对于英语例文E1中的“about△”以及“invention.”的每一个部分,示有压缩编码的例(1)~(4)。压缩编码的例(1)以及例(3)是使用了压缩词典D0所包含的压缩编码的例子,压缩编码的例(2)以及例(4)是使用了压缩词典D1所包含的压缩编码的例子。
图2的例(1)表示基于压缩词典D0对英语例文E1中的“about△”的部分进行了压缩的情况的例子。分别与“about△”所包含的单词“about”以及符号“△”的对应的压缩编码c′(about)以及压缩编码c′(△)被用于压缩数据。即,在例(1)中,与英语例文E1中的“about△”的部分对应的压缩数据为“c′(about)c′(△)”。
图2的例(2)表示基于压缩词典D1对英语例文E1中的“about△”的部分进行了压缩的情况的例子。由于在符号串压缩词典D12中登录有单词“about△”,所以与英语例文E1中的“about△”的部分对应的压缩数据为“c(about△)”。在例(1)中“about△”的部分的压缩数据由两个压缩编码构成,相对于此在例(2)中构成“about△”的部分的压缩数据压缩编码是一个。
图2的例(3)表示基于压缩词典D0对英语例文E1中的“invention.”的部分进行压缩的情况的例子。分别与“invention.”所包含的单词“invention”以及符号“.”对应的压缩编码c′(invention)以及压缩编码c′(.)被用于压缩数据。即,在例(3)中与英语例文E1中的“invention.”的部分对应的压缩数据为“c′(invention)c′(.)”。
图2的例(4)表示基于压缩词典D1对英语例文E1中的“invention.”的部分进行了压缩的情况的例子。在符号串压缩词典D12中,登录有单词“invention△”。在被登录于符号串压缩词典D12的符号串的最后的空格符号“△”是“.”、“,”、“;”以及“:”等空格符号以外的划分符号的情况下,包含空格符号“△”的压缩编码(“invention△”)被用于压缩数据。即,即使压缩对象的部分是“invention.”,也使用压缩编码c(invention△)。在该情况下,还使用被登录于控制符号压缩词典D13的压缩编码c([-△].)。压缩编码c([-△].)是与控制符号[-△]和符号“.”的组合对应的压缩编码。控制符号[-△]是表示消除之前的空格的意思的控制符号。对表示控制符号的代码分配压缩对象的数据所使用的字符代码系统的空代码。
在例(4)中与英语例文E1中的“invention.”的部分对应的压缩数据为“c(invention△)c([-△].)”。在例(3)中例(4)中构成与“invention.”对应的压缩数据的压缩编码的数目都是2个。
在压缩对象的数据内使用空格符号的情况下,使用了压缩词典D1的一方与使用压缩词典D0相比压缩数据所包含的压缩编码的数目少。另一方面,在存在空格符号以外的划分符号的情况下不管是使用压缩词典D0还是使用压缩词典D1,压缩数据所包含的压缩编码的数目都相同。因此,若登录于符号串压缩词典D12的符号串以及空格符号的组合存在于压缩对象的数据内,则与压缩词典D0相比,使用了压缩词典D1的一方的压缩数据所使用的压缩编码的数目减少。
并且,包含与压缩对象的数据内的单词大致数目相同的空格符号。这是因为在用英语等语言描述的文档数据中,单词与单词的分界线用空格符号来表现。另一方面,空格符号以外的划分符号在一句话中被使用1次或2次左右。在文档数据中,与空格符号以外的划分符号相比使用空格符号的一方的频率较高。
另一方面,与压缩词典D0相比较,压缩词典D1内的压缩编码的数目多出控制符号压缩词典D13内的登录的压缩编码的数目,多。然而,控制符号压缩词典D13内的压缩编码的数目与字符的种类相比较压倒性地少。例如,即使进行与感叹号、逗号、句号、冒号、分号以及问号相关的压缩编码的向控制符号压缩词典D13的登录,被处理的压缩编码的种类的数目也仅增大6种。
即使压缩编码的种类增加了6种类,作为压缩词典整体,压缩编码长度也几乎不变。即使压缩词典内所包含的压缩编码的种类的数目加倍,对于各压缩编码而言压缩编码长度也仅增加1位左右。
因此,将以与单词数相同程度的频率存在的空格符号与单词组合登录于压缩词典一方,比由控制符号压缩词典D13增加所引起的压缩编码长度的增大影响大。因此,通过使用了压缩词典D1的压缩来预期压缩率的提高。
[解压步骤的例子]
图3表示朝向解压数据的转换例。在图3中例示有与作为在图2中使用压缩词典D1生成的压缩数据的例子的压缩编码“c(invention)c([-△].)”对应的解压数据的生成过程(1)~(5)。存储区域A3是储存压缩数据的存储区域。存储区域A5是储存与存储区域A3所储存的压缩编码对应的解压代码的缓冲区域。另外,存储区域A4是储存基于存储区域A5所储存解压代码生成的解压数据的存储区域。
图3的过程(1)表示存储区域A3储存有压缩数据的状态。首先,进行与压缩编码c(invention△)对应的解压代码的生成。图3的过程(2)是将在过程(1)中生成的解压代码写入了存储区域A4的状态。接下来,进行与压缩编码c([-△].)对应的解压代码的生成。图3的过程(3)表示写入了在过程(2)中生成的解压代码“[-△]”和“.”的状态。对存储区域A4进行基于存储区域A5所储存的控制符号[-△]的控制。图3的过程(4)表示进行了基于控制符号[-△]的控制的状态。在过程(3)的状态下接着“invention”存在的空格符号△,在过程(4)的状态下被删除。进一步,基于存储区域A5所储存的“.”进行朝向存储区域A4的写入。图3的过程(5)表示接着“invention”写入了“.”的状态。
在图3的过程(3)中,也可以不删除存储区域A4内的空格符号△,而是仅挪动朝向存储区域A4的写入位置。在该情况下将控制符号的后续的符号(在该情况下是“.”)覆盖在写入有空格符号的位置。
在上述过程中进行与控制符号[-△]相应的转换处理。通过使用控制符号[-△],消除由即使对末尾的空格符号不一致的符号串也使用与登录于压缩词典D1的符号串对应的压缩编码来生成压缩数据所引起的不匹配。
根据上述压缩处理,由于能够将压缩编码的种类的增大抑制为少量并且使压缩数据所使用的压缩编码的数目减少,所以压缩率提高。并且,在对通过上述压缩处理压缩的压缩数据进行解压情况下,由于成为处理对象的压缩编码的数目减少,所以预期解压速度的提高。
为了抑制与空格符号对应的压缩编码频繁出现在压缩数据内,考虑例如在压缩处理中最初不生成与空格符号对应的压缩编码,而是在解压处理中每次生成单词就自动生成空格符号。
然而,对于压缩词典中没有登录的单词而言,以字符为单位来进行压缩编码的生成处理。由于在压缩数据内包含表示单词的压缩编码和表示字符等符号的压缩编码,所以每次生成解压代码就进行与压缩编码对应的解压代码是单词还是符号的判定。另外,需要用于识别压缩编码是与单词对应的压缩编码还是与字符对应的压缩编码的结构。
并且,由于也可能有接着单词存在空格符号以外的划分符号的情况,所以在将解压代码判定为单词后,进行单词的下一个解压代码是否是空格符号以外的划分符号的判定。若进行该判定,则进行是否是跨过多个解压代码来配置空格符号的判定,所以判定的算法变得繁琐。其结果,解压速度恶化,并且需要对已经存在的解压程序的源代码进行大幅度的改变。
在本实施例的解压处理中,仅进行解压代码是否是控制符号的判定。例如,通过进行被写入寄存器的控制符号、和被写入从解压词典读出的解压代码的寄存器的判定处理来实现。避免对一个解压代码重复进行判定处理、通过复杂的算法来创建解压程序。另外,由于抑制跨过多个解压代码来进行处理,所以也能够抑制所使用的寄存器的数目。
[功能/处理步骤的说明]
图4表示功能模块的构成例。计算机1包含压缩部11、解压部12、生成部13、生成部14以及存储部15。存储部15例如存储压缩对象的文件F1、压缩文件F2、解压文件F3、压缩词典D2、解压词典D3等。另外,存储部15例如存储压缩词典D2、解压词典D3的生成所使用的单词一览表L1。单词一览表L1是分配压缩编码的对象的单词组的一览表。另外,存储部15设置存储区域A1、A2、A3、A4以及A5等存储区域,作为压缩部11、解压部12、生成部13以及生成部14的处理的工作区域来使用。压缩部11执行存储部15所存储的文件F1的压缩处理,并生成压缩文件F2。解压部12执行存储部15所存储的压缩文件F2的解压处理,并生成解压文件F3。生成部13生成压缩部11的压缩处理中所使用的压缩词典D2。生成部14生成在解压部12的解压处理中所使用的解压词典D3。
压缩部11包含控制部111、检索部112、读出部113以及写入部114。控制部111控制检索部112、读出部113以及写入部114,来执行文件F1的压缩处理。控制部111将文件F1加载至存储区域A1。读出部113从文件F1读出数据。检索部112对读出部113读出的数据,进行压缩词典D2的检索。写入部114将与检索部112的检索结果相应的压缩编码写入存储区域A2。控制部111进行读出部113的读出位置、写入部114的写入位置等的管理,例如,使读出部113、写入部114对文件F1所包含的符号或者符号串执行依次处理。另外,控制部111基于存储区域A2所储存的压缩数据生成压缩文件F2,并将压缩文件F2储存至存储部15。
解压部12包含控制部121、检索部122、读出部123以及写入部124。控制部121控制检索部122、读出部123以及写入部124,来执行压缩文件F2的解压处理。控制部121将压缩文件F2加载至存储区域A3。读出部123从压缩文件F2读出压缩编码。检索部122对读出部123读出的压缩编码,进行解压词典D3的检索。写入部124将与检索部122的检索结果相应的解压代码写入存储区域A4。控制部121在通过检索部122的检索结果得到的解压代码表示控制符号的情况下,进行将进行写入部124的写入的写入位置返回一个空格符号的量(例如1个字节)的调整。控制部121进行读出部123的读出位置、写入部124的写入位置等的管理,例如,使读出部123、写入部124,对压缩文件F2所包含的压缩编码执行依次处理。另外,控制部121基于存储区域A4所储存的解压数据生成解压文件F3,并将解压文件F3储存至存储部15。
生成部13包含控制部131、统计部132、分配部133以及排序部134。生成部13按照来自压缩部11的指示,生成压缩词典D2。控制部131控制统计部132、分配部133以及排序部134,生成文件F1的压缩所使用的压缩词典D2。统计部132通过对文件F1内所包含的字符、单词的出现次数进行计数等,生成各字符、单词的统计信息。排序部134基于统计部132所生成的统计信息,对生成统计信息的各字符、单词进行排序。分配部133基于统计部132所生成的统计信息,生成与各字符、单词对应的压缩编码,并将所生成的压缩编码分配给各字符、单词。排序部134还按照与字符、单词对应的字符代码的顺序(例如字符代码的值从小到大的顺序)对分配有压缩编码的字符、单词进行排序。控制部131基于统计部132、分配部133以及排序部134的处理结果生成压缩词典D2,并将压缩词典D2储存至存储部15。另外,控制部131将统计部132所生成的统计信息储存至存储部15。
生成部14包含控制部141、分配部142、复制部143以及排序部144。生成部14按照来自解压部12的指示,生成解压词典D3。控制部141控制分配部142、复制部143以及排序部144,生成压缩文件F2的解压所使用的解压词典D3。分配部142使用存储部15所储存的统计信息,生成与各字符、单词对应的压缩编码。排序部144按照压缩编码的值对分配有压缩编码的字符信息进行排序。复制部143按照排序后的各压缩编码的编码长度,复制表示与压缩编码对应的字符、单词的字符代码。控制部141通过将由复制部143复制的字符代码,配置于与由分配部142生成的压缩编码对应的偏移位置,来生成解压词典D3。控制部141还将解压词典D3储存至存储部15。
通过压缩部11以及生成部13进行文件F1的压缩处理。图5、图6、图7、图9以及图10示有压缩处理的处理步骤。另外,通过解压部12以及生成部14进行压缩文件F2的解压处理。图12、图13以及图14示有解压处理的处理步骤。
图5表示压缩功能的处理步骤例。若调出压缩功能,则控制部111执行压缩处理的预处理(S101)。压缩功能的调出包含压缩对象的文件F1的指定。在S101的预处理中,控制部111确保存储区域A1以及存储区域A2,从存储部15中加载单词一览表L1,并确保统计表T1以及压缩词典D2的储存区域。
若S101的处理结束,则控制部111将文件F1加载至存储区域A1(S102)。在文件F1的尺寸比规定的尺寸大的情况下,控制部111对文件F1进行块分割,按照每个分割所得的块进行以下的压缩处理。接着,控制部111对生成部13进行压缩词典D2的生成指示(S103)。
图6表示压缩词典生成的处理步骤例。若从控制部111接受压缩词典的生成指示,则控制部131使统计部132执行文件F1的统计处理(S201)。
图7表示统计处理的处理步骤例。若通过控制部131接受统计处理的指示,则统计部132开始被加载至存储区域A1的文件F1统计处理。在统计处理的开始时,读出位置表示被加载至存储区域A1的文件F1的前端。统计部132从存储区域A1的读出位置获取字符代码(S301)。在S301的处理中,读出位置前进在S301中获取的字符代码的量。
接下来,统计部132判定在S301中获取的字符代码是否是划分符号(S302)。S302的判定预先设定作为划分符号处理的字符代码,根据在S301中获取的字符代码是否与预先设定的字符代码的任意一个相应来进行判断。划分符号例如是空格符号(在ASCII码系统中是0x20)、感叹号(在ASCII码系统中是0x21)、逗号(在ASCII码系统中是0x2C)、句号(在ASCII码系统中是0x2E)、冒号(在ASCII码系统中是0x3A)、分号(在ASCII码系统中是0x3B)以及问号(在ASCII码系统中是0x3F)等。或者,S302的判定也可以根据在S301中获取的字符代码是否是预先决定的数值范围内(例如,0x20~0x3F)来进行判断。
在S301中获取的字符代码不是划分符号的情况下(S302:“否”),统计部132将在S301中获取的字符代码储存至缓冲区(S303)。当S303的处理结束,则移至S309的步骤。
在S301中获取的字符代码是划分符号的情况下(S302:“是”),统计部132判定在S301中获取的字符代码是否是空格符号(S304)。作为一个例子,也可以在S302的判定之前进行S304的判定。在该情况下,统计部132在不满足S304的条件的情况下进行S302的判定,若满足S302的判定条件则移至S305的步骤,若不满足S302的判定条件,则移至S303的步骤。
在S301中获取的字符代码不是空格符号的情况下(S304:“否”),统计部132进行单词的计数处理(S305)。即,统计部132对于连接有缓冲区所储存的字符代码(或者字符代码串)和在S301中最近获取的字符代码字符串,使被储存于统计表T1的出现次数自加1。在S305的处理中,在统计表T1内不存在对应的字符串的情况下,对于缓冲区内的字符代码以及在S301中最近获取的字符代码的每一个,使统计表T1内的出现次数自加1。
图8表示统计表T1的例子。在统计表T1中,对字符、数字等各符号、单词一览表L1所包含的各单词、以及控制符号和各划分符号的组合的每一个,储存出现次数。
作为使用了统计表T1的统计处理的另外一个例子,统计部132也可以将满足S302的判定条件从而被划分的字符串作为单词登录至统计表T1。在该另外一个例子中,在统计表T1内不存在对应的字符串的情况下,统计部132将字符串作为单词重新登录至统计表T1。由此抑制对单词一览表L1内包含、文件F1内未包含的单词分配压缩编码。另外,对单词一览表L1未包含、文件F1内包含的单词也分配压缩编码。另外,抑制对单词一览表L1包含、文件F1内未包含的单词,也登录至统计表T1从而占据存储区域。
若结束S305的处理,则统计部132进行控制符号以及划分符号的组合的计数(S306)。在S306中,使取消空格符号的意思的控制符号和在S301中获取的划分符号的组合的出现次数自加1。若S306的处理结束,则统计部132移至S309的步骤。
在S301中获取的字符代码是空格符号的情况下(S304:“是”),与S305相同进行单词的计数(S307)。另外,与S305相同,统计部132在统计表T1不存在对应的单词的情况下,也包括缓冲区所储存的字符代码按照每个字符代码进行计数。若S307的处理结束,则统计部132清除缓冲区(S308)。
若进行S303、S306以及S308的任意一个,则统计部132判定读出位置是否是加载至存储区域A1的文件F1的终端(S309)。在S309的判定中若不是终端(S309:“否”),则统计部132移至S301的步骤。而且在S309的判定中若是终端(S309:“是”),则统计部132结束统计处理。
若统计部132的统计处理结束,则控制部131返回到图6的步骤,使排序部134执行排序处理(S202)。排序部134基于由统计部132生成的统计信息(有关各字符信息的出现次数)对被登录至统计表T1的字符信息(字符等符号、单词等符号串、控制符号和划分符号的组合等)进行排序。例如,统计部132以出现次数从多到少的顺序或从少到多的顺序的任意一方,对被登录至统计表T1的字符信息进行排序。
若S202的处理结束,则控制部131使分配部133执行压缩编码的分配(S203)。分配部133基于哈夫曼编码、算术编码等越是高频率的字符信息越分配较短的压缩编码算法来对在S202中按照频率顺序排序的字符信息组分配压缩编码。若对各字符信息分配压缩编码,则控制部131使排序部134基于字符信息来对字符信息和分配给字符信息的压缩编码的组进行排序处理(S204)。排序部134例如按照从小到大的顺序对字符信息的字符代码进行排序。例如,排序部134按照字符信息的第一个字符的字符代码的值从小到大的顺序排列,第一个字符的字符代码相同的字符信息彼此按照从小到大的顺序排列第二个字符的字符代码的值。通过S204的处理排序的状态是图11所示的压缩词典D2。
若S204的处理结束,则控制部131进行索引的生成处理(S205)。控制部131对字符信息和在S204中对该字符信息进行了排序的字符信息组内存在的表示位置(偏移)的信息建立对应关系地生成索引。对于图11所示的压缩词典D2而言,例如,偏移“0x126”等与字符“i”建立对应关系。若在压缩编码的生成中利用该索引,则与从“i”开始的单词对应的压缩编码的检索从“0x126”开始。若S205的处理结束,则生成部13结束压缩词典D2的生成处理。
图11表示压缩词典的数据结构例。在图11所示的压缩词典D2中以建立有对应关系的方式储存字符信息和压缩编码。字符信息和压缩编码的组的储存位置用以压缩词典D2的储存位置为起点的偏移来表示。例如,字符信息“invent△”的信息被储存在偏移0x0140。在S205中生成的索引利用该偏移实现检索范围的精确。另外,如上述那样,“c()”表示与括弧内的字符信息对应的压缩编码。
压缩词典D2是由生成部13生成的,但作为另外一个例子,压缩词典D2也可以被预先存储于存储部15。此时,压缩词典D2在多个文件中被通用使用。例如,在预先存储于存储部15的压缩词典D2中,例如,基于过去压缩的文件、数据库内所存在的多个文件的字符信息的统计信息来分配压缩编码。
若生成部13结束压缩词典D2的生成处理,则控制部111返回到图5的步骤,执行压缩数据生成处理(S104)。
图9表示压缩数据生成处理的处理步骤例。在压缩数据生成处理的开始时刻,读出位置被设置为加载至存储区域A1的文件F1的起点,写入位置被设置为存储区域A2的规定的位置,缓冲区被清除。读出部113从读出位置获取字符代码(S401)。控制部111在S401的字符代码获取后,更新读出位置。并且,控制部111将读出部113在S401中获取的字符代码储存至缓冲区(S402)。控制部111判定在S401中获取的字符代码是否是空格符号(S403)。
在S401中获取的字符代码不是空格符号的情况下(S403:“否”),返回到S401的步骤,读出部113从读出位置获取字符代码。即,S401以及S402的步骤直到读出空格符号为止被重复。
在S401中获取的字符代码是空格符号的情况下(S403:“是”),检索部112通过缓冲区内储存的字符代码(或者字符代码串)来检索压缩词典D2(S404)。控制部111判定与缓冲区内储存的字符代码(或者字符代码串)一致的一致字符信息是否存在于压缩词典D2内(S405)。在压缩词典D2内不存在一致字符信息的情况下(S405:“否”)的处理基于图10后述。在存在一致字符信息的情况下(S405:“是”)写入部114将在压缩词典D2内与一致字符信息建立有对应关系的压缩编码写入存储区域A2的写入位置(S406)。接着,控制部111更新写入位置,并删除(清除)缓冲区所储存的字符代码(或者字符代码串)(S407)。并且,控制部111判定读出位置是否是被加载至存储区域A1的文件F1的终端(S408)。
在读出位置不是文件F1的终端的情况下(S408:“否”),返回到S401的步骤,读出部113从读出位置获取字符代码。在读出位置是文件F1的终端的情况下(S408:“是”),控制部111结束压缩数据生成处理。
图10表示压缩数据生成处理的处理步骤例。在S405的处理中,在压缩词典D2内不存在一致字符信息的情况下(S405:“否”),控制部111判定被空格符号划分的字符代码(或者字符代码串)的末尾的字符代码是否是划分符号(S409)。即,在缓冲区所储存的字符代码串中,判定空格符号的之前的字符代码是否表示划分符号。对于是否是划分符号,使用与图7的S302相同的判定条件。
在S409的判定中,末尾是划分符号的情况下(S409:“是”),控制部111生成缓冲区内的末尾的划分符号之前的字符代码串中,将末尾的划分编码置换为空格符号的字符代码串(S410)。检索部112对在S410中生成的字符代码串,检索压缩词典D2(S411)。控制部111基于S411的检索结果,判定压缩词典D2中是否存在与在S410中生成的字符代码串一致的一致字符信息(S412)。
在存在一致字符信息的情况下(S412:“是”),写入部114将在压缩词典D2内与一致字符信息建立有对应关系的压缩编码写入存储区域A2的写入位置(S413)。控制部111按照写入部114的写入,更新写入位置。并且,写入部114将在压缩词典D2中,与控制符号和划分符号的组合建立有对应关系的压缩编码(控制编码)以及与空格符号建立有对应关系的压缩编码写入存储区域A2的写入位置(S414)。控制部111按照写入部114的写入,更新写入位置。
在不存在一致字符信息的情况下(S412:“否”)或者末尾的字符代码不是划分符号的情况下(S409:“否”),控制部111对缓冲区内的各字符代码进行处理(S415~S418)。控制部111对各字符代码,使检索部112检索压缩词典D2(S416),并使写入部114将检索的结果得到的压缩编码写入写入位置(S417)。若对缓冲区所储存的各字符代码进行S416以及S417的处理,则步骤返回到S407,控制部111清除缓冲区所储存的字符代码串。
若上述压缩数据生成处理结束,则步骤返回到图5所示的S105。控制部111使用存储区域A2内所储存的压缩数据生成压缩文件F2,并储存至存储部15(S105)。压缩文件F2例如由标题、存储区域A2内的压缩数据以及尾部信息构成。标题中例如包含识别压缩算法的识别信息、标题、压缩数据以及尾部信息每一个的数据尺寸等信息。另外,尾部信息中例如包含与统计表T1或者压缩词典D2对应的解压词典D3。解压词典D3基于图15后述。
若S105的处理结束,则控制部111进行在压缩功能的调出之前压缩处理结束的意思的通知(S106)。S106的通知例如包含表示压缩文件F2的储存目的地的信息。若S106的处理结束,则压缩部11的压缩处理结束。
图12表示解压功能的处理步骤例。若解压功能被调出,则控制部121执行解压处理的预处理(S501)。解压功能的调出包含解压对象的压缩文件F2的指定。在S501的预处理中,控制部121确保存储区域A3以及存储区域A4,从压缩文件F2加载统计表T1,并且确保解压词典D3的储存区域。
若S501的处理结束,则控制部121将压缩文件F2加载至存储区域A3(S502)。接下来,控制部121使生成部14生成解压词典(S503)。
图13表示解压词典生成的处理步骤例。控制部141从被加载至存储区域A3的压缩文件F2的尾部信息中获取统计表T1(S601)。若获取统计表T1,则分配部142对统计表T1内的各字符信息分配压缩编码(S602)。在S602的处理中,通过与S203相同的算法分配压缩编码。排序部144根据压缩编码的值对分配有压缩编码的字符信息进行排序(S603)。并且,控制部141使分配压缩编码的编码长度与分配有压缩编码的各字符信息相关联(S604)。
接下来,复制部143复制与字符信息相关联的编码长度相应的数的字符信息以及编码长度的信息(S605)。并且,控制部141将复制的信息储存至存储部15所确保的解压词典D3的储存区域内的位置,且是基于压缩编码的偏移位置(S606)。S606的结果,生成解压词典D3,步骤移至图12的S504。
图15表示解压词典的数据结构例。解压词典D3具有表示解压代码(字符信息)和编码长度的信息被储存至基于对应的压缩编码的偏移位置的数据结构。如图15的解压词典D3例示压缩编码的最大的编码长度是12位的情况。
解压词典D3从进行了可变长度的编码的压缩数据中读出固定长度的数据,并将与读出的固定长度的数据对应的解压代码用于取出处理。读出固定长度的数据,从而与一位一位地判定编码的分界线相比实现解压速度的高速化。由于对于比12位短的压缩编码从压缩数据多余地读出数据,所以基于编码长度来进行来自压缩数据的读出位置的调整。由于解压词典D3是用于像这样的解压处理的解压词典,所以重复地登录解压代码以及编码长度相同的信息。
例如,解压词典D3中的与控制符号[-△].对应的压缩编码c([-△].)是“0001011”这样的7位的数据,相对于此从压缩数据中总结为12位的数据读出。若读出的12位中前半部分的7位是“0001011”,则不管后半部分的5位是什么样的数据都需要能够获取控制符号[-△].这样的解压代码。因此,对于后半部分的5位所取得的值的全部储存有解压代码以及编码长度,从而不管12位的固定长度数据中的后半部分5位是什么样的数据,都能够获取与7位的可变长度编码对应的解压代码等信息。复制后半部分5位的全部(“00000”~“11111”)的数目(32)控制符号[-△].的信息,压缩编码被储存至与“0001011”相应的偏移位置(000101100000(0x160))。
符号串about△也与控制符号[-△].相同,被复制与压缩编码的编码长度相应的数目,并储存至压缩编码对应的偏移位置。在解压词典D3中,c(about△)是“0110101001”这样的10位的数据。因此,按照2的平方(因为12-10=2)来复制与符号串about△对应的解压代码以及编码长度的信息,并储存至“011010100100(0x6A4)”这样的偏移位置。
图14表示解压数据生成处理的处理步骤例(S504)。若生成解压词典D3,则控制部121开始生成与压缩文件F2所包含的压缩数据对应的解压数据的处理。来自存储区域A3的读出位置被设置为压缩文件F2的压缩数据的起点,朝向存储区域A4的写入位置被设置为存储区域A4内的规定的位置,清除存储区域A5(缓冲区)。
读出部123从存储区域A3的读出位置读出压缩数据(S701)。以如上所述的固定长度来进行压缩数据的读出。检索部122基于读出的固定长度数据参照解压词典D3(S702)。通过S702的参照得到的解压代码被储存至存储区域A5(缓冲区)。接着,判定存储区域A5内的解压代码是否是控制符号以及划分符号的组合(S703)。S703的处理例如也可以根据解压代码的前端的字符代码是否是控制符号来判断。
在存储区域A5内的解压代码不是控制符号以及划分符号的组合的情况下(S703:“否”),写入部124将在S702中获得的解压代码写入存储区域A4的写入位置(S704)。
在存储区域A5内的解压代码是控制符号以及划分符号的组合的情况下(S703:“是”),控制部121进行写入位置的调整(S705)。在S705中,控制部121使存储区域A4的写入位置返回一个字符代码的量。接着S705,写入部将存储区域A5所储存的划分符号写入存储区域A4的写入位置(S706)。
若进行S704或者S706的处理,则控制部121对来自存储区域A3的读出位置进行更新(S707)。基于通过S702的参照而得到的编码长度来对来自存储区域A3的读出位置进行更新。读出位置前进编码长度的信息所表示的位数。并且,控制部121对朝向存储区域A4的写入位置进行更新(S708)。基于在S702中读出的解压代码的长度(解压代码长度)来对朝向存储区域A4的写入位置进行更新。也可以更换S707以及S708的处理步骤。
接着,控制部121判断来自存储区域A3的读出位置是否是压缩文件F2的压缩数据的终端(S709)。在来自存储区域A3的读出位置不是压缩数据的终端的情况下(S709:“否”)步骤返回到S701,读出部123再次进行压缩数据的读出。在来自存储区域A3的读出位置是压缩数据的终端的情况下(S709:“是”),控制部121结束解压数据生成处理,步骤移至S505。
作为另外一个例子,解压词典D3除了解压代码以及编码长度以外,还可以包含表示解压代码长的信息。在该情况下例如,控制部121在S708的处理中,基于与每一个解压代码建立有对应关系的解压代码长度来更新写入位置。
并且,作为另外一个例子,解压词典D3是解压词典的一个例子,也可以使用未重复地登录有相同的信息的解压词典。例如,也可以使用一般的哈夫曼编码的解压词典。即使在该情况下,在从解压词典获取解压代码的情况下,控制部121进行S703的判定,根据该判定结果进行S704、S705以及S706的任一处理。
若解压数据生成处理结束,则控制部121基于存储区域A4所储存的解压数据来生成解压文件F3,并将所生成的解压文件F3储存至存储部15(S505)。并且,控制部121进行在解压功能的调出之前解压处理结束了的意思的通知(S506)。S506的通知中例如包含表示解压文件F3的储存目的地的信息。若S506的处理结束,则解压部12的解压处理结束。
[构成的说明]
以下,对实施上述压缩处理、解压处理的构成进行说明。
图16表示计算机1的硬件构成例。计算机1例如包含处理器301、RAM(RandomAccess Memory:随机存储器)302、ROM(Read Only Memory:只读存储器)303、驱动装置304、存储介质305、输入接口(I/F)306、输入设备307、输出接口(I/F)308、输出设备309、通信接口(I/F)310、SAN(Storage Area Network:存储区域网络)接口(I/F)311以及总线312等。每一个硬件经由总线312连接。
RAM302是可读写的存储器装置,例如,除了SRAM(Static RAM:静态RAM)、DRAM(Dynamic RAM:动态RAM)等半导体存储器、或者RAM以外也可以使用闪存等。ROM303也可以是PROM(Programmable ROM:可编程ROM)等。驱动装置304是进行记录于存储介质305的信息的读出或者写入的至少任意一方的装置。存储介质305存储通过驱动装置304写入的信息。存储介质305例如是硬盘、SSD(Solid State Drive:固态硬盘)等闪存、CD(Compact Disc:光盘)、DVD(Digital Versatile Disc:数字多功能光盘)、蓝光光盘等存储介质。另外,例如,计算机1对多个种类的存储介质的每一种类,设置驱动装置304以及存储介质305。
输入接口306是与输入设备307连接,将从输入设备307接收到的输入信号传递至处理器301的电路。输出接口308是与输出设备309连接,使输出设备309执行与处理器301的指示相应的输出的电路。通信接口310是进行经由网络3的通信的控制的电路。通信接口310例如是网络接口卡(NIC)等。SAN接口311是进行与通过存储区域网络4与计算机1连接的存储装置的通信的控制的电路。SAN接口311例如是主机总线适配器(HBA)等。
输入设备307是根据操作发送输入信号的装置。输入设备例如是键盘、安装于计算机1的主体的按钮等按键装置、鼠标、触摸面板等定点设备。输出设备309是根据计算机1的控制输出信息的装置。输出设备309例如是显示器等图像输出装置(显示设备)、扬声器等声音输出装置等。另外,例如,将触摸屏等输入输出装置作为输入设备307以及输出设备309来使用。另外,输入设备307以及输出设备309也可以与计算机1成为一体,也可以不包含于计算机1,例如,从外部通过有线或者无线与计算机1连接的装置。
例如,处理器301将存储于ROM303、存储介质305的程序读出至RAM302,根据读出的程序的步骤进行压缩部11、解压部12、生成部13以及生成部14的至少一个处理。此时,RAM302被用作处理器301的工作区域。存储部15的功能通过ROM303以及存储介质305存储程序文件(后述的应用程序24、中间件23以及OS22等)、数据文件(文件F1、压缩文件F2以及解压文件F3等),将RAM302用作处理器301的工作区域来实现。使用图17对处理器301所读出的程序进行说明。
图17表示通过计算机1动作的程序构成例。应用程序24或者中间件23是确定有本实施方式的压缩功能或者解压功能的处理步骤的程序。或者,应用程序24或者中间件23是确定有本实施方式的压缩词典生成或者解压词典生成的处理步骤的程序。
确定有压缩功能的处理步骤的压缩程序和确定有解压功能的处理步骤的解压程序也可以是一体的程序,也可以是独立的程序。并且,确定有压缩词典生成的步骤的压缩词典生成程序也可以包含于压缩程序,也可以是通过压缩程序调出的独立的程序。另外,确定有解压词典生成的步骤的解压词典生成程序也可以包含于解压程序,也可以是通过解压程序读出的独立的程序。或者也可以作为OS(操作系统)22的一个功能,提供本实施方式的压缩功能以及解压功能的至少一方。
例如,将上述压缩功能以及解压功能的至少一方、压缩程序、解压程序、压缩词典生成程序以及解压词典生成程序的至少一个存储至存储介质。例如,通过驱动装置304对该存储介质进行读取并安装,从而成为能够执行存储介质所存储的程序的状态。各个安装的程序所确定的处理步骤通过基于OS22控制硬件组21(301~312)来执行。
图4所示的计算机1所包含的各功能模块的功能通过处理器301执行压缩程序或者解压程序来提供。通过处理器301执行图5、图6、图7、图9以及图10所示的处理步骤来提供压缩部11以及生成部13内所包含的各功能模块的功能。另外,通过处理器301执行图12、图13以及图14所示的处理步骤来提供解压部12以及生成部14内所包含的各功能模块的功能。
例如,如以下所示使用硬件组21来执行压缩部11内的功能模块。控制部111的功能通过处理器301进行针对RAM302内的访问(存储区域的确保、文件的加载等),另外,在寄存器内管理处理状态(读出位置、写入位置等),并进行与寄存器内所保持的信息的一致判定来提供。读出部113的功能通过处理器301根据寄存器内的处理状态来访问RAM302来提供。检索部112的功能通过处理器301访问RAM302,并进行基于访问结果的比较判定来提供。写入部114的功能通过处理器301根据寄存器内的处理状态访问RAM302来提供。
例如,如以下的方式使用硬件组21来执行解压部12内的功能模块。控制部121的功能通过处理器301进行针对RAM302内的访问(存储区域的确保、文件的加载等),在寄存器内管理处理状态(读出位置、写入位置等),并进行与寄存器内所保持的信息的一致判定来提供。另外,读出部123的功能通过处理器301根据寄存器内的处理状态来访问RAM302来提供。检索部122的功能通过处理器301访问RAM302,并进行基于访问结果的比较判定来提供。写入部124的功能通过处理器301根据寄存器内的处理状态来访问RAM302来提供。
例如,如以下的方式使用硬件组21来执行生成部13内的功能模块。控制部131的功能通过处理器301进行RAM302的区域管理以及针对RAM302的访问,并且处理器301进行与例程的处理结果相应的例程的调出来提供。统计部132的功能通过处理器301的针对RAM302的访问处理以及与访问处理的结果相应的运算处理来提供。排序部134的功能通过处理器301的针对RAM302的访问和与访问结果相应的运算处理来提供。分配部133的功能通过处理器301进行基于针对RAM302的访问的运算处理来提供。
例如,如以下的方式使用硬件组21来执行生成部14内的功能模块。控制部141的功能通过处理器301进行RAM302的区域管理以及针对RAM302的访问,并且处理器301进行与例程的处理结果相应的例程的调出来提供。复制部143的功能通过处理器301的针对RAM302的访问处理来提供。排序部144的功能通过处理器301的针对RAM302的访问和与访问结果相应的运算处理来提供。分配部142的功能通过处理器301进行基于针对RAM302的访问的运算处理来提供。
根据本实施方式,由于对符号串和空格符号分配一个压缩编码,所以抑制压缩编码数目。因此,抑制压缩编码的写入所需要的存储器访问次数。另外,由于压缩率提高,所以也抑制储存压缩文件时的I/O的次数。
图18表示使用了计算机1的系统构成例。图18所例示的信息处理系统包含基地局2、网络3、计算机1a以及计算机1b。计算机1a通过无线或者有线的至少一方,同与计算机1b连接的网络3连接。图4所示的压缩部11、解压部12、生成部13以及生成部14也可以仅包含于计算机1a,也可以包含于计算机1a以及计算机1b双方。也可以计算机1a包含压缩部11以及生成部13,计算机1b包含解压部12以及生成部14,也可以与其相反,计算机1b包含压缩部11以及生成部13,计算机1a包含解压部12以及生成部14。
例如,由计算机1a生成的压缩文件F2通过经由网络3的通信发送至计算机1b,通过计算机1b对压缩文件F2解压生成解压文件F3。压缩文件F2也可以通过无线发送至基地局2,再从基地局2发送至计算机1b。
由于根据本实施方式的压缩功能、解压功能压缩率提高,所以通信的压缩数据的量减少。由此抑制针对通信处理的图18所例示的系统的硬件资源的使用。
图19表示使用了计算机1的系统构成例。图19所例示的信息处理系统包含计算机1、网络3、客户端装置6、存储区域网络(SAN)4以及存储装置5。例如,计算机1进行与来自客户端装置6的请求相应的信息处理。信息处理对象的数据例如被压缩地存储至存储装置5。计算机1在从客户端装置6接受请求的情况下,获取被压缩地存储至存储装置5的信息处理对象的数据并解压。计算机1对解压后的数据执行从客户端装置6请求信息处理,并且对信息处理后的数据进行压缩,并储存至存储装置5。信息处理例如是存储于存储装置5的数据的更新处理、存储于存储装置5存储的数据的分析/解析处理等。
在图19所例示的系统中,即使不是对每个压缩处理、解压处理生成压缩词典、解压词典,也可以保持一次创建的压缩词典、解压词典,基于该压缩词典、解压词典执行压缩处理或者解压处理。在该情况下,图5的S103的处理、图12的S503的处理也可以仅加载保持的压缩词典、解压词典。
在图19所例示的系统中,每次接受信息处理的请求都进行数据的解压。若解压处理花费时间则到针对这样的请求的响应为止的时间也增大。若通过本实施方式的压缩功能压缩率提高,则从存储装置5读出压缩数据的I/O次数减少。另外,由于压缩编码数目较少所以抑制解压处理所涉及的存储器访问的次数。另外,也较少地抑制对压缩文件F2的加载确保的存储区域。
[变形例的说明]
以下,对上述实施方式的变形例的一部分进行说明。
压缩处理的对象除了文件以外,也可以是从系统输出的监视消息等。例如,通过上述压缩处理对依次储存至缓冲区的监视消息进行压缩,进行作为日志文件进行储存等处理。另外,例如,也可以以数据库内的页为单位来进行压缩,也可以以组合多个页为单位进行压缩。另外,压缩词典也可以对多个监视消息使用通用的压缩词典,也可以对多个页使用通用的压缩词典。
在文档数据中,较多地使用空格符号,但也使用其它的划分符号。在使用了压缩词典D2的情况下,将带有划分符号的符号串、划分符号以及空格符号,使用与符号串和空格符号的组合对应的压缩编码、与控制符号以及划分符号对应的压缩编码、以及与空格符号对应的压缩编码这3个压缩编码。然而,在使用空格符号以外的划分符号时,多数情况接着该划分符号使用空格符号。也可以代替压缩词典D2使用对控制符号、划分符号(空格符号以外)以及空格符号的组合分配了压缩编码的压缩词典D4。
图20表示压缩词典的数据结构例。在压缩词典D4中登录有控制符号和划分符号(空格符号以外)的组合。另一方面,在图20所示的压缩词典D4中登录有控制符号、划分符号(空格符号以外)以及空格符号的组合。在图7的S306的控制符号计数处理中,确认空格符号以外的划分符号是否后续空格符号,在后续空格符号的情况下,若登录控制符号、划分符号(空格符号以外)以及空格符号的组合,则生成图20的压缩词典D4。
图21表示解压词典的数据结构例。在图21中,也登录有控制符号、划分符号(空格符号以外)以及空格符号的组合。若按照在图20中说明的步骤生成统计表T1,则根据该统计表生成解压词典D5。代替解压词典D3使用解压词典D5。
在文档数据中,用空格符号表示作为构成文档数据的要素的单词等语言单位的分界线。另一方面,在csv(comma-separated values:逗号分隔值)形式的数据中,通过数据列所包含的逗号,示出作为构成csv形式的数据的要素的字段的划分。在将上述压缩算法用于csv形式的文件的情况下,由于在数据间反复使用与逗号对应的压缩编码,所以压缩率难以提高。
图22表示csv形式的数据结构的例子。图22所例示的csv形式的数据E1是各行包含6个字段的数据,将每一个字段的题目表示为标题行(申请编号、申请日、发明者、国名、途径、发明的名称)。通过换行代码表示各行的划分。另外,数据E1内的发明者字段的数据示出了发明者的姓以及名,姓和名之间用空格符号划分。
图23表示压缩词典的数据结构例。在图23所示的压缩词典D6中登录有符号串以及逗号的组合。例如,像“INDEX,”、“INFORMATION,”等这样,登录单词带有逗号的字符信息。使用登录在字符信息的末尾包含逗号的字符信息的压缩词典D6,另一方面由于在数据E1内在单词的后存在逗号以外的划分符号,所以使用删除之前的逗号符号的控制符号[-,]。例如,向压缩词典D6登录控制符号[-,]与空格符号△的组合。另外,例如,向压缩词典D6登录控制符号[-,]和换行代码(换行代码图示为“换行”)的组合。与被登录至压缩词典D6的字符信息的每一个对应的压缩编码被与字符信息建立对应关系地储存。
图24表示解压词典的数据结构例。在图24所示的解压词典D7中,将被登录至压缩词典D6的各字符信息,在与对应的压缩编码相应的偏移位置,复制与对应的压缩编码的编码长度相应的数目并储存。表示压缩编码的编码长度的信息也被与各字符信息建立对应关系地储存至解压词典D7。
在csv形式的数据中,用逗号划分数据的各要素,但在行的分界线中使用换行代码。因此,例如,处于控制符号[-,]与换行代码的组合出现次数增多,压缩编码的编码长度变短的趋势。
另外,在字段内包含多个单词的情况下,有包含空格符号的情况。例如,图22所示的数据E1的发明者字段的数据是“KATAOKA△MASAHIRO,”,但与该数据对应的压缩编码为c(KATAOKA,)c([-,]△)c(MASAHIRO,)。
在处理csv形式的数据的情况下,在图7的S304的判定中,判定划分符号是否是逗号。并且,在图9的S403的判定中,判定在S401中读出的字符代码是否是逗号。另外,在图10的S410的处理中,生成将末尾的划分符号置换为逗号的字符信息。
另一方面,在解压处理中,以控制符号存在于逗号以外的划分符号的位置的方式生成压缩数据,所以以图14的处理步骤能够处理。
另外,在上述实施方式中,说明了表示之前的空格符号的删除的控制符号[-△]、表示之前的逗号的删除的控制符号[-,],但也可以仅使用表示使读出的位置返回字符代码的量(1byte)的控制符号。在该情况下,也可以对多个种类的划分符号设置同与符号串压缩词典D12相同的符号串对应的压缩词典。例如,使用与单词以及空格符号的组合对应的符号串压缩词典和与单词以及逗号的组合对应的符号串压缩词典双方。
另外,在上述实施方式中,也可以将单词等符号串和存在于在此之前的空格符号等划分符号的组合登录至压缩词典。在该情况下例如使用删除后续的空格符号的意思的控制符号。
不只是上述变形例,能够适当地进行不脱离本发明的主旨的范围的设计变更。
符号说明
1…计算机;1a…计算机;1b…计算机;2…基地局;3…网络;4…存储区域网络;5…存储装置;6…客户端装置;11…压缩部;12…解压部;13…生成部;14…生成部;15…存储部。

Claims (13)

1.一种压缩装置,其特征在于,包含:
存储部,其将第一压缩编码与第一要素建立对应关系地存储,所述第一压缩编码与构成输入数据的多个要素之一的第一要素和将所述多个要素分别划分的划分符号中与所述第一要素在所述输入数据中连续的第一划分符号的组合对应;
获取部,其根据从所述输入数据对连续的所述第一要素以及所述第一划分符号的读出,来从所述存储部获取所述第一压缩编码;以及
写入部,其将所述第一压缩编码写入储存所述输入数据的压缩数据的储存区域。
2.根据权利要求1所述的压缩装置,其特征在于,
所述存储部存储与表示取消所述第一划分符号的指示的控制符号和所述第一划分符号的组合对应的第一控制编码,
所述获取部根据从所述输入数据对所述第一要素的读出,来从所述存储部获取所述第一压缩编码以及所述第一控制编码,
所述写入部将所述第一控制编码写入所述储存区域的与所述第一压缩编码连续的位置。
3.根据权利要求1所述的压缩装置,其特征在于,
所述存储部将第二控制编码与第二划分符号建立对应关系地存储,所述第二控制编码与表示取消所述第一划分符号的指示的控制符号和将所述多个要素分别划分的划分符号中与所述第一划分符号不同的所述第二划分符号的组合对应,
所述获取部根据从所述输入数据对连续的所述第一要素以及所述第二划分符号的读出,来从所述存储部获取所述第一压缩编码以及所述第二控制编码,
所述写入部将所述第二控制编码写入所述储存区域的与所述第一压缩编码连续的位置。
4.根据权利要求1~3中任意一项所述的压缩装置,其特征在于,
所述数据是文本文件,
所述要素是以单词为单位的数据。
5.根据权利要求1~3中任意一项所述的压缩装置,其特征在于,
所述数据是与表结构对应的文本文件,
所述要素构成所述表结构中的一个字段。
6.一种压缩方法,其特征在于,
使计算机执行下述处理:
根据从输入数据对连续的第一要素以及第一划分符号的读出,来从存储装置中获取第一压缩编码,所述存储装置将所述第一压缩编码与所述第一要素建立对应关系地存储,所述第一压缩编码与构成输入数据的多个要素之一的第一要素和将所述多个要素分别划分的划分符号中与所述第一要素在所述输入数据中连续的第一划分符号的组合对应
并将所述第一压缩编码写入储存所述输入数据的压缩数据的储存区域。
7.一种解压装置,其特征在于,包含:
存储部,其将构成数据的要素之一的第一要素和在所述数据中表示所述要素间的划分的第一划分符号的组合与一个压缩编码建立对应关系地存储;
获取部,其从所述存储部获取与从对所述数据进行压缩而得到的压缩数据读出的所述压缩编码对应的所述组合;以及
写入部,其将获取的所述组合所包含的所述第一要素以及所述第一划分符号双方写入对所述压缩数据进行解压而得到的解压数据的储存区域。
8.根据权利要求7所述的解压装置,其特征在于,
所述存储部还将表示取消所述第一划分符号的指示的控制符号与在所述数据中表示所述要素间的划分的划分符号中与所述第一划分符号种类不同的第二划分符号的组合与和所述压缩编码不同的其它压缩编码建立对应关系地存储,
所述获取部在从所述压缩数据读出了所述压缩编码后续的所述其它压缩编码的情况下,接着所述第一要素以及所述第一划分符号,还从所述存储部获取所述控制符号以及所述第二划分符号,
若还获取到所述控制符号以及所述第二划分符号,所述写入部则将获取的所述第二划分符号写入所述储存区域内的所述第一划分符号的储存位置。
9.根据权利要求8所述的解压装置,其特征在于,
在与所述其它压缩编码建立对应关系的组合中,除了所述控制符号以及所述第二划分符号以外还包含所述第一划分符号。
10.根据权利要求7~9中任意一项所述的解压装置,其特征在于,
所述数据是文本文件,
所述要素是以单词为单位的数据。
11.根据权利要求7~9中任意一项所述的解压装置,其特征在于,
所述数据是与表结构对应的文本文件,
所述要素构成所述表结构中的一个字段。
12.一种解压方法,其特征在于,
使计算机执行下述处理:
从将构成数据的要素之一的第一要素和在所述数据中表示所述要素间的划分的第一划分符号的组合与一个压缩编码建立对应关系地存储的存储装置,获取与从对所述数据进行压缩而得到的压缩数据读出的所述压缩编码对应的所述组合,
将获取的所述组合所包含的所述第一要素以及所述第一划分符号双方写入对所述压缩数据进行解压而得到的解压数据的储存区域。
13.一种信息处理系统,其特征在于,包含:
存储装置以及信息处理装置,
该信息处理装置包含:
存储部,其存储将构成数据的要素之一的第一要素和在所述数据中表示所述要素间的划分的划分符号的组合、与一个压缩编码建立有对应关系的转换词典;
接收部,其从所述存储装置接受对数据进行压缩而得到的压缩数据;
第一获取部,其从所述转换词典获取与从所述压缩数据读出的所述压缩编码对应的所述组合;
第一写入部,其将获取的所述组合所包含的所述第一要素以及所述划分符号双方写入对所述压缩数据进行解压而得到的解压数据的第一储存区域;
处理部,其对被写入所述第一储存区域的所述解压数据进行信息处理;
第二获取部,其从所述转换词典获取与从进行了所述信息处理的所述解压数据读出的所述第一要素建立对应关系地存储的所述压缩编码;
第一写入部,其将获取的所述压缩编码写入对所述数据的压缩数据进行储存的第二储存区域;以及
发送部,其将被写入所述第二储存区域的压缩数据发送至所述存储部。
CN201380074817.7A 2013-03-22 2013-03-22 压缩装置、压缩方法、解压装置、解压方法以及信息处理系统 Active CN105191144B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/001976 WO2014147671A1 (ja) 2013-03-22 2013-03-22 圧縮装置、圧縮方法、伸張装置、伸張方法および情報処理システム

Publications (2)

Publication Number Publication Date
CN105191144A CN105191144A (zh) 2015-12-23
CN105191144B true CN105191144B (zh) 2019-01-01

Family

ID=51579413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380074817.7A Active CN105191144B (zh) 2013-03-22 2013-03-22 压缩装置、压缩方法、解压装置、解压方法以及信息处理系统

Country Status (7)

Country Link
US (1) US9509333B2 (zh)
EP (1) EP2978135A4 (zh)
JP (1) JP6527462B2 (zh)
KR (1) KR101750646B1 (zh)
CN (1) CN105191144B (zh)
AU (1) AU2013382910B2 (zh)
WO (1) WO2014147671A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779312B2 (en) * 2015-01-30 2017-10-03 Honda Motor Co., Ltd. Environment recognition system
TWI625715B (zh) * 2016-05-31 2018-06-01 瑞鼎科技股份有限公司 顯示驅動裝置及其運作方法
US10432217B2 (en) 2016-06-28 2019-10-01 International Business Machines Corporation Page filtering via compression dictionary filtering
CN109582653B (zh) * 2018-11-14 2020-12-08 网易(杭州)网络有限公司 文件的压缩、解压缩方法及设备
US10476518B1 (en) * 2018-12-06 2019-11-12 Nyquist Semiconductor Limited Hardware friendly data compression
US12118041B2 (en) * 2019-10-13 2024-10-15 Thoughtspot, Inc. Query execution on compressed in-memory data
CN114747217A (zh) * 2019-11-30 2022-07-12 字节跳动有限公司 调色板编解码模式
CN113138968A (zh) * 2020-01-20 2021-07-20 普天信息技术有限公司 日志压缩方法及日志解压缩方法
CN114492322A (zh) * 2020-10-23 2022-05-13 晶晨半导体(上海)股份有限公司 文本压缩方法、模块、芯片、电子设备和存储介质
US20230004533A1 (en) * 2021-07-01 2023-01-05 Microsoft Technology Licensing, Llc Hybrid intermediate stream format
CN115587076B (zh) * 2022-12-12 2023-05-16 北京象帝先计算技术有限公司 数据解压系统、图形处理系统、组件、设备及解压方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030123841A1 (en) * 2001-12-27 2003-07-03 Sylvie Jeannin Commercial detection in audio-visual content based on scene change distances on separator boundaries
US20060020474A1 (en) * 2004-07-02 2006-01-26 Stewart William G Universal container for audio data
CN101807926A (zh) * 2010-01-21 2010-08-18 上海电力学院 低功耗soc测试数据压缩编码方法
CN101944362A (zh) * 2010-09-14 2011-01-12 北京大学 一种基于整形小波变换的音频无损压缩编码、解码方法
CN102480335A (zh) * 2010-11-30 2012-05-30 金蝶软件(中国)有限公司 一种业务数据的发送方法及系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985001814A1 (en) * 1983-10-19 1985-04-25 Text Sciences Corporation Method and apparatus for data compression
JPH04167821A (ja) * 1990-10-31 1992-06-15 Fujitsu Ltd データ符号化及び復号化方法
US5590317A (en) 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
JPH05324427A (ja) * 1992-05-27 1993-12-07 Hitachi Ltd 文書情報圧縮装置
US5325091A (en) * 1992-08-13 1994-06-28 Xerox Corporation Text-compression technique using frequency-ordered array of word-number mappers
US5710919A (en) * 1995-09-29 1998-01-20 Electronic Data Systems Corporation Record compression
JP3566441B2 (ja) 1996-01-30 2004-09-15 シャープ株式会社 テキスト圧縮用辞書作成装置
US5999949A (en) * 1997-03-14 1999-12-07 Crandall; Gary E. Text file compression system utilizing word terminators
JP3337633B2 (ja) 1997-12-03 2002-10-21 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH11177438A (ja) * 1997-12-12 1999-07-02 Toyota Central Res & Dev Lab Inc 情報変換装置
JP3511901B2 (ja) 1998-07-01 2004-03-29 株式会社日立製作所 情報処理装置および情報処理システム
JP4774145B2 (ja) * 2000-11-24 2011-09-14 富士通株式会社 構造化文書圧縮装置および構造化文書復元装置並びに構造化文書処理システム
WO2002056478A1 (en) * 2001-01-11 2002-07-18 Koninklijke Philips Electronics N.V. Data compression method with identifier of regressive string reference
JP5062131B2 (ja) 2008-10-06 2012-10-31 富士通株式会社 情報処理プログラム、情報処理装置、および情報処理方法
US8554745B2 (en) * 2009-04-27 2013-10-08 Netapp, Inc. Nearstore compression of data in a storage system
US8560508B2 (en) * 2011-07-22 2013-10-15 International Business Machines Corporation Real-time compression of tabular data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030123841A1 (en) * 2001-12-27 2003-07-03 Sylvie Jeannin Commercial detection in audio-visual content based on scene change distances on separator boundaries
US20060020474A1 (en) * 2004-07-02 2006-01-26 Stewart William G Universal container for audio data
CN101807926A (zh) * 2010-01-21 2010-08-18 上海电力学院 低功耗soc测试数据压缩编码方法
CN101944362A (zh) * 2010-09-14 2011-01-12 北京大学 一种基于整形小波变换的音频无损压缩编码、解码方法
CN102480335A (zh) * 2010-11-30 2012-05-30 金蝶软件(中国)有限公司 一种业务数据的发送方法及系统

Also Published As

Publication number Publication date
CN105191144A (zh) 2015-12-23
EP2978135A4 (en) 2016-06-01
US20160006454A1 (en) 2016-01-07
JPWO2014147671A1 (ja) 2017-02-16
EP2978135A1 (en) 2016-01-27
WO2014147671A1 (ja) 2014-09-25
AU2013382910B2 (en) 2017-01-05
KR20150119402A (ko) 2015-10-23
US9509333B2 (en) 2016-11-29
KR101750646B1 (ko) 2017-06-23
JP6527462B2 (ja) 2019-06-05
AU2013382910A1 (en) 2015-10-08

Similar Documents

Publication Publication Date Title
CN105191144B (zh) 压缩装置、压缩方法、解压装置、解压方法以及信息处理系统
US20200334294A1 (en) Merge tree modifications for maintenance operations
US8255398B2 (en) Compression of sorted value indexes using common prefixes
US20200349139A1 (en) Stream selection for multi-stream storage devices
CN105846825B (zh) 压缩方法、解压缩方法、压缩装置以及解压缩装置
US10783186B2 (en) Heterogenous key-value sets in tree database
US9025892B1 (en) Data record compression with progressive and/or selective decomposition
US7783855B2 (en) Keymap order compression
US9507811B2 (en) Compressed data page with uncompressed data fields
DE102016013248A1 (de) Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement
EP2924594A1 (en) Data encoding and corresponding data structure in a column-store database
US20160125004A1 (en) Method of index recommendation for nosql database
CN101131697A (zh) 用于使记录在分区之间移动的系统和方法
CN111611250A (zh) 数据存储设备、数据查询方法、装置、服务器及存储介质
CN109582231B (zh) 数据存储方法、装置、电子设备及存储介质
CN115483935A (zh) 一种数据处理方法及装置
CN104584439B (zh) 存储程序、存储方法、存储装置、解压缩程序、解压缩方法和解压缩装置
CN114791904A (zh) 布隆过滤器的持久化压缩方法及装置
CN110688070B (zh) 固态硬盘数据表的管理方法、装置、存储介质及电子设备
CN111538730A (zh) 一种基于哈希桶算法的数据统计的方法及其系统
KR101069667B1 (ko) 전화번호 저장 방법 및 저장 시스템
US12038888B2 (en) Storage control apparatus and method
CN118093533A (zh) 特征向量的压缩方法和压缩文件的解压方法
CN117194337A (zh) 选取新的源文件方法、装置、计算机设备及存储介质
CN111506524A (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
GR01 Patent grant
GR01 Patent grant