JP5549177B2 - 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置 - Google Patents

圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置 Download PDF

Info

Publication number
JP5549177B2
JP5549177B2 JP2009243892A JP2009243892A JP5549177B2 JP 5549177 B2 JP5549177 B2 JP 5549177B2 JP 2009243892 A JP2009243892 A JP 2009243892A JP 2009243892 A JP2009243892 A JP 2009243892A JP 5549177 B2 JP5549177 B2 JP 5549177B2
Authority
JP
Japan
Prior art keywords
data
row
column
empty
rows
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
JP2009243892A
Other languages
English (en)
Other versions
JP2011090526A (ja
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
Priority to JP2009243892A priority Critical patent/JP5549177B2/ja
Publication of JP2011090526A publication Critical patent/JP2011090526A/ja
Application granted granted Critical
Publication of JP5549177B2 publication Critical patent/JP5549177B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本技術は、データ圧縮技術に関する。
技術の進歩に応じてコンピュータの処理速度や記憶容量なども向上しているが、取り扱うデータの量も飛躍的に増加しており、圧縮技術が必要となる場面も多い。辞書を用いる単純な従来技術によれば、図1に示すようなデータは以下に述べるように圧縮される。すなわち、データ「2009/6/5」に対して符号「A」を割り当て、データ「10:13」に対して符号「B」を割り当て、データ「ホワイト」に対して符号「C」を割り当てて、このような対応関係を辞書に登録しておく。そして、この辞書に従って、図1のデータ内において辞書に登録済みのデータが出現した場合には、対応する符号に置換する。データ「2009/6/5」などの長さに比べて符号「A」の長さが十分短い場合には、データ量の削減が可能となる。図1のデータ例の場合には、図2に示すように、データ「2009/6/5」の代わりに符号「A」が設定されており、データ「10:13」の代わりに符号「B」が設定され、データ「ホワイト」の代わりに符号「C」が設定されている。
さらに、ランレングス符号化方式というものもよく知られている。この方法は、特定の値が連続して出現する場合に当該特定の値と当該特定の値の連続出現回数とを用いてデータ量を削減する手法である。
さらに、非空フィールド及び空フィールドを含むデータ・レコードのうち、非空フィールド中の連続ゼロ・バイトの数に基づきゼロ・バイトを符号化し、空フィールドを空フィールド標識に単に置換するような技術も存在している。
特開平7−175707号公報 特公平8−7669号公報
しかしながら、上で述べた技術は、行と列とが規定されているリレーショナルデータベース、CSV(Comma Separated Values)ファイルのような構造化データに適してはいない。
従って、本技術の目的は、行と列とが規定されている構造化データに適した圧縮及び解凍技術を提供することである。
本圧縮方法は、行と列とが規定されている構造化データを圧縮する圧縮方法であり、同一列において同一のデータが設定された、連続する複数の行を特定するステップと、特定された複数の行において空以外のデータが設定されている場合、当該複数の行における2行目以降のデータとして、空を設定するステップと、特定された複数の行において空が設定されている場合、当該複数の行における1行目のデータとして、空に対応する符号を設定するステップとを含む。
また、本解凍方法は、行と列とが規定されている構造化データを解凍する解凍方法であり、同一列において、空が設定された、連続する1以上の行を特定するステップと、当該特定された1以上の行に対し、その直前の行に設定されたデータを設定するステップと、空に対応する符号が設定された行に対し、空を設定するステップとを含む。
行と列とが規定されている構造化データに適した圧縮及び解凍が可能となる。
図1は、従来技術を説明するための図である。 図2は、従来技術を説明するための図である。 図3は、本実施の形態を説明するための図である。 図4は、本実施の形態を説明するための図である。 図5は、データ圧縮装置の機能ブロック図である。 図6は、データ圧縮処理の処理フローを示す図である。 図7は、データ圧縮処理の処理フローを示す図である。 図8は、データ圧縮処理の処理フローを示す図である。 図9は、辞書の一例を示す図である。 図10は、データ圧縮処理の具体例を説明するための図である。 図11は、データ圧縮処理の具体例を説明するための図である。 図12は、データ圧縮処理の具体例を説明するための図である。 図13は、データ圧縮処理の具体例を説明するための図である。 図14は、データ圧縮処理の具体例を説明するための図である。 図15は、データ圧縮処理の具体例を説明するための図である。 図16は、データ圧縮処理の具体例を説明するための図である。 図17は、データ圧縮処理の具体例を説明するための図である。 図18は、データ圧縮処理の具体例を説明するための図である。 図19は、データ圧縮処理の具体例を説明するための図である。 図20は、データ圧縮処理の具体例を説明するための図である。 図21は、データ圧縮処理の具体例を説明するための図である。 図22は、データ圧縮処理の具体例を説明するための図である。 図23は、データ圧縮処理の具体例を説明するための図である。 図24は、データ圧縮処理の具体例を説明するための図である。 図25は、データ圧縮処理の具体例を説明するための図である。 図26は、データ圧縮処理の具体例を説明するための図である。 図27は、CSV形式のデータの一例を示す図である。 図28は、CSV形式の圧縮データの一例を示す図である。 図29は、他のフォーマットの圧縮データの一例を示す図である。 図30は、ランレングス法を用いた場合の圧縮データの一例を示す図である。 図31は、データ解凍装置の機能ブロック図である。 図32は、データ解凍処理の処理フローを示す図である。 図33は、データ解凍処理の処理フローを示す図である。 図34は、データ解凍処理の処理フローを示す図である。 図35は、データ解凍処理の具体例を説明するための図である。 図36は、データ解凍処理の具体例を説明するための図である。 図37は、データ解凍処理の具体例を説明するための図である。 図38は、データ解凍処理の具体例を説明するための図である。 図39は、データ解凍処理の具体例を説明するための図である。 図40は、データ解凍処理の具体例を説明するための図である。 図41は、データ解凍処理の具体例を説明するための図である。 図42は、データ解凍処理の具体例を説明するための図である。 図43は、データ解凍処理の具体例を説明するための図である。 図44は、データ解凍処理の具体例を説明するための図である。 図45は、データ解凍処理の具体例を説明するための図である。 図46は、データ解凍処理の具体例を説明するための図である。 図47は、データ解凍処理の具体例を説明するための図である。 図48は、データ解凍処理の具体例を説明するための図である。 図49は、コンピュータの機能ブロック図である。 図50は、本技術の第2の態様に係る圧縮方法の処理フローを示す図である。 図51は、本技術の第2の態様に係る解凍方法の処理フローを示す図である。
最初に、本実施の形態の圧縮方法について図3及び図4を用いて説明しておく。例えばリレーショナルデータベースやCSV、スプレッドシートのデータとして図3のようなデータを保持しているものとする。すなわち、行と列とが規定されており、特に、列ごとにその属性が異なっているため、列単位で同一のデータが出現しやすいようなデータを取り扱う。そして、データ圧縮技術においては周知の辞書生成技術により、例えば出現頻度の高いデータを符号化して、辞書に登録する。図3の例では、辞書に、データ「2009/6/5」に対して符号「A」を割り当て、データ「10:13」に対して符号「B」を割り当てる。さらに、本実施の形態では、データが「空」である場合にも符号を設定するものとし、図3の例では符号「D」を割り当てる。さらに、本実施の形態では、「空」に対する符号「D」をも、辞書に登録しておくものとする。但し、「空」については、辞書に登録することなく、常に同じ符号を割り当てるといった手法を採用する場合もある。
基本的には、図3の構造化データの各要素位置(フィールド、セルなどと呼ぶ場合もある)におけるデータが辞書に登録済みであれば当該データを符号に置換することによって、圧縮する。なお、図3の構造化データのうち1行目については、各列の属性名を示すものであるが、この部分については圧縮の対象外とする。但し、同じデータが同一列内で連続して出現する場合には、最初の要素位置のみ符号への置換を実施して、同一データが連続する間は「空」を設定する。「空」を設定することによって、データ量が削減される。なお、設定された「空」と、元々の「空」とを区別するため、元々の「空」に対しては符号「D」で置換する。但し、元々の「空」が連続する場合には、2番目以降の元々の「空」については「空」のままになる。このようにすることによって、ランレングスのためのデータを用いることなく、元々「空」と、処理において設定された「空」とを区別することができるようになる。
図3の「年月日」の列では、全ての行にデータ「2009/6/5」が設定されているので、図4に示すように、第1行目だけ符号「A」に置換し、その他の行については「空」を設定する。「時間」の列では、最初の3行のデータが「10:13」で同一であるから、図4に示すように、1行目については符号「B」を設定し、残りの2行については「空」を設定する。4行目については辞書に登録されていないのでデータ「10:22」が、図4に示すように、そのまま設定される。「商品ID」の列については、全てのデータが辞書に登録されていないので、図4に示すように、そのまま設定される。「数量」の列については、1行目及び2行目についてはデータ「1」が連続して設定されているが、辞書には登録されていないデータなので、図4に示すように、1行目には「1」を2行目には「空」を設定する。また、3行目及び4行目についてはデータ「2」が連続して設定されているが、辞書には登録されていないデータなので、図4に示すように、3行目には「2」を4行目には「空」を設定する。さらに、図3の「レジ名」の列では、全ての行に元々「空」が設定されているので、図4に示すように、最初の行には「空」を表す符号「D」を設定し、残余の行については「空」のままにする。
このようにすれば、構造化データの構造自体を有効活用しているので、ランレングスを登録せずともよく、その分データ量を削減することができる。
次に、このような圧縮処理を実施するデータ圧縮装置の機能ブロック図を図5に示す。図5に示したデータ圧縮装置は、(A)圧縮対象データを格納する第1構造化データ格納部1と、(B)当該第1構造化データ格納部1に格納されている構造化データについて処理を行って辞書を生成する辞書生成部4と、(C)辞書生成部4によって生成された辞書のデータを格納する辞書格納部5と、(D)処理途中のデータを格納する直前データ格納部3と、(E)辞書格納部5及び直前データ格納部3を用いて第1構造化データ格納部1に格納されている構造化データを圧縮する処理を実施する圧縮処理部2と、(F)圧縮処理部2の処理結果が格納される第2構造化データ格納部6とを有する。第2構造化データ格納部6及び辞書格納部5に格納されているデータは、解凍に用いられるので出力データ10として、以下で述べるデータ解凍装置に出力される。
次に、図6乃至図30を用いて、データ圧縮装置の処理内容について説明する。まず、辞書生成部4は、第1構造化データ格納部1に格納されている圧縮対象の構造化データから、例えば出現頻度の高いデータに対して所定のルールで符号を割り当て、データと符号との対応付けデータを含む辞書データを生成し、辞書格納部5に格納する(ステップS1)。この処理については、従来と同じであるからこれ以上述べない。
次に、圧縮処理部2は、第1構造化データ格納部1に格納されている圧縮対象の構造化データと同一構造のデータ構造を、第2構造化データ格納部6において用意する(ステップS3)。第2構造化データ格納部6に格納される圧縮データの形式には以下で述べるように様々な形式が可能であるが、どのような形式であっても圧縮対象の構造化データと同一の構造が必要となるので、ここで用意する。より具体的には、行数及び列数が同一のデータ構造を用意する。なお、第1構造化データ格納部1に格納されている構造化データに圧縮データを上書き保存しても良い場合には、第2構造化データ格納部6を用いることなく、さらに本ステップを実施することなく以下の処理を実施することができる。
そして、圧縮処理部2は、圧縮対象の構造化データにおける第一行第1列を注目要素位置に設定する(ステップS5)。そして、圧縮処理部2は、注目要素位置のデータを読み出し(ステップS7)、読み出したデータが、直前データ格納部3に格納されている一行前のデータと一致するか判断する(ステップS9)。注目要素位置が第一行である場合には、一行前のデータは存在しないので、一致しないと判断される。一方、それ以外の場合には、一致する場合がある。一致する場合には、圧縮処理部2は、第2構造化データ格納部6に用意されているデータ構造において注目要素位置と同一の要素位置に「空」を設定する(ステップS11)。そしてステップS17に移行する。
一方、一行前のデータと一致しないと判断された場合には、圧縮処理部2は、読み出したデータが「空」であるか判断する(ステップS13)。本ステップにおいて「空」であると判断された場合には、「空」に変化したことになるので、圧縮処理部2は、辞書格納部5において「空」に対応付けて登録されており「空」を表す符号又は「空」に対応する予め定められた符号を、第2構造化データ格納部6に用意されているデータ構造において注目要素位置と同一要素位置に設定する(ステップS15)。そしてステップS17に移行する。一方、読み出したデータが「空」ではない場合には、端子Aを介して図7の処理に移行する。
図7の処理の説明に移行して、圧縮処理部2は、読み出したデータで辞書格納部5に格納されている辞書を検索し、登録済みであるか判断する(ステップS23)。登録済みである場合には、辞書において対応付けて登録されている符号を読み出し、当該符号を、第2構造化データ格納部6に用意されているデータ構造において注目要素位置と同一要素位置に設定する(ステップS25)。そして端子Cを介して図6の処理のステップS17に移行する。
一方、読み出したデータが辞書に登録されていない場合、圧縮処理部2は、読み出したデータそのものを、第2構造化データ格納部6に用意されたデータ構造において注目要素位置と同一要素位置に設定する(ステップS27)。そして端子Cを介して図6の処理のステップS17に移行する。
図6の処理の説明に戻って、圧縮処理部2は、ステップS11、S15、S25又はS27の後に、読み出したデータを、直前データ格納部3に一行前のデータとして登録する(ステップS17)。そして、圧縮処理部2は、第1構造化データ格納部1における圧縮対象の構造化データにおいて次の行が存在するか判断する(ステップS19)。次の行が存在する場合には、圧縮処理部2は、次の行の同一列を注目要素位置に設定する(ステップS21)。そしてステップS7に戻る。一方、次の行が存在しない場合には、現在処理中の列については処理が完了したことになる。処理は端子Bを介して図8の処理に移行する。
図8の処理の説明に移行して、圧縮処理部2は、直前データ格納部3に格納されている一行前のデータをクリアする(ステップS29)。クリアは「空」でもない状態であるとする。そして、圧縮処理部2は、第1構造化データ格納部1における圧縮対象の構造化データにおいて次の行が存在しているか判断する(ステップS31)。次の列が存在する場合には、まだ処理を行う必要があるので、圧縮処理部2は、次の列の第一行を注目要素位置に設定する(ステップS33)。そして端子Dを介して図6のステップS7に戻る。一方、次の列が存在しない場合処理を終了する。
以上のような処理を実施することによって、同一データが連続する場合にもランレングスのデータを用意せずに済むようになり、高い圧縮率を得ることができる。
次に、図6乃至図8に示した処理フローを具体的なデータに対して適用した場合の処理内容について図9乃至図26を用いて説明する。なお、図9乃至図26では、圧縮対象の構造化データをあたかも置換するような形で説明するが、これは処理内容を分かりやすくするためであって、上で述べたように圧縮対象の構造化データとは別に圧縮データを用意するようにする場合もある。
本例では、図3に示した圧縮対象の構造化データを圧縮するものとする。図9に、辞書格納部5に格納される辞書の一例を示す。上でも述べたように、データ「2009/6/5」に対して符号「A」が割り当てられ、データ「10:13」に対して符号「B」が割り当てられ、「空」データに対して符号「D」が割り当てられているものとする。
図10に、第一行第1列が注目要素位置に設定された場合の状態を示す。第一行第1列の場合、一行前のデータがクリアされた状態であり、一行前のデータと一致することはない。従って、第一行第1列のデータが辞書に登録されているか判断し、データ「2009/6/5」は登録されているので、対応する符号「A」が、第一行第1列に設定される。
図11に、第二行第1列が注目要素位置に設定された場合の状態を示す。第二行第1列の場合、一行前のデータが「2009/6/5」に設定されているので、第二行第1列のデータと一行前のデータとは一致する。従って、第二行第1列には「空」が設定される。
図12に、第三行第1列が注目要素位置に設定された場合の状態を示す。第三行第1列の場合、一行前のデータが「2009/6/5」に設定されているので、第三行第1列のデータと一行前のデータとは一致する。従って、第三行第1列には「空」が設定される。
図13に、第四行第1列が注目要素位置に設定された場合の状態を示す。第四行第1列の場合、一行前のデータが「2009/6/5」に設定されているので、第四行第1列のデータと一行前のデータとは一致する。従って、第四行第1列には「空」が設定される。
図14に、第一行第2列が注目要素位置に設定された場合の状態を示す。第一行第2列の場合、一行前のデータがクリアされた状態であるから、一行前のデータと一致することはない。従って、第一行第2列のデータが辞書に登録されているか判断し、データ「10:13」は登録されているので、対応する符号「B」が、第一行第2列に設定される。
図15に、第二行第2列が注目要素位置に設定された場合の状態を示す。第二行第2列の場合、一行前のデータが「10:13」に設定されているので、第二行第2列のデータと一行前のデータとは一致する。従って、第二行第2列には「空」が設定される。
図16に、第三行第2列が注目要素位置に設定された場合の状態を示す。第三行第2列の場合、一行前のデータが「10:13」に設定されているので、第三行第2列のデータと一行前のデータとは一致する。従って、第三行第2列には「空」が設定される。
図17に、第四行第2列が注目要素位置に設定された場合の状態を示す。第四行第2列の場合、一行前のデータが「10:13」に設定されているので、第四行第1列のデータ「10:22」と一行前のデータとは一致しない。従って、第四行第2列のデータが辞書に登録されているか判断し、データ「10:22」は登録されていないので、元のデータ「10:22」が第四行第2列に設定される。
図18に、第一行第3列が注目要素位置に設定された場合の状態を示す。第一行第3列の場合、一行前のデータがクリアされて「空」であるから、一行前のデータと一致することはない。従って、第一行第3列のデータが辞書に登録されているか判断し、データ「0009209」は登録されていないので、元データが、第一行第3列に設定される。この列のデータは全て一行前のデータと一致しないので、説明をスキップする。
図19に、第一行第4列が注目要素位置に設定された場合の状態を示す。第一行第4列の場合、一行前のデータがクリアされた状態であるから、一行前のデータと一致することはない。従って、第一行第4列のデータが辞書に登録されているか判断し、データ「1」は登録されていないので、元データ「1」が、第一行第4列に設定される。
図20に、第二行第4列が注目要素位置に設定された場合の状態を示す。第二行第4列の場合、一行前のデータが「1」に設定されているので、第二行第4列のデータと一行前のデータとは一致する。従って、第二行第4列には「空」が設定される。
図21に、第三行第4列が注目要素位置に設定された場合の状態を示す。第三行第4列の場合、一行前のデータが「1」に設定されているので、第三行第4列のデータ「2」と一行前のデータとは一致しない。従って、第三行第4列には元のデータ「2」が設定される。
図22に、第四行第4列が注目要素位置に設定された場合の状態を示す。第四行第4列の場合、一行前のデータが「2」に設定されているので、第四行第4列のデータと一行前のデータとは一致する。従って、第四行第4列には「空」が設定される。
図23に、第一行第5列が注目要素位置に設定された場合の状態を示す。第一行第5列の場合、一行前のデータがクリアされた状態であるから、一行前のデータと一致することはない。従って、第一行第5列のデータは「空」であるから、「空」を表す符号「D」が、第一行第5列に設定される。
図24に、第二行第5列が注目要素位置に設定された場合の状態を示す。第二行第5列の場合、一行前のデータが「空」に設定されているので、第二行第5列のデータと一行前のデータとは一致する。従って、第二行第5列には「空」が設定される。
図25に、第三行第5列が注目要素位置に設定された場合の状態を示す。第三行第5列の場合、一行前のデータが「空」に設定されているので、第三行第5列のデータと一行前のデータとは一致する。従って、第三行第5列には「空」が設定される。
図26に、第四行第5列が注目要素位置に設定された場合の状態を示す。第四行第5列の場合、一行前のデータが「空」に設定されているので、第四行第5列のデータと一行前のデータとは一致する。従って、第四行第5列には「空」が設定される。
このようにして図4と同じ結果が得られるようになる。
なお、図3に示したデータは、例えばCSV形式であれば、図27に示すようなデータである。すなわち、要素間にはカンマが配置され、列の最後のデータの後ろには改行コード(CRLF)が配置される。図27の例では、属性名の行より下の行以降において、左側から5番目の列は「空」であるから、直前のカンマと改行コードの間にデータは存在しない。
さらに、図4に示したデータは、例えばCSV形式であれば、図28に示すようなデータである。図27と比較すれば、明らかに「空」の要素が増えている。従って、データ量も削減されている。
さらに、図4に示したデータは、図29に示すようなデータフォーマットで第2構造化データ格納部6に格納される場合もある。図29の例では、圧縮対象の構造化データと同様のデータ構造を有する第1のデータ構造と、第1のデータ構造の各要素位置に設定されているポインタが指しているデータが設定されている第2のデータとが含まれる。第1のデータ構造において、「NULL」とされている要素については、図4において「空」が設定されていた要素であってポインタは設定されていない。第1のデータ構造において第一行第1列に設定されたポインタ101は、第2のデータにおいて、符号を表す「ID」と「A」を表す「41」を指している。さらに、第1のデータ構造において第一行第2列に設定されたポインタ102は、第2のデータにおいて、符号を表す「ID」と「B」を表す「42」を指している。また、第1のデータ構造において第四行第2列に設定されているポインタ103は、第2のデータにおいて、データ「10:22」を表す「31」「30」「3a」「32」「32」「00」を指している。
さらに、第1のデータ構造において第一行第3列に設定されているポインタ104は、第2のデータにおいて、データ「0009209」を表す「30」「30」「30」「39」「32」「30」「31」「00」を指している。また、第1のデータ構造において第二行第3列に設定されているポインタ105は、第2のデータにおいて、データ「0054298」を表す「30」「30」「35」「34」「32」「39」「38」「00」を指している。さらに、第1のデータ構造において第三行第3列に設定されているポインタ106は、第2のデータにおいて、データ「0041831」を表す「30」「30」「34」「31」「38」「33」「31」「00」を指している。
さらに、第1のデータ構造において第四行第3列に設定されているポインタ107は、第2のデータにおいて、データ「0020391」を表す「30」「30」「32」「30」「33」「39」「31」「00」を指している。また、第1のデータ構造において第一行第4列に設定されているポインタ108は、第2のデータにおいて、データ「1」を表す「31」「00」を指している。さらに、第1のデータ構造において第三行第4列に設定されているポインタ109は、第2のデータにおいて、データ「2」を表す「32」「00」を指している。 また、第1のデータ構造において第四行第3列に設定されているポインタ110は、第2のデータにおいて、符号を表す「ID」と「D」を表す「44」を指している。
なお、第1のデータ構造におけるポインタが各8バイトであり、第2のデータにおける1つのASCIIコードが1バイトとすると、第1のデータ構造で80(=8*10)バイトとなり、第2のデータで48バイト(=1*8*6)となり、合計で128バイトとなる。
このようなデータ構造を採用するようにしても良い。処理フローにおけるステップS11、S15、S25及びS27におけるデータの設定は、このようにポインタと当該ポインタで指し示されているデータとの組み合わせの設定である場合を含むものとする。
なお、同様の圧縮対象の構造化データを、従来技術であるランレングス符号化法を適用して圧縮すると、図30に示すようなデータとなる。図30は、図29と同様に、ポインタを保持する第1のデータ構造と、ポインタにより指し示されているデータを含む第2のデータとを示している。図29とは異なり、第2のデータには、圧縮対象の構造化データにおいて同一データが連続する場合にはレングスを表す「LEN」とその長さを表すデータとが含まれる。このためデータ量が、図30の例では、8バイト(=(1+1)*4))分だけデータ量が多くなっている。
次に、上で述べたような方法で生成された圧縮データ(第2構造化データ格納部6及び辞書格納部5に格納されているデータである出力データ10)を元の構造化データに戻すための解凍処理について説明する。図31に、データ解凍装置の機能ブロック図を示す。本データ解凍装置は、(A)データ圧縮装置により生成された圧縮データを格納する第2構造化データ格納部14と、(B)データ圧縮装置により生成された辞書のデータを格納する辞書格納部15と、(C)処理途中のデータを格納する直前データ格納部12と、(D)第2構造化データ格納部14と辞書格納部15と直前データ格納部12とを用いて解凍処理を実施する解凍処理部11と、(E)解凍処理部11により生成された構造化データを格納する第3構造化データ格納部13とを有する。
次に、図32乃至図48を用いて解凍処理の処理フローを説明する。まず、解凍処理部11は、第2構造化データ格納部14に格納されている圧縮データを走査して、当該圧縮データに含まれる構造化データと同一のデータ構造を、第3構造化データ格納部13において用意する(ステップS51)。すなわち、圧縮データにおける構造化データと同一の行数及び列数のデータ構造を用意する。そして、解凍処理部11は、圧縮データにおける構造化データの第一行第1列を注目要素位置に設定する(ステップS53)。
そして、解凍処理部11は、第2構造化データ格納部14から、注目要素位置のデータを読み出し(ステップS55)、読み出したデータが「空」であるか判断する(ステップS57)。通常、第一行目において「空」であることはないので、ステップS61に移行する。但し、第二行目以降については、「空」である場合もある。「空」であれば、解凍処理部11は、直前データ格納部12に格納されている一行前の設定データを、第3構造化データ格納部13に用意されたデータ構造において注目要素位置と同一の要素位置に設定する(ステップS59)。そしてステップS65に移行する。
一方、読み出したデータが「空」ではない場合、解凍処理部11は、読み出したデータが空を表す符号であるか判断する(ステップS61)。空を表す符号が辞書に登録されている場合には、辞書格納部15に格納されており、空を表す符号と、読み出したデータとが一致するか判断する。一致する場合には、解凍処理部11は、「空」を、第3構造化データ格納部13に用意されたデータ構造において注目要素位置と同一の要素位置に設定する(ステップS63)。そしてステップS65に移行する。一方、空を表す符号と一致しない場合には、端子Eを介して図33の処理に移行する。
図33の処理の説明に移行して、解凍処理部11は、読み出したデータで辞書格納部15に格納されている辞書を検索して、符号として辞書に登録されているか判断する(ステップS71)。読み出したデータが符号として辞書に登録されている場合には、解凍処理部11は、辞書格納部15に格納されている辞書において符号に対応付けて登録されているデータを、第3構造化データ格納部13に用意されたデータ構造において注目要素位置と同一の要素位置に設定する(ステップS73)。処理は端子Fを介して図32のステップS65に移行する。一方、読み出したデータが符号として辞書に登録されていない場合には、解凍処理部11は、読み出したデータをそのまま、第3構造化データ格納部13に用意されたデータ構造において注目要素位置と同一の要素位置に設定する(ステップS75)。この場合も、端子Fを介して図32のステップS65に移行する。
図32の処理の説明に戻って、ステップS59、S63、S73又はS75の後に、解凍処理部11は、第3構造化データ格納部13に用意されたデータ構造において注目要素位置と同一の要素位置に設定されているデータを、直前データ格納部12に一行前の設定データとして設定する(ステップS65)。そして、解凍処理部11は、第2構造化データ格納部14における構造化データにおいて次の行が存在しているか判断する(ステップS67)。次の行が存在している場合には、解凍処理部11は、次の行の同一列を注目要素位置に設定する(ステップS69)。そしてステップS55に戻る。一方、次の行が存在しない場合には、端子Gを介して図34の処理に移行する。
図34の処理の説明に移行して、解凍処理部11は、直前データ格納部12に格納されている、一行前の設定データをクリアし(ステップS77)、第2構造化データ格納部14における構造化データにおいて次の列が存在するか判断する(ステップS79)。クリアされた状態は「空」とは異なるものとする。次の列が存在している場合には、解凍処理部11は、次の列の第一行を注目要素位置に設定する(ステップS81)。そして端子Hを介して図32のステップS55に戻る。一方、次の列が存在しない場合には、処理を終了する。
以上のような処理を実施することによって、圧縮データを元のデータに戻すことができる。
次に、図32乃至図34に示した処理フローを具体的なデータに対して適用した場合の処理内容について図35乃至図48を用いて説明する。なお、図35乃至図48では、圧縮データをあたかも置換するような形で説明するが、これは処理内容を分かりやすくするためであって、上で述べたように圧縮データとは別に解凍データを用意するようにする場合もある。
本例では、図4に示した圧縮データに含まれる構造化データを解凍するものとする。辞書も図9に示すようなものが与えられるものとする。
図35に、第一行第1列が注目要素位置に設定された場合の状態を示す。第一行第1列の場合、一行前の設定データはクリアされた状態であり、一行前の設定データと一致することはない。従って、第一行第1列の符号「A」が辞書に登録されているか判断し、登録されているので、図36に示すように、対応するデータ「2009/6/5」が、第一行第1列に設定される。
次に、図36に示すように、ハッチングが付された第二行第1列が注目要素位置に設定される。第二行第1列に設定されているデータは「空」であり、一行前の設定データが「2009/6/5」である。従って、図37に示すように、第二行第1列には「2009/6/5」が設定される。
次に、図37に示すように、ハッチングが付された第三行第1列が注目要素位置に設定される。第三行第1列に設定されているデータは「空」であり、一行前の設定データが「2009/6/5」である。従って、図38に示すように、第三行第1列には「2009/6/5」が設定される。
次に、図38に示すように、ハッチングが付された第四行第1列が注目要素位置に設定される。第四行第1列に設定されているデータは「空」であり、一行前の設定データが「2009/6/5」である。従って、図39に示すように、第四行第1列には「2009/6/5」が設定される。
次に、図39に示すように、第一行第2列が注目要素位置に設定される。第一行第2列の場合、一行前のデータが「空」であり、一行前のデータと一致することはない。従って、第一行第2列の符号「B」が辞書に登録されているか判断し、登録されているので、図40に示すように、対応するデータ「10:13」が、第一行第2列に設定される。
次に、図40に示すように、ハッチングが付された第二行第2列が注目要素位置に設定される。第二行第2列に設定されているデータは「空」であり、一行前の設定データが「10:13」である。従って、図41に示すように、第二行第2列には「10:13」が設定される。
次に、図41に示すように、ハッチングが付された第三行第2列が注目要素位置に設定される。第三行第2列に設定されているデータは「空」であり、一行前の設定データが「10:13」である。従って、図42に示すように、第三行第2列には「10:13」が設定される。
次に、図42に示すように、ハッチングが付された第四行第2列が注目要素位置に設定される。第四行第2列に設定されているデータは「10:22」であり、一行前の設定データ「10:13」とは異なっている。また、データ「10:22」は辞書にも登録されていない。従って、第四行第2列には「10:22」が設定される。
なお、商品IDの列については、辞書にも登録されておらず、全ての行の値が異なるので、全て図42に示す値が、そのまま対応する要素位置に設定される。従って、これらについての処理の説明は省略する。
次に、図43に示すように、第一行第4列が注目要素位置に設定される。第一行第4列の場合、一行前のデータが「空」であり、一行前のデータと一致することはない。従って、第一行第4列のデータ「1」が辞書に登録されているか判断する。ここではデータ「1」は登録されていないので、図44に示すように、読み出したデータ「1」が、第一行第4列にそのまま設定される。
次に、図44に示すように、ハッチングが付された第二行第4列が注目要素位置に設定される。第二行第4列に設定されているデータは「空」であり、一行前の設定データが「1」である。従って、図45に示すように、第二行第4列には「1」が設定される。
次に、図45に示すように、ハッチングが付された第三行第4列が注目要素位置に設定される。第三行第4列に設定されているデータは「2」であり、一行前の設定データが「1」であるから、それらは一致しない。従って、第一行第4列のデータ「2」が辞書に登録されているか判断する。ここではデータ「2」は登録されていないので、図46に示すように、読み出したデータ「2」が、第三行第4列にそのまま設定される。
次に、図46に示すように、ハッチングが付された第四行第4列が注目要素位置に設定される。第四行第4列に設定されているデータは「空」であり、一行前の設定データが「2」である。従って、図47に示すように、第四行第4列には「2」が設定される。
次に、図47に示すように、第一行第5列が注目要素位置に設定される。第一行第5列の場合、一行前のデータが「空」であり、一行前のデータと一致することはない。従って、第一行第4列の符号「D」が何を表しているかを判断するか、又は辞書に登録されているか判断する。ここでは符号「D」は「空」を意味するので、図48に示すように、「空」が、第一行第5列に設定される。
次に、図48に示すように、ハッチングが付された第二行第5列が注目要素位置に設定される。第二行第5列に設定されているデータは「空」であり、一行前の設定データが「空」である。従って、図48に示すように、第二行第5列には「空」が設定される。四行目まで以下同じである。
以上本技術の実施の形態を説明したが、本技術は上で述べた実施の形態に限定されるものではない。例えば、上で示したデータ圧縮装置及びデータ解凍装置の機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成とは一致しない。
また、処理フローについても、処理結果が一致するならば、ステップの順番を入れ替えたり、並列実行するようにしても良い。特に、本実施の形態では、列毎に異なる属性を有するデータを前提に圧縮を行っているので、各列の処理は分離可能である。すなわち、列毎に複数のプロセッサで並列処理することが可能である。なお、行と列とは入れ替え可能であるが、同一データが連続して出現しやすい方向を列とするのが効率的である。
なお、上で述べたデータ圧縮装置及びデータ解凍装置は、コンピュータ装置であって、図49に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本圧縮方法は、行と列とが規定されている構造化データを圧縮する圧縮方法であり、記憶装置に格納されている構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納するステップと、構造化データにおける各列において、圧縮処理を実施するステップとを含む。そして、上で述べた圧縮処理が、現在処理中の行に設定されている第1のデータが直前の行に設定されている第2のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定するステップと、第1のデータが第2のデータと一致しない場合、現在処理中の行に空が設定されているか判断し、現在処理中の行に空が設定されている場合には圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、現在処理中の行に空が設定されていない場合には辞書格納部に格納されている辞書に応じて第1のデータ又は当該第1のデータに対応付けられている符号を圧縮データにおける同一要素位置におけるデータとして設定するステップとを含む。
行と列とが規定されている構造化データであることを有効活用して、圧縮後のデータ量を削減することができる。
なお、上で述べた構造化データが、リレーショナルデータベースのデータ又はCSV形式のデータである場合もある。近年よく用いられる、このようなデータ形式のデータを、効率的に圧縮することができる。
さらに、上で述べた圧縮データが、構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第1データと上記ポインタにより指し示され且つ構造化データに含まれるデータ又は当該データに対応する符号が設定された第2データとを含む第1データ構造と、CSV形式のデータと、リレーショナルデータベースのデータとのいずれかであるようにしてもよい。どの形式のデータであっても、他の方式よりもデータ量が削減できる。
また、本解凍方法は、行と列とが規定されている構造化データを含む圧縮データを解凍する解凍方法であり、記憶装置に格納されている構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ圧縮データにおける構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定するステップと、現在処理中の行に空が設定されていない場合、現在処理中の行に空を表す符号が設定されているか判断し、現在処理中の行に空を表す符号が設定されている場合には、解凍データにおける同一要素位置に空を設定するステップと、現在処理中の行に空を表す符号が設定されていない場合には、データと当該データに対応する符号との対応付けデータであり且つ辞書データ格納部に格納されている辞書に応じて、現在処理中の行に設定されているデータ又は現在処理中の行に設定されている符号に対応付けられているデータを、解凍データにおける同一要素位置のデータとして設定するステップとを含む。
上で述べた圧縮方法によって圧縮されたデータを、適切に解凍することができる。
また、上で述べた圧縮データが、構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第1データと上記ポインタにより指し示され且つ構造化データに含まれるデータ又は当該データに対応する符号が設定された第2データとを含む第1データ構造と、CSV形式のデータと、リレーショナルデータベースのデータとのいずれかである場合もある。
また、解凍データが、リレーショナルデータベースのデータ又はCSV形式のデータである場合もある。
第2の態様に係る圧縮方法は、行と列とが規定されている構造化データを圧縮する圧縮方法であり、同一列において同一のデータが設定された、連続する複数の行を特定するステップ(図50:ステップS1001)と、特定された複数の行において空以外のデータが設定されている場合、当該複数の行における2行目以降のデータとして、空を設定するステップ(図50:ステップS1003)と、特定された複数の行において空が設定されている場合、当該複数の行における1行目のデータとして、空に対応する符号を設定するステップ(図50:ステップS1005)とを含む。
また、第2の態様に係る解凍方法は、行と列とが規定されている構造化データを解凍する解凍方法であり、同一列において、空が設定された、連続する1以上の行を特定するステップ(図51:ステップS1101)と、当該特定された1以上の行に対し、その直前の行に設定されたデータを設定するステップ(図51:ステップS1103)と、空に対応する符号が設定された行に対し、空を設定するステップ(図51:ステップS1105)とを含む。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
行と列とが規定されている構造化データを圧縮する圧縮プログラムであって、
同一列において同一のデータが設定された、連続する複数の行を特定するステップと、
特定された前記複数の行において空以外のデータが設定されている場合、当該複数の行における2行目以降のデータとして、空を設定するステップと、
特定された前記複数の行において空が設定されている場合、当該複数の行における1行目のデータとして、空に対応する符号を設定するステップと、
を、コンピュータに実行させる圧縮プログラム。
(付記2)
行と列とが規定されている構造化データを解凍する解凍プログラムであって、
同一列において、空が設定された、連続する1以上の行を特定するステップと、
当該特定された1以上の行に対し、その直前の行に設定されたデータを設定するステップと、
空に対応する符号が設定された行に対し、空を設定するステップと、
を、コンピュータに実行させるための解凍プログラム。
(付記3)
行と列とが規定されている構造化データを圧縮する圧縮方法であって、
同一列において同一のデータが設定された、連続する複数の行を特定するステップと、
特定された前記複数の行において空以外のデータが設定されている場合、当該複数の行における2行目以降のデータとして、空を設定するステップと、
特定された前記複数の行において空が設定されている場合、当該複数の行における1行目のデータとして、空に対応する符号を設定するステップと、
を含み、コンピュータに実行される圧縮方法。
(付記4)
行と列とが規定されている構造化データを解凍する解凍方法であって、
同一列において、空が設定された、連続する1以上の行を特定するステップと、
当該特定された1以上の行に対し、その直前の行に設定されたデータを設定するステップと、
空に対応する符号が設定された行に対し、空を設定するステップと、
を含み、コンピュータに実行される解凍方法。
(付記5)
行と列とが規定されている構造化データを圧縮する圧縮装置であって、
同一列において同一のデータが設定された、連続する複数の行を特定する手段と、
特定された前記複数の行において空以外のデータが設定されている場合、当該複数の行における2行目以降のデータとして、空を設定する手段と、
特定された前記複数の行において空が設定されている場合、当該複数の行における1行目のデータとして、空に対応する符号を設定する手段と、
を有する圧縮装置。
(付記6)
行と列とが規定されている構造化データを解凍する解凍装置であって、
同一列において、空が設定された、連続する1以上の行を特定する手段と、
当該特定された1以上の行に対し、その直前の行に設定されたデータを設定する手段と、
空に対応する符号が設定された行に対し、空を設定する手段と、
を有する解凍装置。
(付記7)
行と列とが規定されている構造化データを圧縮する圧縮プログラムであって、
記憶装置に格納されている前記構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納するステップと、
前記構造化データにおける各列において、圧縮処理を実施するステップと、
を、コンピュータに実行させ、
前記圧縮処理が、
現在処理中の行に設定されている第1のデータが直前の行に設定されている第2のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ前記構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定するステップと、
前記第1のデータが前記第2のデータと一致しない場合、前記現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には前記圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、前記現在処理中の行に空が設定されていない場合には前記辞書格納部に格納されている前記辞書に応じて前記第1のデータ又は当該第1のデータに対応付けられている符号を前記圧縮データにおける同一要素位置におけるデータとして設定するステップと、
を含む
圧縮プログラム。
(付記8)
前記構造化データが、リレーショナルデータベースのデータ又はCSV形式のデータである
付記1記載の圧縮プログラム。
(付記9)
前記圧縮データが、前記構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第1データと前記ポインタにより指し示され且つ前記構造化データに含まれるデータ又は当該データに対応する符号が設定された第2データとを含む第1データ構造と、CSV形式のデータと、リレーショナルデータベースのデータとのいずれかである
付記1又は2記載の圧縮プログラム。
(付記10)
行と列とが規定されている構造化データを含む圧縮データを解凍する解凍プログラムであって、
記憶装置に格納されている前記構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ前記圧縮データにおける前記構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定するステップと、
前記現在処理中の行に空が設定されていない場合、前記現在処理中の行に空を表す符号が設定されているか判断し、前記現在処理中の行に空を表す符号が設定されている場合には、前記解凍データにおける同一要素位置に空を設定するステップと、
前記現在処理中の行に空を表す符号が設定されていない場合には、データと当該データに対応する符号との対応付けデータであり且つ辞書データ格納部に格納されている辞書に応じて、前記現在処理中の行に設定されているデータ又は前記現在処理中の行に設定されている符号に対応付けられているデータを、前記解凍データにおける同一要素位置のデータとして設定するステップと、
を、コンピュータに実行させるための解凍プログラム。
(付記11)
前記圧縮データが、前記構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第1データと前記ポインタにより指し示され且つ前記構造化データに含まれるデータ又は当該データに対応する符号が設定された第2データとを含む第1データ構造と、CSV形式のデータと、リレーショナルデータベースのデータとのいずれかである
付記4記載の圧縮プログラム。
(付記12)
前記解凍データが、リレーショナルデータベースのデータ又はCSV形式のデータである
付記4又は5記載の圧縮プログラム。
(付記13)
行と列とが規定されている構造化データを圧縮する圧縮方法であって、
記憶装置に格納されている前記構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納するステップと、
前記構造化データにおける各列において、圧縮処理を実施するステップと、
を含み、コンピュータに実行され、
前記圧縮処理が、
現在処理中の行に設定されている第1のデータが直前の行に設定されている第2のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ前記構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定するステップと、
前記第1のデータが前記第2のデータと一致しない場合、前記現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には前記圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、前記現在処理中の行に空が設定されていない場合には前記辞書格納部に格納されている前記辞書に応じて前記第1のデータ又は当該第1のデータに対応付けられている符号を前記圧縮データにおける同一要素位置におけるデータとして設定するステップと、
を含む
圧縮方法。
(付記14)
行と列とが規定されている構造化データを含む圧縮データを解凍する解凍方法であって、
記憶装置に格納されている前記構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ前記圧縮データにおける前記構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定するステップと、
前記現在処理中の行に空が設定されていない場合、前記現在処理中の行に空を表す符号が設定されているか判断し、前記現在処理中の行に空を表す符号が設定されている場合には、前記解凍データにおける同一要素位置に空を設定するステップと、
前記現在処理中の行に空を表す符号が設定されていない場合には、データと当該データに対応する符号との対応付けデータであり且つ辞書データ格納部に格納されている辞書に応じて、前記現在処理中の行に設定されているデータ又は前記現在処理中の行に設定されている符号に対応付けられているデータを、前記解凍データにおける同一要素位置のデータとして設定するステップと、
を含み、コンピュータに実行される解凍方法。
(付記15)
行と列とが規定されている構造化データを圧縮するデータ圧縮装置であって、
記憶装置に格納されている前記構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納する辞書生成部と、
前記構造化データにおける各列において、圧縮処理を実施する圧縮処理部と、
を有し、
前記圧縮処理部が、
現在処理中の行に設定されている第1のデータが直前の行に設定されている第2のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ前記構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定し、
前記第1のデータが前記第2のデータと一致しない場合、前記現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には前記圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、前記現在処理中の行に空が設定されていない場合には前記辞書格納部に格納されている前記辞書に応じて前記第1のデータ又は当該第1のデータに対応付けられている符号を前記圧縮データにおける同一要素位置におけるデータとして設定する
データ圧縮装置。
(付記16)
行と列とが規定されている構造化データを含む圧縮データを解凍するデータ解凍装置であって、
記憶装置に格納されている前記構造化データにおけるデータと当該データに対応する符号との対応付けデータである辞書を格納する辞書データ格納部と、
前記構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ前記圧縮データにおける前記構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定し、前記現在処理中の行に空が設定されていない場合、前記現在処理中の行に空を表す符号が設定されているか判断し、前記現在処理中の行に空を表す符号が設定されている場合には、前記解凍データにおける同一要素位置に空を設定し、前記現在処理中の行に空を表す符号が設定されていない場合には、前記辞書データ格納部に格納されている前記辞書に応じて、前記現在処理中の行に設定されているデータ又は前記現在処理中の行に設定されている符号に対応付けられているデータを、前記解凍データにおける同一要素位置のデータとして設定する解凍処理部と、
を有するデータ解凍装置。
1 第1構造化データ格納部 2 圧縮処理部 3 直前データ格納部
4 辞書生成部 5 辞書格納部 6 第2構造化データ格納部
11 解凍処理部 12 直前データ格納部
13 第3構造化データ格納部 14 第2構造化データ格納部
15 辞書格納部

Claims (6)

  1. 行と列とが規定されている構造化データを圧縮して圧縮データを生成する圧縮プログラムであって、
    前記構造化データにおける或る行の或る列を特定するステップと、
    特定された前記或る行の前記或る列に設定されているデータが、前記或る行の1行前の前記或る列に設定されているデータと同じである場合、前記圧縮データにおける前記或る行の前記或る列に、空を設定するステップと、
    特定された前記或る行の前記或る列に空が設定されており、且つ前記或る行の1行前の前記或る列に空以外のデータが設定されている場合、前記圧縮データにおける前記或る行の前記或る列に、空に対応する符号を設定するステップと、
    を、コンピュータに実行させるための圧縮プログラム。
  2. 行と列とが規定されている構造化データを解凍する解凍プログラムであって、
    同一列において、空が設定された、連続する1以上の行を特定するステップと、
    当該特定された1以上の行に対し、その直前の行に設定されたデータを設定するステップと、
    空に対応する符号が設定された行に対し、空を設定するステップと、
    を、コンピュータに実行させるための解凍プログラム。
  3. 行と列とが規定されている構造化データを圧縮して圧縮データを生成する圧縮方法であって、
    前記構造化データにおける或る行の或る列を特定するステップと、
    特定された前記或る行の前記或る列に設定されているデータが、前記或る行の1行前の前記或る列に設定されているデータと同じである場合、前記圧縮データにおける前記或る行の前記或る列に、空を設定するステップと、
    特定された前記或る行の前記或る列に空が設定されており、且つ前記或る行の1行前の前記或る列に空以外のデータが設定されている場合、前記圧縮データにおける前記或る行の前記或る列に、空に対応する符号を設定するステップと、
    を含み、コンピュータに実行される圧縮方法。
  4. 行と列とが規定されている構造化データを解凍する解凍方法であって、
    同一列において、空が設定された、連続する1以上の行を特定するステップと、
    当該特定された1以上の行に対し、その直前の行に設定されたデータを設定するステップと、
    空に対応する符号が設定された行に対し、空を設定するステップと、
    を含み、コンピュータに実行される解凍方法。
  5. 行と列とが規定されている構造化データを圧縮して圧縮データを生成する圧縮装置であって、
    前記構造化データにおける或る行の或る列を特定する手段と、
    特定された前記或る行の前記或る列に設定されているデータが、前記或る行の1行前の前記或る列に設定されているデータと同じである場合、前記圧縮データにおける前記或る行の前記或る列に、空を設定する手段と、
    特定された前記或る行の前記或る列に空が設定されており、且つ前記或る行の1行前の前記或る列に空以外のデータが設定されている場合、前記圧縮データにおける前記或る行の前記或る列に、空に対応する符号を設定する手段と、
    を有する圧縮装置。
  6. 行と列とが規定されている構造化データを解凍する解凍装置であって、
    同一列において、空が設定された、連続する1以上の行を特定する手段と、
    当該特定された1以上の行に対し、その直前の行に設定されたデータを設定する手段と、
    空に対応する符号が設定された行に対し、空を設定する手段と、
    を有する解凍装置。
JP2009243892A 2009-10-22 2009-10-22 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置 Active JP5549177B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009243892A JP5549177B2 (ja) 2009-10-22 2009-10-22 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009243892A JP5549177B2 (ja) 2009-10-22 2009-10-22 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置

Publications (2)

Publication Number Publication Date
JP2011090526A JP2011090526A (ja) 2011-05-06
JP5549177B2 true JP5549177B2 (ja) 2014-07-16

Family

ID=44108715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009243892A Active JP5549177B2 (ja) 2009-10-22 2009-10-22 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置

Country Status (1)

Country Link
JP (1) JP5549177B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9165010B2 (en) * 2012-04-30 2015-10-20 Sap Se Logless atomic data movement
JP6045415B2 (ja) * 2013-03-22 2016-12-14 Kddi株式会社 データ構造化方法、データ再構成方法、データ構造化プログラム、データ再構成プログラム及びデータ符号化装置
JP6341205B2 (ja) * 2013-05-30 2018-06-13 日本電気株式会社 データ圧縮システム
JP6733483B2 (ja) * 2016-10-07 2020-07-29 富士通株式会社 符号化プログラム、符号化方法および符号化装置
JP6787231B2 (ja) 2017-04-04 2020-11-18 富士通株式会社 データ処理プログラム、データ処理方法およびデータ処理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2591187B2 (ja) * 1989-09-28 1997-03-19 日本電気株式会社 データ圧縮方法
JPH05225215A (ja) * 1991-11-29 1993-09-03 Nec Corp 電子伝票システム
JPH07121571A (ja) * 1993-10-26 1995-05-12 Oki Electric Ind Co Ltd データベース装置
JPH0962752A (ja) * 1995-08-30 1997-03-07 Sumitomo Metal Ind Ltd 表作成装置及びその表作成方法
AU2003229021C1 (en) * 2002-05-10 2009-09-17 Oracle International Corporation Storing and querying relational data in compressed storage format

Also Published As

Publication number Publication date
JP2011090526A (ja) 2011-05-06

Similar Documents

Publication Publication Date Title
US10116325B2 (en) Data compression/decompression device
JP3009727B2 (ja) 改良形データ圧縮装置
EP3120266B1 (en) Ozip compression and decompression
US20160112062A1 (en) Parallel dictionary-based compression encoder
CN106549673B (zh) 一种数据压缩方法及装置
JP5549177B2 (ja) 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置
WO2015029329A1 (en) Data decompression utilizing pre-expanded dictionaries during decompression
CN104462176B (zh) 用于通过使用解压缩图进行数据访问的系统和方法
US20200294629A1 (en) Gene sequencing data compression method and decompression method, system and computer-readable medium
CN111510718B (zh) 通过图像文件的块间差异提高压缩率的方法及系统
CN115438114B (zh) 存储格式转换方法、系统、装置、电子设备及存储介质
US20160204796A1 (en) Enhanced compression, encoding, and naming for resource strings
CN108763546A (zh) 一种数据格式的转换方法、装置、存储介质及终端
US20160203152A1 (en) Enhanced compression, encoding, and naming for resource strings
Nandi et al. A compression technique based on optimality of LZW code (OLZW)
US20160203154A1 (en) Enhanced compression, encoding, and naming for resource strings
US8930808B2 (en) Processing rich text data for storing as legacy data records in a data storage system
US7167115B1 (en) Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
US20160203151A1 (en) Enhanced compression, encoding, and naming for resource strings
US20120109911A1 (en) Compression Of XML Data
CN115904240A (zh) 数据处理方法、装置、电子设备和存储介质
CN111475679B (zh) Html文档处理方法、页面显示方法和设备
KR20220089211A (ko) 문자 빈도 기반 서열 재정렬을 통한 fastq 데이터 압축 방법 및 장치
CN112506651A (zh) 一种大数据量环境中数据运算的方法和设备
CN105893335B (zh) 显示文本的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140422

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140505

R150 Certificate of patent or registration of utility model

Ref document number: 5549177

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150