(57)【要約】      （修正有）【課題】目的とするファイルの検索を効率的に行うことができるファイル管理装置を提供する。【解決手段】複数のデータベースピアが階層的に接続されたシステムにおいて、自身よりも下位の階層の装置の管理するファイル集合の存在を示すビット列を、下位の階層の装置単位に備えると共に、自身の管理するファイル集合の存在を示すビット列を備え、ファイルの管理を行う制御部を有する構成としている。自身と、自身よりも下位の階層の装置に格納されたファイルの存在を容易に把握することができる。従って、迅速に所望のファイルを取り出すことができる。【選択図】図４
2008102795.tif 000002
【特許請求の範囲】
【請求項１】
複数の装置と階層的に接続され、
自身よりも下位の階層の装置の管理するファイル集合の存在を示すビット列を、前記下位の階層の装置単位に備えると共に、自身の管理するファイル集合の存在を示すビット列を備え、ファイルの管理を行う管理手段を有することを特徴とするファイル管理装置。
【請求項２】
前記管理手段は、ビット列を更新すると、上位の装置に更新後の前記ビット列を通知することを特徴とする請求項１記載のファイル管理装置。
【請求項３】
前記管理手段は、ファイルの数に応じて、ビット列の長さを動的に変更することを特徴とする請求項１又は２記載のファイル管理装置。
【請求項４】
検索対象のファイルを示すビットが前記ビット列に登録されているか否かを検索し、該ビットが登録されていない場合に、自身よりも上位の装置に前記検索対象ファイルの検索依頼を出力する検索手段を有することを特徴とする請求項１から３のいずれか一項記載のファイル管理装置。
【請求項５】
前記ビット列は、各ファイルのコンテンツに含まれるデータに、複数のハッシュ関数を適用して求めたビット列であることを特徴とする請求項１から４のいずれか一項記載のファイル管理装置。
【請求項６】
階層関係を有する複数の装置が接続されたシステムであって、
各装置は、自身よりも下位の階層の装置から、該下位の階層の装置に格納されたファイル集合の存在を示すビット列を取得する取得手段と、
自身に格納したファイル集合の存在を示すビット列と、前記取得手段で取得したビット列とを用いて、ファイル管理を行う管理手段と、
自身に格納したファイル集合の存在を示すビット列と、前記取得手段で取得したビット列とを上位の装置に転送する転送手段と、
を有することを特徴とするファイル管理システム。
【請求項７】
複数の装置と階層的に接続されたコンピュータ装置を、
自身よりも下位の階層の装置に格納されたファイル集合の存在を示すビット列を、前記下位の階層の装置単位に備えたビット列と、自身に格納したファイル集合の存在を示すビット列とを用いて、ファイルの検索を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル管理装置、システム及びプログラムに関する。
【背景技術】
【０００２】
近年、ｅ−文書法（「民間事業者等が行う書面の保存等における情報通信の技術の利用に関する法律」と「同法施行に伴う関係法律の整備等に関する法律」の二つの法律の総称）、ＳＯｘ法（サーベーンズ・オックスリー法）、会社法などの電子文書の管理に関する法整備が整いつつある。この様な環境下では、法的に一定期間の保存が義務付けられる文書を電子文書として長期間保存し、監査などの際に証拠となる文書ファイルを検索して即座に取り出せるようにすることが求められてきている。
【０００３】
しかしながら、一般に、会社などの組織活動を進める中で生成・流通される電子文書（スキャン文書等を含む）を長期間にわたって保存しようとすると、管理者にとって煩雑な作業が強いられることになる。すなわち、文書が部門単位で分散的に管理されていることや、保存先となる文書保存サーバの老朽化や故障、組織変更等によるリプレースや追加・削除等によって、データの移行作業、故障等に備えたバックアップ作業など、管理者にとって煩雑な作業が強いられる。
このため、中央機構を必要とせずに、文書ファイルの長期保存に適し、サーバのリプレースや追加・変更などに伴い柔軟に構成の変更が可能なシステムが求められている。また、文書ファイルの局所的な管理を可能にし、目的とする文書ファイルを効率的に検索することを可能にすることも求められてきている。
【０００４】
特許文献１では、専用のサーバーを使うことなく、接続されたコンピュータ同士がコミュニケーションするネットワーク形態（ピア・ツー・ピアネットワーク）において、嗜好の類似したピアをネットワーク上で近くなるように自己組織的に再配置することで、ネットワークの通信負荷を抑制する技術を提案している。
【０００５】
非特許文献１では、ピア・ツー・ピアのネットワークにおいて、ピアが階層的なネットワークを形成し、各ピアが保持するファイル集合を表現するためにブルームフィルタを用いている。階層関係上の上位ピアは、下位ピアのブルームフィルタの値の論理和をとって集約されたブルームフィルタを保持している。すなわち、集約されたブルームフィルタの値は、階層関係上の下位のピアが保持するファイル集合を意味する。そして、ファイル検索時には、集約されたブルームフィルタの値と、検索対象のファイルから計算されるブルームフィルタの値を比較しながら階層関係をたどり、目的とするファイルを保持しているピアを発見する。
なお、ブルームフィルタとは、ある任意のデータdがデータ集合Ｘに含まれるかどうかをハッシュ関数の応用により確率的に検査するためのフィルタである。データ集合Ｘより生成されたブルームフィルタに対して、定められた手続きを行うことで、あるデータｄがデータ集合Ｘに含まれるか否かを検証することができる。
【０００６】
【特許文献１】特開２００５−１１５４５３号公報
【非特許文献１】J. Ledlie, L. Serban, and D. Toncheva. Scaling filename queries in a large-scale distributed file system. Research Report TR-03-02, Harvard University, January 2002.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、登録されたファイルの管理を有効に行うと共に、目的とするファイルの検索を効率的に行うことができるファイル管理装置、システム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
かかる目的を達成するために請求項１記載のファイル管理装置は、複数の装置と階層的に接続され、自身よりも下位の階層の装置の管理するファイル集合の存在を示すビット列を、前記下位の階層の装置単位に備えると共に、自身の管理するファイル集合の存在を示すビット列を備え、ファイルの管理を行う管理手段を有する構成としている。
【０００９】
請求項２記載の発明は、請求項１記載の発明において、前記管理手段は、ビット列を更新すると、上位の装置に更新後の前記ビット列を通知するとよい。
【００１０】
請求項３記載の発明は、請求項１又は２記載の発明において、前記管理手段は、ファイルの数に応じて、ビット列の長さを動的に変更するとよい。
【００１１】
請求項４記載の発明は、請求項１から３のいずれか一項記載の発明において、検索対象のファイルを示すビットが前記ビット列に登録されているか否かを検索し、該ビットが登録されていない場合に、自身よりも上位の装置に前記検索対象ファイルの検索依頼を出力する検索手段を有しているとよい。
【００１２】
請求項５記載の発明は、請求項１から４のいずれか一項記載の発明において、前記ビット列は、各ファイルのコンテンツに含まれるデータに、複数のハッシュ関数を適用して求めたビット列であるとよい。
【００１３】
請求項６記載の発明は、階層関係を有する複数の装置が接続されたシステムであって、各装置は、自身よりも下位の階層の装置から、該下位の階層の装置に格納されたファイル集合の存在を示すビット列を取得する取得手段と、自身に格納したファイル集合の存在を示すビット列と、前記取得手段で取得したビット列とを用いて、ファイル管理を行う管理手段と、自身に格納したファイル集合の存在を示すビット列と、前記取得手段で取得したビット列とを上位の装置に転送する転送手段と、を有することを特徴としている。
【００１４】
請求項７記載の発明は、複数の装置と階層的に接続されたコンピュータ装置を、自身よりも下位の階層の装置に格納されたファイル集合の存在を示すビット列を、前記下位の階層の装置単位に備えたビット列と、自身に格納したファイル集合の存在を示すビット列とを用いて、ファイルの検索を実行させることを特徴としている。
【発明の効果】
【００１５】
請求項１記載の発明によれば、自身と、自身よりも下位の階層の装置に格納されたファイルの存在を容易に把握することができる。従って、迅速に所望のファイルを取り出すことができる。
【００１６】
請求項２記載の発明によれば、ビット列の更新がなされると、その更新を上位の装置に反映させることができる。従って、ビット列が更新されても、上位の装置では下位の装置に格納されたファイルを検索することができる。
【００１７】
請求項３記載の発明によれば、装置に格納されるファイルの数が増えても、ビット列の大きさを動的に変更することで、検索エラーの発生を抑制することができ、効率的なファイルの検索ができる。
【００１８】
上位の装置には、この装置よりも下位の装置に格納したファイルの存在を示すビット列が登録されているので、自身の所持するビット列で検索対象ファイルを検出できない場合には、上位の装置を検索することで、所望とするファイルを検索することができる。
【００１９】
請求項５記載の発明によれば、登録された複数のファイルの存在を示すビット列の生成が容易になる。
【００２０】
請求項６記載の発明によれば、自身と、自身よりも下位の階層の装置に格納されたファイルの存在を示すビット列を取得して、このビット列をもとにファイルの所在を容易に把握することができる。従って、迅速に所望のファイルを取り出すことができる。
【００２１】
請求項７記載の発明によれば、自身と、自身よりも下位の階層の装置に格納されたファイルの存在を容易に把握することができる。従って、迅速に所望のファイルを取り出すことができる。
【発明を実施するための最良の形態】
【００２２】
添付図面を参照しながら本発明の好適な実施例を説明する。
【実施例】
【００２３】
図１に本実施例のシステム構成を示す。本実施例は、特定の中央管理サーバを設けることなく、すべてのコンピュータやデータベースが対等の関係で接続され、協働作業を実現するピア・ツー・ピア型のシステム構成を備えている。
【００２４】
本実施例は、ＬＡＮ、ＷＡＮ等の複数のネットワーク５上に、データベースピア１と、クライアント端末２とがそれぞれ複数接続されており、各ネットワークは、ルータ３やファイアウォール４を介して接続されている。
【００２５】
ネットワーク５上に複数存在するデータベースピア１は、データベースピア１間でメッセージを交換しながら非集中的なデータベース管理を実現する。データベースピア１は、図２に示すツリー階層的なピア・ツー・ピアのネットワークを形成しており、全体が１つのデータベースシステムとして機能する。
図３にデータベースピア１の構成を示す。図３に示すようにデータベースピア１は、制御部４０と、ハードディスク装置５０とを有しており、制御部４０の制御に従って、ハードディスク装置５０にファイルを登録したり、ファイルを管理する管理データが保存される。
制御部４０は、ＣＰＵ４１、ＲＯＭ４２、ＲＡＭ４３、ＮＶＲＡＭ４４、入出力部４５を具備している。ＣＰＵ４１は、ＲＯＭ４２に格納したプログラムを読み込んで、このプログラムに従った演算を行うことにより、後述するフローチャートに示す手順での制御が行われる。また、ＲＡＭ４３には、演算結果のデータや、印刷完了ページ情報が書き込まれ、ＮＶＲＡＭ（Non Volatile RAM）４４は、ＲＡＭ４３に書き込まれていたデータで、電源オフ時に保存の必要なデータが書き込まれる。
なお、ＲＯＭ４２に格納されているプログラムは、ＣＤ−ＲＯＭ等の記録媒体に格納されたものを読み込んでＮＶＲＡＭ４４に格納してもよいし、通信網を介して送信されたプログラムを入出力部４５で受信してＮＶＲＡＭ４４に格納してもよい。
【００２６】
クライアント端末２は、データベースピア１へのファイルの登録や、データベースピア１に登録されたファイルを検索するための操作を行う。
【００２７】
図４に、データベースピア１の管理するデータ構造を示す。
データベースピア１は、このデータベースピア１のＩＰアドレスと、このデータベースピア１に接続された上位のデータベースピアのＩＰアドレス（以下、上位ピアアドレス）と、このデータベースピア１が有するローカルブルームフィルタと、このデータベースピア１に接続された下位のデータベースピアの情報（以下、下位ピア情報という）と、記録している文書ファイルの情報（以下、文書ファイル情報という）とを格納している。
【００２８】
下位ピア情報には、下位のデータベースピア（以下、下位ピアと呼ぶ）のＩＰアドレスと、下位ピアの格納するブルームフィルタと、下位ピア情報を管理するデータベースピア１に直接接続された下位ピアなのか、他のデータベースピアを介して接続された下位ピアなのかを示す直下ピアフラグとを有している。この下位ピア情報は、データベースピア１に接続した下位ピアごとに格納している。以下では、この下位ピア情報の集合を下位ピア集合と呼ぶ。
【００２９】
また、データベースピア１は、このデータベースピア１が格納している文書ファイルの情報を有している。文書ファイル情報には、文書に付けられたＩＤ（文書ＩＤ）と、文書ファイル自体を示すコンテンツとが含まれる。
【００３０】
図５には、クライアント端末２に格納されるデータを示している。クライアント端末２には、データを登録する登録先となるデータベースピア１のＩＰアドレスが格納されている。
【００３１】
本システムの利用者は、ピア・ツー・ピアネットワーク内の複数のデータベースピア１のうち、ファイルの登録を許可されているデータベースピア１にファイルを格納する。すなわち、クライアント端末２の利用者は、利用者の所属する部門が管理するデータベースピア１にファイルを格納する。
ファイルは、それぞれの部門の管理するデータベースピア１に登録されるため、他の部門の利用者は、所望とするファイルを取得するための有効な検索システムが必要となる。
本システムでは、ファイル検索の効率化を図るために、シグニチャコーディングと呼ばれる方法によって得られるビット列（ブルームフィルタ）を用いて、各データベースピア１に格納されたファイル群に、目的のファイルが含まれているか否かを高速に判定する。
【００３２】
図６を参照しながら各データベースピア１に保持されるブルームフィルタについて説明する。
ファイルの登録依頼をクライアント端末２より受けると、データベースピア１は、登録依頼のあったファイルの文書情報をキーとして文書ＩＤを生成する。図６（Ａ）に示すように文書に含まれるコンテンツ（データ列）をキーとするハッシュ値を文書ＩＤとする。
【００３３】
次に、データベースピア１は、生成した文書ＩＤをもとに、登録依頼のあったファイルに関するブルームフィルタ値を計算する。
本実施例では、図６（Ｂ）に示すように文書ＩＤに８つの異なるハッシュ関数（Hash-1,Hash-2,Hash3・・・Hash-8）を適用し、８つのハッシュ値を生成する。この８つのハッシュ値の論理和を演算することでブルームフィルタに登録されるビット列が決定される。図６（Ｃ）に、ブルームフィルタの構成を示す。本実施例は、ブルームフィルタとして長さ４０９６ビットのものを用意しており、２５６個のファイルのビット列が格納される。
なお、データベースピア１には、ブルームフィルタの集合からなるローカルブルームフィルタが格納される。ローカルブルームフィルタは、ファイル数が一定数（本実施例では２５６個）を超えると、４０９６ビット長の新たなブルームフィルタが既存のブルームフィルタに追加される。すなわち、ロカールブルームフィルタは、登録されるファイルの数が増加していくにつれて、長さが段階的に４０９６ビット長ずつ長くなるブルームフィルタの集合である。また、ローカルブルームフィルタにファイルを登録するために行う論理和演算は、ローカルブルームフィルタの全体に対して行う。
なお、４０９６ビット長のブルームフィルタに対しては、２５６個のファイルを登録してもエラー率（ｆａｌｓｅ  ｐｏｓｉｔｉｖｅ率）が変わらない。４０９６ビット長のブルームフィルタに対して、２５６個以上のファイルが登録されると、エラー率が上昇するので、４０９６ビット長の新たなブルームフィルタを追加する。
【００３４】
図７を参照しながらデータベースピア１の登録の手順について説明する。
データベースピア１は、図２に示すように階層的なピア・ツー・ピアネットワークを形成している。新規に設置したデータベースピア、又は既にファイルが格納されている既存のデータベースピアは、階層的なネットワークを形成する際の上位となるデータベースピアに対して、ピア登録依頼メッセージを送信する。ピア登録依頼メッセージには、ピアアドレス（登録を依頼するデータベースピアのアドレス）、ブルームフィルタの値（登録を依頼するデータベースピアの所持するローカルブルームフィルタの値）、転送フラグ等が含まれる。なお、ピア登録依頼メッセージでは、転送フラグは、ｔｒｕｅに設定される。ｔｒｕｅに設定された転送フラグを受信することで、上位のデータベースピア１は、自身の直下にピア登録依頼メッセージを出力したデータベースピア１が存在することを認識することができる。また、ｆａｌｓｅに設定された転送フラグを受信することで、上位のデータベースピア１は、ピア登録依頼メッセージを出力したデータベースピアが、自身には直接接続されておらず、少なくとも２層以上下層のデータベースピアであることを認識することができる。
以下の説明では、説明を明確にするために図２に示す第４層のデータベースピア３０Ｂが登録された場合を例に説明する。
【００３５】
データベースピア３０Ｂの上位のデータベースピア２０Ｃは、下位のデータベースピア３０Ｂ，３０Ｂからのピア登録依頼メッセージの受信待ち状態にある。データベースピア２０Ｃは、ピア登録依頼メッセージを受信すると、依頼を出したデータベースピア３０Ｂとの間で、親子関係に相当するピア・ツー・ピアネットワーク関係を設定する。ピア登録依頼を受けたデータベースピア２０Ｃは、「下位ピア集合」のメンバとして新しい「下位ピア」を生成する。
ピア登録依頼メッセージを受けたデータベースピア２０Ｃは、この「下位ピア」のアドレスに、ピア登録依頼メッセージから取得したアドレスを設定する。また、「下位ピアブルームフィルタ」の設定に、ピア登録依頼メッセージから取得したローカルブルームフィルタの値を設定する。
また、「直下ピアフラグ」の値は、当該受信したピア登録依頼メッセージの「転送フラグ」がｔｒｕｅの場合はｔｒｕｅ、ｆａｌｓｅの場合はｆａｌｓｅがセットされる。「直下ピアフラグ」は、ピア登録依頼を受けたデータベースピア２０Ｃの直下に、ピア登録依頼を出力したデータベースピア３０Ｂがあることを示している。
【００３６】
さらに、データベースピア２０Ｃは、「上位ピアアドレス」として保持している上位のデータベースピア１０Ｃに対して、受信したピア登録依頼メッセージを転送する。なお、このときの転送には、ピア登録依頼メッセージの「転送フラグ」をｆａｌｓｅにセットして送信する。
【００３７】
さらに、データベースピア２０Ｃは、ピア登録依頼メッセージを出力した下位のデータベースピア３０Ｂに対して、処理が完了したことを通知するためのピア登録完了メッセージを送信する。ピア登録完了メッセージには、返信対象のメッセージを識別するメッセージＩＤが含まれる。
【００３８】
上記の処理の最初のステップで、ピア登録依頼メッセージを送信したデータベースピア３０Ｂは、上記ピア登録完了メッセージを受信すると、「上位ピアアドレス」に、上位データベースピア２０Ｃのアドレスを設定し、親子関係を形成する。
【００３９】
図８に示すフロチャートを参照しながら、新規登録されるデータベースピア３０Ｂの処理手順を説明する。
新規に設置されるデータベースピア３０Ｂは、上位に位置するデータベースピア２０Ｃにピア登録依頼メッセージを送信する（ステップＳ１）。メッセージを送信すると、上位のデータベースピア２０Ｃからのピア登録完了メッセージの返信を待つ（ステップＳ２）。
データベースピア３０Ｂは、上位のデータベースピア２０Ｃからピア登録完了メッセージを受け取ると（ステップＳ３／ＹＥＳ）、「上位ピアアドレス」に、上位データベースピア２０Ｃのアドレスを設定し、親子関係を形成する（ステップＳ４）。
【００４０】
次に、データベースピア３０Ｂからのピア登録依頼メッセージを受信したデータベースピア２０Ｃの処理手順を図９に示すフローチャートを参照しながら説明する。
データベースピア２０Ｃは、下位のデータベースピア３０Ｂ，３０Ｃからのメッセージの受信待ちの状態にある（ステップＳ１０）。下位のデータベースピア３０Ｂ，３０Ｃからメッセージを受信すると（ステップＳ１０／ＹＥＳ）、このメッセージの種別を判定する（ステップＳ１１）。受信したメッセージがピア登録依頼メッセージではなかった場合には（ステップＳ１１／ＮＯ）、他のルーチンへ移行する。また、受信したメッセージがピア登録依頼メッセージであった場合（ステップＳ１１／ＹＥＳ）、データベースピア２０Ｃは、データベースピア内の「下位ピア集合」のメンバとして新しい「下位ピア」を生成する（ステップＳ１２）。ピア登録依頼メッセージを受けたデータベースピア２０Ｃは、この「下位ピア」のアドレスに、ピア登録依頼メッセージから取得したアドレスを設定する。また、「下位ピアブルームフィルタ」の設定に、ピア登録依頼メッセージから取得したローカルブルームフィルタの値を設定する。また、「直下ピアフラグ」の値は、受信したピア登録依頼メッセージの「転送フラグ」に設定されたｔｒｕｅが設定される。
【００４１】
また、データベースピア２０Ｃは、「上位ピアアドレス」として保持している上位のデータベースピア１０Ｃに対して、受信したピア登録依頼メッセージを転送する（ステップＳ１３）。このとき、ピア登録依頼メッセージの「転送フラグ」はｆａｌｓｅにセットして送信する。
【００４２】
さらに、データベースピア２０Ｃは、ピア登録依頼メッセージを出力した下位のデータベースピア３０Ｂに対して、処理が完了したことを通知するためのピア登録完了メッセージを送信する（ステップＳ１４）。
【００４３】
（ピアの削除）
次に、図１０を参照しながらデータベースピア１の削除処理について説明する。なお、この説明においても、図２に示すデータベースピア３０Ｂを削除する場合を例に説明する。
データベースピア３０Ｂが削除される場合、削除されるデータベースピア３０Ｂから上位のデータベースピア２０Ｃに対して、ピア削除依頼メッセージを送信する。このピア削除依頼メッセージには、削除を依頼した（削除される）データベースピア３０Ｂのピアアドレスと、転送フラグとが送信される。転送フラグはｔｒｕｅに設定される。
【００４４】
データベースピア２０Ｃは、下位のデータベースピア３０Ｂ，３０Ｃから、ピア削除依頼メッセージの受信待ち状態にある。データベースピア２０Ｃは、下位のデータベースピア３０Ｂからピア削除依頼メッセージを受信すると、「下位ピア集合」のメンバを検索し、この削除依頼メッセージに含まれるピアアドレスを「下位ピア集合」のメンバから削除する。
【００４５】
ここで、「転送フラグ」がｆａｌｓｅの場合は、次のステップに進む。一方、受信したピア削除依頼メッセージの「転送フラグ」がｔｒｕｅであり、かつ、削除対象とする「下位ピア」メンバの「直下ピアフラグ」がｔｒｕｅの場合、削除依頼メッセージに含まれている「下位ピア集合」の各ピアアドレスに関して、「下位ピア集合」中の各「下位ピア」メンバを検索し、同じピアアドレスを持つ「下位ピア」メンバの「直下ピアフラグ」をｔｒｕｅにセットする。
すなわち、自ピアが削除対象のデータベースピアの上位のデータベースピアであった場合、削除対象のデータベースピアに直接接続された下位のデータベースピアを、新たな直下の下位ピアとして登録する。図２を参照して説明すると、例えば、データベースピア２０Ｃが削除対象のデータベースピアであった場合、データベースピア２０Ｃの上位のデータベースピア１０Ｃは、データベースピア３０Ｂ，３０Ｃを直下のデータベースピアとして登録する。
【００４６】
また、データベースピア２０Ｃは、「上位ピアアドレス」として保持する上位のデータベースピア１０Ｃに対して、受信したピア削除依頼メッセージを転送する。なお、ピア削除依頼メッセージの「転送フラグ」をｆａｌｓｅにセットして送信する。
さらに、データベースピア２０Ｃは、ピア削除依頼メッセージを送信したデータベースピアに対して、処理が完了したことを通知するための、ピア削除完了メッセージを送信する。
【００４７】
上記の処理の最初のステップでピア削除依頼コマンドを送信したデータベースピア３０Ｂは、上記ピア削除完了メッセージを受信し、「上位ピアアドレス」にｎｕｌｌを設定し、親子関係を解消する。
【００４８】
図１１に示すフローチャートを参照しながら、ピア削除依頼メッセージを出力するデータベースピア３０Ｃの処理手順を説明する。
削除されるデータベースピア３０Ｂから上位のデータベースピア２０Ｃに対して、ピア削除依頼メッセージを送信する（ステップＳ２１）。メッセージを送信すると、上位のデータベースピア２０Ｃからのピア削除完了メッセージの返信を待つ（ステップＳ２２）。データベースピア３０Ｂは、上位のデータベースピア２０Ｃからピア削除完了メッセージを受け取ると（ステップＳ２３／ＹＥＳ）、「上位ピアアドレス」から、ピア削除完了メッセージを受け取った上位ピアのアドレスを削除する（ステップＳ２４）。
【００４９】
次に、図１２に示すフローチャートを参照しながらピア削除依頼メッセージを受信した上位のデータベースピア２０Ｃの処理手順を説明する。
データベースピア２０Ｃは、下位のデータベースピア３０Ｂ，３０Ｂからのメッセージの受信待ちの状態にある（ステップＳ３１）。下位のデータベースピア３０Ｂからメッセージを受信すると（ステップＳ３１／ＹＥＳ）、このメッセージの種別を判定する（ステップＳ３２）。受信したメッセージがピア削除依頼メッセージではなかった場合には（ステップＳ３２／ＮＯ）、他のルーチンへ移行する。また、受信したメッセージがピア削除依頼メッセージであった場合には（ステップＳ３２／ＹＥＳ）、「下位ピア集合」から削除対象のデータベースピア３０Ｂに関する情報を削除する（ステップＳ３３）。
また、データベースピア２０Ｃは、削除対象のデータベースピア３０Ｂの下位ピア情報に含まれる直下フラグを参照して、直下フラグがｔｒｕｅに設定されているか否かを判定する。直下フラグがｔｒｕｅに設定されている場合、削除対象のデータベースピア３０Ｂの上位ピアがデータベースピア２０Ｃになるので、データベースピア３０Ｂの直下に接続されたデータベースピアがある場合には、このデータベースピアをデータベースピア２０Ｃの新たな下位ピアとして登録する（ステップＳ３４）。
【００５０】
また、データベースピア２０Ｃは、「上位ピアアドレス」として保持する上位のデータベースピア１０Ｃに対して、受信したピア削除依頼メッセージを転送する（ステップＳ３５）。さらに、データベースピア２０Ｃは、ピア削除依頼メッセージを送信したデータベースピア３０Ｂに対して、処理が完了したことを通知するための、ピア削除完了メッセージを送信する（ステップＳ３６）。
【００５１】
（ファイルの登録）
次に、図１３を参照しながらファイルを登録する場合の手順を説明する。なお、ここでは、説明を明確にするために、図２に示すデータベースピア２０Ａにファイルを登録する場合の手順を例に説明する。
利用者が、クライアント端末２上で任意の文書ファイルを選択して文書登録を指示すると、この文書ファイルを登録するためのファイル登録依頼メッセージが、クライアント端末２の保持する「登録先データベースピアアドレス」宛に送信される。
ファイル登録依頼メッセージには、登録する文書ファイルを指定する「登録文書ファイル」が含まれる。また、登録先データベースピアアドレスは、予め文書ファイルを登録するローカルのデータベースピアのアドレスに設定されている。
【００５２】
データベースピア２０Ａは、上記のファイル登録依頼メッセージ（または、ファイル削除依頼メッセージ）を受信待ち状態にある。データベースピア２０Ａは、ファイル登録依頼メッセージを受信すると、この登録ファイルのコンテンツに含まれるデータ列をキーとして文書ＩＤを生成する。
この文書ＩＤに複数個のハッシュ関数を適用し、複数個のハッシュ値を生成する。ハッシュ関数には、ＲＳＡ２５６等が用いられる。得られたハッシュ値からブルームフィルタ値が生成される。本実施例では、４０９６ビット長のブルームフィルタに対して８つのハッシュ関数を適用することによって求める。データベースピア２０Ａは、保持している「ローカルブルームフィルタ」の値と、今回生成した登録ファイルの文書ＩＤに対応した「ブルームフィルタ」の値との論理和を計算し、その値を新たな「ローカルブルームフィルタ」としてセットする。
なお、ここで、格納するファイルが一定数（本実施例の場合は、２５６個）を超える都度、新たなブルームフィルタが生成され、「ローカルブルームフィルタ」に追加されてゆく。ローカルブルームフィルタは、格納されるファイルが一定数を超えるごとに新たに生成されてゆくブルームフィルタの集合であり、論理和は、ローカルブルームフィルタを構成する複数のブルームフィルタのうち、最も最近生成されて追加されたブルームフィルタと、今回生成した登録ファイルの文書ＩＤに対応したブルームフィルタとの間で計算される。
【００５３】
データベースピア２０Ａ内のローカルブルームフィルタが更新されると、その値を上位のピアに更新伝播させるためのブルームフィルタ更新依頼メッセージが生成され、上位のデータベースピア１０Ａに送信される。ブルームフィルタ更新依頼メッセージには、更新依頼メッセージを出力したデータベースピア２０Ａのピアアドレスと、新たに計算されたブルームフィルタの値である更新ブルームフィルタとが上位のデータベースピア１０Ａに送信される。
【００５４】
データベースピア１０Ａは、下位のデータベースピア２０Ａ，２０Ｂから送信されてくるブルームフィルタ更新依頼メッセージの受信待ち状態にある。ブルームフィルタ更新依頼メッセージを受信すると、データベースピア１０Ａはブルームフィルタ更新依頼メッセージに含まれていたピアＩＤに相当するデータベースピアの「下位ピア」メンバを検出し、そのブルームフィルタ値を、受信したメッセージ中に含まれていたブルームフィルタの値に変更する。そして、ブルームフィルタ更新依頼メッセージを受信したデータベースピアの「上位ピアアドレス」宛に転送する。
【００５５】
データベースピア１０Ａは、上記の処理を終了すると、ブルームフィルタ更新完了メッセージを送信元のデータベースピア２０Ａに返信する。
一方、文書ファイル登録依頼メッセージをデータベースピア１０Ａに出力して文書ファイルの登録を行ったデータベースピア２０Ａでは、上記の処理の完了に伴い、ファイル登録完了メッセージをファイル登録を依頼したクライアント端末２に返信する。ファイル登録完了メッセージには、登録文書ＩＤ（上述の処理で生成された文書ＩＤ）が含まれる。
【００５６】
また、ファイル登録完了メッセージを受信したクライアント端末２では、この文書ＩＤを含むリファレンスファイルを生成し、登録されたファイルと同じディレクトリ下に置く。
【００５７】
次に、図１４に示すフローチャートを参照しながらファイルの登録を依頼するクライアント端末２の処理手順を説明する。
利用者によって文書ファイルが選択されると、この文書ファイルを登録するためのファイル登録依頼メッセージを、クライアント端末２の保持する「登録先データベースピアアドレス」宛に送信する（ステップＳ４１）。
ファイル登録依頼メッセージを送信したクライアント端末２は、該当データベースピア２０Ａからのファイル登録完了メッセージの受信を待つ（ステップＳ４２）。ファイル登録完了メッセージを受信すると（ステップＳ４３）、このファイル登録完了メッセージに含まれる文書ＩＤを含んだリファレンスファイルを生成する（ステップＳ４４）。生成されたリファレンスファイルは、登録されたファイルと同じディレクトリ下に置かれる。
【００５８】
次に、図１５に示すフローチャートを参照しながらファイル登録依頼メッセージを受け付けたデータベースピア２０Ａの処理手順を説明する。
データベースピア２０Ａは、メッセージを受信すると（ステップＳ５１）、このメッセージがクライアント端末２からのファイル登録依頼メッセージであるか否かを判定する（ステップＳ５２）。受信したメッセージがファイル登録依頼メッセージではなかった場合には（ステップＳ５２／ＮＯ）、他のルーチンへ移行する。また、受信したメッセージがファイル登録依頼メッセージであった場合には（ステップＳ５２／ＹＥＳ）、コンテンツに含まれるデータ列をキーとして文書ＩＤを生成する（ステップＳ５３）。この文書ＩＤに複数個のハッシュ関数を掛け合わせて、複数個のハッシュ値（ビット列）を生成する。得られたハッシュ値（ビット列）を論理和演算を行ってブルームフィルタに登録することで新たなブルームフィルタが生成される（ステップＳ５４）。データベースピア２０Ａは、保持している「ローカルブルームフィルタ」に登録されたビット列と、今回生成したハッシュ値（ビット列）との論理和を計算し、演算結果を新たな「ローカルブルームフィルタ」としてセットする（ステップＳ５５）。
【００５９】
データベースピア２０Ａ内のローカルブルームフィルタが更新されると、データベースピア２０Ａは、このローカルブルームフィルタの値を上位のデータベースピア１０Ａに更新伝播させるためのブルームフィルタ更新依頼メッセージを生成し、データベースピア１０Ａに送信する（ステップＳ５６）。
【００６０】
また、データベースピア２０Ａは、ファイル登録完了メッセージをファイル登録を依頼したクライアント端末２に返信する（ステップＳ５７）。
【００６１】
次に、図１６に示すフローチャートを参照しながらブルームフィルタ更新依頼メッセージを受信したデータベースピア１０Ａの処理手順を説明する。
データベースピア２０Ａは、ローカルブルームフィルタの値を更新すると、その値を上位のピアに更新伝播させるためのブルームフィルタ更新依頼メッセージを生成して、上位のデータベースピア１０Ａに送信する。
データベースピア１０Ａは、他のデータベースピアから送信されるメッセージの受信を待機しており（ステップＳ６１）、メッセージを受信すると（ステップＳ６１／ＹＥＳ）、受信したメッセージがブルームフィルタ更新依頼メッセージであるか否かを判定する（ステップＳ６２）。メッセージがブルームフィルタ更新依頼メッセージではなかった場合には（ステップＳ６２／ＮＯ）、他のルーチンへ移行する。また、メッセージがブルームフィルタ更新依頼メッセージであった場合（ステップＳ６２／ＹＥＳ）、データベースピア１０Ａはブルームフィルタ更新依頼メッセージに含まれていたピアＩＤに相当するデータベースピアの「下位ピア」メンバを検出し、そのブルームフィルタ値を、受信したメッセージ中に含まれていたブルームフィルタの値に変更する（ステップＳ６３）。そして、データベースピア１０Ａの「上位ピアアドレス」宛にブルームフィルタ更新依頼メッセージを転送する。また、データベースピア１０Ａは、ブルームフィルタ更新完了メッセージを送信元のデータベースピア２０Ａに返信する（ステップＳ６４）。
【００６２】
（ファイルの検索）
次に、図１７を参照しながらファイルの検索について説明する。なお、この説明においても、クライアント端末２からデータベースピア２０Ａにファイルの検索依頼を出力する場合を例に説明する。
ファイルの登録時に生成されるリファレンスファイルは、電子メールによる交換、またはオフラインによって他の利用者との間で交換することが可能である。
図１８に示すように利用者が画面に表示されたリファレンスファイルをダブルクリックすると、このリファレンスファイルに格納された文書IDに関する「ファイル検索依頼メッセージ」がクライアント端末２の保持する「データベースピアアドレス」宛に送信される。
【００６３】
データベースピア２０Ａは、ファイル検索依頼メッセージの受信待ち状態にあり、このメッセージを受信すると、ファイル検索依頼メッセージに含まれる文書ＩＤに関するブルームフィルタの値を計算する（この値をAとする）。そして、この文書ＩＤに関するブルームフィルタの値（Ａ）と、データベースピア２０Ａが保持するローカルブルームフィルタ中のブルームフィルタの値について、論理積を計算する（この値をＢとする）。この結果、文書IDについて計算したブルームフィルタの値（Ａ）と、論理積によって得られた値（Ｂ）とが一致すれば、その文書ＩＤを持ったファイルは、データベースピア２０Ａが保持する可能性が高いと判断し、「文書ファイル集合」中を検索する。
【００６４】
データベースピア２０Ａは、「文書ファイル集合」を検索して、該当する文書ＩＤを持つ「文書ファイル」が発見された場合、この「文書ファイル」の「コンテンツ」を取り出し、「ファイル検索完了メッセージ」を検索要求先のクライアント端末２に送信する。
一方、データベースピア２０Ａは、「文書ファイル集合」を検索して、該当する文書ＩＤを持つ「文書ファイル」が発見されなかった場合には、データベースピア２０Ａが保持する「上位ピアアドレス」宛に、ファイル検索依頼メッセージを転送する。ファイル検索依頼メッセージには、文書ＩＤ（＝受信メッセージに含まれていた文書ＩＤ）、転送フラグ（ｔｒｕｅに設定される）を転送する。
【００６５】
また、データベースピア２０Ａにおける、ブルームフィルタの値（ＡとＢ）の比較の結果、値が一致しなかった場合は、階層関係上の下位のデータベースピアに目的とするファイルは存在しないことが保障されるため、データベースピア２０Ａが保持する「上位ピアアドレス」宛に、ファイル検索依頼メッセージを転送する。ファイル検索依頼メッセージには、文書ＩＤと、ｔｒｕｅに設定された転送フラグとが含まれる。
【００６６】
ファイル検索完了メッセージを受信したクライアント端末２は、返信メッセージ中に含まれているファイルを取り出して、ファイルを、このファイルに対応付けられたアプリケーションシステムによってオープンする。
【００６７】
図１９に示すフローチャートを参照して、クライアント端末２の処理手順を説明する。
利用者によってリファレンスファイルが選択されると、このリファレンスファイルに格納された文書ＩＤに関するファイル検索依頼メッセージをクライアント端末２の保持する「データベースピアアドレス」宛に送信する（ステップＳ７１）。ファイル検索依頼メッセージを受信したクライアント端末２は、データベースピア２０Ａからのファイル登録完了メッセージの受信を待つ（ステップＳ７２）。データベースピア２０Ａからファイル登録完了メッセージを受信すると（ステップＳ７３／ＹＥＳ）、返信メッセージ中に含まれているファイルを取り出して、ファイルに対応付けられたアプリケーションシステムによってファイルをオープンする（ステップＳ７４）。
【００６８】
次に、図２０に示すフローチャートを参照しながら、ファイル検索依頼を受け付けたデータベースピア２０Ａの処理手順を説明する。
データベースピア２０Ａは、メッセージの受信待ち状態にあり（ステップＳ８１）、メッセージを受信すると（ステップＳ８１／ＹＥＳ）、このメッセージがファイル検索依頼メッセージであるか否かを判定する（ステップＳ８２）。メッセージがファイル検索依頼メッセージではなかった場合には（ステップＳ８２／ＮＯ）、他のルーチンへ移行する。また、メッセージがファイル検索依頼メッセージであった場合には（ステップＳ８２／ＹＥＳ）、ファイル検索依頼メッセージに含まれる文書ＩＤに関するブルームフィルタの値（Ａ）を計算する（ステップＳ８３）。
【００６９】
次に、この文書ＩＤに関するブルームフィルタの値（Ａ）と、データベースピア２０Ａが保持するローカルブルームフィルタ中のブルームフィルタの値について、論理積を計算する（この値をＢとする）。この結果、文書IDについて計算したブルームフィルタの値（Ａ）と、論理積によって得られた値（Ｂ）とを比較する。これらの値が一致すれば（ステップＳ８５／ＹＥＳ）、文書ＩＤを持ったファイルは、データベースピア２０Ａが保持する可能性が高いと判断し、「文書ファイル集合」中を検索する（ステップＳ８６）。
【００７０】
データベースピア２０Ａは、「文書ファイル集合」を検索して（ステップＳ８６）、該当する文書ＩＤを持つ「文書ファイル」が発見された場合（ステップＳ８７／ＹＥＳ）、この「文書ファイル」の「コンテンツ」を取り出し、「ファイル検索完了メッセージ」を検索要求先のクライアント端末２に送信する（ステップＳ８９）。
また「文書ファイル集合」を検索して、該当する文書ＩＤを持つ「文書ファイル」が発見されなかった場合（ステップＳ８７／ＮＯ）、データベースピア２０Ａは、データベースピア２０Ａが保持する「上位ピアアドレス」宛に、ファイル検索依頼メッセージを転送する（ステップＳ８８）。ファイル検索依頼メッセージには、文書ＩＤ（＝受信メッセージに含まれていた文書ＩＤ）、転送フラグ（ｔｒｕｅに設定される）を転送する。
【００７１】
また、データベースピア２０Ａにおける、ブルームフィルタの値（ＡとＢ）の比較の結果、値が一致しなかった場合は（ステップＳ８５／ＮＯ）、階層関係上の下位のデータベースピアに目的とするファイルは存在しないことが保障されるため、データベースピア２０Ａが保持する「上位ピアアドレス」宛に、ファイル検索依頼メッセージを転送する（ステップＳ８８）。
【００７２】
上述した実施例は本発明の好適な実施の例である。但し、これに限定されるものではなく本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【図面の簡単な説明】
【００７３】
【図１】システム構成を示す構成図である。
【図２】ツリー階層的なピア・ツー・ピアのネットワークを示す図である。
【図３】データベースピアの構成を示す図である。
【図４】データベースピアに格納されるデータの構成を示す図である。
【図５】クライアント端末に格納されるデータを示す図である。
【図６】ブルームフィルタの生成手順を示す図である。
【図７】データベースピア登録時の手順を示すシーケンス図である。
【図８】登録されるデータベースピアの処理手順を示すフローチャートである。
【図９】登録依頼メッセージを受信したデータベースピアの処理手順を示す図である。
【図１０】データベースピア削除時の手順を示すシーケンス図である。
【図１１】削除されるデータベースピアの処理手順を示すフローチャートである。
【図１２】削除依頼メッセージを受信したデータベースピアの処理手順を示す図である。
【図１３】ファイルの登録の手順を示すシーケンス図である。
【図１４】ファイル登録依頼を出力するクライアント端末の処理手順を示す図である。
【図１５】ファイル登録依頼メッセージを受信したデータベースピアの処理手順を示す図である。
【図１６】ブルームフィルタの更新依頼を受けたデータベースピアの処理手順を示すフローチャートである。
【図１７】ファイル検索時の手順を示すシーケンス図である。
【図１８】ファイル検索時にクライアント端末に表示される画面の一例を示す図である。
【図１９】ファイルの検索依頼を出力するクライアント端末の処理手順を示すフローチャートである。
【図２０】ファイル検索依頼を受けたデータベースピアの処理手順を示すフローチャートである。
【符号の説明】
【００７４】
１  データベースピア
２  クライアント端末
３  ルータ
４  ゲートウェイ
５  ネットワーク
４０  制御部
５０  ハードディスク装置
【図１】
2008102795.tif 000003
【図２】
2008102795.tif 000004
【図３】
2008102795.tif 000005
【図４】
2008102795.tif 000006
【図５】
2008102795.tif 000007
【図６】
2008102795.tif 000008
【図７】
2008102795.tif 000009
【図８】
2008102795.tif 000010
【図９】
2008102795.tif 000011
【図１０】
2008102795.tif 000012
【図１１】
2008102795.tif 000013
【図１２】
2008102795.tif 000014
【図１３】
2008102795.tif 000015
【図１４】
2008102795.tif 000016
【図１５】
2008102795.tif 000017
【図１６】
2008102795.tif 000018
【図１７】
2008102795.tif 000019
【図１８】
2008102795.tif 000020
【図１９】
2008102795.tif 000021
【図２０】
2008102795.tif 000022