JP5323806B2 - インデックス生成装置及び方法 - Google Patents

インデックス生成装置及び方法 Download PDF

Info

Publication number
JP5323806B2
JP5323806B2 JP2010294595A JP2010294595A JP5323806B2 JP 5323806 B2 JP5323806 B2 JP 5323806B2 JP 2010294595 A JP2010294595 A JP 2010294595A JP 2010294595 A JP2010294595 A JP 2010294595A JP 5323806 B2 JP5323806 B2 JP 5323806B2
Authority
JP
Japan
Prior art keywords
record
block
compression
file
index
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
JP2010294595A
Other languages
English (en)
Other versions
JP2012141830A (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.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2010294595A priority Critical patent/JP5323806B2/ja
Publication of JP2012141830A publication Critical patent/JP2012141830A/ja
Application granted granted Critical
Publication of JP5323806B2 publication Critical patent/JP5323806B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、インデックス生成装置及び方法に関する。
従来、ファイルシステムは、ファイルを保存する際に、保存するデータ量を削減するために、ファイルを圧縮して保存することがある。保存された圧縮後ファイルは、解凍されることによって、元のファイルに復元される。ここで、圧縮処理は、ファイルの全体を一括して処理するので、通常、圧縮後ファイルの一部だけを解凍することはできない。
このような圧縮及び解凍処理において、ファイルの一部を変更した場合、変更前の原ファイルの圧縮ファイルと、変更した部分のみを圧縮した圧縮ファイルとを保存し、解凍の際に変更前の原ファイルと組み合わせる技術を開示する特許文献1が知られている。
特許文献1に開示された技術において、制御部は、原ファイルを圧縮した圧縮ファイルを圧縮ファイル格納領域に保持し、原ファイルが変更された際に、その変更部分を示すポインタをポインタ格納領域に保持し、原ファイルの変更部分を部分圧縮した変更圧縮ファイルを変更圧縮ファイル格納領域に保持する。そして、制御部は、変更前のファイルが必要な場合、圧縮/伸張処理部を通じて圧縮ファイル格納領域の圧縮ファイルを伸張して変更前のファイルを復元し、変更後のファイルが必要な場合、圧縮/伸張処理部を通じて変更圧縮ファイル格納領域の変更圧縮ファイルを伸張し、そのファイルをポインタ格納領域のポインタに従って変更前のファイルに組み込み、変更後のファイルを復元する。
特開平07−141234号公報
しかしながら、特許文献1に開示された技術は、変更後のファイルを変更前のファイルに戻す場合に備えて、変更前のファイルの圧縮後ファイルと、変更した部分のみの圧縮後ファイルとを保持しているだけである。すなわち、特許文献1に開示された技術であっても、圧縮後ファイルから必要なデータを取得するためには、圧縮後ファイルを全て解凍する必要がある。
そこで、圧縮後ファイルから必要なレコードを読み出すために、圧縮後ファイルを部分的に解凍するための情報を生成する装置及び方法が求められている。
本発明は、圧縮後ファイルから必要なレコードを読み出すために、圧縮後ファイルを部分的に解凍するための情報を生成するインデックス生成装置及び方法を提供することを目的とする。
本発明では、以下のような解決手段を提供する。
(1) ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置であって、圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡手段と、前記引き渡すレコードのインデックスを付与しインデックス記憶手段に順次記憶するレコード情報取得手段と、前記ファイル圧縮装置における圧縮処理状態を監視し、1ブロックの圧縮処理の終了を検知する圧縮処理状態監視手段と、前記圧縮処理状態監視手段が前記1ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記1ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記1ブロックに係る情報に基づいて、圧縮後の前記1ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得手段と、を備えるインデックス生成装置。
(1)の構成によれば、本発明に係るインデックス生成装置は、圧縮対象のファイルを構成する複数のレコードをファイル圧縮装置に順次引き渡し、引き渡すレコードのインデックスを付与しインデックス記憶手段に順次記憶する。次に、インデックス生成装置は、ファイル圧縮装置における圧縮処理状態を監視し、1ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の1ブロックに係る情報をファイル圧縮装置から取得して、取得した圧縮後の1ブロックに係る情報に基づいて、圧縮後の1ブロックを特定するための情報を生成してインデックス記憶手段にさらに記憶する。
すなわち、本発明に係るインデックス生成装置は、ファイル圧縮装置に圧縮対象のファイルをレコードごとに引き渡し、引き渡すレコードのインデックスをインデックス記憶手段に順次記憶し、ファイル圧縮装置から、圧縮後の1ブロックに係る情報を取得し、圧縮後の1ブロックを特定するための情報を生成してインデックス記憶手段にさらに記憶する。したがって、本発明に係るインデックス生成装置は、圧縮後ファイルから必要なレコードを読み出すために、圧縮のために引き渡したレコードのインデックスを順次記憶し、圧縮後の1ブロックを特定するための情報をさらに記憶するので、圧縮後ファイルを部分的に解凍するための情報を生成することができる。
(2) 前記レコード情報取得手段は、前記引き渡すレコードのレコードサイズに基づいて、前記引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイルのブロックの先頭からの、前記引き渡すレコードのオフセットを算出して、レコードサイズと共に前記引き渡すレコードに関連付けて前記インデックス記憶手段にさらに記憶する、(1)に記載のインデックス生成装置。
(2)の構成によれば、(2)に係るインデックス生成装置は、(1)において、引き渡すレコードを含む圧縮前ファイルのブロックであって引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイルのブロックの先頭からの、引き渡すレコードのオフセットを算出して、レコードサイズと共に引き渡すレコードに関連付けてインデックス記憶手段にさらに記憶する。したがって、(2)に係るインデックス生成装置は、圧縮後ファイルから必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後のブロックに対応する圧縮前ファイルのブロックの先頭からのオフセットとレコードサイズとを共に記憶するので、圧縮後ファイルの該当する1ブロックのうち引き渡したレコードまでを解凍するための情報を生成することができる。
(3) ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置が実行する方法であって、圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡ステップと、前記引き渡すレコードのインデックスを付与しインデックス記憶手段に順次記憶するレコード情報取得ステップと、前記ファイル圧縮装置における圧縮処理状態を監視し、1ブロックの圧縮処理の終了を検知する圧縮処理状態監視ステップと、前記圧縮処理状態監視ステップが前記1ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記1ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記1ブロックに係る情報に基づいて、圧縮後の前記1ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得ステップと、を備える方法。
したがって、本発明に係る方法は、(1)と同様に、圧縮後ファイルから必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後の1ブロックを特定するための情報をさらに記憶するので、圧縮後ファイルを部分的に解凍するための情報を生成することができる。
本発明によれば、ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と連携して動作し、圧縮後ファイル中のブロックを特定可能な情報を生成して記憶するインデックス生成装置を提供することができる。その結果、ユーザは、圧縮後ファイルから所定のレコードを読み出す際に、解凍すべきブロックを特定することができる。
本発明の一実施形態に係るインデックス生成装置の機能構成を示す機能ブロック図である。 本発明の一実施形態に係るインデックス生成装置の機能を説明するための説明図である。 本発明の実施形態1に係るインデックスファイルの一例を示す図である。 本発明の実施形態1に係るインデックス生成装置のインデックス生成処理を示すフローチャートである。 本発明の実施形態1に係るインデックス生成装置によって生成されたインデックスファイルを利用して検索する検索処理を示すフローチャートである。 本発明の実施形態2に係るインデックスファイルの一例を示す図である。 本発明の実施形態2に係るインデックス生成装置のインデックス生成処理を示すフローチャートである。 本発明の実施形態2に係るインデックス生成装置によって生成されたインデックスファイルを利用して検索する検索処理を示すフローチャートである。
以下、本発明の実施形態について図を参照しながら説明する。
本実施形態のインデックス生成装置10は、コンピュータ及びその周辺装置に適用される。本実施形態における各部は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成される。
上記ハードウェアには、制御部としてのCPU(Central Processing Unit)の他、記憶部、通信装置、表示装置及び入力装置が含まれる。記憶部としては、例えば、メモリ(RAM:Random Access Memory、ROM:Read Only Memory等)、ハードディスクドライブ(HDD:Hard Disk Drive)及び光ディスク(CD:Compact Disk、DVD:Digital Versatile Disk等)ドライブが挙げられる。通信装置としては、例えば、ファイル圧縮装置60と通信するための各種有線及び無線インターフェース装置が挙げられる。表示装置としては、例えば、液晶ディスプレイやプラズマディスプレイ等の各種ディスプレイが挙げられる。入力装置としては、例えば、キーボード及びポインティング・デバイス(マウス、トラッキングボール等)が挙げられる。
上記ソフトウェアには、上記ハードウェアを制御するコンピュータ・プログラムやデータが含まれる。コンピュータ・プログラムやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータ・プログラムやデータは、通信回線を介して配布されることも可能であり、CD−ROM等のコンピュータ可読媒体に記録して配布されることも可能である。
[実施形態1]
図1は、本発明の一実施形態に係るインデックス生成装置10の機能構成を示す機能ブロック図である。図1において、インデックス生成装置10の説明のためにファイル圧縮装置60の構成を示す。図2は、本発明の一実施形態に係るインデックス生成装置10の機能を説明するための説明図である。図3は、本発明の実施形態1に係るインデックスファイル31の一例を示す図である。図3(1)は、インデックスファイル31の一例を示し、図3(2)は、圧縮前ファイル51と、圧縮後ファイル61と、圧縮後ファイル61から部分解凍された解凍ブロック52との一例を示している。
インデックス生成装置10は、ファイルをブロックごとに圧縮・解凍するファイル圧縮装置60と通信可能に接続されている。インデックス生成装置10は、インデックス記憶手段してのインデックスファイル31と、レコード引渡手段としてのレコード引渡部11と、レコード情報取得手段としてのレコード情報取得部12と、圧縮処理状態監視手段としての圧縮処理状態監視部13と、ブロック情報取得手段としてのブロック情報取得部14と、を備えている。以下、図1において、図2及び図3を参照しながら各部ごとに詳述する。
レコード引渡部11は、圧縮対象のファイル(圧縮前ファイル51)を構成する複数のレコードをファイル圧縮装置60に順次引き渡す。具体的には、レコード引渡部11は、圧縮前ファイル51を構成するレコードを、1レコードずつ取得し、順次、ファイル圧縮装置60に引き渡す。例えば、レコード引渡部11は、レコード長が可変の場合、レコードの開始コードから終了コードまでを1レコードとして取得し、レコード長が固定の場合、固定長の1レコードを取得し、取得したレコードをファイル圧縮装置60とのインターフェースに従い、引き渡す。
ファイル圧縮装置60において、対象レコード受付部71は、引き渡された1レコードを、圧縮用バッファ62に順次、格納する。ファイル情報更新部72は、ファイル情報テーブル63を更新する。ファイル情報テーブル63は、例えば、圧縮を完了するごとに作成される番号であるブロック番号と、引き渡されたレコードを格納する圧縮用バッファ62の残りサイズであるバッファサイズと、圧縮したブロックのサイズである圧縮後ブロックサイズとをメモリ上に記憶する。バッファサイズ監視部73は、圧縮用バッファ62のバッファサイズを監視する。ブロック圧縮部74は、圧縮用バッファ62が所定の条件になると、圧縮用バッファ62内のデータを圧縮し、圧縮後のブロックを順次生成する。さらに、圧縮後ブロックサイズ記録部75は、圧縮後ブロックサイズをファイル情報テーブル63に記録する。
すなわち、図2に示すように、圧縮前ファイル51を構成するレコードが引き渡されて、圧縮用バッファ62が所定の条件になると、圧縮後ファイル61の1ブロック(例えば、ブロック61i)が生成される。
ここで、所定の条件は、圧縮用バッファ62のバッファサイズが0又は負になった場合である。例えば、引き渡された1レコードを格納し、圧縮用バッファ62のバッファサイズが0になった場合に、ファイル圧縮装置60は、1ブロックの圧縮データを生成する。あるいは、引き渡された1レコードを格納し、圧縮用バッファ62のバッファサイズが負になった場合に、ファイル圧縮装置60は、1ブロックの圧縮データを生成し、最後に受け付けた1レコードを、クリアした圧縮用バッファ62に格納する。
さらに、ファイル圧縮装置60は、圧縮を完了するごとに圧縮後の1ブロックにブロック番号を対応付ける。圧縮後の1ブロックのサイズは、ブロックを構成する最初のデータから最後のデータまでの長さをバイト(8ビット)数で表したものであり、ブロックごとに異なる。
レコード情報取得部12は、レコード引渡部11が引き渡すレコードのインデックスを付与しインデックスファイル31に順次記憶する。レコードのインデックスは、予め作成されているとしてもよいし、圧縮前ファイル51のフォーマット情報により取得するとしてもよい。具体的には、レコード情報取得部12は、図3(1)において「key1」等で示されるレコードのインデックスを、レコードに対応付けて予め作成されているインデックス情報から取得する。あるいは、レコード情報取得部12は、読み出したレコードから、レコード中のインデックスの相対位置及び長さによってインデックス(例えば、ログファイルにおける時刻情報)を読み出して取得する。そして、レコード情報取得部12は、取得したインデックスをインデックスファイル31に図3(1)のように順次記憶する。
圧縮処理状態監視部13は、ファイル圧縮装置60における圧縮処理状態を監視し、1ブロックの圧縮処理の終了を検知する。具体的には、圧縮処理状態監視部13は、ファイル圧縮装置60とのインターフェースに従い、ファイル圧縮装置60における圧縮処理状態を示すファイル情報テーブル63を監視する。すなわち、圧縮処理状態監視部13は、例えば、圧縮処理状態を示すファイル情報テーブル63のブロック番号が増加(+1)したことによって圧縮処理の終了を検知する。
圧縮処理状態監視部13は、バッファサイズから、圧縮処理の終了を検知するとしてもよい。例えば、ファイル圧縮装置60が引き渡された1レコードを格納すると、圧縮用バッファ62のバッファサイズは減少し、ファイル圧縮装置60が圧縮後に圧縮用バッファ62をクリアすると、バッファサイズは増加する。
ブロック情報取得部14は、圧縮処理状態監視部13が1ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の1ブロックに係る情報をファイル圧縮装置60から取得して、取得した圧縮後の1ブロックに係る情報に基づいて、圧縮後の1ブロックを特定するための情報を生成してインデックスファイル31にさらに記憶する。
すなわち、ブロック情報取得部14は、圧縮後の1ブロックのブロックサイズをファイル圧縮装置60から取得し、取得した圧縮後の1ブロックのブロックサイズに基づいて、圧縮後ファイル61の先頭からのブロック位置を算出する。具体的には、ブロック情報取得部14は、ファイル圧縮装置60とのインターフェースに従い、圧縮後の1ブロックのブロックサイズを、圧縮処理の終了ごとに取得し、取得したブロックサイズを加算して、圧縮後ファイル61の先頭からのブロック位置を算出する。図3(2)のblock_pos_1〜block_pos_nは、このようにして算出されたブロック位置を示している。
次に、ブロック情報取得部14は、算出した圧縮後ファイル61の先頭からのブロック位置をインデックスファイル31にさらに記憶する。具体的には、ブロック情報取得部14は、図3(1)に示すように、インデックス(例えば、key1)に対応付けて、インデックスに対応するレコードを含むブロック(例えば、ブロック61i)のブロック位置(例えば、block_pos_i)をインデックスファイル31にさらに記憶する。
インデックスファイル31は、図3(1)に示すように、順次記憶されたインデックス(例えば、key1)と、区切りコード(例えば、¥t)と、インデックスに対応するレコードを含む圧縮後のブロックのブロック位置(例えば、block_pos_i)と、から構成される。圧縮後ファイル61を解凍する場合、検索すべきインデックスに対応するレコードを含む圧縮後のブロックのブロック位置(例えば、図3(2)において「key1」に対応するレコード1を含む圧縮後のブロック61iのblock_pos_i)を指定すると、指定したブロック位置のブロックのみが部分解凍され、解凍ブロック52が生成される。
図4は、本発明の実施形態1に係るインデックス生成装置10のインデックス生成処理を示すフローチャートである。ファイル圧縮装置60のファイル圧縮処理と関連させて説明する。
ステップS100において、インデックス生成装置10のCPU(以下、単にCPUという)は、圧縮後ファイル61の先頭からのブロック位置の値を初期化する。その後、CPUは、処理をステップS101に移す。
ステップS101において、CPU(レコード引渡部11)は、圧縮前ファイル51の1レコードを読み込む。より具体的には、CPUは、ファイル処理関数によりオープンした圧縮前ファイル51から、レコード取得関数により、1レコードを読み込む。CPUは、処理をステップS102に移す。
ステップS102において、CPU(レコード引渡部11)は、ファイル圧縮装置60とのインターフェースに従い、ステップS101で読み込んだ1レコードをファイル圧縮装置60に送信する。その後、CPUは、処理をステップS103に移す。
一方、ファイル圧縮装置60は、ステップS201において、インデックス生成装置10から1レコードを受信する。次に、ファイル圧縮装置60は、ステップS202において、インデックス生成装置10から受信した1レコードを圧縮用バッファ62に記憶し、圧縮用バッファ62のバッファサイズを監視する。
ステップS103において、CPU(レコード情報取得部12)は、レコードのインデックスを付与しインデックスファイル31に記憶する。より具体的には、CPUは、ステップS102において送信したレコードのインデックスを、レコード内の相対位置及びインデックスの長さにより取得し、取得したインデックスを圧縮後のブロックのブロック位置と関連付けてインデックスファイル31に記憶する。その後、CPUは、処理をステップS104に移す。
ステップS104において、CPU(圧縮処理状態監視部13)は、圧縮処理状態を監視する。より具体的には、CPUは、ファイル圧縮装置60とのインターフェースに従い、ファイル圧縮装置60におけるファイル情報テーブル63のバッファサイズを監視する。その後、CPUは、処理をステップS105に移す。
一方、ファイル圧縮装置60は、ステップS203において、ステップS202における圧縮用バッファ62のバッファサイズの監視によって、バッファサイズがオーバーした(バッファサイズが0以下になった)か否かを判断し、0以下になったと判断した場合(YESの場合)、ファイル圧縮装置60は、制御をステップS204に移し、0以下ではないと判断した場合(NOの場合)、ファイル圧縮装置60は、制御をステップS201に移す。次に、ファイル圧縮装置60は、ステップS204において、圧縮用バッファ62の圧縮を開始し、圧縮を完了して圧縮後の1ブロックを作成し、圧縮後ファイル61のブロック番号を増加(+1)する。次に、ファイル圧縮装置60は、ステップS205において、終了か否かを判断し、終了でない(例えば、一定時間内に1レコードを受信した)と判断した場合、処理をステップS201に移し、終了である(例えば、一定時間内に1レコードを受信しない)と判断した場合、処理を終了する。
ステップS105において、CPU(圧縮処理状態監視部13)は、1ブロック分の圧縮完了か否かを判断する。より具体的には、CPUは、ステップS104において監視したブロック番号が、増加(+1)したか否かを判断する。この判断がYESの場合、CPUは、処理をステップS106に移し、この判断がNOの場合、CPUは、処理をステップS101に移す。
ステップS106において、CPU(ブロック情報取得部14)は、圧縮後のブロックサイズを取得する。より具体的には、CPUは、ファイル圧縮装置60とのインターフェースに従い、ファイル圧縮装置60から圧縮後のブロックサイズを取得する。その後、CPUは、処理をステップS107に移す。
ステップS107において、CPU(ブロック情報取得部14)は、圧縮後のブロックサイズをブロック位置に加算する。その後、CPUは、処理をステップS108に移す。
ステップS108において、CPU(レコード引渡部11)は、圧縮終了か否かを判断する。より具体的には、CPUは、圧縮前ファイル51の最後のレコードを含むブロックが圧縮完了した(ステップS101においてファイル終了であった)か否かを判断する。この判断がYESの場合、CPUは、処理を終了し、この判断がNOの場合、CPUは、処理をステップS101に移す。
図5は、本発明の実施形態1に係るインデックス生成装置10によって生成されたインデックスファイル31を利用して検索する検索処理を示すフローチャートである。検索処理は、インデックス生成装置10とは別の、例えば、検索装置(図示せず)によって実行される処理として説明するが、インデックス生成装置10によって実行されてもよい。
検索装置は、ステップS301において、検索すべきレコードに含まれるインデックスにより、インデックスファイル31を検索する。次に、検索装置は、ステップS302において、検索したインデックスに対応するブロック位置を取得する。次に、検索装置は、ステップS303において、圧縮後ファイル61を構成するブロックのうち、取得したブロック位置から始まるブロックのみを解凍する。次に、検索装置は、ステップS304において、解凍したブロックのファイルから、インデックスにより検索し、検索すべきレコードを取得する。なお、検索装置は、検索すべきレコードがブロックに跨っている場合、次のブロックも解凍し、検索すべきレコードを取得する。
このように、インデックス生成装置10は、圧縮後ファイル61を構成するブロックのうち、検索装置が検索すべきレコードを含むブロックのみを部分解凍して検索すべきレコードを検索できるようなインデックスファイル31を生成することができる。
[実施形態2]
実施形態2におけるインデックス生成装置10の機能を、図1、図2及び図6を参照しながら説明する。図6は、本発明の実施形態2に係るインデックスファイル31の一例を示す図である。図6(1)は、インデックスファイル31の一例を示し、図6(2)は、圧縮前ファイル51と、圧縮後ファイル61と、圧縮後ファイル61から部分解凍された解凍ブロック53との一例を示している。
図1におけるレコード情報取得部12は、レコード引渡部11が引き渡すレコードのレコードサイズに基づいて、引き渡すレコードを含む圧縮前ファイル51のブロックであって引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイル51のブロックの先頭からの、引き渡すレコードのオフセット(以後、レコードオフセットという)を算出して、レコードサイズと共に引き渡すレコードに関連付けてインデックスファイル31にさらに記憶する。
インデックスファイル31は、図6(1)に示すように、順次記憶されたインデックス(例えば、key1)と、区切りコード(例えば、¥t)と、インデックスに対応するレコードを含む圧縮後のブロック位置(例えば、block_pos_i)と、区切りコード(例えば、¥t)と、インデックスに対応するレコードを含む圧縮前ファイル51のレコードオフセット(例えば、引き渡すレコード1を含む圧縮後のブロック61iに対応する圧縮前ファイル51のブロック51iの先頭からのレコードオフセット、すなわち、解凍ブロック53のoffset_1)と、区切りコード(例えば、¥t)と、インデックスに対応するレコードを含む圧縮前ファイル51のレコードサイズ(例えば、引き渡すレコード1を含む圧縮後のブロック61iに対応する圧縮前ファイル51のレコードサイズ、すなわち、解凍ブロック53のlength_1)とから構成される。
具体的には、図6(2)において、レコード情報取得部12は、引き渡すレコードを含む圧縮後のブロック(例えば、ブロック61i)に対応する圧縮前ファイル51のブロック(例えば、ブロック51i)の先頭からのレコードオフセットを、引き渡すレコードのレコードサイズに基づいて算出する。すなわち、レコード情報取得部12は、圧縮されるごとにレコードオフセットの初期値を圧縮バッファからあふれたサイズ(例えば、最初のブロックは0、レコードがブロックに跨って記憶される場合に次のブロックにあふれたサイズ)にし、引き渡すレコードのレコードサイズをレコードオフセットに加算して、圧縮前ファイル51のブロックの先頭からの、引き渡すレコードのレコードオフセットを算出する。そして、レコード情報取得部12は、図6(1)に示すように、レコードオフセット(例えば、offset_1)とレコードサイズ(例えば、length_1)とを共に、引き渡すレコードのインデックス(例えば、key1)に関連付けてインデックスファイル31にさらに記憶する。このように記憶されたレコードオフセットを利用すると、検索装置(図示せず)は、圧縮後のブロック61iのうち先頭から検索すべきレコードを含んだ部分までを解凍した解凍ブロック53を生成し、検索することができる。検索装置(図示せず)は、圧縮後のブロック(例えば、ブロック61i)のうち先頭から検索すべきレコードを含んだ部分までを解凍した解凍ブロック53を生成し、解凍ブロック53の中を検索せずに、解凍ブロック53の最後からレコードサイズ分のレコードを容易に抽出して検索結果とすることができる。
図7は、本発明の実施形態2に係るインデックス生成装置10のインデックス生成処理を示すフローチャートである。ファイル圧縮装置60のファイル圧縮処理と関連させて説明する。
ステップS110は、実施形態1のステップS100と同様であるので、省略する。
ステップS111において、CPU(レコード引渡部11)は、圧縮前ファイル51の1レコードを読み込む。より具体的には、CPUは、ファイル処理関数によりオープンした圧縮前ファイル51から、レコード取得関数により、1レコードを読み込み、レコードサイズを取得する。そして、CPUは、処理をステップS112に移す。
ステップS112において、CPU(レコード引渡部11)は、ファイル圧縮装置60とのインターフェースに従い、ステップS111で読み込んだ1レコードをファイル圧縮装置60に送信する。その後、CPUは、処理をステップS113に移す。
ステップS113において、CPU(レコード情報取得部12)は、レコードのインデックス、ブロック位置、レコードオフセット及びレコードサイズをインデックスファイル31に記憶する。より具体的には、CPUは、ステップS112において送信したレコードのインデックスを、レコード内の相対位置及びインデックスの長さにより取得する。次に、CPUは、ブロック位置、レコードオフセット及びレコードサイズをレコードのインデックスに対応付けてインデックスファイル31に記憶する。次に、CPUは、ステップS111で取得したレコードサイズをレコードオフセットに加算し、記憶する。その後、CPUは、処理をステップS114に移す。
ステップS114〜S116は、実施形態1のステップS104〜S106と同様であるので省略する。実施形態1のステップS107に対応するステップS117において、CPUは、圧縮後のブロックサイズをブロック位置に加算すると共に、レコードオフセットの初期値をセットする。S118は、実施形態1のステップS108と同様であるので省略する。
図8は、本発明の実施形態2に係るインデックス生成装置10によって生成されたインデックスファイル31を利用して検索する検索処理を示すフローチャートである。検索処理は、インデックス生成装置10とは別の、例えば、検索装置(図示せず)によって実行される処理として説明するが、インデックス生成装置10によって実行されてもよい。
検索装置は、ステップS311において、検索すべきレコードに含まれるインデックスにより、インデックスファイル31を検索する。次に、検索装置は、ステップS312において、検索したインデックスに対応するブロック位置、レコードオフセット、及びレコードサイズを取得する。次に、検索装置は、ステップS313において、圧縮後ファイル61を構成するブロックのうち、取得したブロック位置の圧縮後のブロックについて、検索すべきレコードを含む部分までを、レコードオフセットとレコードサイズとを利用して、解凍する。次に、検索装置は、ステップS314において、解凍したブロックのファイルから、インデックスにより検索し、検索すべきレコードを取得する。なお、検索装置は、ステップS314において、解凍したブロックの最後のレコードを検索すべきレコードとして取得するとしてもよい。検索すべきレコードがブロックに跨っている場合、検索装置は、レコードサイズを利用して次のブロックも解凍する。
このように、インデックス生成装置10は、圧縮後ファイル61を構成するブロックのうち、検索装置が検索すべきレコードを含むブロックのみを、検索すべきレコードを含む部分まで解凍して検索できるようなインデックスファイル31を生成することができる。
本実施形態1によれば、インデックス生成装置10は、圧縮前ファイル51を構成する複数のレコードをファイル圧縮装置60に順次引き渡し、引き渡すレコードのインデックスを付与しインデックスファイル31に順次記憶する。次に、インデックス生成装置10は、ファイル圧縮装置60における圧縮処理状態を監視し、1ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の1ブロックのブロックサイズをファイル圧縮装置60から取得し、取得した圧縮後の1ブロックのブロックサイズに基づいて、圧縮後の1ブロックの、圧縮後ファイル61の先頭からのブロック位置を算出し、インデックスファイル31にさらに記憶する。したがって、インデックス生成装置10は、圧縮後ファイル61から必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後の1ブロックの、圧縮後ファイル61の先頭からのブロック位置をさらに記憶して、圧縮後ファイル61を部分的に解凍するための情報を生成する。その結果、インデックス生成装置10は、圧縮後ファイル61から所定のレコードを読み出す際に、解凍すべきブロックを特定することができる情報を提供することができる。
本実施形態2によれば、インデックス生成装置10は、引き渡すレコードを含む圧縮前ファイル51のブロックであって引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイル51のブロックの先頭からの、引き渡すレコードのオフセットを算出して、レコードサイズと共に引き渡すレコードに関連付けてインデックスファイル31にさらに記憶する。したがって、インデックス生成装置10は、圧縮後ファイル61から必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後の1ブロックの、圧縮後ファイル61の先頭からのブロック位置を記憶し、圧縮前ファイル51のブロックの先頭からの、引き渡すレコードのレコードオフセットとレコードサイズとをさらに記憶して、圧縮後ファイル61の該当する1ブロックのうち必要なレコードまでを解凍するための情報を生成する。その結果、インデックス生成装置10は、圧縮後ファイル61から所定のレコードを読み出す際に、解凍すべきブロックと解凍すべきデータ量とを特定することができる情報を提供することができる。
なお、本実施形態では、インデックス生成装置10として構成したが、この構成に限られない。例えば、ファイル圧縮装置60に組み込まれて、ファイル圧縮装置60のプログラムとのインターフェースに従い、インデックス生成装置10と同様の機能を実現させるコンピュータ・プログラムとして構成してもよい。
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
10 インデックス生成装置
11 レコード引渡部
12 レコード情報取得部
13 圧縮処理状態監視部
14 ブロック情報取得部
31 インデックスファイル
51 圧縮前ファイル
61 圧縮後ファイル

Claims (2)

  1. ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置であって、
    圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡手段と、
    前記引き渡すレコードに付与するインデックスと、前記引き渡すレコードのレコードサイズと、前記引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の1ブロックに対応する圧縮前ファイルのブロックの先頭からの、引き渡すレコードのレコードサイズをそれぞれ足し合わせることにより算出され前記引き渡すレコードのオフセットと、を前記引き渡すレコードに関連付けてインデックス記憶手段に順次記憶するレコード情報取得手段と、
    前記ファイル圧縮装置が有する圧縮バッファで、先頭から検索すべきレコードを含んだ部分までを部分解凍できる形式で圧縮後のブロックを生成する圧縮処理の状態を監視し、1ブロックの圧縮処理の終了を検知する圧縮処理状態監視手段と、
    前記圧縮処理状態監視手段が前記1ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記1ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記1ブロックに係る情報に基づいて、圧縮後の前記1ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得手段と、
    を備え、
    前記レコード情報取得手段は、ブロックに跨ってレコードを記憶する場合、該レコードが前記圧縮バッファからあふれたサイズを、次ブロックに係るレコードオフセットの初期値とし、該次ブロックにおける前記ファイル圧縮装置へ引き渡すレコードのオフセットは、該引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の1ブロックに対応する圧縮前ファイルのブロックの先頭からの、各引き渡すレコードのレコードサイズをそれぞれ足し合わせ、さらに前記初期値を足し合わせることにより算出されることを特徴とするインデックス生成装置。
  2. ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置が実行する方法であって、
    圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡ステップと、
    前記引き渡すレコードに付与するインデックスと、前記引き渡すレコードのレコードサイズと、前記引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の1ブロックに対応する圧縮前ファイルのブロックの先頭からの、引き渡すレコードのレコードサイズをそれぞれ足し合わせることにより算出され前記引き渡すレコードのオフセットと、を前記引き渡すレコードに関連付けてインデックス記憶手段に順次記憶するレコード情報取得ステップと、
    前記ファイル圧縮装置が有する圧縮バッファで、先頭から検索すべきレコードを含んだ部分までを部分解凍できる形式で圧縮後のブロックを生成する圧縮処理の状態を監視し、1ブロックの圧縮処理の終了を検知する圧縮処理状態監視ステップと、
    前記圧縮処理状態監視ステップが前記1ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記1ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記1ブロックに係る情報に基づいて、圧縮後の前記1ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得ステップと、
    を備え、
    前記レコード情報取得ステップは、ブロックに跨ってレコードを記憶する場合、該レコードが前記圧縮バッファからあふれたサイズを、次ブロックに係るレコードオフセットの初期値とし、該次ブロックにおける前記ファイル圧縮装置へ引き渡すレコードのオフセットは、該引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の1ブロックに対応する圧縮前ファイルのブロックの先頭からの、各引き渡すレコードのレコードサイズをそれぞれ足し合わせ、さらに前記初期値を足し合わせることにより算出されることを特徴とする方法。
JP2010294595A 2010-12-29 2010-12-29 インデックス生成装置及び方法 Active JP5323806B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010294595A JP5323806B2 (ja) 2010-12-29 2010-12-29 インデックス生成装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010294595A JP5323806B2 (ja) 2010-12-29 2010-12-29 インデックス生成装置及び方法

Publications (2)

Publication Number Publication Date
JP2012141830A JP2012141830A (ja) 2012-07-26
JP5323806B2 true JP5323806B2 (ja) 2013-10-23

Family

ID=46678055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010294595A Active JP5323806B2 (ja) 2010-12-29 2010-12-29 インデックス生成装置及び方法

Country Status (1)

Country Link
JP (1) JP5323806B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101656750B1 (ko) * 2016-02-26 2016-09-23 주식회사 아미크 인덱스정보를 생성하는 데이터베이스의 아카이빙 방법 및 장치, 인덱스정보를 포함하는 아카이빙된 데이터베이스의 검색 방법 및 장치
CN111414339B (zh) * 2020-03-13 2023-04-25 浙江大华技术股份有限公司 一种文件的处理方法、***、装置、设备及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09171476A (ja) * 1995-12-20 1997-06-30 Nec Corp ダンプファイル圧縮方式
JPH10143404A (ja) * 1996-11-13 1998-05-29 Hitachi Maxell Ltd 情報記録媒体及びそのデータ記録方式
WO2003096230A2 (en) * 2002-05-10 2003-11-20 Oracle International Corporation Storing and querying relational data in compressed storage format
US20070043705A1 (en) * 2005-08-18 2007-02-22 Emc Corporation Searchable backups
JP5320678B2 (ja) * 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US7987162B2 (en) * 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system

Also Published As

Publication number Publication date
JP2012141830A (ja) 2012-07-26

Similar Documents

Publication Publication Date Title
US8830247B2 (en) Image displaying device having image cache memory
US9927998B2 (en) Flash memory compression
JP4354233B2 (ja) バックアップシステム及び方法
JP5774794B2 (ja) ストレージシステム及びストレージシステムの制御方法
KR102319657B1 (ko) 저장된 데이터 유닛들의 동작 관리
KR102069940B1 (ko) 페이지 기반 압축 저장 관리
US8560508B2 (en) Real-time compression of tabular data
CN110019004B (zh) 一种数据处理方法、装置及***
US20140164391A1 (en) Data block saving system and method
KR102275431B1 (ko) 저장된 데이터 유닛들의 동작 관리
US20120173778A1 (en) Dynamic compression of an i/o data block
WO2017036183A1 (zh) 差分升级包的处理方法及装置,升级方法、***及装置
EP2811399B1 (en) Method and terminal for starting music application
US20200210411A1 (en) Data storage in blockchain-type ledger
US20180107404A1 (en) Garbage collection system and process
JPWO2016016944A1 (ja) データベース管理システム及びデータベース管理方法
JP5323806B2 (ja) インデックス生成装置及び方法
KR20150126667A (ko) 저장된 데이터 유닛들의 동작 관리
CN110597461B (zh) 块链式账本中的数据存储方法、装置及设备
CN101799785B (zh) 信息处理设备、信息处理方法和程序
US9870385B2 (en) Computer system, data management method, and computer
WO2016111002A1 (ja) データ管理装置及びデータ管理方法
KR101656241B1 (ko) 이벤트에 관련된 이벤트 정보를 저장하고 검색하는 방법
JP2021052263A (ja) データ圧縮装置およびデータ圧縮方法
CN110795744A (zh) 一种异常信息的定位方法、***、电子设备及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20121210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130422

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130717

R150 Certificate of patent or registration of utility model

Ref document number: 5323806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350