(57)【特許請求の範囲】
【請求項１】
ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置であって、
圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡手段と、
前記引き渡すレコードに付与するインデックスと、前記引き渡すレコードのレコードサイズと、前記引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の１ブロックに対応する圧縮前ファイルのブロックの先頭からの、各引き渡すレコードのレコードサイズをそれぞれ足し合わせることにより算出される前記引き渡すレコードのオフセットと、を前記引き渡すレコードに関連付けてインデックス記憶手段に順次記憶するレコード情報取得手段と、
前記ファイル圧縮装置が有する圧縮バッファで、先頭から検索すべきレコードを含んだ部分までを部分解凍できる形式で圧縮後のブロックを生成する圧縮処理の状態を監視し、１ブロックの圧縮処理の終了を検知する圧縮処理状態監視手段と、
前記圧縮処理状態監視手段が前記１ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記１ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記１ブロックに係る情報に基づいて、圧縮後の前記１ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得手段と、
を備え、
前記レコード情報取得手段は、ブロックに跨ってレコードを記憶する場合、該レコードが前記圧縮バッファからあふれたサイズを、次ブロックに係るレコードオフセットの初期値とし、該次ブロックにおける前記ファイル圧縮装置へ引き渡すレコードのオフセットは、該引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の１ブロックに対応する圧縮前ファイルのブロックの先頭からの、各引き渡すレコードのレコードサイズをそれぞれ足し合わせ、さらに前記初期値を足し合わせることにより算出されることを特徴とするインデックス生成装置。
【請求項２】
ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置が実行する方法であって、
圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡ステップと、
前記引き渡すレコードに付与するインデックスと、前記引き渡すレコードのレコードサイズと、前記引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の１ブロックに対応する圧縮前ファイルのブロックの先頭からの、各引き渡すレコードのレコードサイズをそれぞれ足し合わせることにより算出される前記引き渡すレコードのオフセットと、を前記引き渡すレコードに関連付けてインデックス記憶手段に順次記憶するレコード情報取得ステップと、
前記ファイル圧縮装置が有する圧縮バッファで、先頭から検索すべきレコードを含んだ部分までを部分解凍できる形式で圧縮後のブロックを生成する圧縮処理の状態を監視し、１ブロックの圧縮処理の終了を検知する圧縮処理状態監視ステップと、
前記圧縮処理状態監視ステップが前記１ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記１ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記１ブロックに係る情報に基づいて、圧縮後の前記１ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得ステップと、
を備え、
前記レコード情報取得ステップは、ブロックに跨ってレコードを記憶する場合、該レコードが前記圧縮バッファからあふれたサイズを、次ブロックに係るレコードオフセットの初期値とし、該次ブロックにおける前記ファイル圧縮装置へ引き渡すレコードのオフセットは、該引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後の１ブロックに対応する圧縮前ファイルのブロックの先頭からの、各引き渡すレコードのレコードサイズをそれぞれ足し合わせ、さらに前記初期値を足し合わせることにより算出されることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インデックス生成装置及び方法に関する。
【背景技術】
【０００２】
従来、ファイルシステムは、ファイルを保存する際に、保存するデータ量を削減するために、ファイルを圧縮して保存することがある。保存された圧縮後ファイルは、解凍されることによって、元のファイルに復元される。ここで、圧縮処理は、ファイルの全体を一括して処理するので、通常、圧縮後ファイルの一部だけを解凍することはできない。
【０００３】
このような圧縮及び解凍処理において、ファイルの一部を変更した場合、変更前の原ファイルの圧縮ファイルと、変更した部分のみを圧縮した圧縮ファイルとを保存し、解凍の際に変更前の原ファイルと組み合わせる技術を開示する特許文献１が知られている。
【０００４】
特許文献１に開示された技術において、制御部は、原ファイルを圧縮した圧縮ファイルを圧縮ファイル格納領域に保持し、原ファイルが変更された際に、その変更部分を示すポインタをポインタ格納領域に保持し、原ファイルの変更部分を部分圧縮した変更圧縮ファイルを変更圧縮ファイル格納領域に保持する。そして、制御部は、変更前のファイルが必要な場合、圧縮／伸張処理部を通じて圧縮ファイル格納領域の圧縮ファイルを伸張して変更前のファイルを復元し、変更後のファイルが必要な場合、圧縮／伸張処理部を通じて変更圧縮ファイル格納領域の変更圧縮ファイルを伸張し、そのファイルをポインタ格納領域のポインタに従って変更前のファイルに組み込み、変更後のファイルを復元する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０７−１４１２３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示された技術は、変更後のファイルを変更前のファイルに戻す場合に備えて、変更前のファイルの圧縮後ファイルと、変更した部分のみの圧縮後ファイルとを保持しているだけである。すなわち、特許文献１に開示された技術であっても、圧縮後ファイルから必要なデータを取得するためには、圧縮後ファイルを全て解凍する必要がある。
【０００７】
そこで、圧縮後ファイルから必要なレコードを読み出すために、圧縮後ファイルを部分的に解凍するための情報を生成する装置及び方法が求められている。
【０００８】
本発明は、圧縮後ファイルから必要なレコードを読み出すために、圧縮後ファイルを部分的に解凍するための情報を生成するインデックス生成装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では、以下のような解決手段を提供する。
【００１０】
（１）  ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置であって、圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡手段と、前記引き渡すレコードのインデックスを付与しインデックス記憶手段に順次記憶するレコード情報取得手段と、前記ファイル圧縮装置における圧縮処理状態を監視し、１ブロックの圧縮処理の終了を検知する圧縮処理状態監視手段と、前記圧縮処理状態監視手段が前記１ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記１ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記１ブロックに係る情報に基づいて、圧縮後の前記１ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得手段と、を備えるインデックス生成装置。
【００１１】
（１）の構成によれば、本発明に係るインデックス生成装置は、圧縮対象のファイルを構成する複数のレコードをファイル圧縮装置に順次引き渡し、引き渡すレコードのインデックスを付与しインデックス記憶手段に順次記憶する。次に、インデックス生成装置は、ファイル圧縮装置における圧縮処理状態を監視し、１ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の１ブロックに係る情報をファイル圧縮装置から取得して、取得した圧縮後の１ブロックに係る情報に基づいて、圧縮後の１ブロックを特定するための情報を生成してインデックス記憶手段にさらに記憶する。
【００１２】
すなわち、本発明に係るインデックス生成装置は、ファイル圧縮装置に圧縮対象のファイルをレコードごとに引き渡し、引き渡すレコードのインデックスをインデックス記憶手段に順次記憶し、ファイル圧縮装置から、圧縮後の１ブロックに係る情報を取得し、圧縮後の１ブロックを特定するための情報を生成してインデックス記憶手段にさらに記憶する。したがって、本発明に係るインデックス生成装置は、圧縮後ファイルから必要なレコードを読み出すために、圧縮のために引き渡したレコードのインデックスを順次記憶し、圧縮後の１ブロックを特定するための情報をさらに記憶するので、圧縮後ファイルを部分的に解凍するための情報を生成することができる。
【００１３】
（２）  前記レコード情報取得手段は、前記引き渡すレコードのレコードサイズに基づいて、前記引き渡すレコードを含む圧縮前ファイルのブロックであって前記引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイルのブロックの先頭からの、前記引き渡すレコードのオフセットを算出して、レコードサイズと共に前記引き渡すレコードに関連付けて前記インデックス記憶手段にさらに記憶する、（１）に記載のインデックス生成装置。
【００１４】
（２）の構成によれば、（２）に係るインデックス生成装置は、（１）において、引き渡すレコードを含む圧縮前ファイルのブロックであって引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイルのブロックの先頭からの、引き渡すレコードのオフセットを算出して、レコードサイズと共に引き渡すレコードに関連付けてインデックス記憶手段にさらに記憶する。したがって、（２）に係るインデックス生成装置は、圧縮後ファイルから必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後のブロックに対応する圧縮前ファイルのブロックの先頭からのオフセットとレコードサイズとを共に記憶するので、圧縮後ファイルの該当する１ブロックのうち引き渡したレコードまでを解凍するための情報を生成することができる。
【００１５】
（３）  ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と通信可能なインデックス生成装置が実行する方法であって、圧縮対象のファイルを構成する複数のレコードを前記ファイル圧縮装置に順次引き渡すレコード引渡ステップと、前記引き渡すレコードのインデックスを付与しインデックス記憶手段に順次記憶するレコード情報取得ステップと、前記ファイル圧縮装置における圧縮処理状態を監視し、１ブロックの圧縮処理の終了を検知する圧縮処理状態監視ステップと、前記圧縮処理状態監視ステップが前記１ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の前記１ブロックに係る情報を前記ファイル圧縮装置から取得して、取得した圧縮後の前記１ブロックに係る情報に基づいて、圧縮後の前記１ブロックを特定するための情報を生成して前記インデックス記憶手段にさらに記憶するブロック情報取得ステップと、を備える方法。
【００１６】
したがって、本発明に係る方法は、（１）と同様に、圧縮後ファイルから必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後の１ブロックを特定するための情報をさらに記憶するので、圧縮後ファイルを部分的に解凍するための情報を生成することができる。
【発明の効果】
【００１７】
本発明によれば、ファイルをブロックごとに圧縮・解凍するファイル圧縮装置と連携して動作し、圧縮後ファイル中のブロックを特定可能な情報を生成して記憶するインデックス生成装置を提供することができる。その結果、ユーザは、圧縮後ファイルから所定のレコードを読み出す際に、解凍すべきブロックを特定することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係るインデックス生成装置の機能構成を示す機能ブロック図である。
【図２】本発明の一実施形態に係るインデックス生成装置の機能を説明するための説明図である。
【図３】本発明の実施形態１に係るインデックスファイルの一例を示す図である。
【図４】本発明の実施形態１に係るインデックス生成装置のインデックス生成処理を示すフローチャートである。
【図５】本発明の実施形態１に係るインデックス生成装置によって生成されたインデックスファイルを利用して検索する検索処理を示すフローチャートである。
【図６】本発明の実施形態２に係るインデックスファイルの一例を示す図である。
【図７】本発明の実施形態２に係るインデックス生成装置のインデックス生成処理を示すフローチャートである。
【図８】本発明の実施形態２に係るインデックス生成装置によって生成されたインデックスファイルを利用して検索する検索処理を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について図を参照しながら説明する。
【００２０】
本実施形態のインデックス生成装置１０は、コンピュータ及びその周辺装置に適用される。本実施形態における各部は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成される。
【００２１】
上記ハードウェアには、制御部としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の他、記憶部、通信装置、表示装置及び入力装置が含まれる。記憶部としては、例えば、メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ等）、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及び光ディスク（ＣＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ、ＤＶＤ：Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ等）ドライブが挙げられる。通信装置としては、例えば、ファイル圧縮装置６０と通信するための各種有線及び無線インターフェース装置が挙げられる。表示装置としては、例えば、液晶ディスプレイやプラズマディスプレイ等の各種ディスプレイが挙げられる。入力装置としては、例えば、キーボード及びポインティング・デバイス（マウス、トラッキングボール等）が挙げられる。
【００２２】
上記ソフトウェアには、上記ハードウェアを制御するコンピュータ・プログラムやデータが含まれる。コンピュータ・プログラムやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータ・プログラムやデータは、通信回線を介して配布されることも可能であり、ＣＤ−ＲＯＭ等のコンピュータ可読媒体に記録して配布されることも可能である。
【００２３】
［実施形態１］
図１は、本発明の一実施形態に係るインデックス生成装置１０の機能構成を示す機能ブロック図である。図１において、インデックス生成装置１０の説明のためにファイル圧縮装置６０の構成を示す。図２は、本発明の一実施形態に係るインデックス生成装置１０の機能を説明するための説明図である。図３は、本発明の実施形態１に係るインデックスファイル３１の一例を示す図である。図３（１）は、インデックスファイル３１の一例を示し、図３（２）は、圧縮前ファイル５１と、圧縮後ファイル６１と、圧縮後ファイル６１から部分解凍された解凍ブロック５２との一例を示している。
【００２４】
インデックス生成装置１０は、ファイルをブロックごとに圧縮・解凍するファイル圧縮装置６０と通信可能に接続されている。インデックス生成装置１０は、インデックス記憶手段してのインデックスファイル３１と、レコード引渡手段としてのレコード引渡部１１と、レコード情報取得手段としてのレコード情報取得部１２と、圧縮処理状態監視手段としての圧縮処理状態監視部１３と、ブロック情報取得手段としてのブロック情報取得部１４と、を備えている。以下、図１において、図２及び図３を参照しながら各部ごとに詳述する。
【００２５】
レコード引渡部１１は、圧縮対象のファイル（圧縮前ファイル５１）を構成する複数のレコードをファイル圧縮装置６０に順次引き渡す。具体的には、レコード引渡部１１は、圧縮前ファイル５１を構成するレコードを、１レコードずつ取得し、順次、ファイル圧縮装置６０に引き渡す。例えば、レコード引渡部１１は、レコード長が可変の場合、レコードの開始コードから終了コードまでを１レコードとして取得し、レコード長が固定の場合、固定長の１レコードを取得し、取得したレコードをファイル圧縮装置６０とのインターフェースに従い、引き渡す。
【００２６】
ファイル圧縮装置６０において、対象レコード受付部７１は、引き渡された１レコードを、圧縮用バッファ６２に順次、格納する。ファイル情報更新部７２は、ファイル情報テーブル６３を更新する。ファイル情報テーブル６３は、例えば、圧縮を完了するごとに作成される番号であるブロック番号と、引き渡されたレコードを格納する圧縮用バッファ６２の残りサイズであるバッファサイズと、圧縮したブロックのサイズである圧縮後ブロックサイズとをメモリ上に記憶する。バッファサイズ監視部７３は、圧縮用バッファ６２のバッファサイズを監視する。ブロック圧縮部７４は、圧縮用バッファ６２が所定の条件になると、圧縮用バッファ６２内のデータを圧縮し、圧縮後のブロックを順次生成する。さらに、圧縮後ブロックサイズ記録部７５は、圧縮後ブロックサイズをファイル情報テーブル６３に記録する。
すなわち、図２に示すように、圧縮前ファイル５１を構成するレコードが引き渡されて、圧縮用バッファ６２が所定の条件になると、圧縮後ファイル６１の１ブロック（例えば、ブロック６１ｉ）が生成される。
【００２７】
ここで、所定の条件は、圧縮用バッファ６２のバッファサイズが０又は負になった場合である。例えば、引き渡された１レコードを格納し、圧縮用バッファ６２のバッファサイズが０になった場合に、ファイル圧縮装置６０は、１ブロックの圧縮データを生成する。あるいは、引き渡された１レコードを格納し、圧縮用バッファ６２のバッファサイズが負になった場合に、ファイル圧縮装置６０は、１ブロックの圧縮データを生成し、最後に受け付けた１レコードを、クリアした圧縮用バッファ６２に格納する。
さらに、ファイル圧縮装置６０は、圧縮を完了するごとに圧縮後の１ブロックにブロック番号を対応付ける。圧縮後の１ブロックのサイズは、ブロックを構成する最初のデータから最後のデータまでの長さをバイト（８ビット）数で表したものであり、ブロックごとに異なる。
【００２８】
レコード情報取得部１２は、レコード引渡部１１が引き渡すレコードのインデックスを付与しインデックスファイル３１に順次記憶する。レコードのインデックスは、予め作成されているとしてもよいし、圧縮前ファイル５１のフォーマット情報により取得するとしてもよい。具体的には、レコード情報取得部１２は、図３（１）において「ｋｅｙ１」等で示されるレコードのインデックスを、レコードに対応付けて予め作成されているインデックス情報から取得する。あるいは、レコード情報取得部１２は、読み出したレコードから、レコード中のインデックスの相対位置及び長さによってインデックス（例えば、ログファイルにおける時刻情報）を読み出して取得する。そして、レコード情報取得部１２は、取得したインデックスをインデックスファイル３１に図３（１）のように順次記憶する。
【００２９】
圧縮処理状態監視部１３は、ファイル圧縮装置６０における圧縮処理状態を監視し、１ブロックの圧縮処理の終了を検知する。具体的には、圧縮処理状態監視部１３は、ファイル圧縮装置６０とのインターフェースに従い、ファイル圧縮装置６０における圧縮処理状態を示すファイル情報テーブル６３を監視する。すなわち、圧縮処理状態監視部１３は、例えば、圧縮処理状態を示すファイル情報テーブル６３のブロック番号が増加（＋１）したことによって圧縮処理の終了を検知する。
【００３０】
圧縮処理状態監視部１３は、バッファサイズから、圧縮処理の終了を検知するとしてもよい。例えば、ファイル圧縮装置６０が引き渡された１レコードを格納すると、圧縮用バッファ６２のバッファサイズは減少し、ファイル圧縮装置６０が圧縮後に圧縮用バッファ６２をクリアすると、バッファサイズは増加する。
【００３１】
ブロック情報取得部１４は、圧縮処理状態監視部１３が１ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の１ブロックに係る情報をファイル圧縮装置６０から取得して、取得した圧縮後の１ブロックに係る情報に基づいて、圧縮後の１ブロックを特定するための情報を生成してインデックスファイル３１にさらに記憶する。
【００３２】
すなわち、ブロック情報取得部１４は、圧縮後の１ブロックのブロックサイズをファイル圧縮装置６０から取得し、取得した圧縮後の１ブロックのブロックサイズに基づいて、圧縮後ファイル６１の先頭からのブロック位置を算出する。具体的には、ブロック情報取得部１４は、ファイル圧縮装置６０とのインターフェースに従い、圧縮後の１ブロックのブロックサイズを、圧縮処理の終了ごとに取得し、取得したブロックサイズを加算して、圧縮後ファイル６１の先頭からのブロック位置を算出する。図３（２）のｂｌｏｃｋ＿ｐｏｓ＿１〜ｂｌｏｃｋ＿ｐｏｓ＿ｎは、このようにして算出されたブロック位置を示している。
【００３３】
次に、ブロック情報取得部１４は、算出した圧縮後ファイル６１の先頭からのブロック位置をインデックスファイル３１にさらに記憶する。具体的には、ブロック情報取得部１４は、図３（１）に示すように、インデックス（例えば、ｋｅｙ１）に対応付けて、インデックスに対応するレコードを含むブロック（例えば、ブロック６１ｉ）のブロック位置（例えば、ｂｌｏｃｋ＿ｐｏｓ＿ｉ）をインデックスファイル３１にさらに記憶する。
【００３４】
インデックスファイル３１は、図３（１）に示すように、順次記憶されたインデックス（例えば、ｋｅｙ１）と、区切りコード（例えば、￥ｔ）と、インデックスに対応するレコードを含む圧縮後のブロックのブロック位置（例えば、ｂｌｏｃｋ＿ｐｏｓ＿ｉ）と、から構成される。圧縮後ファイル６１を解凍する場合、検索すべきインデックスに対応するレコードを含む圧縮後のブロックのブロック位置（例えば、図３（２）において「ｋｅｙ１」に対応するレコード１を含む圧縮後のブロック６１ｉのｂｌｏｃｋ＿ｐｏｓ＿ｉ）を指定すると、指定したブロック位置のブロックのみが部分解凍され、解凍ブロック５２が生成される。
【００３５】
図４は、本発明の実施形態１に係るインデックス生成装置１０のインデックス生成処理を示すフローチャートである。ファイル圧縮装置６０のファイル圧縮処理と関連させて説明する。
【００３６】
ステップＳ１００において、インデックス生成装置１０のＣＰＵ（以下、単にＣＰＵという）は、圧縮後ファイル６１の先頭からのブロック位置の値を初期化する。その後、ＣＰＵは、処理をステップＳ１０１に移す。
【００３７】
ステップＳ１０１において、ＣＰＵ（レコード引渡部１１）は、圧縮前ファイル５１の１レコードを読み込む。より具体的には、ＣＰＵは、ファイル処理関数によりオープンした圧縮前ファイル５１から、レコード取得関数により、１レコードを読み込む。ＣＰＵは、処理をステップＳ１０２に移す。
【００３８】
ステップＳ１０２において、ＣＰＵ（レコード引渡部１１）は、ファイル圧縮装置６０とのインターフェースに従い、ステップＳ１０１で読み込んだ１レコードをファイル圧縮装置６０に送信する。その後、ＣＰＵは、処理をステップＳ１０３に移す。
一方、ファイル圧縮装置６０は、ステップＳ２０１において、インデックス生成装置１０から１レコードを受信する。次に、ファイル圧縮装置６０は、ステップＳ２０２において、インデックス生成装置１０から受信した１レコードを圧縮用バッファ６２に記憶し、圧縮用バッファ６２のバッファサイズを監視する。
【００３９】
ステップＳ１０３において、ＣＰＵ（レコード情報取得部１２）は、レコードのインデックスを付与しインデックスファイル３１に記憶する。より具体的には、ＣＰＵは、ステップＳ１０２において送信したレコードのインデックスを、レコード内の相対位置及びインデックスの長さにより取得し、取得したインデックスを圧縮後のブロックのブロック位置と関連付けてインデックスファイル３１に記憶する。その後、ＣＰＵは、処理をステップＳ１０４に移す。
【００４０】
ステップＳ１０４において、ＣＰＵ（圧縮処理状態監視部１３）は、圧縮処理状態を監視する。より具体的には、ＣＰＵは、ファイル圧縮装置６０とのインターフェースに従い、ファイル圧縮装置６０におけるファイル情報テーブル６３のバッファサイズを監視する。その後、ＣＰＵは、処理をステップＳ１０５に移す。
一方、ファイル圧縮装置６０は、ステップＳ２０３において、ステップＳ２０２における圧縮用バッファ６２のバッファサイズの監視によって、バッファサイズがオーバーした（バッファサイズが０以下になった）か否かを判断し、０以下になったと判断した場合（ＹＥＳの場合）、ファイル圧縮装置６０は、制御をステップＳ２０４に移し、０以下ではないと判断した場合（ＮＯの場合）、ファイル圧縮装置６０は、制御をステップＳ２０１に移す。次に、ファイル圧縮装置６０は、ステップＳ２０４において、圧縮用バッファ６２の圧縮を開始し、圧縮を完了して圧縮後の１ブロックを作成し、圧縮後ファイル６１のブロック番号を増加（＋１）する。次に、ファイル圧縮装置６０は、ステップＳ２０５において、終了か否かを判断し、終了でない（例えば、一定時間内に１レコードを受信した）と判断した場合、処理をステップＳ２０１に移し、終了である（例えば、一定時間内に１レコードを受信しない）と判断した場合、処理を終了する。
【００４１】
ステップＳ１０５において、ＣＰＵ（圧縮処理状態監視部１３）は、１ブロック分の圧縮完了か否かを判断する。より具体的には、ＣＰＵは、ステップＳ１０４において監視したブロック番号が、増加（＋１）したか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ１０６に移し、この判断がＮＯの場合、ＣＰＵは、処理をステップＳ１０１に移す。
【００４２】
ステップＳ１０６において、ＣＰＵ（ブロック情報取得部１４）は、圧縮後のブロックサイズを取得する。より具体的には、ＣＰＵは、ファイル圧縮装置６０とのインターフェースに従い、ファイル圧縮装置６０から圧縮後のブロックサイズを取得する。その後、ＣＰＵは、処理をステップＳ１０７に移す。
【００４３】
ステップＳ１０７において、ＣＰＵ（ブロック情報取得部１４）は、圧縮後のブロックサイズをブロック位置に加算する。その後、ＣＰＵは、処理をステップＳ１０８に移す。
【００４４】
ステップＳ１０８において、ＣＰＵ（レコード引渡部１１）は、圧縮終了か否かを判断する。より具体的には、ＣＰＵは、圧縮前ファイル５１の最後のレコードを含むブロックが圧縮完了した（ステップＳ１０１においてファイル終了であった）か否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理を終了し、この判断がＮＯの場合、ＣＰＵは、処理をステップＳ１０１に移す。
【００４５】
図５は、本発明の実施形態１に係るインデックス生成装置１０によって生成されたインデックスファイル３１を利用して検索する検索処理を示すフローチャートである。検索処理は、インデックス生成装置１０とは別の、例えば、検索装置（図示せず）によって実行される処理として説明するが、インデックス生成装置１０によって実行されてもよい。
【００４６】
検索装置は、ステップＳ３０１において、検索すべきレコードに含まれるインデックスにより、インデックスファイル３１を検索する。次に、検索装置は、ステップＳ３０２において、検索したインデックスに対応するブロック位置を取得する。次に、検索装置は、ステップＳ３０３において、圧縮後ファイル６１を構成するブロックのうち、取得したブロック位置から始まるブロックのみを解凍する。次に、検索装置は、ステップＳ３０４において、解凍したブロックのファイルから、インデックスにより検索し、検索すべきレコードを取得する。なお、検索装置は、検索すべきレコードがブロックに跨っている場合、次のブロックも解凍し、検索すべきレコードを取得する。
このように、インデックス生成装置１０は、圧縮後ファイル６１を構成するブロックのうち、検索装置が検索すべきレコードを含むブロックのみを部分解凍して検索すべきレコードを検索できるようなインデックスファイル３１を生成することができる。
【００４７】
［実施形態２］
実施形態２におけるインデックス生成装置１０の機能を、図１、図２及び図６を参照しながら説明する。図６は、本発明の実施形態２に係るインデックスファイル３１の一例を示す図である。図６（１）は、インデックスファイル３１の一例を示し、図６（２）は、圧縮前ファイル５１と、圧縮後ファイル６１と、圧縮後ファイル６１から部分解凍された解凍ブロック５３との一例を示している。
【００４８】
図１におけるレコード情報取得部１２は、レコード引渡部１１が引き渡すレコードのレコードサイズに基づいて、引き渡すレコードを含む圧縮前ファイル５１のブロックであって引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイル５１のブロックの先頭からの、引き渡すレコードのオフセット（以後、レコードオフセットという）を算出して、レコードサイズと共に引き渡すレコードに関連付けてインデックスファイル３１にさらに記憶する。
【００４９】
インデックスファイル３１は、図６（１）に示すように、順次記憶されたインデックス（例えば、ｋｅｙ１）と、区切りコード（例えば、￥ｔ）と、インデックスに対応するレコードを含む圧縮後のブロック位置（例えば、ｂｌｏｃｋ＿ｐｏｓ＿ｉ）と、区切りコード（例えば、￥ｔ）と、インデックスに対応するレコードを含む圧縮前ファイル５１のレコードオフセット（例えば、引き渡すレコード１を含む圧縮後のブロック６１ｉに対応する圧縮前ファイル５１のブロック５１ｉの先頭からのレコードオフセット、すなわち、解凍ブロック５３のｏｆｆｓｅｔ＿１）と、区切りコード（例えば、￥ｔ）と、インデックスに対応するレコードを含む圧縮前ファイル５１のレコードサイズ（例えば、引き渡すレコード１を含む圧縮後のブロック６１ｉに対応する圧縮前ファイル５１のレコードサイズ、すなわち、解凍ブロック５３のｌｅｎｇｔｈ＿１）とから構成される。
【００５０】
具体的には、図６（２）において、レコード情報取得部１２は、引き渡すレコードを含む圧縮後のブロック（例えば、ブロック６１ｉ）に対応する圧縮前ファイル５１のブロック（例えば、ブロック５１ｉ）の先頭からのレコードオフセットを、引き渡すレコードのレコードサイズに基づいて算出する。すなわち、レコード情報取得部１２は、圧縮されるごとにレコードオフセットの初期値を圧縮バッファからあふれたサイズ（例えば、最初のブロックは０、レコードがブロックに跨って記憶される場合に次のブロックにあふれたサイズ）にし、引き渡すレコードのレコードサイズをレコードオフセットに加算して、圧縮前ファイル５１のブロックの先頭からの、引き渡すレコードのレコードオフセットを算出する。そして、レコード情報取得部１２は、図６（１）に示すように、レコードオフセット（例えば、ｏｆｆｓｅｔ＿１）とレコードサイズ（例えば、ｌｅｎｇｔｈ＿１）とを共に、引き渡すレコードのインデックス（例えば、ｋｅｙ１）に関連付けてインデックスファイル３１にさらに記憶する。このように記憶されたレコードオフセットを利用すると、検索装置（図示せず）は、圧縮後のブロック６１ｉのうち先頭から検索すべきレコードを含んだ部分までを解凍した解凍ブロック５３を生成し、検索することができる。検索装置（図示せず）は、圧縮後のブロック（例えば、ブロック６１ｉ）のうち先頭から検索すべきレコードを含んだ部分までを解凍した解凍ブロック５３を生成し、解凍ブロック５３の中を検索せずに、解凍ブロック５３の最後からレコードサイズ分のレコードを容易に抽出して検索結果とすることができる。
【００５１】
図７は、本発明の実施形態２に係るインデックス生成装置１０のインデックス生成処理を示すフローチャートである。ファイル圧縮装置６０のファイル圧縮処理と関連させて説明する。
【００５２】
ステップＳ１１０は、実施形態１のステップＳ１００と同様であるので、省略する。
【００５３】
ステップＳ１１１において、ＣＰＵ（レコード引渡部１１）は、圧縮前ファイル５１の１レコードを読み込む。より具体的には、ＣＰＵは、ファイル処理関数によりオープンした圧縮前ファイル５１から、レコード取得関数により、１レコードを読み込み、レコードサイズを取得する。そして、ＣＰＵは、処理をステップＳ１１２に移す。
【００５４】
ステップＳ１１２において、ＣＰＵ（レコード引渡部１１）は、ファイル圧縮装置６０とのインターフェースに従い、ステップＳ１１１で読み込んだ１レコードをファイル圧縮装置６０に送信する。その後、ＣＰＵは、処理をステップＳ１１３に移す。
【００５５】
ステップＳ１１３において、ＣＰＵ（レコード情報取得部１２）は、レコードのインデックス、ブロック位置、レコードオフセット及びレコードサイズをインデックスファイル３１に記憶する。より具体的には、ＣＰＵは、ステップＳ１１２において送信したレコードのインデックスを、レコード内の相対位置及びインデックスの長さにより取得する。次に、ＣＰＵは、ブロック位置、レコードオフセット及びレコードサイズをレコードのインデックスに対応付けてインデックスファイル３１に記憶する。次に、ＣＰＵは、ステップＳ１１１で取得したレコードサイズをレコードオフセットに加算し、記憶する。その後、ＣＰＵは、処理をステップＳ１１４に移す。
【００５６】
ステップＳ１１４〜Ｓ１１６は、実施形態１のステップＳ１０４〜Ｓ１０６と同様であるので省略する。実施形態１のステップＳ１０７に対応するステップＳ１１７において、ＣＰＵは、圧縮後のブロックサイズをブロック位置に加算すると共に、レコードオフセットの初期値をセットする。Ｓ１１８は、実施形態１のステップＳ１０８と同様であるので省略する。
【００５７】
図８は、本発明の実施形態２に係るインデックス生成装置１０によって生成されたインデックスファイル３１を利用して検索する検索処理を示すフローチャートである。検索処理は、インデックス生成装置１０とは別の、例えば、検索装置（図示せず）によって実行される処理として説明するが、インデックス生成装置１０によって実行されてもよい。
【００５８】
検索装置は、ステップＳ３１１において、検索すべきレコードに含まれるインデックスにより、インデックスファイル３１を検索する。次に、検索装置は、ステップＳ３１２において、検索したインデックスに対応するブロック位置、レコードオフセット、及びレコードサイズを取得する。次に、検索装置は、ステップＳ３１３において、圧縮後ファイル６１を構成するブロックのうち、取得したブロック位置の圧縮後のブロックについて、検索すべきレコードを含む部分までを、レコードオフセットとレコードサイズとを利用して、解凍する。次に、検索装置は、ステップＳ３１４において、解凍したブロックのファイルから、インデックスにより検索し、検索すべきレコードを取得する。なお、検索装置は、ステップＳ３１４において、解凍したブロックの最後のレコードを検索すべきレコードとして取得するとしてもよい。検索すべきレコードがブロックに跨っている場合、検索装置は、レコードサイズを利用して次のブロックも解凍する。
このように、インデックス生成装置１０は、圧縮後ファイル６１を構成するブロックのうち、検索装置が検索すべきレコードを含むブロックのみを、検索すべきレコードを含む部分まで解凍して検索できるようなインデックスファイル３１を生成することができる。
【００５９】
本実施形態１によれば、インデックス生成装置１０は、圧縮前ファイル５１を構成する複数のレコードをファイル圧縮装置６０に順次引き渡し、引き渡すレコードのインデックスを付与しインデックスファイル３１に順次記憶する。次に、インデックス生成装置１０は、ファイル圧縮装置６０における圧縮処理状態を監視し、１ブロックの圧縮処理の終了を検知したことに応じて、圧縮後の１ブロックのブロックサイズをファイル圧縮装置６０から取得し、取得した圧縮後の１ブロックのブロックサイズに基づいて、圧縮後の１ブロックの、圧縮後ファイル６１の先頭からのブロック位置を算出し、インデックスファイル３１にさらに記憶する。したがって、インデックス生成装置１０は、圧縮後ファイル６１から必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後の１ブロックの、圧縮後ファイル６１の先頭からのブロック位置をさらに記憶して、圧縮後ファイル６１を部分的に解凍するための情報を生成する。その結果、インデックス生成装置１０は、圧縮後ファイル６１から所定のレコードを読み出す際に、解凍すべきブロックを特定することができる情報を提供することができる。
【００６０】
本実施形態２によれば、インデックス生成装置１０は、引き渡すレコードを含む圧縮前ファイル５１のブロックであって引き渡すレコードを含む圧縮後のブロックに対応する圧縮前ファイル５１のブロックの先頭からの、引き渡すレコードのオフセットを算出して、レコードサイズと共に引き渡すレコードに関連付けてインデックスファイル３１にさらに記憶する。したがって、インデックス生成装置１０は、圧縮後ファイル６１から必要なレコードを読み出すために、圧縮のために引き渡すレコードのインデックスを順次記憶し、圧縮後の１ブロックの、圧縮後ファイル６１の先頭からのブロック位置を記憶し、圧縮前ファイル５１のブロックの先頭からの、引き渡すレコードのレコードオフセットとレコードサイズとをさらに記憶して、圧縮後ファイル６１の該当する１ブロックのうち必要なレコードまでを解凍するための情報を生成する。その結果、インデックス生成装置１０は、圧縮後ファイル６１から所定のレコードを読み出す際に、解凍すべきブロックと解凍すべきデータ量とを特定することができる情報を提供することができる。
【００６１】
なお、本実施形態では、インデックス生成装置１０として構成したが、この構成に限られない。例えば、ファイル圧縮装置６０に組み込まれて、ファイル圧縮装置６０のプログラムとのインターフェースに従い、インデックス生成装置１０と同様の機能を実現させるコンピュータ・プログラムとして構成してもよい。
【００６２】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【符号の説明】
【００６３】
１０  インデックス生成装置
１１  レコード引渡部
１２  レコード情報取得部
１３  圧縮処理状態監視部
１４  ブロック情報取得部
３１  インデックスファイル
５１  圧縮前ファイル
６１  圧縮後ファイル
【図１】
0005323806.tif 000002
【図２】
0005323806.tif 000003
【図３】
0005323806.tif 000004
【図４】
0005323806.tif 000005
【図５】
0005323806.tif 000006
【図６】
0005323806.tif 000007
【図７】
0005323806.tif 000008
【図８】
0005323806.tif 000009