JP5487985B2 - 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム - Google Patents

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

Info

Publication number
JP5487985B2
JP5487985B2 JP2010006034A JP2010006034A JP5487985B2 JP 5487985 B2 JP5487985 B2 JP 5487985B2 JP 2010006034 A JP2010006034 A JP 2010006034A JP 2010006034 A JP2010006034 A JP 2010006034A JP 5487985 B2 JP5487985 B2 JP 5487985B2
Authority
JP
Japan
Prior art keywords
code
data
frequent
storage unit
processing target
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
JP2010006034A
Other languages
English (en)
Other versions
JP2011145883A (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 JP2010006034A priority Critical patent/JP5487985B2/ja
Publication of JP2011145883A publication Critical patent/JP2011145883A/ja
Application granted granted Critical
Publication of JP5487985B2 publication Critical patent/JP5487985B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本技術は、圧縮技術に関する。
DaaS(Database as a Service)といったように、インターネット等のネットワーク経由で、データベースの利用環境を提供するサービスが普及し始めている。このようなサービスでは、データベースにおけるメモリ効率を高めるために、複数のテーブルを保持せずに全ての顧客のデータを1つのテーブルで保持する場合がある。図1に例を示す。図1の例では、TIDがテナントID、すなわち顧客識別情報であり、ここでは3つの顧客のデータが1つのテーブルで管理されるようになっている。図1の例では、Tenant3という顧客は、EPhone、ESalary及びEOfficeという列を使用しておらず、Tenant21という顧客は、EAge、ESalaryという列を使用しておらず、Tenant33という顧客は、EPhoneという列を使用していないので、該当セルには「NULL」が登録されている。このように多数の「NULL」が分散して登録されるような場合や、同じ値が多数行に散在するような場合がある。
また、このようなデータベースのデータに加え、様々な業務の膨大なログデータや、XML(eXtensible Markup Language)やCSV(Comma Separated Values)などといった構造を有するデータを保存する必要が出てきている。
これに対して、利用する列の位置を表すビット列を生成して利用しない列を削除してしまうような技術や、NULLを少なくするようにテーブルを分割する技術、XML処理(例えばSAX(Simple API for XML),DOM(Document Object Model))可能なままデータ圧縮を行うような技術が存在しているが、十分な圧縮が行われているわけではない。
また、以下のような技術も存在している。すなわち、複数の配列要素のシンボルに対して各配列の先頭から順番に注目し、その注目位置のシンボルに基づいて複数の配列要素を複数のグループに分け、各グループの配列要素を整列する処理を第1の整列処理と定義する。そして、その整列後の配列に対して第1の整列処理を回帰的に実施した上で圧縮を行うものである。
さらに、圧縮効率を高める技術には以下のようなものもある。すなわち、エントロピー符号化部に、当りやすい符号表と当りにくい符号表というように複数の符号表を準備する。そして、ブロックソート変換部からのソート済み最終文字列をMTF(Move to Front)変換部で変換したMTF符号列につき、エントロピー符号化部は、不連続部分で符号表を切り替えてエントロピー符号化する。またMTF変換に使用する参照リストを使用文字の種類分、参照リスト格納部に格納し、MTF変換部は、ブロックソート済み最終文字列の先頭文字により参照リストを選択してMTF変換するものである。
また、データベースの圧縮のための技術も存在している。具体的には、レコード形式単位に各データ形式に応じた初期値を設定したマスクテーブルファイルを作成しておく。格納要求されたレコード受渡しエリアとマスクテーブル常駐エリアとの排他的論理和をとり、値が一致する項目全てをゼロ「00」にし、同一文字の連続性を大幅に高めた後、連続同一文字の部分を圧縮制御情報に置換し、データベースファイルに格納するというものである。
なお、ユニバーサル符号化(例えばLZ78、LZ77)やエントロピー符号化(Huffman符号、算術符号)といった一般的なデータ圧縮技術は多数存在している。
M. Hui, et al.,"Supporting Database Applications as a Service,"In Proc. Of Int’l Conf. on Data Engineering, 2009 S. Aulbach,"Multi-Tenant Database for Software as a Service: Schema-Mapping Technique,"SIGMOD 2008 D. Adjeroh, T. Bell, A. Mukherjee,"The Burronws-Wheeler Transform Data Compression, Suffix Arrays, and Pattern Matching," Springer, ISBN-13: 978-0-387-78908-8, 2008
特開平6−337762号公報 特開平9−214353号公報 特開2000−29667号公報
上で述べた従来技術では、行と列とを有する構造データ(Structured Data)に対する圧縮率は必ずしも十分とは言えない。
従って、本技術の目的は、行と列とを有する構造データに対して高い圧縮率を可能とする圧縮技術を提供することである。
本技術の第1の態様に係る圧縮方法は、(A)データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、(B)頻出値格納部に格納されている頻出値又は構造データにおける特定の行内に出現する頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、頻出値集合と符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、(C)構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、(D)符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、符号の第2のシーケンスを生成する順列変換ステップと、(E)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納する並べ替え処理ステップと、(F)データ格納部に格納されている並び替え後の構造データに対して圧縮処理を実施するステップとを含む。
本技術の第2の態様に係る解凍方法は、(A)圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、(B)データ格納部に格納されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、(C)頻出値格納部に格納されている頻出値又は構造データにおける特定の行内に出現する頻出値の組み合わせである頻出値集合に対して、構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、頻出値集合と符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、(D)構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、(E)符号の第1のシーケンスに対して、上記構造データに施された所定の順列変換処理の逆処理を実施し、符号の第2のシーケンスを生成するステップと、(F)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納する並び替え処理ステップとを含む。
本技術の第3の態様に係る解凍方法は、(A)圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、(B)データ格納部に格納されている構造データにおける各処理対象行を、構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号に変換する変換ステップと、(C)符号の第1のシーケンスに対して、上記構造データに施された所定の順列変換処理の逆処理を実施し、符号の第2のシーケンスを生成するステップと、(D)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納するステップとを含む。符号表が圧縮されたデータに付加されている場合にはこのような処理を行うことによって高速に元のデータを復元できる。
行と列とを有する構造データに対して高い圧縮率が可能となる。
図1は、従来の問題について説明するための図である。 図2は、本実施の形態に係る圧縮装置の機能ブロック図である。 図3は、本実施の形態に係る圧縮処理の処理フローを示す図である。 図4は、圧縮すべきデータの一例を示す図である。 図5は、頻出値表の一例を示す図である。 図6は、コード付与処理の処理フローを示す図である。 図7は、頻出値集合表の一例を示す図である。 図8は、符号表の第1の例を示す図である。 図9は、符号決定処理の第2の例に係る処理フローを示す図である。 図10は、符号決定処理の第2の例における仮の符号表を表す図である。 図11は、符号表の第2の例を示す図である。 図12は、符号決定処理の第3の例に係る処理フローを示す図である。 図13は、符号決定処理の第3の例におけるコード表を表す図である。 図14は、符号表の第3の例を示す図である。 図15Aは、符号決定処理の第1及び第2の例で生成された符号表に基づき割り当てられた符号列の例を示す図である。 図15Bは、符号決定処理の第3の例で生成された符号表に基づき割り当てられた符号列の例を示す図である。 図16Aは、順列変換処理として単純なソーティング処理を採用した場合の処理を説明する図である。 図16Bは、単純なソーティング処理を実施した場合に圧縮データに保持すべきデータの一例を示す図である。 図17は、符号表の第1及び第2の例を用いた場合におけるブロックソーティングを説明するための図である。 図18Aは、符号表の第1及び第2の例を用いた場合におけるブロックソーティングを説明するための図である。 図18Bは、符号列格納部に格納されるデータの一例を示す図である。 図19は、符号表の第3の例を用いた場合におけるブロックソーティングを説明するための図である。 図20Aは、符号表の第3の例を用いた場合におけるブロックソーティングを説明するための図である。 図20Bは、符号列格納部に格納されるデータの一例を示す図である。 図21は、ブロックソーティング後の符号列に併せて行の並び替えを行った場合の第1の例を示す図である。 図22は、ブロックソーティング後の符号列に併せて行の並び替えを行った場合の第2の例を示す図である。 図23は、解凍装置の機能ブロック図である。 図24は、解凍処理の処理フローを示す図である。 図25は、符号表の第1及び第2の例を用い且つ解凍処理を実施する際に割り当てられる符号列の一例を示す図である。 図26は、符号表の第3の例を用い且つ解凍処理を実施する際に割り当てられる符号列の一例を示す図である。 図27Aは、逆ブロックソーティングを説明するための図である。 図27Bは、逆ブロックソーティングの結果として符号列格納部に格納されるデータを示す図である。 図28Aは、逆ブロックソーティングを説明するための図である。 図28Bは、逆ブロックソーティングの結果として符号列格納部に格納されるデータを示す図である。 図29Aは、復元後の構造データの第1の例を示す図である。 図29Bは、復元後の構造データの第2の例を示す図である。 図30は、コンピュータの機能ブロック図である。 図31は、圧縮装置の機能ブロック図である。 図32は、解凍装置の機能ブロック図である。 図33は、解凍装置の機能ブロック図である。
図2に本技術の実施の形態に係る圧縮装置100の機能ブロック図を示す。本実施の形態に係る圧縮装置100は、(A)テーブルやCSVファイルなどの行及び列を有する構造データを格納するデータ格納部10と、(B)データ格納部10に格納されているデータについて処理を実施する頻出値抽出部11と、(C)頻出値抽出部11の処理結果である頻出値表を格納する頻出値表格納部12と、(D)データ格納部10及び頻出値表格納部12に格納されているデータを用いて処理を行う符号付与部13と、(E)符号付与部13による処理結果を格納する符号表格納部14と、(F)データ格納部10及び符号表格納部14に格納されているデータを用いて処理を行う符号化処理部20と、(G)符号化処理部20の処理結果などを格納する符号列格納部16と、(H)符号列格納部16に格納されているデータを用いて処理を行う順列変換処理部15と、(I)データ格納部10及び符号列格納部16に格納されているデータを用いて処理を行う並び替え処理部17と、(J)データ格納部10に格納されている、並び替え後の構造データに対して圧縮処理を実施する圧縮処理部18と、(K)圧縮処理部18の処理結果である圧縮データを格納する圧縮データ格納部19と、(L)頻出値抽出部11などに指示を入力する入力部1とを有する。
次に、図2に示した圧縮装置100の処理内容について図3乃至図22を用いて説明する。なお、例えばユーザなどによって、圧縮すべき構造データがデータ格納部10に格納されているものとする。また、ユーザは、当該圧縮すべき構造データを入力部1を介して指定して圧縮処理の実行を指示する。入力部1は、例えばユーザから特定の構造データについて圧縮の指示を受け付けると、当該指示を頻出値抽出部11に出力する。
頻出値抽出部11は、指示を受けると、圧縮すべき構造データにおける処理対象列の各値の出現回数を計数し、頻出値表格納部12に格納する(図3:ステップS1)。例えば図4に示すようなテーブルを一例として処理するものとする。ここでは、図4の例では、発行日の列、出版社の列、分類の列、著者の列、タイトルの列などが含まれるようになっている。以下では、出版社の列、分類の列及び著者の列が処理対象列であるものとする。本実施の形態では、テーブルだけではなく、CSVファイルであってもよい。また、XMLファイルなどであっても、テーブルやCSVファイルに変換すれば処理可能である。
次に、頻出値抽出部11は、所定回数以上出現した値を頻出値として特定し、頻出値表格納部12に格納する(ステップS3)。ステップS3では、例えば図5に示すようなデータが頻出値表格納部12に格納される。図5の例では、2回以上出現した値を頻出値として特定し、出現回数と共に頻出値表格納部12に格納した例である。但し、出現回数自体については格納せずとも良い。また、2回以上の回数を閾値として採用する場合もある。
次に、符号付与部13は、頻出値表格納部12及びデータ格納部10に格納されているデータを用いて、コード付与処理を実施し、処理結果である頻出値集合表を符号表格納部14に格納する(ステップS5)。コード付与処理については、図6及び図7を用いて説明する。
符号付与部13は、データ格納部10に格納されている、圧縮すべき構造データにおいて未処理の行を読み出す(図6:ステップS21)。特定の行のうち処理対象列の値のみを読み出すようにしても良い。そして、符号付与部13は、読み出された行に含まれる項目値から、頻出値表格納部12に格納されている頻出値表に登録済みの項目値のみを抽出し、抽出された項目値を頻出値集合Xにセットする(ステップS23)。そして、符号付与部13は、頻出値集合Xが頻出値集合表に登録済みであるか判断する(ステップS25)。符号付与処理における頻出値集合表は、例えば図7に示すような表である。すなわち、コードと頻出値又は頻出値の組み合わせである頻出値集合とが対応付けて登録されている表である。
そして、符号付与部13は、頻出値集合Xが頻出値集合表に登録済みである場合には、登録する必要がないのでステップS29に移行する。一方、頻出値集合Xが頻出値集合表に未登録である場合には、符号付与部13は、頻出値集合Xに未使用のコードsiを割り当て、コードsiに対応付けて頻出値集合Xを頻出値集合表に登録する(ステップS27)。iは例えば1ずつインクリメントされる。
ステップS27の後又はステップS25で登録済みと判断された場合には、符号付与部13は、圧縮すべき構造データの全ての行について処理したか判断する(ステップS29)。未処理の行が存在する場合にはステップS21に戻る。一方、全ての行について処理した場合には元の処理に戻る。
図4の例では、図5に示すような頻出値が特定されているので、1行目を見ると、「A社」及び「ビジネス」という頻出値が含まれているので、これに対してコードs1を割り当てる。次に、2行目を見ると、「A社」「ビジネス」及び「○○○夫」という頻出値が含まれているので、これに対してコードs2を割り当てる。3行目を見ると、「B社」という頻出値が含まれているので、これに対してコードs3を割り当てる。このような処理を繰り返すことによって、図7に示すような頻出値集合表が得られることになる。なお、コードは、仮に付されたマークであって、このあと順序付き符号に変換される。
図3の処理の説明に戻って、次に、符号付与部13は、符号表格納部14に格納されている頻出値集合表及びデータ格納部10に格納されている、圧縮すべき構造データを用いて、符号決定処理を実施する(ステップS7)。この符号決定処理については、幾つかの方法を採用可能なので、それぞれについて説明する。
(A)出現した順番に従って小さい順(すなわち優先度の降順)に符号を付与する方法
図6に示したコード付与処理を実施すると、出現した順番にコードが付与されることになる。ステップS7では、コードを付与した順番に従って小さい順に符号を付与する。すなわち、s1を一番小さい符号に変換し、s2を二番目に小さい符号に変換し、s3を三番目に小さい符号に変換する。例えば、符号にアルファベットを採用する場合、符号の順番はアルファベット順に従う。但し、他の基準にて順序が決まるようにしてもよい。
例えばアルファベット順が採用されるとすると、一番小さいコードは符号「A」に変換され、二番目に小さいコードは符号「B」に変換され、三番目に小さいコードは符号「C」に変換される。頻度表に27以上の頻出値が登録されている場合には、「AA」といったように複数の符号にて対処できる。
従って、本方法を採用する場合には、図6の処理フローのステップS27でコードではなく、アルファベットの符号を順番に付与するようにしても良いし、本ステップにおいて、アルファベットの符号に変換するようにしても良い。例えば図8に示すような符号表が得られて、符号表格納部14に格納されることになる。図8の例では、図7のコードの列における各コードがアルファベットの符号に変換されている。
(B)出現頻度に従って小さい順に符号を付与する方法
例えば図9に示すような処理を行う。まず、符号付与部13は、圧縮すべき構造データの処理対象列において、頻出値集合表に登録されている各頻出値集合の出現回数を計数し、符号表格納部14に格納する(図9:ステップS31)。例えば、図10に示すようなデータが得られる。すなわち、コード及び頻出値集合の組み合わせに対応して出現回数が登録される。なお、例えば図6の処理フローにおいて、コードを付与すると共に同じ頻出値集合Xが検出されるとカウンタを1増加させるといった手法にて、頻出値集合毎に出現回数を計数するようにしてもよい。
そして、符号付与部13は、出現回数の降順に頻出値集合をソートする(ステップS33)。図10では既にソートされた状態になっている。なお、符号付与部13は、出現回数が同数の頻出値集合が存在する場合には、それらの頻出値集合については、通常の辞書への登録順に並べるものとする。すなわち、第1ソートキーに出現回数を採用し、第2ソートキーに頻出値集合に含まれる項目値を文字列として連結される文字列を採用する。図10の例では、出現回数が2回の頻出値集合が複数存在し、さらに出現回数が1回の頻出値集合が複数存在する。従って、コードs2が付与されている頻出値集合と、コードs3が付与されている頻出値集合とについては、辞書登録順に従って並べる。同様に、コードs4が付与されている頻出値集合とコードs5が付与されている頻出値集合とについても、辞書登録順に従って並べる。図10の例では、既に並び替え済みであるものとする。
ここで、符号付与部13は、カウンタiに対して1を設定し(ステップS37)、i番目の頻出値集合にi番目に小さい符号を付与する(ステップS39)。1番目の頻出値集合であれば1番小さい符号「A」を付与し、2番目の頻出値集合であれば2番目に小さい符号「B」を付与する。
そして、符号付与部13は、iが頻出値集合の数以上となったか判断する(ステップS41)。iが頻出値集合の数未満であれば、符号付与部13は、iを1インクリメントして(ステップS43)、ステップS39に戻る。一方、iが頻出値集合の数以上であれば元の処理に戻る。
このような処理を行うことによって、図10に示したようなデータは、図11に示すような符号表に変換される。符号は、上から順番にA、B、C、D、Eといったように付与される。
図9に示した処理は、行の並びを入れ替えても項目値が変化しない限り同じ結果を得ることができる。
(C)Jaccord係数を用いる方法
この方法では、まず、符号付与部13は、コードsiの集合Σと、1から|Σ|(すなわち集合Σに属する要素の数)の数の集合Xとを設定する(図12:ステップS51)。具体的には、集合Σに、全てのコードsiを入れて、集合Xに1から|Σ|の数を入れる。
そして、符号付与部13は、カウンタiを1に初期化する(ステップS53)。その後、符号付与部13は、圧縮すべき構造データの処理対象列において各頻出値集合の出現回数を計数し、出現回数の降順に頻出値集合をソートする(ステップS55)。これはステップS33及びS35と同じ処理である。そして、符号付与部13は、最上位の頻出値集合のコードsjを特定する(ステップS56)。
その後、符号付与部13は、ciに、コードsjを設定すると共に、集合Xからコードsjの添え字jを除去する(ステップS57)。i=1の場合には、ステップS56で特定されたコードsjがc1に設定される。また、符号付与部13は、iを1インクリメントして(ステップS59)、iが|Σ|を超えたか判断する(ステップS61)。超えていない場合には、符号付与部13は、以下の式に基づきjの値を決定する(ステップS63)。
j=argmaxj∈XJaccord(ci-1,sj) (1)
Jaccord(a,b)=|Set(a)∩Set(b)|/|Set(a)∪Set(b)| (2)
Set(a)は、符号aが表す頻出値集合であり、|Set(a)|は、符号aが表す頻出値集合に含まれる頻出値の数を表す。
(2)式で定義されるJaccord係数は2つの集合間の類似度(頻出値の重複度合いでもある)を表す係数である。また、(1)式は、符号が割り付けられていない頻出値集合の集合X中で、直前に特定されたci-1に対応する頻出値集合と最も類似度が高い頻出値集合のコードsjの添え字jを特定するものである。そして、処理はステップS57に戻る。
一方、iが|Σ|を超えた場合には、符号付与部13は、c1<c2<c3<・・・<c|Σ|の順番で最終的な符号(例えばアルファベット順のアルファベット)を設定する(ステップS65)。
例えば図10に示すような頻出値集合についての出現回数が得られた場合には、まずs1がc1に設定される。また、コードs1の頻出値集合に含まれる頻出値に対して類似度が高い頻出値集合のコードを探すと、コードs2が得られる。すなわち、s2がc2に設定される。さらに、コードs2の頻出値集合に含まれる頻出値対して類似度が高い頻出値集合のコードを探すと、コードs4が得られて、c3に設定される。その後、コードs4の頻出集合に含まれる頻出値に対して類似度が高い頻出値集合のコードを探すと、コードs5が得られて、c4に設定される。最後に、コードs5の頻出値集合に含まれる頻出値に対して類似度が高い頻出値集合のコードを探すと、図10の例では0を超えるものはない。従って、残りの頻出値集合について、頻出値集合に含まれる項目値(要素とも呼ぶ)を文字列として連結して得られる文字列の辞書登録順で最も優先されるものを選択する。なお、符号が割り付けられていない頻出値集合の集合Xの中から、出現回数が最も多い頻出値集合を選択するようにしてもよい。なお、図10の例では、ここでは1つしか残っていないので、コードs3が得られて、c5に設定される。よって、図13のようなデータが得られる。最終的に、ステップS65ではアルファベットに変換するので、図14に示すような符号表が得られる。
図14を見ると、「A社」、「ビジネス」や「○○○夫」といった頻出値を含む頻出値集合が優先度が高い符号にまとまって対応付けられており、アルファベット順で符号をソートすると、同一又は類似の頻出値集合がまとまることが期待される。
図3のステップS7については、上で述べた(A)(B)(C)のいずれか、若しくは同等の他の手法を用いて符号表を生成し、符号表格納部14に格納する。
図3の処理の説明に戻って、符号化処理部20は、符号表格納部14に格納されている符号表に従って、圧縮すべき構造データにおける各行に対して符号を割り当てることによって符号列を生成し、符号列格納部16に格納する(ステップS9)。ステップS9では、各行について、処理対象列の項目値と頻出値集合とを比較して該当する符号を特定して符号列を生成する。本実施の形態のように、頻出値集合を符号に変換するのではなく、行(以下で述べるように行の一部の場合を含む)を符号化するのは、以下で述べるような行自体の並び替えによって、同一又は類似の頻出値集合を含む行をまとまりやすくするためである。
なお、符号表に登録されていない項目値のみを含む行については、例えば未使用の同一符号を付すと以下の処理で効率よく処理できる。
図8及び図11に示したような符号表が得られた場合、図4に示したテーブルは、図15Aに示すように符号が付与される。すなわち符号A乃至Eが付与されている。なお、これ以降の説明の都合上、同一符号が付された各行を識別するためにシリアル番号が付加されている。例えば、符号Aについては、シリアル番号0乃至4が付与されており、符号Bについてはシリアル番号0及び1が付与されており、符号Cについてはシリアル番号0及び1が付与されている。符号D及びEについては、シリアル番号が付与されていないが、1つだけなのでシリアル番号0が省略されている。
一方、図14に示したような符号表が得られた場合、図4に示したテーブルは、図15Bに示すように符号が付与される。この場合、図15Aとは異なり、符号Aについては、シリアル番号0乃至4が付与されており、符号Bについてはシリアル番号0及び1が付与されており、符号Eについてはシリアル番号0及び1が付与されている。符号C及びDについては、シリアル番号が付与されていないが、1つだけなのでシリアル番号0が省略されている。
本ステップでは、図15A又は図15Bの符号の列のデータが、符号列格納部16に格納される。
次に、順列変換処理部15は、符号列格納部16に格納されている符号列に対して、同一符号が連続するように順列変換処理を実施する(ステップS11)。同一符号が連続するように符号の並び替えを行う処理であるから、この目的を達成することができるいずれの方法をも採用可能である。但し、解凍処理において順列変換処理後の符号列から元の符号列を復元しなければならないので、(A)復元のためのデータを保存する必要のある方法と、(B)復元のためのデータを保存する必要がない方法とが存在する。前者の方法としては、単純なソーティング処理が存在する。後者の方法としては、ブロックソーティングという方法が存在する。
単純なソーティング処理であれば、図15Aの例の場合には、単純なソーティング処理を実施すると図16Aに示すような順列変換が行われる。すなわち、左側に示した符号列S「A0001DA2EA3114」は、右側に示した順列変換後の符号列F「A012340101DE」に変換され、符号列格納部16に格納される。
符号列Fから符号列Sを復元するのは、符号列Fのみでは無理なので、例えば図16Bに示すようなデータを、以下に述べる圧縮データに添付する。図16Bのデータは、図16Aの処理の逆処理を示しているデータである。すなわち、符号列Fの1番目の符号を「1」番目に配置し、符号列Fの2番目の符号を「4」番目に配置し、符号列Fの3番目の符号を「6」番目に配置し、符号列Fの4番目の符号を「8」番目に配置し、符号列Fの5番目の符号を「11」番目に配置し、符号列Fの6番目の符号を「2」番目に配置し、符号列Fの7番目の符号を「9」番目に配置し、符号列Fの8番目の符号を「3」番目に配置し、符号列Fの9番目の符号を「10」番目に配置し、符号列Fの10番目の符号を「5」番目に配置し、符号列Fの11番目の符号を「7」番目に配置する。このようなデータについては、図16Aの処理を行う際に、符号列Sにおける移動元の位置番号を、符号列Fにおける対応位置に配置して生成して、圧縮処理部18に出力する。また、このようなデータは、符号列格納部16にも格納される。
一方、ブロックソーティングは、D. Adjeroh, T. Bell, A. Mukherjee,"The Burronws-Wheeler Transform Data Compression, Suffix Arrays, and Pattern Matching," Springer, ISBN-13: 978-0-387-78908-8, 2008に開示されている。
以下、簡単にブロックソーティングについて説明する。まず、図15Aの場合には、図17に示すように、符号列の最後に末尾を表す終了符号「$」を付加した後、当該符号「$」が先頭に来るまで、先頭の符号を末尾に移動させる操作を符号「$」以外の符号の個数回だけ繰り返し実施する。図17のように11個の符号の場合には、12の符号列が生成される。なお、1行目の符号列は、最終符号の列にも出現する。また、各行の符号列は、符号「$」の位置がずれているので、ユニークである。すなわち、符号列Sに含まれる各符号は、その行の符号列で識別可能である。
そして、各行の符号列を、小さい順にソートする。アルファベットを符号に用いているので、アルファベット順に並び替える。但し、「$」はAよりも小さいものとする。そうすると、図15Aの場合には図18Aに示すように並び替えられる。並び替えられた後のこの符号群における最終符号列Lが、変換後の符号列となる。すなわち、符号列S「A0001DA2EA3114$」は、符号列L「A41E$C0DA301012」に変換され、符号列Lは符号列格納部16に格納される。
ブロックソーティングによれば、シリアル番号なしでも図17の各行の符号列はユニークなので、図17の各行の符号列が図18Aのどの行に移動したかを特定できる。具体的には、図18Bに示すように、図18Aの第1行目の移動元は図17の「12」行目であり、図18Aの第2行目の移動元は図17の「11」行目であり、図18Aの第3行目の移動元は図17の「8」行目であり、図18Aの第4行目の移動元は図17の「1」行目であり、図18Aの第5行目の移動元は図17の「4」行目であり、図18Aの第6行目の移動元は図17の「6」行目であり、図18Aの第7行目の移動元は図17の「9」行目であり、図18Aの第8行目の移動元は図17の「2」行目であり、図18Aの第9行目の移動元は図17の「10」行目であり、図18Aの第10行目の移動元は図17の「3」行目であり、図18Aの第11行目の移動元は図17の「5」行目であり、図18Aの第12行目の移動元は図17の「7」行目である。
ブロックソーティングの場合、このようなデータを、解凍時に用いることはないので圧縮処理部18に出力することはないが、符号列格納部16に格納する。
また、図15Bの場合には、上で述べたような処理を実施すると、図19に示すように符号列Sは、12の符号列に展開される。
そして、図15Bの場合には図20Aに示すように並び替えられる。この並び替えられた後の符号群における最終符号列Lが、変換後の符号列となる。すなわち、符号列S「A0001CA2DA3114$」は、符号列L「A41D$E0CA301210」に変換され、符号列格納部16に格納される。
この場合にも、移動元の行の位置データが生成できる。具体的には、図20Bに示すように、図20Aの符号列Lの各行の移動元は、先頭から順番に「12」「11」「8」「1」「4」「6」「9」「2」「5」「7」「10」「3」行目となる。このような移動元の行の位置データも、符号列格納部16に格納される。
このように元の符号列が異なるので、ブロックソーティングを実施しても異なる符号列に変換される。
図3の処理の説明に戻って、並び替え処理部17は、符号列格納部16に格納されている、ブロックソーティング後の符号列又は移動元の行の位置データに従って、圧縮すべき構造データの行を並び替えて、処理後の構造データをデータ格納部10に格納する(ステップS13)。なお、符号「$」の位置は、解凍処理に必要となるので、当該符号「$」の位置のデータを、データ格納部10に格納する。
図15Aの場合、例えばブロックソーティング前の符号列における第1の符号A0は、ブロックソーティング後では符号「$」以外の符号で7番目に並び替えられている。従って、図4のテーブルの第1行は第7行に移動される。同様に、ブロックソーティング前の符号列における第2の符号B0は、ブロックソーティング後では符号「$」以外の符号で9番目に並び替えられている。従って、図4のテーブルの第2行は第9行に移動される。ブロックソーティング前の符号列における第3の符号C0は、ブロックソーティング後では符号「$」以外の符号で4番目に並び替えられている。従って、図4のテーブルの第3行は第4行に移動される。以下同様に処理されて、図21に示すような、並び替え後のテーブルが得られる。
図15Aの場合、頻出値が2行以上連続するブロックが、黒太線で囲んだ3箇所で合計11個のセルにとどまる。またブロックは分離されている。これに対して、図21の場合、頻出値が2行以上連続するブロックが、黒太線で囲んだ3箇所で合計14個のセルになってセル数は増加している。またブロックは連続している。従って、既存の圧縮アルゴリズムで、効率的に圧縮されることが期待される。
一方、図15Bの場合、例えばブロックソーティング前の符号列における第1の符号A0は、ブロックソーティング後では符号「$」以外の符号で7番目に並び替えられている。従って、図4のテーブルの第1行は第7行に移動される。同様に、ブロックソーティング前の符号列における第2の符号B0は、ブロックソーティング後では符号「$」以外の符号で11番目に並び替えられている。従って、図4のテーブルの第2行は第11行に移動される。ブロックソーティング前の符号列における第3の符号E0は、ブロックソーティング後では符号「$」以外の符号で4番目に並び替えられている。従って、図4のテーブルの第3行は第4行に移動される。以下同様に処理されて、図22に示すような、並び替え後のテーブルが得られる。
図15Bの場合、頻出値が2行以上連続するブロックが、黒太線で囲んだ3箇所で合計11個のセルにとどまる。またブロックは分離されている。これに対して、図22の場合、頻出値が2行以上連続するブロックが、黒太線で囲んだ2箇所で合計14個のセルになってセル数は増加している。またブロックは連続して個数も減っている。従って、既存の圧縮アルゴリズムで、効率的に圧縮されることが期待される。
そして、ここまで処理すると、圧縮処理部18は、よく知られた圧縮アルゴリズムでデータ格納部10に格納されている、並び替え後の構造データを圧縮する処理を実施し、圧縮後のデータを圧縮データ格納部19に格納する(ステップS15)。圧縮アルゴリズムは、ユニバーサル符号化(例えばLZ78、LZ77)やエントロピー符号化(Huffman符号、算術符号)といった一般的なデータ圧縮技術のいずれであってもよい。
なお、解凍に必要な符号「$」の位置データについても、データ格納部10から読み出して、圧縮データ格納部19における圧縮後のデータに付加しておく。さらに、ステップS7の符号決定処理に(A)のアルゴリズムを採用した場合には、圧縮処理部18は、符号表格納部14に格納されている符号表を圧縮後のデータに添付しておく。また、順列変換処理に単純なソーティング処理など、並び替え後の構造データから元の構造データを復元できないアルゴリズムを採用した場合には、移動元の行の位置データも圧縮データに添付する。
以上のような処理を実施することによって、高圧縮率が実現できるようになる。なお、上で述べたように、本手法は、従来手法で必要となるような構造データ由来のデータ(例えばスキーマや行番号など)を必要としない。
次に、図23を用いて解凍装置200について説明する。解凍装置200は、(A)圧縮された構造データなどを格納する圧縮データ格納部210と、(B)圧縮データ格納部210に格納されている圧縮データに対して解凍処理を実施する解凍処理部212と、(C)ユーザからの指示を受け付け解凍処理部212に処理開始を指示する入力部211と、(D)解凍処理部212の処理結果を格納するデータ格納部213と、(E)データ格納部213に格納されているデータを用いて処理を行う頻出値抽出部214と、(F)頻出値抽出部214の処理結果である頻度表を格納する頻出値表格納部215と、(G)データ格納部213及び頻出値表格納部215に格納されているデータを用いて処理を実施する符号付与部216と、(H)符号付与部216の処理結果である符号表を格納する符号表格納部217と、(I)符号表格納部217及びデータ格納部213に格納されているデータを用いて処理を実施する符号化処理部218と、(J)符号化処理部218の処理結果である符号列を格納する符号列格納部219と、(K)符号列格納部219に格納されているデータを用いて圧縮時に行った順列変換処理の逆処理を実施する順列逆変換処理部220と、(L)符号列格納部219及びデータ格納部213に格納されているデータを用いて処理を実施する並び替え処理部221とを有する。
次に、図24乃至図29Bを用いて解凍装置200の処理について説明する。まず、入力部211は、ユーザから解凍すべきデータの指定を受け付け、解凍処理部212に、解凍すべきデータの指定を出力する。解凍処理部212は、入力部211からの指示に応じて、ステップS15で実施された圧縮処理とは逆の解凍処理を実施する(図24:ステップS71)。この解凍処理については、従来と同じなのでこれ以上述べない。なお、解凍後の構造データが、データ格納部213に格納される。
また、解凍処理部212は、圧縮データ格納部210に、解凍すべきデータに符号表が添付されているか判断する(ステップS73)。圧縮処理のステップS7で(A)のアルゴリズムを採用した場合には、圧縮後のデータから符号表を復元できないので、符号表が圧縮後のデータに添付される。この符号表が添付されていれば、解凍処理部212は、圧縮データ格納部210から符号表を読み出し、符号表格納部217に格納する(ステップS75)。そして処理はステップS85に移行する。
一方、符号表が存在しない場合には、例えば、解凍処理部212は、頻出値抽出部214に対して処理開始を指示し、頻出値抽出部214は、解凍後の構造データにおける処理対象列の各値の出現回数を計数し、頻出値表格納部215に格納する(ステップS77)。この処理は圧縮処理におけるステップS1と同じである。
また、頻出値抽出部214は、所定回数以上出現した値を頻出値として特定し、頻出値表格納部215に格納する(ステップS79)。この処理も圧縮処理におけるステップS3と同じである。
さらに、符号付与部216は、頻出値表格納部215及びデータ格納部213に格納されているデータを用いて、コード付与処理を実施し、処理結果を符号表格納部217に格納する(ステップS81)。この処理も圧縮処理におけるステップS5と同じである。
次に、符号付与部216は、符号表格納部217に格納されている頻出値集合表及びデータ格納部213に格納されている、解凍後の構造データを用いて、符号決定処理を実施する(ステップS83)。この処理も圧縮処理におけるステップS7と同じである。(B)の場合には、図11に示すような符号表が得られ、(C)の場合には、図14に示すような符号表が得られる。なお、ステップS75から遷移してきた場合には、図8に示すような符号表が符号表格納部217に格納される。
そして、符号化処理部218は、符号表格納部217に格納されている符号表に従って、解凍後の構造データにおける各行に対して符号を設定し、終了符号「$」を、データ格納部213に格納されている終了符号「$」の位置データに従って挿入し、生成された符号列を符号列格納部219に格納する(ステップS85)。本ステップでは、各行について、処理対象列の項目値と頻出値集合とを比較して該当する符号を特定する。
ステップS7で(A)及び(B)の方法を採用した場合には図25に示すような符号列が生成される。図21に示したブロックソーティング後の符号列と比較すると、符号自体については順番も同じであるが、シリアル番号はステップS85で振り直されているので異なっている。但し、シリアル番号自体は、以下で述べるように説明の都合で付与されたものであって、シリアル番号を付与しなくとも別の方法で同一符号間の識別を行うことができる。なお、図示していないが、終了符号「$」は、3番目の符号の後に挿入される。
同様に、ステップS7で(C)の方法を採用した場合には図26に示すような符号列が生成される。図22に示したブロックソーティング後の符号列と比較すると、符号部分については順番も同じであるが、シリアル番号はステップS85で振り直されているので異なっている。なお、図示していないが、終了符号「$」は、3番目の符号の後に挿入される。
そして、順列逆変換処理部220は、符号列格納部219に格納されている符号列に対して順列逆変換処理を実施し、符号列格納部219に格納する(ステップS87)。
圧縮処理時に単純なソーティング処理を採用した場合には、移動元の行の位置データが圧縮データに添付されているので、順列逆変換処理部220は、データ格納部213から当該移動元の行の位置データ(例えば図16B)を読み出して、当該データに従って符号列に含まれる符号列を並び替えて、符号列格納部219に格納する。移動元の行の位置データが得られれば、ステップS85で生成された符号列の先頭の符号から順番に、移動元の行の位置を特定して、その位置に配置する。
次に、逆ブロックソーティングについて図27A乃至図28Bを用いて説明する。図25に示すような符号列を取り扱う場合、図27A右側に示すように、符号列Lに含まれる符号を小さい順にソートして符号列Fを生成する。本実施の形態の場合にはアルファベット順にソートする。この際、同一符号における符号の順番は元の符号列の順番が維持される。従って、図27A右側に示すように、符号「A」「B」「C」はシリアル番号「0」から順番に並ぶ。なお、ブロックソーティングの時と同様に終了符号「$」は最も小さいものとする。
次に、符号列Lにおける終了符号「$」を開始点として、符号列Fにおいて同じ順番の符号を特定し、順番に当該符号を配置する。図27A右側では、符号列Lにおける終了符号「$」から真横に移動して符号列Fの4番目の符号A2(符号Aについて3番目の符号)を特定し、この符号A2を最終的な符号列の「0」番目に配置する。次に、符号列Fの符号A2と同じ符号が出現する順番を符号列Lにおいて特定する。図27A右側では、符号Aとして3番目(0から数えて3番目の意味)に出現する符号A2は、符号列Lの7番目(0から数えて7番目の意味)に存在しているので、「7」を特定する。すなわち、移動元の符号位置が「7」であることが分かるので、これを保持する。
次に、符号列Fにおいて順番「7」の符号を特定し、次の順番の位置に当該符号を配置する。図27A右側では、符号列Lにおける符号A2から真横に移動して符号列Fの7番目の符号B1を特定し、この符号を最終的な符号列の「1」番目に配置する。次に、符号列Fの符号B1と同じ符号が出現する順番を符号列Lにおいて特定する。図27A右側では、符号Bとして2番目(0から数えて2番目の意味)に出現する符号B1は、符号列Lの9番目に存在しているので、「9」を特定する。すなわち、移動元の符号位置が「9」であることが分かるので、これを保持する。
さらに、符号列Fにおいて順番「」の符号を特定し、次の順番の位置に当該符号を配置する。図27A右側では、符号列Lにおける符号B1から真横に移動して符号列Fの9番目の符号C1を特定し、この符号を最終的な符号列の「2」番目に配置する。次に、符号列Fの符号C1と同じ符号が出現する順番を符号列Lにおいて特定する。図27A右側では、符号Cとして2番目(0から数えて2番目の意味)に出現する符号C1は、符号列Lの4番目に存在しているので、「4」を特定する。すなわち、移動元の符号位置が「4」であることが分かるので、これを保持する。
このような処理を図27A右側の矢印で示すように繰り返し、符号列Fにおいて終了符号「$」に到達すれば処理は終了する。
このような処理を実施すれば、図27A左側に示すように、逆ブロックソーティング後の符号列が得られる。すなわち符号列L「A00E$C1DA120134」は、符号列「A2113DA4EA1000」に変換される。このような符号列は、符号列格納部219に格納される。
さらに、図27Bに示すように、符号の移動元の位置データも生成されるので、これも符号列格納部219に格納する。なお、移動元の位置「3」が存在していないが、これは「$」なので意味をなさないためである。但し、構造データの行を並び替える場合には、構造データの3行目が移動元の位置の「4」に相当する。
また、図26に示すような符号列を取り扱う場合、図28A右側に示すように、符号列Lに含まれる符号の小さい順にソートして符号列Fを生成する。次に、符号列Lにおける終了符号「$」を開始点として、符号列Fにおいて同じ順番の符号を特定し、順番に当該符号を配置する。その後、符号列Fにおいて特定された符号と同じ符号が符号列Lにおいて出現する順番を特定する。この際には、同一符号内の順番を考慮して特定する。例えば、符号列Fにおいて2番目に出現する符号Aであれば、符号列Lにおいても2番目に出現する符号Aを探索する。また、符号列Lにおいて特定された順番は、保持しておく。このような処理を、符号列Fにおいて終了符号「$」に到達するまで繰り返す。
そうすると、図28A左側に示すように、A2、B1、E1、A3、C、A4、D、A1、B0、E0、A0の順番で符号が配置され、最終的な符号列として符号列格納部219に格納される。さらに、図28Bに示すような移動元の位置データについても、符号列格納部219に格納される。
図24の処理の説明に戻って、並び替え処理部221は、符号列格納部219に格納されている、逆ブロックソーティング後の符号の順番又は移動元の位置データに従って、データ格納部213に格納されている、解凍後の構造データの行を並び替えて、処理後の構造データをデータ格納部213に格納する(ステップS89)。
図25の場合、例えば逆ブロックソーティング前の符号列における第1の符号A0は、逆ブロックソーティング後では11番目(1から数えて11番目)に並び替えられている。従って、図25のテーブルの第1行は第11行に移動される。同様に、逆ブロックソーティング前の符号列における第2の符号C0は、逆ブロックソーティング後では10番目に並び替えられている。従って、図25のテーブルの第2行は第10行に移動される。逆ブロックソーティング前の符号列における第3の符号Eは、逆ブロックソーティング後では7番目に並び替えられている。従って、図25のテーブルの第3行は第7行に移動される。以下同様に処理されて、図29Aに示すような、並び替え後のテーブルが得られる。図29Aは、図4と同じテーブルとなっている。すなわち、完全に元のテーブルに復元されている。
なお、図27Bに示すようなデータを保持していれば、番号「2」までであればその順番の行をそのまま並べ、符号「$」の番号「3」より後ろの番号については「−1」した順番の行を並べればよい。具体的には、図25において0から数えて6(=7−1)行目を0行目に移動させ、8(=9−1)行目を1行目に移動させ、3(=4−1)行目を2行目に移動させ、9(=10−1)行目を3行目に移動させ、4(=5−1)行目を4行目に移動させ、10(=11−1)行目を5行目に移動させ、2行目を6行目に移動させ、5(=6−1)行目を7行目に移動させ、7(=8−1)行目を8行目に移動させ、1行目を9行目に移動させ、0行目を10行目に移動させる。最終的な処理結果は図29Aと同じになる。
一方、図26の場合、例えば逆ブロックソーティング前の符号列における第1の符号A0は、逆ブロックソーティング後では11番目に並び替えられている。従って、図25のテーブルの第1行は第11行に移動される。同様に、逆ブロックソーティング前の符号列における第2の符号E0は、逆ブロックソーティング後では10番目に並び替えられている。従って、図25のテーブルの第2行は第10行に移動される。逆ブロックソーティング前の符号列における第3の符号Dは、逆ブロックソーティング後では7番目に並び替えられている。従って、図25のテーブルの第3行は第7行に移動される。以下同様に処理されて、図29Bに示すような、並び替え後のテーブルが得られる。図29Bは、図4と同じテーブルとなっている。すなわち、完全に元のテーブルに復元されている。
図28Bに示すようなデータを保持していれば、番号「2」までであればその順番の行をそのまま並べ、符号「$」の番号「3」より後ろの番号については「−1」した順番の行を並べればよい。最終的な処理結果は、図29Bと同じになる。
以上のような処理を実施することによって圧縮及び解凍が行われる。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、図2及び図23の機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致するものではない。また、データテーブルの構成も一例であり、図示したものに限定されるものではない。
さらに、上で述べた例では、処理対象列が3つで行全体を並び替える例を示した。これは1例であり、例えば1回目の処理(図3におけるステップS1乃至S11。図24におけるステップS77乃至S89。符号表がある場合にはステップS85乃至S89。)では1つの処理対象列に着目して、その列だけを並び替えるようにして、2回目の処理では他の1つの処理対象列に着目して、その列だけを並び替える、といったような処理を行っても良い。このような場合、行全体ではなく行の該当列部分(ここでは処理対象行と呼ぶ)を並び替える。なお、1列だけを並び替える場合にはステップS7で示した(C)の方法は適用が難しい。このようにする場合、列毎に並列処理が可能である。
さらに、1列毎ではなく複数の列毎に並び替えを行うようにしても良い。すなわち、1回目の処理では2つの処理対象列に着目してそれらの列だけを並び替え、2回目の処理では他の3つの処理対象列に着目してそれらの列だけを並び替える、といったような処理を行っても良い。さらに、3回目の処理では他の1の処理対象列に着目してその列だけを並び替える場合もある。この場合も、処理対象行が並び替えられる。このようにする場合、一度に処理する列のグループ毎に並列処理が可能である。
さらに、処理対象列ではないが処理対象列に連動して並び替えられる列を指定しても良い。この場合も、行における処理対象列の該当部分に加え、連動して並び替えられる列の該当部分が、処理対象行として並び替えられる。
また、テーブルの行と列とは入れ替え可能であり、本実施の形態では、列方向に同じ属性の値が登録されることを前提にしている。従って、行方向に同じ属性の値が登録されるようなテーブルでは、上で述べた処理を列ではなく行として処理を行う。
なお、上で述べたように、XMLなどのデータについては、行と列とが規定されている構造データに変換できれば、同じように取り扱える。解凍時にも、構造データを元のXMLなどのデータに逆変換できれば、本実施の形態で取り扱うことができる。
なお、上で述べた圧縮装置100及び解凍装置200は、コンピュータ装置であって、図30に示すように、メモリ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の態様に係る圧縮方法は、(A)データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、(B)頻出値格納部に格納されている頻出値又は構造データにおける特定の行内に出現する頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、頻出値集合と符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、(C)構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、(D)符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、符号の第2のシーケンスを生成する順列変換ステップと、(E)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納する並べ替え処理ステップと、(F)データ格納部に格納されている並び替え後の構造データに対して圧縮処理を実施するステップとを含む。
このような処理を行うことによって、頻出値がテーブル内でまとまるように行が並び替えられるので、高圧縮率が実現されるようになる。なお、構造データにおける各処理対象行を符号に変換する処理は本実施の形態における新規な着想の一つであり、この処理を実施することによって構造データの構造を有効活用した圧縮が可能となる。
なお、順列変換ステップは、例えばブロックソーティングにより実現される場合もあれば、単純なソーティング処理により実現される場合もある。単純なソーティング処理の場合には、第1及び第2のシーケンスの符号の対応関係を表すデータを圧縮データに添付して解凍時に用いる。
また、上で述べた符号付与ステップが、構造データにおける各処理対象行に含まれる頻出値又は頻出値の組み合わせを特定するステップと、特定された頻出値又は頻出値の組み合わせが、符号表データ格納部に未登録であれば、当該頻出値又は頻出値の組み合わせである頻出値集合に対して未使用の符号を付与し、当該頻出値集合と当該符号とを対応付けて符号表データ格納部に格納するステップとを含むようにしてもよい。この方法は、処理が簡単で高速に符号を付与することができる。
さらに、上で述べた所定の規則が、構造データにおける処理対象行を並べ替えても変化することがない指標に基づき頻出値集合を順序づけ、当該順序に応じて大きくなるように符号を順に対応付けるというルールである場合もある。このようにすれば、符号表を圧縮データに添付する必要が無くなり、実質的な圧縮率を高めることができるようになる。
さらに、上で述べた符号付与ステップが、(b1)構造データにおける各処理対象行に含まれる頻出値又は頻出値の組み合わせである頻出値集合を特定すると共に、特定された頻出値集合の出現頻度を計数するステップと、(b2)出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、符号表データ格納部に格納するステップと、(b3)直前に符号が付与された頻出値集合と頻出値についての類似度(例えば、上記頻出値の重複度合い)が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された頻出値集合に付与し、符号表データ格納部に格納するステップとを含むようにしても良い。この手法を採用すれば、より頻出値がテーブル内でまとまりやすくなる場合がある。さらに、符号表を圧縮データに添付する必要がない。
また、第1の態様において、符号表データ格納部に格納されている頻出値集合と対応する符号とを、圧縮されたデータと共に第2データ格納部に格納するステップをさらに含むようにしてもよい。解凍時の処理が高速化される。
また、各処理対象行が、行全体又は処理対象列と交差する部分を含む、行の一部である場合もある。行全体を並び替える場合もあれば、行の一部分だけを並び替えるようにしても効果を得られる。
さらに、各処理対象行が、処理対象列と交差する部分を含む、行の一部である場合もある。その場合、頻出値抽出ステップから並べ替え処理ステップを、異なる処理対象列に対して複数回実施するようにしてもよい。このようにすれば、より頻出値がテーブル内でまとまりやすくなるので、高圧縮率が実現される。
本実施の形態の第2の態様に係る解凍方法は、(A)圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、(B)データ格納部に格納されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、(C)頻出値格納部に格納されている頻出値又は構造データにおける特定の行内に出現する頻出値の組み合わせである頻出値集合に対して、構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、頻出値集合と符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、(D)構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、(E)符号の第1のシーケンスに対して、上記構造データに施された所定の順列変換処理の逆処理を実施し、符号の第2のシーケンスを生成するステップと、(F)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納する並び替え処理ステップとを含む。
このようにすれば、上記圧縮方法で圧縮された構造データを解凍することができる。
また、上で述べた符号付与ステップが、(c1)構造データにおける各処理対象行に含まれる頻出値又は頻出値の組み合わせである頻出値集合を特定すると共に、特定された頻出値集合の出現頻度を計数するステップと、(c2)出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、符号表データ格納部に格納するステップと、(c3)直前に符号が付与された頻出値集合と頻出値についての類似度(例えば、上記頻出値の重複度合い)が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された頻出値集合に付与し、符号表データ格納部に格納するステップとを含むようにしてもよい。圧縮時に使用されているアルゴリズムに応じてこのような処理を実施する場合もある。
さらに、解凍方法において、各処理対象行が、処理対象列と交差する部分を含む、行の一部である場合もある。そして、頻出値抽出ステップから並べ替え処理ステップを、異なる処理対象列に対して複数回実施するようにしてもよい。
本実施の形態の第3の態様に係る解凍方法は、(A)圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、(B)データ格納部に格納されている構造データにおける各処理対象行を、構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号に変換する変換ステップと、(C)符号の第1のシーケンスに対して、上記構造データに施された所定の順列変換処理の逆処理を実施し、符号の第2のシーケンスを生成するステップと、(D)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納するステップとを含む。符号表が圧縮されたデータに付加されている場合にはこのような処理を行うことによって高速に元のデータを復元できる。
なお、第2及び第3の態様において、各処理対象行が、行全体又は処理対象列と交差する部分を含む、行の一部である場合もある。
さらに、第3の態様において、各処理対象行が、処理対象列と交差する部分を含む、行の一部である場合がある。その際、変換ステップから並べ替え処理ステップを、異なる処理対象列に対して複数回実施するようにしてもよい。
本実施の形態の第4の態様に係る圧縮装置(図31)は、(A)データ格納部(図31:1002)に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部(図31:1003)に格納する頻出値抽出部(図31:1001)と、(B)頻出値格納部に格納されている頻出値又は構造データにおける特定の行内に出現する頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、頻出値集合と符号とを対応付けて符号表格納部(図31:1005)に格納する符号付与部(図31:1004)と、(C)構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換する符号化処理部(図31:1006)と、(D)符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、符号の第2のシーケンスを生成する順列変換処理部(図31:1007)と、(E)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納する並び替え処理部(図31:1008)と、(F)データ格納部に格納されている、並び替え後の構造データに対して圧縮処理を実施する圧縮処理部(図31:1009)とを有する。
本実施の形態の第5の態様に係る解凍装置(図32)は、(A)圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部(図32:2002)に格納する解凍処理部(図32:2001)と、(B)データ格納部に格納されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部(図32:2004)に格納する頻出値抽出部(図32:2003)と、(C)頻出値格納部に格納されている頻出値又は構造データにおける特定の行内に出現する頻出値の組み合わせである頻出値集合に対して、構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、頻出値集合と符号とを対応付けて符号表格納部(図32:2006)に格納する符号付与部(図32:2005)と、(D)構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換する符号化処理部(図32:2007)と、(E)符号の第1のシーケンスに対して、上記構造データに施された所定の順列変換処理の逆処理を実施し、符号の第2のシーケンスを生成する順列逆変換処理部(図32:2008)と、(F)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納する並び替え処理部(図32:2009)とを有する。
さらに、本実施の形態の第6の態様に係る解凍装置(図33)は、(A)圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部(図33:3002)に格納する解凍処理部(図33:3001)と、(B)データ格納部に格納されている構造データにおける各処理対象行を、構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号に変換する符号化処理部(図33:3003)と、(C)符号の第1のシーケンスに対して、上記構造データに施された所定の順列変換処理の逆処理を実施し、符号の第2のシーケンスを生成する順列逆変換処理部(図33:3004)と、(D)第1及び第2のシーケンスの符号の対応関係に従って、構造データにおける処理対象行を並び替え、並び替え後の構造データをデータ格納部に格納する並び替え処理部(図33:3005)とを有する。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
前記構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
前記符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、前記符号の第2のシーケンスを生成する順列変換ステップと、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並べ替え処理ステップと、
前記データ格納部に格納されている、並び替え後の構造データに対して圧縮処理を実施するステップと、
を、コンピュータに実行させるための圧縮プログラム。
(付記2)
前記符号付与ステップが、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせを特定するステップと、
特定された前記頻出値又は前記頻出値の組み合わせが、前記符号表データ格納部に未登録であれば、当該頻出値又は頻出値の組み合わせである頻出値集合に対して未使用の符号を付与し、当該頻出値集合と当該符号とを対応付けて前記符号表データ格納部に格納するステップと、
を含む付記1記載の圧縮プログラム。
(付記3)
前記所定の規則が、
前記構造データにおける前記処理対象行を並べ替えても変化することがない指標に基づき前記頻出値集合を順序づけ、当該順序に応じて大きくなるように符号を順に対応付けるという規則である
付記1記載の圧縮プログラム。
(付記4)
前記符号付与ステップが、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせである頻出値集合を特定すると共に、特定された前記頻出値集合の出現頻度を計数するステップと、
前記出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、前記符号表データ格納部に格納するステップと、
直前に符号が付与された前記頻出値集合と前記頻出値についての類似度が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された前記頻出値集合に付与し、前記符号表データ格納部に格納するステップと、
を含む付記1記載の圧縮プログラム。
(付記5)
前記符号表データ格納部に格納されている前記頻出値集合と対応する前記符号とを、圧縮されたデータと共に第2データ格納部に格納するステップ
をさらに前記コンピュータに実行させるための付記2記載の圧縮プログラム。
(付記6)
各前記処理対象行が、行全体又は前記処理対象列と交差する部分を含む、行の一部である
付記1乃至5のいずれか1つ記載の圧縮プログラム。
(付記7)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記頻出値抽出ステップから前記並べ替え処理ステップを、異なる処理対象列に対して複数回実施する
付記1乃至5のいずれか1つ記載の圧縮プログラム。
(付記8)
圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
前記データ格納部に格納されている前記構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、前記構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
前記構造データにおける各前記処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理ステップと、
をコンピュータに実行させるための解凍プログラム。
(付記9)
前記符号付与ステップが、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせである頻出値集合を特定すると共に、特定された前記頻出値集合の出現頻度を計数するステップと、
前記出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、前記符号表データ格納部に格納するステップと、
直前に符号が付与された前記頻出値集合と前記頻出値についての類似度が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された前記頻出値集合に付与し、前記符号表データ格納部に格納するステップと、
を含む付記8記載の解凍プログラム。
(付記10)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記頻出値抽出ステップから前記並替え処理ステップを、異なる処理対象列に対して複数回実施する
付記8又は9記載の解凍プログラム。
(付記11)
圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
前記データ格納部に格納されている前記構造データにおける各処理対象行を、前記構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号に変換する変換ステップと、
前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納するステップと、
をコンピュータに実行させるための解凍プログラム。
(付記12)
各前記処理対象行が、行全体又は前記処理対象列と交差する部分を含む、行の一部である
付記8乃至11のいずれか1つ記載の解凍プログラム。
(付記13)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記変換ステップから前記並替え処理ステップを、異なる処理対象列に対して複数回実施する
付記11記載の解凍プログラム。
(付記14)
データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
前記構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
前記符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、前記符号の第2のシーケンスを生成するステップと、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並べ替え処理ステップと、
前記データ格納部に格納されている、並び替え後のデータに対して圧縮処理を実施するステップと、
を含み、コンピュータに実行される圧縮方法。
(付記15)
前記符号付与ステップが、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせを特定するステップと、
特定された前記頻出値又は前記頻出値の組み合わせが、前記符号表データ格納部に未登録であれば、当該頻出値又は頻出値の組み合わせである頻出値集合に対して未使用の符号を付与し、当該頻出値集合と当該符号とを対応付けて前記符号表データ格納部に格納するステップと、
を含む付記14記載の圧縮方法。
(付記16)
前記所定の規則が、
前記構造データにおける前記処理対象行を並べ替えても変化することがない指標に基づき前記頻出値集合を順序づけ、当該順序に応じて大きくなるように符号を順に対応付けるという規則である
請求項14記載の圧縮方法。
(付記17)
前記符号付与ステップが、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせである頻出値集合を特定すると共に、特定された前記頻出値集合の出現頻度を計数するステップと、
前記出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、前記符号表データ格納部に格納するステップと、
直前に符号が付与された前記頻出値集合と前記頻出値についての類似度が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された前記頻出値集合に付与し、前記符号表データ格納部に格納するステップと、
を含む付記14記載の圧縮方法。
(付記18)
前記符号表データ格納部に格納されている前記頻出値集合と対応する前記符号とを、圧縮されたデータと共に第2データ格納部に格納するステップ
をさらに含む付記15記載の圧縮方法。
(付記19)
各前記処理対象行が、行全体又は前記処理対象列と交差する部分を含む、行の一部である
付記14乃至18のいずれか1つ記載の圧縮方法。
(付記20)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記頻出値抽出ステップから前記並べ替え処理ステップを、異なる処理対象列に対して複数回実施する
付記14乃至18のいずれか1つ記載の圧縮方法。
(付記21)
圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
前記データ格納部に格納されている前記構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、前記構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
前記構造データにおける各前記処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理ステップと、
を含み、コンピュータに実行される解凍方法。
(付記22)
前記符号付与ステップが、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせである頻出値集合を特定すると共に、特定された前記頻出値集合の出現頻度を計数するステップと、
前記出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、前記符号表データ格納部に格納するステップと、
直前に符号が付与された前記頻出値集合と前記頻出値についての類似度が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された前記頻出値集合に付与し、前記符号表データ格納部に格納するステップと、
を含む付記21記載の解凍方法。
(付記23)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記頻出値抽出ステップから前記並替え処理ステップを、異なる処理対象列に対して複数回実施する
付記21又は22のいずれか1つ記載の解凍方法。
(付記24)
圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
前記データ格納部に格納されている前記構造データにおける各処理対象行を、前記構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号と同一符号間における識別子との組み合わせに変換する変換ステップと、
前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納するステップと、
を含み、コンピュータに実行される解凍方法。
(付記25)
各前記処理対象行が、行全体又は前記処理対象列と交差する部分を含む、行の一部である
付記21乃至24のいずれか1つ記載の解凍方法。
(付記26)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記変換ステップから前記並替え処理ステップを、異なる処理対象列に対して複数回実施する
付記24記載の解凍方法。
(付記27)
データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出部と、
前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与部と、
前記構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換する符号化処理部と、

前記符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、前記符号の第2のシーケンスを生成する順列変換処理部と、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理部と、
前記データ格納部に格納されている、並び替え後の構造データに対して圧縮処理を実施する圧縮処理部と、
を有する圧縮装置。
(付記28)
前記符号付与部が、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせを特定する処理部と、
特定された前記頻出値又は前記頻出値の組み合わせが、前記符号表データ格納部に未登録であれば、当該頻出値又は頻出値の組み合わせである頻出値集合に対して未使用の符号を付与し、当該頻出値集合と当該符号とを対応付けて前記符号表データ格納部に格納する処理部と、
を含む付記27記載の圧縮装置。
(付記29)
前記所定の規則が、
前記構造データにおける前記処理対象行を並べ替えても変化することがない指標に基づき前記頻出値集合を順序づけ、当該順序に応じて大きくなるように符号を順に対応付けるという規則である
付記27記載の圧縮装置。
(付記30)
前記符号付与が、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせである頻出値集合を特定すると共に、特定された前記頻出値集合の出現頻度を計数する計数部と、
前記出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、前記符号表データ格納部に格納する第1付与部と、
直前に符号が付与された前記頻出値集合と前記頻出値についての類似度が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された前記頻出値集合に付与し、前記符号表データ格納部に格納する第2付与部と、
を含む付記27記載の圧縮装置。
(付記31)
前記符号表データ格納部に格納されている前記頻出値集合と対応する前記符号とを、圧縮されたデータと共に第3データ格納部に格納する処理部
をさらに含む付記28記載の圧縮装置。
(付記32)
各前記処理対象行が、行全体又は前記処理対象列と交差する部分を含む、行の一部である
付記27乃至31のいずれか1つ記載の圧縮装置。
(付記33)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記頻出値抽出部、前記符号付与部、前記符号化処理部、前記順列変換処理部及び前記並替え処理部に、異なる処理対象列に対して複数回処理させる
付記27乃至31のいずれか1つ記載の圧縮装置。
(付記34)
圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納する解凍処理部と、
前記データ格納部に格納されている前記構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出部と、
前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、前記構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与部と、
前記構造データにおける各前記処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換する符号化処理部と、
前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成する順列逆変換処理部と、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを第2データ格納部に格納する並び替え処理部と、
を有する解凍装置。
(付記35)
前記符号付与部が、
前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせである頻出値集合を特定すると共に、特定された前記頻出値集合の出現頻度を計数する処理部と、
前記出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、前記符号表データ格納部に格納する処理部と、
直前に符号が付与された前記頻出値集合と前記頻出値についての類似度が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された前記頻出値集合に付与し、前記符号表データ格納部に格納する処理部と、
を含む付記34記載の解凍装置。
(付記36)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記頻出値抽出部、前記符号付与部、前記符号化処理部、前記順列逆変換処理部及び前記並替え処理部に、異なる処理対象列に対して複数回処理させる
付記34又は35記載の解凍装置。
(付記37)
圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納する解凍処理部と、
前記データ格納部に格納されている前記構造データにおける各処理対象行を、前記構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号に変換する符号化処理部と、
前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成する順列逆変換処理部と、
前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理部と、
を有する解凍装置。
(付記38)
各前記処理対象行が、行全体又は前記処理対象列と交差する部分を含む、行の一部である
付記34乃至37のいずれか1つ記載の解凍装置。
(付記39)
各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
前記符号化処理部と前記順列逆変換処理部と前記並び替え処理部とに、異なる処理対象列に対して複数回処理させる
付記37記載の解凍装置。
10 データ格納部 11 頻出値抽出部
12 頻出値表格納部 13 符号付与部
14 符号表格納部 15 順列変換処理部
16 符号列格納部 17 並び替え処理部
18 圧縮処理部 19 圧縮データ格納部
20 符号化処理部
210 圧縮データ格納部 211 入力部
212 解凍処理部 213 データ格納部
214 頻出値抽出部 215 頻出値表格納部
216 符号付与部 217 符号表格納部
218 符号化処理部 219 符号列格納部
220 順列逆変換処理部
221 並び替え処理部

Claims (13)

  1. データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出部と、
    前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与部と、
    前記構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換する符号化処理部と、
    前記符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、前記符号の第2のシーケンスを生成する順列変換処理部と、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理部と、
    前記データ格納部に格納されている、並び替え後の構造データに対して圧縮処理を実施する圧縮処理部と、
    を有する圧縮装置。
  2. 前記符号付与部が、
    前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせを特定する処理部と、
    特定された前記頻出値又は前記頻出値の組み合わせが、前記符号表データ格納部に未登録であれば、当該頻出値又は頻出値の組み合わせである頻出値集合に対して未使用の符号を付与し、当該頻出値集合と当該符号とを対応付けて前記符号表データ格納部に格納する処理部と、
    を含む請求項1記載の圧縮装置。
  3. 前記所定の規則が、
    前記構造データにおける前記処理対象行を並べ替えても変化することがない指標に基づき前記頻出値集合を順序づけ、当該順序に応じて大きくなるように符号を順に対応付けるという規則である
    請求項1記載の圧縮装置。
  4. 前記符号付与が、
    前記構造データにおける各前記処理対象行に含まれる前記頻出値又は前記頻出値の組み合わせである頻出値集合を特定すると共に、特定された前記頻出値集合の出現頻度を計数する計数部と、
    前記出現頻度が最も大きい頻出値集合に対して最も小さい符号を付与し、前記符号表データ格納部に格納する第1付与部と、
    直前に符号が付与された前記頻出値集合と前記頻出値についての類似度が最も高く且つ符号が付与されていない頻出値集合を特定し、直前に付与された符号より大きい符号を、特定された前記頻出値集合に付与し、前記符号表データ格納部に格納する第2付与部と、
    を含む請求項1記載の圧縮装置。
  5. 各前記処理対象行が、前記処理対象列と交差する部分を含む、行の一部であり、
    前記頻出値抽出部、前記符号付与部、前記符号化処理部、前記順列変換処理部及び前記並替え処理部に、異なる処理対象列に対して複数回処理させる
    請求項1乃至4のいずれか1つ記載の圧縮装置。
  6. 圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納する解凍処理部と、
    前記データ格納部に格納されている前記構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出部と、
    前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、前記構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与部と、
    前記構造データにおける各前記処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換する符号化処理部と、
    前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成する順列逆変換処理部と、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを第2データ格納部に格納する並び替え処理部と、
    を有する解凍装置。
  7. 圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納する解凍処理部と、
    前記データ格納部に格納されている前記構造データにおける各処理対象行を、前記構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号に変換する符号化処理部と、
    前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成する順列逆変換処理部と、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理部と、
    を有する解凍装置。
  8. データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
    前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
    前記構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
    前記符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、前記符号の第2のシーケンスを生成する順列変換ステップと、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並べ替え処理ステップと、
    前記データ格納部に格納されている、並び替え後の構造データに対して圧縮処理を実施するステップと、
    を、コンピュータに実行させるための圧縮プログラム。
  9. 圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
    前記データ格納部に格納されている前記構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
    前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、前記構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
    前記構造データにおける各前記処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
    前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理ステップと、
    をコンピュータに実行させるための解凍プログラム。
  10. 圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
    前記データ格納部に格納されている前記構造データにおける各処理対象行を、前記構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号に変換する変換ステップと、
    前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納するステップと、
    をコンピュータに実行させるための解凍プログラム。
  11. データ格納部に格納されており且つ行と列とが規定されている構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
    前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、所定の規則に従って符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
    前記構造データにおける各処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
    前記符号の第1のシーケンスに対して、同一符号が連続するように順列変換処理を実施し、前記符号の第2のシーケンスを生成するステップと、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並べ替え処理ステップと、
    前記データ格納部に格納されている、並び替え後のデータに対して圧縮処理を実施するステップと、
    を含み、コンピュータに実行される圧縮方法。
  12. 圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
    前記データ格納部に格納されている前記構造データにおける処理対象列において出現する値の出現回数を計数し、当該出現回数に基づき頻出値を抽出し、頻出値格納部に格納する頻出値抽出ステップと、
    前記頻出値格納部に格納されている前記頻出値又は前記構造データにおける特定の行内に出現する前記頻出値の組み合わせである頻出値集合に対して、前記構造データにおける処理対象行を並べ替えても変化しない指標を基に符号を付与し、前記頻出値集合と前記符号とを対応付けて符号表データ格納部に格納する符号付与ステップと、
    前記構造データにおける各前記処理対象行を、当該処理対象行に含まれる値と同一の頻出値集合に対応付けられている符号に変換するステップと、
    前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納する並び替え処理ステップと、
    を含み、コンピュータに実行される解凍方法。
  13. 圧縮されたデータを解凍することで行と列とが規定されている構造データを生成し、データ格納部に格納するステップと、
    前記データ格納部に格納されている前記構造データにおける各処理対象行を、前記構造データに出現する値又は値の組み合わせである値集合と符号とが対応付けて登録されている符号表において当該処理対象行に含まれる値と同一の値集合が対応付けている符号と同一符号間における識別子との組み合わせに変換する変換ステップと、
    前記符号の第1のシーケンスに対して、前記構造データに施された所定の順列変換処理の逆処理を実施し、前記符号の第2のシーケンスを生成するステップと、
    前記第1及び第2のシーケンスの符号の対応関係に従って、前記構造データにおける前記処理対象行を並び替え、並び替え後の前記構造データを前記データ格納部に格納するステップと、
    を含み、コンピュータに実行される解凍方法。
JP2010006034A 2010-01-14 2010-01-14 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム Active JP5487985B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010006034A JP5487985B2 (ja) 2010-01-14 2010-01-14 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010006034A JP5487985B2 (ja) 2010-01-14 2010-01-14 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2011145883A JP2011145883A (ja) 2011-07-28
JP5487985B2 true JP5487985B2 (ja) 2014-05-14

Family

ID=44460678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010006034A Active JP5487985B2 (ja) 2010-01-14 2010-01-14 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5487985B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2015008650A1 (ja) * 2013-07-16 2017-03-02 株式会社日立製作所 医用画像管理装置及び医用画像管理方法
WO2018069999A1 (ja) * 2016-10-12 2018-04-19 富士通株式会社 出力プログラム、出力方法および出力システム
WO2018096998A1 (ja) * 2016-11-28 2018-05-31 株式会社ターボデータラボラトリー データ圧縮装置、コンピュータプログラム及びデータ圧縮方法
JP6787231B2 (ja) 2017-04-04 2020-11-18 富士通株式会社 データ処理プログラム、データ処理方法およびデータ処理装置
US10860399B2 (en) * 2018-03-15 2020-12-08 Samsung Display Co., Ltd. Permutation based stress profile compression

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0233632A (ja) * 1988-07-25 1990-02-02 Nec Corp データ圧縮方式
JPH08180067A (ja) * 1994-12-26 1996-07-12 Nec Corp データベースレコード圧縮システム
US6009432A (en) * 1998-07-08 1999-12-28 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
JP4451722B2 (ja) * 2004-06-08 2010-04-14 三菱電機株式会社 データベースサーバ及びデータベースシステム
JP4740060B2 (ja) * 2006-07-31 2011-08-03 富士通株式会社 重複データ検出プログラム、重複データ検出方法および重複データ検出装置
US7769729B2 (en) * 2007-05-21 2010-08-03 Sap Ag Block compression of tables with repeated values

Also Published As

Publication number Publication date
JP2011145883A (ja) 2011-07-28

Similar Documents

Publication Publication Date Title
US9390098B2 (en) Fast approximation to optimal compression of digital data
JP3278297B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
JP5487985B2 (ja) 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム
US7689630B1 (en) Two-level bitmap structure for bit compression and data management
JP5831298B2 (ja) プログラム、情報処理装置およびインデックス生成方法
CN101783788A (zh) 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置
CN103582883A (zh) 具有组格式的可变长度数据的改进型编码和解码
CN110825363B (zh) 智能合约获取方法、装置、电子设备及存储介质
WO2011007956A2 (ko) 데이터의 압축방법
JP6681313B2 (ja) データを符号化するための方法、コンピュータ・プログラムおよびシステム
JP7286810B2 (ja) テキスト知能化洗浄方法、装置及びコンピュータ読み取り可能な記憶媒体
US20160217207A1 (en) Semantic structure search device and semantic structure search method
US20180041224A1 (en) Data value suffix bit level compression
CN113627132B (zh) 数据去重标记码生成方法、系统、电子设备及存储介质
CN104133883B (zh) 电话号码归属地数据压缩方法
CN110007955B (zh) 一种指令集模拟器译码模块代码的压缩方法
JP4758494B2 (ja) ビット長を符号に変換する回路及び方法
Inagaki et al. Novel and generalized sort-based transform for lossless data compression
JPH06290021A (ja) ソースプログラム圧縮方法
CN112527753B (zh) Dns解析记录无损压缩方法、装置、电子设备及存储介质
JPH05152971A (ja) データ圧縮・復元方法
JPH05135102A (ja) 文書検索方式
CN111026554B (zh) 一种XenServer系统物理内存分析方法及系统
Li et al. Efficient parallel design for BWT-based DNA sequences data multi-compression algorithm
Xiao et al. Index Compression for Audio Fingerprinting Systems Based on Compressed Suffix Array

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131205

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: 20140128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140210

R150 Certificate of patent or registration of utility model

Ref document number: 5487985

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150