(57)【要約】  項目と該項目を含むファイル数とを対応付けた項目情報（１２ａ）とファイル（１３ａ）ごとに各項目を含むか否かを示すファイル情報（１２ｃ）とに基づいて、要求された検索条件を満たすファイル（１３ａ）を検索する検索部（１１ｂ）と、ファイル（１３ａ）の削除要求があると、前記項目情報（１２ａ）に対して、前記削除対象のファイル（１３ａ）に含まれる項目のファイル数を更新し、該ファイル数が０になった場合に前記項目情報（１２ａ）からファイル数が０になった項目と該項目を含むファイル数とを削除する削除部（１１ｃ）と、を有する。
2014002161.tif 000002
【特許請求の範囲】
【請求項１】
複数の項目を持つ情報を保持するファイルを管理する情報処理装置であって、
前記項目と該項目を含むファイル数とを対応付けた項目情報と前記ファイルごとに各項目を含むか否かを示すファイル情報とに基づいて、要求された検索条件を満たすファイルを検索する検索部と、
ファイルの削除要求があると、前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新し、該ファイル数が０になった場合に前記項目情報からファイル数が０になった項目と該項目を含むファイル数とを削除する削除部と、
を有することを特徴とする、情報処理装置。
【請求項２】
前記項目情報は、前記項目ごとの識別子をさらに含み、
前記ファイル情報は、前記ファイルごとに、前記識別子に対応するビット位置の値の有効又は無効に応じて該ファイルが前記識別子に対応する項目を含むか否かを示すビット列を持つことを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記削除部は、前記ファイル情報に対して、前記削除するファイルに対応するビット列において値が有効であるビット位置を特定するとともに、該ビット列を削除し、前記項目情報に対して、前記特定したビット位置に対応する項目のファイル数を減算することを特徴とする、請求項２記載の情報処理装置。
【請求項４】
前記削除部は、前記ファイル情報において値が全てのビット列で無効である無効ビット位置がある場合に、前記全てのビット列に対して前記無効ビット位置のビットを削除するとともに、前記無効ビット位置よりも下位のビットを、削除したビット数だけ上位側にシフトすることを特徴とする、請求項３記載の情報処理装置。
【請求項５】
前記検索部は、前記項目情報に基づき前記検索条件に含まれる項目の識別子を特定し、前記特定した識別子に対応するビット位置の値が有効である検索対象のファイルを、前記ファイル情報に基づいて抽出し、抽出したファイルから、前記検索条件を満たすファイルを検索することを特徴とする、請求項２〜４のいずれか１項記載の情報処理装置。
【請求項６】
前記検索部は、前記項目情報に基づき前記特定した識別子に対応するビット位置の値を有効にした検索用ビット列を生成し、前記検索用ビット列と前記ファイル情報の各ビット列との積が、前記検索用ビット列と一致するビット列に対応する前記検索対象のファイルから、前記検索条件を満たすファイルを検索することを特徴とする、請求項５記載の情報処理装置。
【請求項７】
前記検索部は、前記検索条件に複数の項目が含まれる場合、前記検索条件に含まれる複数の項目のうち、対応するファイル数が少ない項目について、前記項目情報に基づき識別子を特定し、前記特定した識別子に対応するビット位置の値を有効にした前記検索用ビット列であって、先頭のビット位置から前記有効にしたビット位置までのビット幅を持つ前記検索用ビット列を生成し、前記検索用ビット列と、前記ファイル情報の各ビット列であって、前記先頭のビット位置から前記有効にしたビット位置までの各ビット列との積が、前記検索用ビット列と一致するビット列に対応する前記検索対象のファイルから、前記検索条件を満たすファイルを検索することを特徴とする、請求項６記載の情報処理装置。
【請求項８】
前記検索部は、前記項目情報に基づき前記特定した識別子に対応するファイル数が所定の閾値を超える場合、前記特定した識別子に対応するビット位置の値が有効である前記検索対象のファイルの抽出を抑止し、全てのファイルから、前記検索条件を満たすファイルを検索することを特徴とする、請求項５〜７のいずれか１項記載の情報処理装置。
【請求項９】
前記項目情報は、前記項目ごとの該項目を含むファイルの合計サイズをさらに含み、
前記検索部は、前記項目ごとの前記合計サイズに基づいて、前記所定の閾値を算出することを特徴とする、請求項８記載の情報処理装置。
【請求項１０】
前記検索部は、前記項目情報に含まれる複数の項目であって所定の順序でソートした項目と、該項目に対応する識別子とを含むソート済項目情報に基づき前記検索条件に含まれる項目の識別子を特定するとともに、
前記削除部は、前記削除対象のファイルに含まれる項目のファイル数が０になった場合に、前記ソート済項目情報からファイル数が０になった項目と該項目に対応する識別子とをさらに削除することを特徴とする、請求項２〜９のいずれか１項記載の情報処理装置。
【請求項１１】
複数の項目を持つ情報を保持するファイルを管理するファイル管理方法であって、
前記項目と該項目を含むファイル数とを対応付けた項目情報と、前記ファイルごとに各項目を含むか否かを示すファイル情報と、に基づいて、要求された検索条件を満たすファイルを検索し、
ファイルの削除要求があると、前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新し、該ファイル数が０になった場合に前記項目情報からファイル数が０になった項目と該項目を含むファイル数とを削除する、
ことを特徴とする、ファイル管理方法。
【請求項１２】
前記項目情報は、前記項目ごとの識別子をさらに含み、
前記ファイル情報は、前記ファイルごとに、前記識別子に対応するビット位置の値の有効又は無効に応じて該ファイルが前記識別子に対応する項目を含むか否かを示すビット列を持つことを特徴とする、請求項１１記載のファイル管理方法。
【請求項１３】
前記ファイル情報から削除対象のファイルに係る情報を削除する処理において、前記ファイル情報に対して、前記削除するファイルに対応するビット列において値が有効であるビット位置を特定するとともに、該ビット列を削除し、
前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新する処理において、前記項目情報に対して、前記特定したビット位置に対応する項目のファイル数を減算する、
ことを特徴とする、請求項１２記載のファイル管理方法。
【請求項１４】
前記ファイル情報から削除対象のファイルに係る情報を削除する処理において、前記ファイル情報において値が全てのビット列で無効である無効ビット位置がある場合に、前記全てのビット列に対して前記無効ビット位置のビットを削除するとともに、前記無効ビット位置よりも下位のビットを、削除したビット数だけ上位側にシフトする、
ことを特徴とする、請求項１３記載のファイル管理方法。
【請求項１５】
前記検索する処理において、
前記項目情報に基づき前記検索条件に含まれる項目の識別子を特定し、
前記特定した識別子に対応するビット位置の値が有効である検索対象のファイルを、前記ファイル情報に基づいて抽出し、
抽出したファイルから、前記検索条件を満たすファイルを検索する、
ことを特徴とする、請求項１２〜１４のいずれか１項記載のファイル管理方法。
【請求項１６】
複数の項目を持つ情報を保持するファイルを管理するコンピュータに実行させるファイル管理プログラムであって、
前記項目と該項目を含むファイル数とを対応付けた項目情報と、前記ファイルごとに各項目を含むか否かを示すファイル情報と、に基づいて、要求された検索条件を満たすファイルを検索し、
ファイルの削除要求があると、前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新し、該ファイル数が０になった場合に前記項目情報からファイル数が０になった項目と該項目を含むファイル数とを削除する、
処理を前記コンピュータに実行させることを特徴とする、ファイル管理プログラム。
【請求項１７】
前記項目情報は、前記項目ごとの識別子をさらに含み、
前記ファイル情報は、前記ファイルごとに、前記識別子に対応するビット位置の値の有効又は無効に応じて該ファイルが前記識別子に対応する項目を含むか否かを示すビット列を持つことを特徴とする、請求項１６記載のファイル管理プログラム。
【請求項１８】
前記ファイル情報から削除対象のファイルに係る情報を削除する処理において、前記ファイル情報に対して、前記削除するファイルに対応するビット列において値が有効であるビット位置を特定するとともに、該ビット列を削除し、
前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新する処理において、前記項目情報に対して、前記特定したビット位置に対応する項目のファイル数を減算する、
処理を前記コンピュータに実行させることを特徴とする、請求項１７記載のファイル管理プログラム。
【請求項１９】
前記ファイル情報から削除対象のファイルに係る情報を削除する処理において、前記ファイル情報において値が全てのビット列で無効である無効ビット位置がある場合に、前記全てのビット列に対して前記無効ビット位置のビットを削除するとともに、前記無効ビット位置よりも下位のビットを、削除したビット数だけ上位側にシフトする、
処理を前記コンピュータに実行させることを特徴とする、請求項１８記載のファイル管理プログラム。
【請求項２０】
前記検索する処理において、
前記項目情報に基づき前記検索条件に含まれる項目の識別子を特定し、
前記特定した識別子に対応するビット位置の値が有効である検索対象のファイルを、前記ファイル情報に基づいて抽出し、
抽出したファイルから、前記検索条件を満たすファイルを検索する、
処理を前記コンピュータに実行させることを特徴とする、請求項１７〜１９のいずれか１項記載のファイル管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ファイル管理方法、及びファイル管理プログラムに関する。
【背景技術】
【０００２】
図１９は、フラットファイルの一例を示す図であり、図２０は、フラットファイルからのレコード抽出の一例を示す図である。フラットファイルは、例えばＣＳＶ（Comma Separated Values）形式やＸＭＬ（eXtensible Markup Language）形式で複数の項目（項目名）を持つ情報を保持するファイルであり、例えば図１９に示すように、ＣＳＶ形式で複数のレコードを保持する。レコードは、複数の項目（カラム）がカンマ等の区切り記号で区切られる。フラットファイルを用いたシステムでは、時間の経過に応じて、時々刻々とフラットファイルのデータの形式（カラム等）が変化しても良く、ファイルをファイルのまま、改竄せずに格納することができ、また、ＲＤＢ（Relational DataBase）スキーマ定義を事前に決める必要がない。【０００３】
例えば、図２０に示すように、ファイル１では、｛“名前”，“住所”，“年齢”｝の項目を持つレコードが保持され、ファイル２では、新たに必要になった“血液型”の項目が追加され、ファイル３では、不要になった“年齢”の項目が削除されている。このように、フラットファイルを用いたシステムでは、異なるデータの形式を持つ複数のファイル１〜３から、ユーザが指定した検索条件（例えば“名前”の項目に“山”が含まれる）に合致するレコードを抽出することができる。【０００４】
上述した利点から、多様・大量の業務データをフラットファイルデータ格納庫に蓄積し活用するシステムが用いられることがある。一例として、このシステムは、ＰＯＳ（Point Of Sale）システムの売り上げデータと在庫データとを分析して自動発注する際や、ＡＴＭ（Automatic Teller Machine）のジャーナルデータ等の管理に用いられる。
ところで、フラットファイルを用いたシステムでは、非定型データが大量に格納されたときに、必要に応じて、業務データを高速に検索（抽出）して活用することが求められる場合がある。なお、非定型データとは、様々なカラムの変化を持ったデータであり、例えばＰＤＦ（Portable Document Format）文書内部の表データやジャーナルデータ等が挙げられる。図２１は、レコード抽出対象のフラットファイルの絞り込み処理の一例を説明する図である。なお、以下、フラットファイルを単にファイルという場合がある。【０００５】
図２１に示すように、システムは、ファイルを格納するファイル格納領域と、ファイルのメタ情報を保持する管理領域（管理ＤＢ（データベース））とを有している。
ファイルを格納する場合、システムは、事前にファイルの絞り込みに使用するキーとなる項目名（例えば“項目１”）を決めておく。ユーザからファイル１の格納要求があると（ステップＳ１０１）、システムにより、ファイル１が開かれてキーとなる項目である“項目１”の情報（例えばカラムの最大値：１０，最小値：２）が取得される（ステップＳ１０２）。そして、システムにより、取得した“項目１”の情報がメタ情報として管理領域に格納され、ファイル１がファイル格納領域に格納される（ステップＳ１０３）。【０００６】
次に、ユーザから、検索条件として“項目１＞１３”を満たすデータ（レコード）の抽出要求を受けると（ステップＳ１０４）、システムにより、管理ＤＢに問い合わせが実施され（ステップＳ１０５）、検索条件に合致しないメタ情報のファイルが検索対象から除外される。なお、図２１の場合、ファイル１の“項目１”の最大値は１０であり、ファイル２の“項目１”の最大値は１５であるため、“項目１＞１３”の検索条件を満たさないファイル１が検索対象から除外される。そして、システムにより、ファイル格納領域に格納されたファイル２に対してのみ、ファイルが開かれて検索条件に合致するレコードの抽出処理が実施される（ステップＳ１０６）。【０００７】
このように、図２１に示す例では、大量に格納されたファイルの中から、検索する必要のないファイルが除外されて検索対象のファイルが絞り込まれることにより、データ検索の高速化が実現される。
なお、関連する技術として、原稿を画像信号に変換した１次情報にこの１次情報を検索するためのキーワード等の２次情報を付加してメモリに記憶させて登録し、この２次情報を用いて必要な１次情報をメモリから検索して読み出す技術がある（例えば下記特許文献１）。【０００８】
この技術は、登録時に、キーワードごとにそのキーワードを有する１次情報の資料番号を格納する資料番号リストファイルに、登録すべき１次情報の資料番号を順次格納する。また、この技術は、検索時に、検索条件である２次情報中のキーワードについて、キーワード種と資料番号をアドレスとしてビットを割り付けるビットマップメモリを作成し、ビットマップメモリに基づいて求めた１次情報のみをメモリから読み出す。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１−２３７７２３号公報
【特許文献２】特開２０００−２４２５３６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述した図２１に示す例では、検索条件にキーとなる項目名が含まれない場合、ファイル格納領域に格納された全てのファイルが検索対象となる。つまり、検索条件にキーとなる項目名が含まれない場合、検索条件にキーとなる項目名が含まれる場合と比較して、ファイルの絞り込みが行なえないためにファイルのオープンコストが増加し、検索レスポンスが低下することになる。【００１１】
また、上述した関連する技術では、管理テーブル（資料番号リストファイル，ビットマップメモリ）において１次情報を削除することが考慮されていない。つまり、１次情報の削除等に応じて管理テーブルの情報を更新する構成がないため、１次情報の登録及び削除が繰り返しされた場合、検索時に、存在しない１次情報を読み込むという無駄な処理が発生することになり、検索レスポンスが低下することになる。【００１２】
１つの側面では、本発明は、複数のファイルから情報を検索する際の検索効率を向上させることを目的とする。
【課題を解決するための手段】
【００１３】
一態様の情報処理装置は、複数の項目を持つ情報を保持するファイルを管理する情報処理装置であって、前記項目と該項目を含むファイル数とを対応付けた項目情報と前記ファイルごとに各項目を含むか否かを示すファイル情報とに基づいて、要求された検索条件を満たすファイルを検索する検索部と、ファイルの削除要求があると、前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新し、該ファイル数が０になった場合に前記項目情報からファイル数が０になった項目と該項目を含むファイル数とを削除する削除部と、を有する。【００１４】
また、一態様のファイル管理方法は、複数の項目を持つ情報を保持するファイルを管理するファイル管理方法であって、前記項目と該項目を含むファイル数とを対応付けた項目情報と、前記ファイルごとに各項目を含むか否かを示すファイル情報と、に基づいて、要求された検索条件を満たすファイルを検索し、ファイルの削除要求があると、前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新し、該ファイル数が０になった場合に前記項目情報からファイル数が０になった項目と該項目を含むファイル数とを削除する。【００１５】
さらに、一態様のファイル管理プログラムは、複数の項目を持つ情報を保持するファイルを管理するコンピュータに実行させるファイル管理プログラムであって、前記項目と該項目を含むファイル数とを対応付けた項目情報と、前記ファイルごとに各項目を含むか否かを示すファイル情報と、に基づいて、要求された検索条件を満たすファイルを検索し、ファイルの削除要求があると、前記項目情報に対して、前記削除対象のファイルに含まれる項目のファイル数を更新し、該ファイル数が０になった場合に前記項目情報からファイル数が０になった項目と該項目を含むファイル数とを削除する、処理を前記コンピュータに実行させる。
【発明の効果】
【００１６】
一実施形態によれば、複数のファイルから情報を検索する際の検索効率を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】一実施形態に係る情報処理装置の機能構成例を示すブロック図である。
【図２】図１に示すファイル格納領域に格納されるフラットファイルのデータ構造の一例を示す図である。
【図３】図１に示す管理領域に格納される項目名辞書テーブルの一例を示す図である。
【図４】図１に示す管理領域に格納されるソート済項目名辞書テーブルの一例を示す図である。
【図５】図１に示す管理領域に格納される項目名ビット管理テーブルの一例を示す図である。
【図６】図１に示す格納部によるＣＳＶ形式のフラットファイルからの項目名の抽出処理の一例を説明する図である。
【図７】図１に示す格納部によるＸＭＬ形式のフラットファイルからの項目名の抽出処理の一例を説明する図である。
【図８】図１に示す検索部によるファイルの絞り込み処理の一例を説明する図である。
【図９】図１に示す情報処理装置のハードウェア構成例を示すブロック図である。
【図１０】図１に示す格納部におけるファイル格納処理の一例を説明するフローチャートである。
【図１１】図１に示すフラットファイル及び各テーブルの関係を説明する図である。
【図１２】図１に示す格納部による各テーブルの更新処理の一例を説明する図である。
【図１３】図１に示す検索部におけるファイル検索処理の一例を説明するフローチャートである。
【図１４】図１に示す削除部におけるファイル削除処理の一例を説明するフローチャートである。
【図１５】図１に示す削除部による各テーブルの更新処理の一例を説明する図である。
【図１６】一実施形態の第１変形例に係る検索部によるファイルの絞り込み処理を説明する図である。
【図１７】一実施形態の第２変形例に係る項目名辞書テーブルを示す図である。
【図１８】一実施形態の第２変形例に係る項目名ビット管理テーブルを示す図である。
【図１９】フラットファイルの一例を示す図である。
【図２０】フラットファイルからのレコード抽出の一例を示す図である。
【図２１】レコード抽出対象のフラットファイルの絞り込み処理の一例を説明する図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して実施の形態を説明する。
〔１〕一実施形態
〔１−１〕情報処理装置の説明
図１は、一実施形態に係る情報処理装置１の機能構成例を示すブロック図である。情報処理装置１は、複数の項目を持つ情報を保持するフラットファイル１３ａを複数管理するものであり、図１に示すように、ファイル管理部１１，管理領域１２，及びファイル格納領域１３を有している。
【００１９】
ファイル格納領域１３は、フラットファイル１３ａが格納される領域である。ファイル格納領域１３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の各種デバイスの記憶領域を用いることができる。図２は、ファイル格納領域１３に格納されるフラットファイル１３ａのデータ構造の一例を示す図である。
フラットファイル（ファイル）１３ａは、ＣＳＶ形式やＸＭＬ形式で複数の項目（項目名）を持つ情報を保持する入力対象のファイルであり、例えば図２に示すように、ＣＳＶ形式で複数のレコードを保持する。レコードは、複数の項目がカンマ等の区切り記号で区切られる。なお、以下、フラットファイル１３ａを単にファイル１３ａという場合がある。また、以下の説明において、ファイル格納領域１３には、ファイル１３ａとして、図２に示すファイル１３ａ−１及びファイル１３ａ−２が格納されるものとする。なお、ファイル１３ａ−１及びファイル１３ａ−２は、それぞれファイルＸ及びファイルＹという場合がある。
【００２０】
以下、ファイル１３ａが保持する項目は、“項目名｛｝”の｛｝の間にカンマ区切りで表し、ファイル１３ａが保持するレコードは、“レコード｛｝”の｛｝の間にカンマ区切りで表す。例えば、図２においては、ファイル１３ａ−１は、項目名｛“Name”，“Address”｝について、２つのレコード｛“Yamamoto”，“Aichi”｝，｛“Suzuki”，“Kanagawa”｝を保持している。また、ファイル１３ａ−２は、項目名｛“Name”，“Address”，“Age”，“Gender”｝について、２つのレコード｛“Yamaguchi”，“Yamaguchi”，“27”，“M”｝，｛“Yamada”，“Osaka”，“25”，“F”｝を保持している。
【００２１】
管理領域（保持部）１２は、ファイル１３ａを管理するための各テーブル１２ａ〜１２ｃが格納される領域である。管理領域１２としては、例えばＲＡＭ（Random Access Memory）等の揮発性メモリ等の記憶領域を用いることができる。なお、各テーブル１２ａ〜１２ｃは、それぞれデータベースであってもファイルであっても良い。図３〜図５はそれぞれ、管理領域１２に格納される項目名辞書テーブル１２ａ，ソート済項目名辞書テーブル１２ｂ，項目名ビット管理テーブル１２ｃの一例を示す図である。
【００２２】
項目名辞書テーブル（項目情報）１２ａは、ＩＤ（識別子）と、項目名（項目）と、該項目名を含むファイルのファイル数と、を対応付けた情報であって、ファイル１３ａに含まれる全ての項目名を管理するテーブルである。図３に示す例では、項目名辞書テーブル１２ａは、図２に示すファイル１３ａ−１及び１３ａ−２に含まれる全ての項目名について、ＩＤを割り当て、当該項目名を含むファイル数を保持する。一例として、項目名辞書テーブル１２ａは、“項目名＝Name”に“ＩＤ＝１”を割り当て、“Name”の項目名（項目）を含むファイル１３ａ−１，１３ａ−２の“ファイル数＝２”を設定したレコードを保持する。なお、項目名辞書テーブル１２ａは、後述する格納部１１ａ及び削除部１１ｃにより更新される。
【００２３】
ソート済項目名辞書テーブル（ソート済項目情報）１２ｂは、項目名辞書テーブル１２ａに含まれる複数の項目名であって所定の順序でソートした項目名と、該項目名に対応するＩＤ（識別子）とを含むテーブルである。図４に示す例では、ソート済項目名辞書テーブル１２ｂは、図３に示す項目名辞書テーブル１２ａに含まれる項目名をアルファベット順で昇順にソートした項目名と、当該項目名に対応するＩＤとを保持する。
【００２４】
項目名ビット管理テーブル（ファイル情報）１２ｃは、ファイル１３ａごとに各項目を含むか否かを示すテーブルであり、ファイル１３ａごとに、ファイル格納領域１３に格納されたファイル１３ａに含まれる各項目の有無を、ビット列として保持する。このビット列は、ＩＤに対応するビット位置の値の有効又は無効に応じて該ファイル１３ａがＩＤに対応する項目を含むか否かを示すものである。
【００２５】
例えば、図５に示す例では、項目名ビット管理テーブル１２ｃは、ファイルＸ，Ｙごとに、これらのファイル１３ａが含む項目のＩＤに対応するビット位置の値を有効（例えば“１”）に設定し、それ以外のビット位置の値を無効（例えば“０”）に設定したビット列を保持する。一例として、項目名ビット管理テーブル１２ｃは、ＩＤが“１”である項目名“Name”，ＩＤが“２”である項目名“Address”（図３参照）を含むファイルＸについて、ＩＤに対応する１ビット目，２ビット目のビット位置の値が“１”であり、それ以外のビット位置の値が“０”であるビット列を保持する。なお、ビット列の幅（最大ビット数）は、将来増加し得るＩＤの最大値以上であることが好ましい。
【００２６】
ファイル管理部１１は、ファイル１３ａ及び各テーブル１２ａ〜１２ｃを管理し、検索要求に応じて検索条件を満たすレコード（情報）を保持するファイル１３ａを検索し、検索したファイル１３ａから検索条件を満たすレコード（情報）を取り出すものである。このため、ファイル管理部１１は、格納部１１ａ，検索部１１ｂ，及び削除部１１ｃを有している。
【００２７】
格納部１１ａは、ユーザ等からファイル１３ａの格納要求を受けると、格納対象のファイル１３ａに含まれる全ての項目名を収集して管理領域１２内の各テーブル１２ａ〜１２ｃを更新し、格納対象のファイル１３ａをファイル格納領域１３に格納する。
具体的には、格納部１１ａは、ファイル１３ａの格納要求を受けると、格納対象のファイル１３ａから全ての項目名を抽出する。そして、格納部１１ａは、抽出した項目名に他の項目名と重複しないＩＤ（例えば最小の整数）を割り当て、図３に示す項目名辞書テーブル１２ａに“項目名”と“ＩＤ”とを設定するとともに、“項目を含むファイル数”に１を設定する。なお、格納部１１ａは、抽出した項目名が既に項目名辞書テーブル１２ａに存在する場合には、ＩＤの割り当てを行なわず、抽出した項目名に対応する“項目を含むファイル数”に１を加算する。
【００２８】
ここで、図６及び図７を参照して、格納部１１ａによるファイル１３ａからの項目名の抽出（取得）処理を説明する。図６及び図７はそれぞれ、格納部１１ａによるＣＳＶ形式，ＸＭＬ形式のファイル１３ａからの項目名の抽出処理の一例を説明する図である。
格納対象のファイル１３ａがＣＳＶ形式のファイルである場合、格納部１１ａは、ファイル１３ａの最初の行の先頭から改行までを読み込み、所定の区切り文字（例えばカンマ“,”）の検出を契機に、検出した区切り文字の前後の文字列を分割して、分割された文字列（項目名；図６に示す例では“Name”及び“Address”）を抽出する。
【００２９】
また、検索対象のファイル１３ａがＸＭＬ形式のファイルである場合、格納部１１ａは、ファイル１３ａの先頭から順に、“<”と“>”との間の記述内容（要素名；図７に示す例では“root”，“person”，“name”，“age”等）を読み込み、階層の深さをインクリメントする。また、格納部１１ａは、“</”及び“>”（図７に示す例では“</name>”，“</age>”，“</person>”等）を検出すると階層の深さをデクリメントする。そして、格納部１１ａは、階層の深さが“０”になるまで繰り返し“<”と“>”との間の記述内容の読み込みを行ない、項目名を抽出する。
【００３０】
なお、上述したファイル１３ａが保持するレコード（情報）には、図６に示すＣＳＶ形式のファイル１３ａが保持するレコードのほか、図７に示すＸＭＬ形式のファイル１３ａが保持する開始タグと終了タグとの間のデータが含まれる。なお、格納部１１ａによるファイル１３ａからの項目名の抽出処理は、上述した手順に限定されず、既知の種々の手法により行なうことが可能であり、その詳細な説明は省略する。
【００３１】
また、格納部１１ａは、項目名辞書テーブル１２ａに対して新たに追加した項目名及びＩＤがある場合には、当該項目名及びＩＤの組を、ソート済項目名辞書テーブル１２ｂに追加する。このとき格納部１１ａは、追加する項目名及びＩＤの組を、ソート済項目名辞書テーブル１２ｂに含まれる項目名が所定の順序となるように追加する。
なお、格納部１１ａは、項目名辞書テーブル１２ａに対して新たに追加した項目名及びＩＤがある場合に、既存のソート済項目名辞書テーブル１２ｂを削除して、更新後の項目名辞書テーブル１２ａに基づき新たにソート済項目名辞書テーブル１２ｂを作成しても良い。この場合、格納部１１ａは、項目名辞書テーブル１２ａに含まれる全ての項目名を所定の順序（例えばアルファベット順，５０音順等で昇順又は降順）でソートし、ソートした項目名と当該項目名に対応するＩＤとを含むソート済項目名辞書テーブル１２ｂを作成し、管理領域１２に格納する。
【００３２】
さらに、格納部１１ａは、項目名ビット管理テーブル１２ｃに対して、格納対象のファイル１３ａのファイル名と、格納対象のファイル１３ａに含まれる各項目の有無を示す上述したビット列とを追加する。
このように、格納部１１ａは、ファイル１３ａの格納時に、ファイル１３ａに含まれる項目名を全て収集し、各テーブル１２ａ〜１２ｃを用いて一括管理する。
【００３３】
検索部１１ｂは、管理領域１２が保持する項目名辞書テーブル１２ａ又はソート済項目名辞書テーブル１２ｂとファイル格納領域１３とに基づいて、要求された検索条件を満たすファイル１３ａを検索する。
具体的には、検索部１１ｂは、項目名辞書テーブル１２ａ又はソート済項目名辞書テーブル１２ｂに基づき検索条件に含まれる項目のＩＤを特定する。そして、検索部１１ｂは、特定したＩＤに対応するビット位置の値が有効である検索対象のファイル１３ａを、項目名ビット管理テーブル１２ｃに基づいて抽出し（絞り込み）、抽出したファイル１３ａから、検索条件を満たすファイル１３ａを検索する。
【００３４】
例えば、項目名辞書テーブル１２ａ及びソート済項目名辞書テーブル１２ｂが図３及び図４に示すレコードを保持する場合に、検索部１１ｂが、“Name==“Yamamoto” AND Age==29”の検索条件で検索要求を受けた場合について想定する。この場合、検索部１１ｂは、検索条件に含まれる項目名である“Name”及び“Age”のＩＤを、項目名辞書テーブル１２ａ又はソート済項目名辞書テーブル１２ｂに基づいてそれぞれ“１”及び“３”と特定する。
【００３５】
なお、検索部１１ｂは、検索条件に含まれる項目のＩＤを特定するテーブルとして、項目名辞書テーブル１２ａ及びソート済項目名辞書テーブル１２ｂのいずれかを用いることができる。検索部１１ｂがソート済項目名辞書テーブル１２ｂを用いる場合、項目名が所定の順序でソートされているため、検索条件に含まれる項目名である“Name”及び“Age”の検索を高速化することができる。以下、検索部１１ｂは、ソート済項目名辞書テーブル１２ｂを用いるものとして説明する。なお、検索部１１ｂが項目名辞書テーブル１２ａを用いる場合には、管理領域１２はソート済項目名辞書テーブル１２ｂを格納しなくても良く、検索部１１ｂ及び後述する削除部１１ｃはソート済項目名辞書テーブル１２ｂを作成又は更新する処理を省略することができる。
【００３６】
次に、検索部１１ｂによる、特定したＩＤに基づく検索対象のファイル１３ａの絞り込みの処理の詳細を説明する。図８は、検索部１１ｂによるファイルの絞り込み処理の一例を説明する図である。
検索部１１ｂは、ソート済項目名辞書テーブル１２ｂに基づき、検索条件に含まれる項目のＩＤを特定すると、特定したＩＤに対応するビット位置の値を有効にした検索用ビット列を生成する。例えば、検索部１１ｂが検索条件に含まれる項目名である“Name”及び“Age”のＩＤを“１”及び“３”と特定した場合、１ビット目，３ビット目のビット位置の値が“１”であり、それ以外のビット位置の値が“０”である検索用ビット列を生成する（図８参照）。なお、検索用ビット列の幅（最大ビット数）は、項目名ビット管理テーブル１２ｃのビット列の幅と同じであることが好ましい。
【００３７】
次いで、検索部１１ｂは、検索用ビット列と項目名ビット管理テーブル１２ｃの各ビット列とのＡＮＤ（積）を算出し、算出した各積が、検索用ビット列と一致するビット列に対応するファイル１３ａを抽出する（絞り込む）。そして、検索部１１ｂは、抽出したファイル１３ａを検索対象のファイル１３ａとして特定し、検索対象のファイル１３ａから、検索条件を満たすファイルを検索する。図８に示す例では、検索用ビット列とファイルＹのビット列とのＡＮＤ結果が検索用ビット列と一致するため、検索部１１ｂは、ファイルＹを検索対象のファイル１３ａとして特定し、ファイルＹが検索条件を満たすレコードを保持しているか否かを、ファイルＹを開いてレコードを読み出すことにより判断する。
【００３８】
なお、図８に示すファイルＹは、図２に示すように検索条件に含まれる項目名である“Name”及び“Age”を含んではいるが、“Name==“Yamamoto” AND Age==29”の検索条件を満たすレコードは保持していない。従って、この場合、検索部１１ｂは、検索条件を満たすファイル１３ａの検索結果として、該当ファイル１３ａがない旨をユーザに出力する。一方、例えばファイルＹが検索条件を満たすレコードを保持している場合には、検索部１１ｂは、ファイルＹから検索条件を満たすレコードを抽出して、抽出したレコードを検索結果としてユーザに出力する。
【００３９】
なお、検索結果の出力の態様は、図示しないモニタ等に表示する、或いは抽出したレコードを保持するテーブルを作成し所定の記憶領域に格納する等、既知の種々の手法により行なうことが可能であり、その詳細な説明は省略する。
このように、検索部１１ｂは、格納するファイル１３ａに含まれる項目名をビット列として保持する項目名ビット管理テーブル１２ｃと、ユーザが指定する検索条件との照らし合わせにより、目的の検索条件に合致するレコードが含まれないファイル１３ａを検索対象から除外して検索対象の絞り込みを行なう。
【００４０】
削除部１１ｃは、ファイル１３ａの削除要求があった場合に、項目名ビット管理テーブル１２ｃから削除対象のファイル１３ａに係るレコード（情報）を削除するとともに、項目名辞書テーブル１２ａに対して、削除対象のファイル１３ａに含まれる項目のファイル数を更新する。
具体的には、削除部１１ｃは、項目名ビット管理テーブル１２ｃに対して、削除するファイル１３ａに対応するビット列において値が有効であるビット位置を特定するとともに、削除するファイル１３ａに対応するビット列を削除する。そして、削除部１１ｃは、項目名辞書テーブル１２ａに対して、特定したビット位置に対応する項目のファイル数から１を減算する。
【００４１】
また、削除部１１ｃは、ファイル数から１を減算した結果、該ファイル数が０になった場合に、項目名辞書テーブル１２ａから、ファイル数が０になったレコード、つまり項目名（項目）と該項目名に対応するＩＤと該項目を含むファイル数とを削除する。また、削除部１１ｃは、ソート済項目名辞書テーブル１２ｂから、ファイル数が０になったレコード、つまり項目名（項目）と該項目名に対応するＩＤとを削除する。
【００４２】
そして、削除部１１ｃは、削除対象のファイル１３ａを削除する。
なお、削除部１１ｃは、項目名ビット管理テーブル１２ｃにおいて値が全てのファイル１３ａのビット列で無効である無効ビット位置がある場合、全てのビット列に対して無効ビット位置を詰めても良い。
例えば、削除部１１ｃが図２に示すファイルＹの削除要求を受けた場合、ファイルＹについて図５に示す項目名ビット管理テーブル１２ｃの１ビット目〜４ビット目が有効であることを特定し、ファイルＹのレコードを削除する。この場合、項目名ビット管理テーブル１２ｃにおいてＩＤ“３”，“４”に対応する３ビット目，４ビット目が有効であるビット列は存在しなくなる。そこで、削除部１１ｃは、項目名ビット管理テーブル１２ｃの全てのビット列に対して、無効ビット位置である３ビット目，４ビット目を詰める、つまり無効ビット位置のビットを削除するとともに、無効ビット位置よりも下位のビットを、削除したビット数だけ上位側にシフトさせる。なお、削除部１１ｃは、項目名辞書テーブル１２ａにおいてファイル数が０になったレコードがある場合に、ファイル数が０になった項目に対応するＩＤを無効ビット位置として検出することができる。
【００４３】
また、削除部１１ｃは、無効ビット位置を詰める際に、項目名に対応するＩＤとビット列のビット位置とがずれないように、項目名辞書テーブル１２ａ及びソート済項目名辞書テーブル１２ｂにおいて削除したレコード以降のレコードのＩＤを詰める、つまり繰り上げても良い。
〔１−２〕情報処理装置のハードウェア構成例
次に、図９を参照して、本実施形態に係る情報処理装置１のハードウェア構成例を説明する。なお、図９は、図１に示す情報処理装置１のハードウェア構成例を示すブロック図である。
【００４４】
図９に示すように、情報処理装置１は、サーバ２及びストレージ装置３を有している。サーバ２は、情報処理装置１として動作する電子計算機であり、ＣＰＵ（Central Processing Unit）２１，メモリ２２，記憶装置２３，及びネットワークコントローラ２４を有している。また、ストレージ装置３は、サーバ２とネットワークを介して接続されており、記憶装置３１及びネットワークコントローラ３２を有している。
【００４５】
ＣＰＵ２１は、メモリ２２，記憶装置２３，及びネットワークコントローラ２４とそれぞれバス（及びコントローラ等）を介して接続され、種々の制御や演算を行なう処理装置である。ＣＰＵ２１は、メモリ２２又は図示しないＲＯＭ（Read Only Memory）等に格納されたプログラムを実行することにより、種々の機能を実現する。
例えば本実施形態に係るＣＰＵ２１は、上述したファイル管理部１１としての機能を実現する。
【００４６】
メモリ２２は、種々のデータやプログラムを一時的に格納する記憶装置であって、ＣＰＵ２１がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。なお、メモリ２２としては、例えばＲＡＭ等の揮発性メモリが挙げられる。
また、本実施形態に係るメモリ２２は、少なくとも一部の記憶領域が上述した管理領域１２として用いられ、後述する記憶装置２３及び／又は３１に格納された各テーブル１２ａ〜１２ｃが展開される。
【００４７】
記憶装置２３及び３１は、例えばＨＤＤ等の磁気ディスク装置やＳＳＤ等の半導体ドライブ装置等の各種デバイスである。
本実施形態に係る記憶装置２３及び／又は３１は、少なくとも一部の記憶領域が上述したファイル格納領域１３として用いられ、複数のファイル１３ａや、メモリ２２に展開される前の各テーブル１２ａ〜１２ｃが格納される。なお、ＣＰＵ２１（ファイル管理部１１）は、ファイル格納領域１３に対して、ファイル１３ａの格納，検索対象のファイル１３ａの読み込み，ファイル１３ａの削除等の処理を行なう。
【００４８】
ネットワークコントローラ２４及び３２は、接続先のネットワークコントローラとのインタフェース制御を行なうとともに、各種のデータ通信を行なうコントローラである。
〔１−３〕情報処理装置の動作例
次に、上述の如く構成された情報処理装置１における動作例を、図１０〜図１５を参照して説明する。図１０は、格納部１１ａにおけるファイル格納処理の一例を説明するフローチャートであり、図１１は、ファイル１３ａ及び各テーブル１２ａ〜１２ｃの関係を説明する図である。図１２は、格納部１１ａによる各テーブル１２ａ〜１２ｃの更新処理の一例を説明する図であって、ファイルＸ，ファイルＹの格納要求があった場合の処理を示す図である。図１３は、検索部１１ｂにおけるファイル検索処理の一例を説明するフローチャートであり、図１４は、削除部１１ｃにおけるファイル削除処理の一例を説明するフローチャートである。図１５は、削除部１１ｃによる各テーブル１２ａ〜１２ｃの更新処理の一例を説明する図であって、ファイルＹの削除要求があった場合の処理を示す図である。
【００４９】
〔１−３−１〕ファイル格納処理
はじめに、図１０〜図１２を参照して、情報処理装置１におけるファイル格納処理の一例を説明する。なお、以下の説明では、各テーブル１２ａ〜１２ｃにレコードが存在しない状態（例えば情報処理装置１の初期状態）において、図２に示すファイルＸ，ファイルＹの格納要求を受けた場合を想定する。
【００５０】
図１０に示すように、ユーザ等からファイルＸ，ファイルＹの格納要求が指示されると（ステップＳ１）、格納部１１ａにより、ファイル格納領域１３から入力対象のファイルＸ，ファイルＹが開かれ、読み込まれる（ステップＳ２）。そして、格納部１１ａにより、ファイルＸから項目名｛“Name”，“Address”｝が、ファイルＹから項目名｛“Name”，“Address”，“Age”，“Gender”｝が、それぞれ抽出される（ステップＳ３；図１１参照）。このとき、新しい項目名が抽出されているため、格納部１１ａにより、抽出した項目名｛“Name”，“Address”，“Age”，“Gender”｝の順で、ＩＤが最小の整数である１から付与されて項目名辞書テーブル１２ａに登録される（ステップＳ４）。また、格納部１１ａにより、当該項目名を含むファイル１３ａのファイル数“２”，“２”，“１”，“１”が求められ、項目名辞書テーブル１２ａに設定される（図１１及び図１２の項目名辞書テーブル１２ａ参照）。
【００５１】
そして、格納部１１ａにより、項目名辞書テーブル１２ａの項目名について所定の順序（例えば昇順）でソートされたソート済項目名辞書テーブル１２ｂが作成又は更新される（ステップＳ５；図１１及び図１２のソート済項目名辞書テーブル１２ｂ参照）。また、格納部１１ａにより、ファイルＸ，ファイルＹのファイル名とビット列とが項目名ビット管理テーブル１２ｃに格納される（ステップＳ６；図１１及び図１２の項目名ビット管理テーブル１２ｃ参照）。最後に、格納部１１ａにより、ファイルＸ，ファイルＹがファイル格納領域１３に格納され（ステップＳ７）、処理が終了する。
【００５２】
〔１−３−２〕ファイル検索処理
次いで、図１３を参照して、情報処理装置１におけるファイル検索処理の一例を説明する。なお、ファイル検索処理は、検索条件を満たすレコード（情報）を抽出するために、検索条件に含まれる項目を含むファイル１３ａを問い合わせる処理である。つまり、ファイル検索処理により、検索条件を満たすレコードを検索する検索対象のファイル１３ａが特定される。
【００５３】
図１３に示すように、ユーザ等から“Name==“Yamamoto” AND Age==29”の検索条件で、レコードの検索要求が指示されると（ステップＳ１１）、検索部１１ｂにより、検索条件の項目名と、ソート済項目名辞書テーブル１２ｂに含まれる項目名とが照合され、該当するＩＤが特定される（ステップＳ１２）。次いで、検索部１１ｂにより、特定されたＩＤに基づいて検索用ビット列が生成される（ステップＳ１３）。
【００５４】
そして、検索部１１ｂにより、検索用ビット列と項目名ビット管理テーブル１２ｃの各ビット列とのＡＮＤ（積）が取られ、ＡＮＤ結果が検索用ビット列と一致したビット列に対応するファイルＹのみが検索対象に特定され（ステップＳ１４；図８参照）、処理が終了する。なお、この場合、検索部１１ｂは、ファイルＹのみを開き、検索条件を満たすレコードの有無を判断して判断結果をユーザ等に出力する。一方、検索部１１ｂは、絞り込みにより除外されたファイル１３ａであるファイルＸは開かない。
【００５５】
〔１−３−３〕ファイル削除処理
次に、図１４及び図１５を参照して、情報処理装置１におけるファイル削除処理の一例を説明する。
図１４に示すように、ユーザ等によりファイルＹの削除要求を受けると（ステップＳ２１）、削除部１１ｃにより、項目名ビット管理テーブル１２ｃにおいて、ファイルＹのビット列がチェックされ、当該ビット列（レコード）が削除される（ステップＳ２２；図１５の項目名ビット管理テーブル１２ｃ参照）。次いで、削除部１１ｃにより、項目名辞書テーブル１２ａに対して、ステップＳ２２でチェックしたビット列のビット位置、つまりファイルＹに含まれていた項目のＩＤ、に対応する“項目を含むファイル数”から１が減算される（ステップＳ２３；図１５の項目名辞書テーブル１２ａ参照）。
【００５６】
項目名辞書テーブル１２ａの“項目を含むファイル数”が０になった場合、削除部１１ｃにより、そのレコードが、項目名辞書テーブル１２ａ及びソート済項目名辞書テーブル１２ｂから削除される（ステップＳ２４；図１５の項目名辞書テーブル１２ａ及びソート済項目名辞書テーブル１２ｂ参照）。一方、削除部１１ｃは、“項目を含むファイル数”が０でないレコードに対しては、処理を行なわない。最後に、削除部１１ｃにより、ファイルＹがファイル格納領域１３から削除され（ステップＳ２５）、処理が終了する。
【００５７】
以上のように、本実施形態の一例としての情報処理装置１によれば、検索部１１ｂにより、項目名ごとに管理される項目名辞書テーブル１２ａ又はソート済項目名辞書テーブル１２ｂと、ファイル１３ａごとに管理される項目名ビット管理テーブル１２ｃとに基づいて、要求された検索条件を満たすファイル１３ａが検索される。すなわち、検索部１１ｂは、全ての項目名について各ファイル１３ａに含まれるか否かを判断することができ、図２１に示す手法とは異なり、ユーザが指定するレコードの検索条件に依存せずに、検索対象のファイル１３ａを絞り込むことができる。このように、各テーブル１２ａ〜１２ｃによる項目名の一括管理により、検索部１１ｂにより検索対象のファイル１３ａが絞り込まれるため、ファイル１３ａのオープンコストを削減でき、検索効率を向上させることができる。
【００５８】
例えば、検索条件に合致する項目名が、ファイル格納領域１３内の全ファイル１３ａのうちのｎ％のファイル１３ａに含まれる場合、最大で１００／ｎ倍（ｎ＝５０であれば最大２倍，ｎ＝１であれば最大１００倍）の検索性能の向上が見込める。特に、検索部１１ｂによるレコードの検索処理の多重度が小さい場合に、より効果的である。
また、削除部１１ｃにより、ファイルの削除要求があった場合に、項目名辞書テーブル１２ａに対して、削除対象のファイル１３ａに含まれる項目のファイル数が更新される。そして、ファイル数が０になった場合に、削除部１１ｃにより、項目名辞書テーブル１２ａ及びソート済項目名辞書テーブル１２ｂからファイル数が０になったレコードが削除される。
【００５９】
従って、ファイル１３ａの登録及び削除が繰り返された場合でも、格納するファイル１３ａに存在しない項目が項目名辞書テーブル１２ａに残存することがない。これにより、検索部１１ｂは、格納する全てのファイル１３ａに含まれない項目が検索条件に含まれていても、当該項目を項目名辞書テーブル１２ａから検索しないようにすることができ、検索条件に含まれる項目に対応するＩＤの特定処理を効率的に行なうことができる。また、検索部１１ｂは、不要な項目（レコード）が削除された項目名辞書テーブル１２ａから検索条件に含まれる項目名の探索を行なうことができ、項目名の探索性能を向上させることができる。さらに、検索対象のファイル１３ａに存在しないファイル１３ａが含まれることもないため、ファイル１３ａのオープンコストを削減でき、検索条件を満たすファイル１３ａの検索を高速化することができる。
【００６０】
また、削除部１１ｃにより、項目名ビット管理テーブル１２ｃから削除対象のファイル１３ａに係るレコードが削除される。従って、ファイル１３ａの登録及び削除が繰り返された場合でも、項目名ビット管理テーブル１２ｃには存在しないファイル１３ａに対応するレコードが残存することがない。これにより、検索部１１ｂは、存在しないファイル１３ａを読み込もうとすることがなく、ファイル１３ａのオープンコストを削減でき、検索条件を満たすファイル１３ａの検索を高速化することができる。
【００６１】
このように、ファイル１３ａの登録時及び削除時に管理テーブル（テーブル１２ａ〜１２ｃ）がメンテナンスされる。つまり、ファイル１３ａの登録のみならず削除にも対応した管理テーブル（テーブル１２ａ〜１２ｃ）の構造により、ファイル１３ａの登録及び削除が繰り返されても、検索部１１ｂの検索レスポンスの低下を抑止でき、安定した検索レスポンスを得ることができる。
【００６２】
さらに、格納部１１ａにより、格納対象のファイル１３ａから収集した項目名がＩＤに割り当てられて項目名辞書テーブル１２ａに設定される。つまり、項目名が辞書化して保存されるため、データ量が小さく抑えられ、記憶領域を効率的に利用することができる。
また、検索部１１ｂにより、検索条件に含まれる項目名に対応したＩＤを特定する際に、項目名を辞書順にソートして保持するソート済項目名辞書テーブル１２ｂが用いられることで、項目名の探索範囲を限定することができ、検索コストを削減することができる。
【００６３】
さらに、検索部１１ｂにより、検索条件に基づいて生成した検索用ビット列と、項目名ビット管理テーブル１２ｃが保持する各ビット列とが比較される。これにより、文字列の比較よりも高速に検索対象のファイル１３ａを絞り込むことができ、比較コストを削減することができる。
〔２〕変形例
〔２−１〕第１変形例
上述した一実施形態では、検索部１１ｂが検索対象のファイル１３ａを絞り込む際に、項目名ビット管理テーブル１２ｃが保持するビット列のビット幅と同じ幅の検索用ビット列を、検索条件に基づいて生成するものとして説明したが、これに限定されるものではない。
【００６４】
例えば、一実施形態の第１変形例としての検索部１１ｂは、検索条件に複数の項目名が含まれる場合、これら複数の項目のうち、ファイル数が少ない項目に対応するビット位置の値のみが有効であって、当該ビット位置が最終ビットとなる検索用ビット列を生成しても良い。この場合、検索部１１ｂは、生成した検索用ビット列と、項目名ビット管理テーブル１２ｃの各ビット列のうちの検索用ビット列のビット幅と同じ幅のビット列と、のＡＮＤを取るようにしても良い。これにより、検索条件に応じてＡＮＤの演算を行なうビット幅を減少させることができる。
【００６５】
図１６は、一実施形態の第１変形例に係る検索部１１ｂによるファイル１３ａの絞り込み処理を説明する図である。例えば、図１６に示すように、検索条件に含まれる項目名｛“Name”，“Address”｝を含むファイル数が、それぞれ“１０００”，“５”である場合を想定する。
この場合、検索部１１ｂは、ファイル数が少ない項目名“Address”に対応するＩＤ“２”を項目名辞書テーブル１２ａに基づき特定する。次いで、検索部１１ｂは、図１６に示すように、特定したＩＤに対応するビット位置（２ビット目）の値を有効にした検索用ビット列であって、先頭のビット位置から有効にしたビット位置までのビット幅（２ビット）を持つ検索用ビット列“０１”を生成する。
【００６６】
次いで、検索部１１ｂは、図１６に示すように、検索用ビット列“０１”と、項目名ビット管理テーブル１２ｃの各ビット列であって、先頭のビット位置から有効にしたビット位置まで、つまり２ビット目までの各ビット列“１１”及び“１１”とのＡＮＤ（積）を求める。
そして、検索部１１ｂは、ＡＮＤ結果が検索用ビット列と一致するビット列に対応するファイル１３ａを検索対象のファイルとして特定し、特定した検索対象のファイル１３ａから検索条件を満たすファイル１３ａを検索する。
【００６７】
このように、第１変形例としての情報処理装置１によっても、上述した一実施形態と同様の効果を奏することができるほか、検索部１１ｂは、検索対象のファイル１３ａの絞り込みの優先度を設け、絞り込み効果が高いカラムについて優先的に絞り込み処理を実施する。従って、検索条件に応じてＡＮＤの演算を行なうビット幅を減少させることができ、検索対象のファイル１３ａの絞り込み処理の検索効率を向上させることができる。
【００６８】
なお、検索部１１ｂは、検索条件に含まれる項目名のＩＤのうちの、最大のＩＤをビット幅とした検索用ビット列を生成し、生成した検索用ビット列と、項目名ビット管理テーブル１２ｃの各ビット列のうちの検索用ビット列のビット幅と同じ幅のビット列と、のＡＮＤを取るようにしても良い。
一例として、検索部１１ｂは、ユーザ等から“Name==“Yamamoto”AND Address==“TOKYO””の検索条件で検索要求を受けると、ソート済項目名辞書テーブル１２ｂを参照して、項目名｛“Name”，“Address”｝のＩＤをそれぞれ“１”，“２”と特定する。このとき、検索部１１ｂは、１ビット目，２ビット目が有効つまり“１”である、２ビットの検索用ビット列を生成する。そして、検索部１１ｂは、生成した２ビットの検索用ビット列と、項目名ビット管理テーブル１２ｃが保持する各ビット列の１ビット目，２ビット目のビットのみとのＡＮＤを取る。
【００６９】
これによっても、検索条件に応じてＡＮＤの演算を行なうビット幅を減少させることができ、検索対象のファイル１３ａの絞り込み処理の検索効率を向上させることができる。
〔２−２〕第２変形例
上述した一実施形態及び第１変形例では、検索部１１ｂは、検索条件に応じて検索対象のファイル１３ａの絞り込みを行なうものとして説明したが、これに限定されるものではない。
【００７０】
例えば、検索部１１ｂは、検索条件に含まれる項目を含むファイル数が所定の閾値を超える場合、ファイル１３ａの絞り込み処理を抑止し、全てのファイル１３ａから、検索条件を満たすファイル１３ａを検索することとしても良い。ここで、所定の閾値は、項目名辞書テーブル１２ａのリードコストとファイル１３ａのリードコストに基づいて予め定められる。
【００７１】
項目名辞書テーブル１２ａのリードコストとしては、例えば項目名辞書テーブル１２ａに含まれる項目数、つまりレコード数が挙げられる。また、ファイル１３ａのリードコストとしては、例えば、ファイル１３ａのサイズが挙げられる。
図１７は、一実施形態の第２変形例に係る項目名辞書テーブル１２ａ′を示す図であり、図１８は、項目名ビット管理テーブル１２ｃ′を示す図である。図１７及び図１８に示すように、第２変形例に係る項目名辞書テーブル１２ａ′は、項目ごとの当該項目を含むファイル１３ａの合計サイズをさらに含み、項目名ビット管理テーブル１２ｃ′は、ファイル１３ａごとにファイルサイズをさらに含む。一例として、項目名辞書テーブル１２ａ′は、“ＩＤ＝１”，“項目名＝Name”，“項目を含むファイル数＝1000”，“合計ファイルサイズ＝200MB”のレコードと、“ＩＤ＝２”，“項目名＝Address”，“項目を含むファイル数＝800”，“合計ファイルサイズ＝1GB”のレコードと、を保持する。また、項目名ビット管理テーブル１２ｃ′は、ファイルＸについてのビット列及びファイルサイズ“10MB”のレコードと、ファイルＹについてのビット列及びファイルサイズ“1MB”のレコードと、を保持する。これらの合計サイズ及びファイルサイズは、ファイル１３ａのリードコストに影響を与える情報として、例えば検索部１１ｂにより所定の閾値を算出する際に用いられる。
【００７２】
検索部１１ｂによる検索対象のファイル１３ａの絞り込みの処理においては、検索条件に含まれるＩＤを特定する際に、項目名辞書テーブル１２ａのレコード数が増加すると、項目名の検索時間も増加し、処理性能が低下する。一方、絞り込みを行なわずに検索条件を満たすレコードを全てのファイル１３ａから検索する際に、検索対象のファイル数が多い場合やファイルサイズが大きい場合には、検索対象のファイル１３ａを開く時間も増加し、処理性能が低下する。
【００７３】
そこで、第２変形例に係る検索部１１ｂは、絞り込みに要する項目名辞書テーブル１２ａのリードコストと、レコードを読み込む際のファイル１３ａのリードコストとを比較し、検索対象のファイル１３ａを絞り込むことで検索性能の向上が見込めるであろう所定の閾値を算出する。そして、検索部１１ｂは、ファイル数が所定の閾値を超える場合には、ファイル１３ａの絞り込み処理の効果が少ないと判断し、全てのファイル１３ａを検索対象とする。
【００７４】
このように、第２変形例としての情報処理装置１によっても、上述した一実施形態と同様の効果を奏することができるほか、検索部１１ｂは、ファイル１３ａの絞り込みの効果が少ない場合に、リードコストがかかる無駄な絞り込み処理を抑止することができるため、処理性能の低下を抑止することができる。
〔３〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【００７５】
例えば、上述した実施形態及び各変形例では、ファイル１３ａとして、ＣＳＶ形式やＸＭＬ形式のファイルを例に挙げて説明したが、これに限定されるものではない。例えば、ファイル１３ａとして、ＴＳＶ（Tab-Separated Values）等のＤＳＶ（Delimiter-Separated Values）形式や、ＨＴＭＬ（HyperText Markup Language）等のデータ記述言語による形式等、種々の形式のフラットファイルが用いられても良い。
【００７６】
また、検索要求の対象となるファイル１３ａが全てＣＳＶ形式の場合について説明したが、検索要求の対象がＸＭＬ形式等の他の形式のファイル１３ａであっても、ファイル管理部１１は既述の処理を行なうことができる。
さらに、検索要求の対象となるファイル１３ａが、ＣＳＶ形式及びＸＭＬ形式のように複数の形式のファイル１３ａであっても良い。なお、格納部１１ａにより抽出される項目名の形態は、ＣＳＶ形式の場合とＸＭＬ形式の場合とで異なる。例えば図６及び図７において、人物の姓を示す項目名は、図６のＣＳＶ形式の場合は“Name”である一方、図７のＸＭＬ形式の場合は“/root/person/name”である。そこで、検索要求が複数の形式のファイル１３ａを対象とする場合には、管理領域１２は、ＣＳＶ形式及びＸＭＬ形式のように異なる形式のファイル１３ａ間で同一又は略同一とみなせる項目名を対応付ける変換テーブルをさらに格納することとしても良い。これにより、検索部１１ｂは、検索要求に含まれる項目名を、変換テーブルに基づき検索対象のファイル１３ａに応じた適切な項目名に変換することができ、異なる形式のファイル１３ａ間での横断検索を実現することができる。なお、変換テーブルは、ユーザが必要に応じて情報処理装置１に対して設定されても良いし、予めいくつかのパターンが設定されても良い。
【００７７】
また、格納部１１ａは、ユーザ等からファイル１３ａの格納要求があった場合に、格納対象のファイル１３ａについて各テーブル１２ａ〜１２ｃを更新するものとして説明したが、これに限定されるものではない。例えば、格納部１１ａは、所定の周期又はタイミングで、各テーブル１２ａ〜１２ｃをリセット（例えば全レコード又はテーブル自体を削除）し、ファイル格納領域１３に格納された全てのファイル１３ａから既述の処理により項目名を抽出して、各テーブル１２ａ〜１２ｃを作成又は更新しても良い。これにより、ファイル１３ａの登録及び削除が繰り返されて、各テーブル１２ａ〜１２ｃとファイル１３ａとの間に不整合が生じても、所定の周期又はタイミングで各テーブル１２ａ〜１２ｃがリフレッシュされるため、検索処理において不要なファイル１３ａへの検索が行なわれることを防止でき、検索レスポンスの低下を抑止することができる。
【００７８】
さらに、検索部１１ｂは、検索対象のファイル１３ａを絞り込んだ後に、図２１を用いて説明した処理を行ない、さらに検索対象のファイル１３ａを絞り込んでも良い。例えば、格納部１１ａは、ファイル１３ａを格納する際に、全ての項目，所定の項目，或いは過去の実績からユーザから要求された検索条件に含まれる可能性の高い項目について、格納するファイル１３ａに含まれる最大値及び最小値を収集する。そして、格納部１１ａは、収集した項目ごとの最大値及び最小値を、ファイル１３ａと対応付けて管理領域１２に格納する（図２１参照）。そして、検索部１１ｂは、ビット列に基づいて検索対象のファイル１３ａを絞り込んだ後に、検索条件を満たす範囲のレコードを持つファイル１３ａを、管理領域１２に格納された最大値及び最小値の情報から絞り込む。
【００７９】
これにより、検索部１１ｂは、ビット列に基づいて検索対象のファイル１３ａを絞り込んだ後に、ファイル１３ａを開くことなく検索条件を満たすレコードを持つファイル１３ａを絞り込むことができ、検索効率をさらに向上させることができる。
なお、上述したファイル管理部１１（格納部１１ａ，検索部１１ｂ，削除部１１ｃ）の各種機能の全部もしくは一部は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のプログラムを実行することによって実現される。
【００８０】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【００８１】
ここで、コンピュータとは、ハードウェアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウェアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記プログラムは、上述のようなコンピュータに、本実施形態の情報処理装置１の各種機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【００８２】
なお、前記目的に限らず、上述した発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本件の他の目的の一つとして位置付けることができる。
【符号の説明】
【００８３】
１    情報処理装置
１１    ファイル管理部
１１ａ    登録部
１１ｂ    検索部
１１ｃ    削除部
１２    管理領域（保持部）
１２ａ，１２ａ′    項目名辞書テーブル（項目情報）
１２ｂ    ソート済項目名辞書テーブル（ソート済項目情報）
１２ｃ，１２ｃ′    項目名ビット管理テーブル（ファイル情報）
１３    ファイル格納領域
１３ａ，１３ａ−１，１３ａ−２    フラットファイル（ファイル）
２    サーバ
２１    ＣＰＵ
２２    メモリ
２３，３１      記憶装置
２４，３２    ネットワークコントローラ
３    ストレージ装置
【図１】
2014002161.tif 000003
【図２】
2014002161.tif 000004
【図３】
2014002161.tif 000005
【図４】
2014002161.tif 000006
【図５】
2014002161.tif 000007
【図６】
2014002161.tif 000008
【図７】
2014002161.tif 000009
【図８】
2014002161.tif 000010
【図９】
2014002161.tif 000011
【図１０】
2014002161.tif 000012
【図１１】
2014002161.tif 000013
【図１２】
2014002161.tif 000014
【図１３】
2014002161.tif 000015
【図１４】
2014002161.tif 000016
【図１５】
2014002161.tif 000017
【図１６】
2014002161.tif 000018
【図１７】
2014002161.tif 000019
【図１８】
2014002161.tif 000020
【図１９】
2014002161.tif 000021
【図２０】
2014002161.tif 000022
【図２１】
2014002161.tif 000023
【国際調査報告】
2014002161.tif 000024
2014002161.tif 000025