(57)【特許請求の範囲】
【請求項１】
管理対象に関する情報を示す構成要素と該構成要素間の接続関係に関する情報を示す要素関係とを他の構成情報管理装置と分散して記憶する構成情報記憶部と、
接続関係にある前記構成要素および前記要素関係の一群であるクラスタについて登録要求を受け付けた場合に、該クラスタの格納先を決定し、前記構成情報記憶部または前記他の構成情報管理装置に格納するように制御する格納制御部と、
前記構成要素または前記要素関係を検索対象とした検索要求を受け付けた場合に、該検索対象を含むクラスタの格納先を特定し、該クラスタの格納先から検索対象の前記構成要素または前記要素関係を検索する検索処理部と、
を有することを特徴とする構成情報管理装置。
【請求項２】
検索処理において複数のクラスタ間をまたいで参照した回数が所定の閾値以上であって、かつ、該複数のクラスタそれぞれが異なる構成情報管理装置に格納されている場合には、該複数のクラスタが格納される構成情報管理装置が同じになるように再配置するクラスタ再配置処理部をさらに有することを特徴とする請求項１に記載の構成情報管理装置。
【請求項３】
検索処理において複数のクラスタ間をまたいで参照した回数が所定の閾値以上であって、かつ、該複数のクラスタが同じ構成情報管理装置に格納されている場合には、該複数のクラスタを統合するクラスタ統合部をさらに有することを特徴とする請求項１または２に記載の構成情報管理装置。
【請求項４】
前記クラスタに含まれる前記構成要素および前記要素関係の数がクラスタ上限値以上である場合には、該クラスタ内の要素関係が検索処理時に参照された回数を用いて、該クラスタを分割するクラスタ分割部をさらに有することを特徴とする請求項１〜３のいずれか一つに記載の構成情報管理装置。
【請求項５】
前記クラスタ間をまたいだ検索処理の回数の削減数と該クラスタに含まれる前記構成要素および前記要素関係の増加数との関係に応じて、前記クラスタ上限値を設定する上限値設定部をさらに有することを特徴とする請求項４に記載の構成情報管理装置。
【請求項６】
管理対象に関する情報を示す構成要素と該構成要素間の接続関係に関する情報を示す要素関係とを複数の構成情報管理装置で分散して記憶する分散情報管理システムであって、
前記構成情報管理装置は、
前記構成要素および前記要素関係を他の構成情報管理装置で分散して記憶する構成情報記憶部と、
接続関係にある前記構成要素および前記要素関係の一群であるクラスタについて登録要求を受け付けた場合に、該クラスタの格納先を決定し、前記構成情報記憶部または前記他の構成情報管理装置に格納するように制御する格納制御部と、
前記構成要素または前記要素関係を検索対象とした検索要求を受け付けた場合に、該検索対象を含むクラスタの格納先を特定し、該クラスタの格納先から検索対象の前記構成要素または前記要素関係を検索する検索処理部と、
を有することを特徴とする分散情報管理システム。
【請求項７】
接続関係にある構成要素および該構成要素間の接続関係に関する情報を示す要素関係の一群であるクラスタについて登録要求を受け付けた場合に、該クラスタの格納先を決定し、前記構成要素および前記要素関係を他の構成情報管理装置と分散して記憶する構成情報記憶部または前記他の構成情報管理装置に格納するように制御する格納制御ステップと、
前記構成要素または前記要素関係を検索対象とした検索要求を受け付けた場合に、該検索対象を含むクラスタの格納先を特定し、該クラスタの格納先から検索対象の前記構成要素または前記要素関係を検索する検索処理ステップと、
を含んだことを特徴とする分散情報管理方法。
【請求項８】
接続関係にある構成要素および該構成要素間の接続関係に関する情報を示す要素関係の一群であるクラスタについて登録要求を受け付けた場合に、該クラスタの格納先を決定し、前記構成要素および前記要素関係を他の構成情報管理装置と分散して記憶する構成情報記憶部または前記他の構成情報管理装置に格納するように制御する格納制御手順と、
前記構成要素または前記要素関係を検索対象とした検索要求を受け付けた場合に、該検索対象を含むクラスタの格納先を特定し、該クラスタの格納先から検索対象の前記構成要素または前記要素関係を検索する検索処理手順と、
をコンピュータに実行させることを特徴とする分散情報管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラムに関する。
【背景技術】
【０００２】
近年、ＩＴシステムは、オープン化やマルチベンダー化が進んでおり、サーバ台数の増加やストレージ容量の増大と相まって大規模化・複雑化している。このため、運用コストが増大しているだけでなく、人的ミスによるシステム停止やサービス品質低下の多発が大きな問題となっている。そこで、こうした問題を解決するため、サーバやストレージ、アプリケーションといったＩＴシステムの構成情報の管理が重要となる。
【０００３】
ＩＴシステムの構成情報を管理する装置として、ＭＤＲ（Management  Data  Repository）と呼ばれるデータベースが知られている。ＭＤＲは、ＩＴシステムの運用管理データを保持し、運用管理ミドルウェアのデータベースに相当する。
【０００４】
ここで、データセンタの運用においては、サーバ管理やネットワーク管理、サービス管理、資産管理など、それぞれの管理業務に最適化された運用管理ミドルウェアが存在する。また、各運用管理ミドルウェアは、固有のＭＤＲを有し、それぞれの業務に関する構成情報をＭＤＲに入力する。このように、各ＭＤＲは構成情報を他のＭＤＲと独立して管理するため、ＭＤＲへのアクセス方法やＭＤＲで管理される構成情報のデータ形式がＭＤＲごとに異なる場合があり、各ＭＤＲを連携させる場合は人を介さざるをえないのが実情であった。
【０００５】
そこで、複数のＭＤＲに散在する各種の構成情報を仮想的に統合するＦＣＭＤＢ（Federated  Configuration  Management  Database）と呼ばれるデータベースを有する分散情報管理システムが開発された。例えば、図２４に示すように、分散情報管理システムは、複数のＭＤＲおよびＦＣＭＤＢを有し、ＭＤＲとＦＣＭＤＢとはネットワークを介して接続されている。図２４は、ＦＣＭＤＢを説明するための図である。
【０００６】
各ＭＤＲは、ＩＴシステム内に存在する機器等の構成に関する情報を管理する。かかる複数のＭＤＲは、ＭＤＲごとに扱うデータの種別・量が異なる。例えば、図２４に示すように、ＭＤＲ１が設計情報を管理し、ＭＤＲ２が製品情報を管理し、ＭＤＲ３が性能情報を管理し、ＭＤＲ４が構成情報を管理する。
【０００７】
ＦＣＭＤＢは、複数のＭＤＲに分散して管理される同一対象に関する構成情報を統合して管理する。具体的には、ＦＣＭＤＢは、ＩＴシステムを構成する機器、ソフトウェア、データログ等の構成要素（ＣＩ，Configuration  Item）や各ＣＩ間の関係（以下、「リレーションシップ」という）を管理する。例えば、図２４の例では、ＦＣＭＤＢに管理されているＣＩ「Ｃ」とは、ＭＤＲ１に記憶されている設計情報Ｃ’’、ＭＤＲ３に記憶されている性能情報Ｃ＾、ＭＤＲ４に記憶されているＣ’のデータを統合したものである。
【０００８】
このように、ＦＣＭＤＢは、複数のＭＤＲに分散して管理される同一対象に関する構成情報を統合して管理する。これにより、システム管理者等の作業者は、パッチの適用作業やハードウェアの保守作業など、システム運用におけるあらゆるシーンにおいて、ＦＣＭＤＢにより仮想統合された構成情報を参照することでＩＴシステム全体の構成を容易に把握することができる。
【０００９】
また、スケーラビリティ向上のため、ＦＣＭＤＢを複数有する分散ＦＣＭＤＢが知られている。図２５に示すように、分散ＦＣＭＤＢは、ＭＤＲの情報を複数のＦＣＭＤＢで分散管理し、データ登録やデータ検索を複数のＦＣＭＤＢで分散処理している。図２５は、分散ＦＣＭＤＢを説明するための図である。例えば、図２５に示すように、分散ＦＣＭＤＢは、３つのＣＩ（Ｃ１、Ｃ２、Ｃ３）と二つのリレーションシップ（Ｒ１、Ｒ２）とが接続されたデータを登録する場合に、Ｃ１、Ｒ２、Ｃ２、Ｃ３およびＲ１をそれぞれ異なるＦＣＭＤＢに分散して登録する。
【００１０】
ここで、図２６を用いて、分散ＦＣＭＤＢにおける登録処理を具体的に説明する。図２６に示すように、分散ＦＣＭＤＢは、３つのＣＩ（Ｃ１、Ｃ２、Ｃ３）と二つのリレーションシップ（Ｒ１、Ｒ２）とが接続されたデータを登録する場合に、各ＣＩおよび各リレーションシップのＩＤなどを用いて、それぞれハッシュ値を計算する。そして、各ＣＩおよび各リレーションシップのハッシュ値をキーとして、各ＣＩおよび各リレーションシップをＦＣＭＤＢに分散して登録する。
【００１１】
例えば、図２６に示すように、登録要求を受け付けたＦＣＭＤＢは、Ｃ２のハッシュ値「５１」を計算し、ハッシュ値「５１」を担当する担当ＦＣＭＤＢ「５」にＣ２のデータを転送する。そして、担当ＦＣＭＤＢ「５」は、Ｃ２のデータを受信し、Ｃ２のデータを格納する。担当ＦＣＭＤＢ「５」は、ハッシュ値が「５１〜５９」のＣＩおよびリレーションシップを担当しており、図２６の例では、ハッシュ値「５１」のＣ２とハッシュ値「５５」のＲ１とを格納している。
【００１２】
また、分散ＦＣＭＤＢでは、ノードであるＣＩ、エッジであるリレーションシップからなるグラフが分散格納されているため、ＦＣＭＤＢがクライアント端末から検索要求を受け付けた場合に、ＦＣＭＤＢ間で通信を行って検索処理を行う。ここで、図２７を用いて、分散ＦＣＭＤＢにおける検索処理を具体的に説明する。図２７に示すように、分散ＦＣＭＤＢにおけるＦＣＭＤＢ１が検索要求として、クエリ「％ＣＩ１／＆Ｒ１／％ＣＩ２／＆Ｒ２／％ＣＩ３」を受け付けた場合の検索処理について説明する。ここで、クエリ「％ＣＩ１／＆Ｒ１／％ＣＩ２／＆Ｒ２／％ＣＩ３」とは、Ｃ１とＲ１で関連付いているＣ２と、さらにＲ２で関連付いているＣ３との検索を要求するクエリである。
【００１３】
検索要求を受け付けたＦＣＭＤＢ５は、先頭のＣ１を検索し、Ｃ１を保持するＦＣＭＤＢ４と通信を行ってＣ１のＩＤを得る。そして、ＦＣＭＤＢは、Ｃ１のＩＤをソースＩＣまたはターゲットＩＣとするＲ１を検索し、自装置からＣ２のＩＤを得る。続いて、検索要求を受け付けたＦＣＭＤＢ５は、Ｃ２のＩＤをソースＩＣまたはターゲットＩＣとするＲ２を検索し、Ｒ２を保持するＦＣＭＤＢ１と通信を行ってＣ３のＩＤを得る。そして、ＦＣＭＤＢは、Ｃ３のＩＤを元に、Ｃ３を保持するＦＣＭＤＢ２を特定し、ＦＣＭＤＢと通信を行ってＣ３の情報を得る。その後、ＦＣＭＤＢは、クライアント端末に対してＣＩ３のデータを検索結果として出力する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００９−１６９８６３号公報
【特許文献２】特開２００４−２７２３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上記した分散ＦＣＭＤＢの技術では、ＣＩ、リレーションシップが各ＦＣＭＤＢに分散して登録させているので、検索時にはリレーションシップを辿るような検索処理を行う結果、ＦＣＭＤＢ間で通信を頻繁に行って検索処理を実行することとなる。このため、検索処理の処理速度が遅くなるという課題があった。
【００１６】
なお、キャッシュ機構を用いて、検索の処理速度を速くすることも考えられる。例えば、クエリの結果をキャッシュ用メモリに保持させ、次回の検索処理時に同じクエリを受け付けた場合には、キャッシュ用メモリからクエリの結果を読み出し、検索結果として出力することができる。しかしながら、同じクエリを受け付けるとは限らず、また、ＦＣＭＤＢ内のデータも更新されていくものであるから、キャッシュ用メモリのヒット率は低く、検索処理の高速化を図ることができない。
【００１７】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、検索処理時のＦＣＭＤＢ間の通信回数を減らし、検索処理の高速化を図ることを目的とする。
【課題を解決するための手段】
【００１８】
本願の開示する構成情報管理装置は、一つの態様において、管理対象に関する情報を示す構成要素と構成要素間の接続関係に関する情報を示す要素関係とを他の構成情報管理装置と分散して記憶する構成情報記憶部を有する。そして、構成情報管理装置は、接続関係にある構成要素および要素関係の一群であるクラスタについて登録要求を受け付けた場合に、クラスタの格納先を決定し、構成情報憶部または他の構成情報管理装置に格納するように制御する。そして、構成情報管理装置は、構成要素または要素関係を検索対象とした検索要求を受け付けた場合に、検索対象を含むクラスタの格納先を特定し、クラスタの格納先から検索対象の構成要素または要素関係を検索する。
【発明の効果】
【００１９】
本願の開示する構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラムの一つの態様によれば、検索処理時のＦＣＭＤＢ間の通信回数を減らし、検索処理の高速化を実現するという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】図１は、実施例１に係る構成情報管理装置の構成を示すブロック図である。
【図２】図２は、実施例２に係るＦＣＭＤＢの構成を示すブロック図である。
【図３】図３は、クラスタ検索表のデータ構造を説明するための図である。
【図４】図４は、ＦＣＭＤＢ検索表のデータ構造を説明するための図である。
【図５】図５は、クラスタ参照回数表のデータ構造を説明するための図である。
【図６】図６は、クラスタの統計情報の一例を説明するための図である。
【図７】図７は、クラスタの登録処理を説明するための図である。
【図８】図８は、既存のクラスタに情報を追加する処理を説明するための図である。
【図９】図９は、新規クラスタを追加する処理を説明するための図である。
【図１０】図１０は、同一ＦＣＭＤＢ内で検索が終了する検索処理を説明するための図である。
【図１１】図１１は、ＦＣＭＤＢをまたがった検索処理を説明するための図である。
【図１２】図１２は、クラスタの再配置処理を説明するための図である。
【図１３】図１３は、クラスタの統合処理を説明するための図である。
【図１４】図１４は、クラスタの分割処理を説明するための図である。
【図１５】図１５は、クラスタ上限サイズ決定処理を説明するための図である。
【図１６】図１６は、各ＦＣＭＤＢに記憶されるクラスタと検索に必要なサブクエリとの関係を説明するための図である。
【図１７】図１７は、登録処理を説明するためのフローチャートである。
【図１８−１】図１８−１は、検索処理を説明するためのフローチャートである。
【図１８−２】図１８−２は、検索処理を説明するためのフローチャートである。
【図１９】図１９は、クラスタの再配置または統合処理の実行を判断するフローチャートである。
【図２０】図２０は、クラスタの再配置処理を説明するためのフローチャートである。
【図２１】図２１は、クラスタの統合処理を説明するためのフローチャートである。
【図２２】図２２は、クラスタの分割処理を説明するためのフローチャートである。
【図２３】図２３は、クラスタの上限サイズを決定する処理を説明するためのフローチャートである。
【図２４】図２４は、ＦＣＭＤＢを説明するための図である。
【図２５】図２５は、分散ＦＣＭＤＢを説明するための図である。
【図２６】図２６は、分散ＦＣＭＤＢにおける登録処理を説明するための図である。
【図２７】図２７は、従来の分散ＦＣＭＤＢにおける検索処理を説明するための図である。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照して、この発明に係る構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラムの実施例を詳細に説明する。
【実施例１】
【００２２】
まず最初に、図１を用いて、実施例１に係る構成情報管理装置の構成を説明する。図１は、実施例１に係る構成情報管理装置の構成を示すブロック図である。図１に示すように、分散情報管理システム１００は、複数の構成情報管理装置１Ａ、１Ｂを有し、構成情報管理装置１Ａと構成情報管理装置１Ｂとが接続されている。また、構成情報管理装置１Ａは、構成情報記憶部２、格納制御部３、検索処理部４を有する。
【００２３】
構成情報記憶部２は、管理対象に関する情報を示す構成要素と構成要素間の接続関係に関する情報を示す要素関係とを他の構成情報管理装置と分散して記憶する。格納制御部３は、接続関係にある構成要素および要素関係の一群であるクラスタについて登録要求を受け付けた場合に、該クラスタの格納先を決定し、構成情報記憶部２または他の構成情報管理装置１Ｂに格納するように制御する。
【００２４】
検索処理部４は、構成要素または要素関係を検索対象とした検索要求を受け付けた場合に、検索対象を含むクラスタの格納先を特定し、クラスタの格納先から検索対象の構成要素または前記要素関係を検索する。
【００２５】
つまり、分散情報管理システム１００では、接続関係にある構成要素および要素関係の一群であるクラスタを一つの構成情報管理装置に配置する結果、検索処理時のＦＣＭＤＢ間の通信回数を減らし、検索処理の高速化を実現することが可能である。
【００２６】
このように、構成情報管理装置１は、管理対象に関する情報を示す構成要素と構成要素間の接続関係に関する情報を示す要素関係とを他の構成情報管理装置と分散して記憶する構成情報記憶部２を有する。そして、構成情報管理装置１は、接続関係にある構成要素および要素関係の一群であるクラスタについて登録要求を受け付けた場合に、クラスタの格納先を決定し、構成情報憶部２または他の構成情報管理装置１Ｂに格納するように制御する。そして、構成情報管理装置１は、構成要素または要素関係を検索対象とした検索要求を受け付けた場合に、検索対象を含むクラスタの格納先を特定し、クラスタの格納先から検索対象の構成要素または要素関係を検索する。このため、検索処理時のＦＣＭＤＢ間の通信回数を減らし、検索処理の高速化を実現することが可能である。
【実施例２】
【００２７】
［ＦＣＭＤＢの構成］
次に、図２を用いて、ＦＣＭＤＢの構成を説明する。図２は、実施例２に係るＦＣＭＤＢの構成を示すブロック図である。同図に示すように、このＦＣＭＤＢ１０は、データ登録サービス処理部１１、クラスタ検索表記憶部１２、ＦＣＭＤＢ検索表記憶部１３、ローカルデータ記憶部１４を有する。また、ＦＣＭＤＢ１０は、クラスタ最適化実行部１５、参照回数記憶部１６、データ検索サービス受付部１７、ＦＣＭＤＢ間データ送受信部１８を有する。かかるＦＣＭＤＢ１０は、ネットワークを介してクライアント端末、ＭＤＲ、他のＦＣＭＤＢと接続される。以下にこれらの各部の処理を説明する。
【００２８】
クラスタ検索表記憶部１２は、ＣＩおよびリレーションシップのハッシュ値と、接続関係にあるＣＩおよびリレーションシップの一群であるクラスタを一意に識別するクラスタＩＤとが対応付けられたクラスタ検索表を記憶する。具体的には、クラスタ検索表記憶部１２は、図３に例示するように、ＣＩおよびリレーションシップのハッシュ値を示す「Ｋｅｙ」とクラスタＩＤを示す「Ｖａｌｕｅ」とが対応付けて記憶されている。図３は、クラスタ検索表のデータ構造を説明するための図である。
【００２９】
ＦＣＭＤＢ検索表記憶部１３は、クラスタＩＤとクラスタを保持するＦＣＭＤＢＩＤを記憶する。具体的には、図４に例示するように、クラスタを一意に識別するクラスタＩＤを示す「Ｃｌｕｓｔｅｒ」とクラスタを保持するＦＣＭＤＢを一意に識別する「ＦＣＭＤＢ  ＩＤ」とを対応付けて記憶する。図４は、ＦＣＭＤＢ検索表のデータ構造を説明するための図である。
【００３０】
参照回数記憶部１６は、クラスタをまたいで参照された回数を記憶する。具体的には、参照回数記憶部１６は、図５に例示するように、クラスタを一意に識別するクラスタＩＤを示す「Ｃｌｕｓｔｅｒ」と、そのクラスタをまたいで参照した回数（サブクエリ発行数）を示す「ｃｏｕｎｔ」とを対応付けて記憶する。
【００３１】
ローカルデータ記憶部１４は、管理対象に関する情報を示すＣＩと、ＣＩ間の接続関係を示すリレーションシップとを記憶する。具体的には、ローカルデータ記憶部１４は、後述するデータ登録サービス処理部１１によって格納するように通知されたＣＩまたはリレーションシップを記憶する。なお、リレーションシップは、接続するＣＩを示すｓｏｕｒｃｅおよびｔａｒｇｅｔをデータとして保持する。
【００３２】
また、ローカルデータ記憶部１４は、自記憶部に記憶されているクラスタに関する統計情報を記憶する。具体的には、ローカルデータ記憶部１４は、図６に例示するように、クラスタ内のＣＩ数である「サイズ」、統合前のサイズである「統合前サイズ」、統合前の平均サブクエリである「統合前平均サブクエリ」を記憶する。また、ローカルデータ記憶部１４は、図６に例示するように、クラスタに対するクエリがあるたびに値が１加算されるクエリの総数である「クエリ総数」を記憶する。また、ローカルデータ記憶部１４は、図６に例示するように、クラスタ内でクエリが収まった場合は１加算され、外のクラスタにまたがってサブクエリが発行された場合には、サブクエリが発行されるたびに加算される「サブクエリ総数」を記憶する。
【００３３】
また、ローカルデータ記憶部１４は、図６に例示するように、サブクエリ総数をクエリ総数で除算した値である「平均サブクエリ」、クラスタサイズの上限値である「クラスタ上限サイズ」を記憶する。例えば、「クラスタ上限サイズ」は、初期値が「３」であるが、後述するクラスタ最適化実行部１５によって値が変化する。
【００３４】
データ登録サービス処理部１１は、接続関係にあるＣＩおよびリレーションシップの一群であるクラスタについて登録要求を受け付けた場合に、クラスタの格納先を決定し、ローカルデータ記憶部１４または他のＦＣＭＤＢに格納するように制御する。
【００３５】
また、データ登録サービス処理部１１は、格納したＣＩおよびリレーションシップの一群について、各ＣＩおよび各リレーションシップの格納先をそれぞれ決定し、ＣＩおよびリレーションシップの一群の格納先を示すクラスタ検索表およびＦＣＭＤＢ検索表を格納するように制御する。
【００３６】
ここで、図７の例を用いて、クラスタ登録処理を具体的に説明する。図７は、クラスタの登録処理を説明するための図である。図７の例では、登録対象である３つのＣＩ（Ｃ１、Ｃ２、Ｃ３）と二つのリレーションシップ（Ｒ１、Ｒ２）とが接続されたデータの塊をクラスタとする。
【００３７】
ＦＣＭＤＢ１０は、登録対象である３つのＣＩ（Ｃ１、Ｃ２、Ｃ３）と二つのリレーションシップ（Ｒ１、Ｒ２）の登録要求を受け付けると、クラスタ検索表記憶部１２が保持するクラスタ検索表で検索対象を検索し、登録対象のクラスタがすでにＦＣＭＤＢに存在するか判定する。この結果、登録を受け付けたＦＣＭＤＢ１０は、登録対象の属するクラスタがＦＣＭＤＢに存在しない場合には、クラスタが管理するＦＣＭＤＢ  ＩＤをランダムに決定し、さらに、決定されたＦＣＭＤＢ  ＩＤと時刻からクラスタＩＤを決定する。図７の例では、ＦＣＭＤＢ  ＩＤが「１」で、クラスタＩＤが「ＣＬ１」とする。
【００３８】
そして、ＦＣＭＤＢ１０は、クラスタをＦＣＭＤＢ  ＩＤが「１」のＦＣＭＤＢに格納し、ＦＣＭＤＢ検索表にＣＬ１とＦＣＭＤＢ１とを対応付けて記憶させる。続いて、ＦＣＭＤＢ１０は、クラスタ内部のＣＩおよびリレーションシップそれぞれのハッシュ値を計算し、各ハッシュ値からそれを管理するＦＣＭＤＢを決定する。例えば、図７に例示するように、ＦＣＭＤＢ１０は、Ｃ２のハッシュ値が「５１」であり、Ｒ１のハッシュ値が「５５」である場合には、Ｃ２およびＲ１の管理するＦＣＭＤＢとして、ＦＣＭＤＢ  ＩＤが「５」のＦＣＭＤＢを決定する。
【００３９】
その後、ＦＣＭＤＢ１０は、決定されたＦＣＭＤＢのクラスタ検索表に対して、クラスタＩＤを登録するように制御する。例えば、ＦＣＭＤＢ１０は、ＦＣＭＤＢ  ＩＤが「５」のＦＣＭＤＢの検索表に対して、Ｃ２のハッシュ値「５１」とクラスタＩＤ「ＣＬ１」とを対応付けて記憶するように制御する。つまり、ハッシュ値に対して担当するＦＣＭＤＢは、従来と同様であるが、ＦＣＭＤＢにＣＩ・リレーションシップのデータそのものではなく、クラスタＩＤを格納しておき、検索時にＣＩ・リレーションシップのデータを含むクラスタの格納先ＦＣＭＤＢを取得できるようになっている。
【００４０】
また、ＦＣＭＤＢ１０は、登録対象のリレーションシップのソースまたはターゲットとなるＣＩがすでに存在する場合には、そのＣＩの属するクラスタに登録対象を追加する。ここで、既存のクラスタに情報を追加する処理について図８を用いて、説明する。図８は、既存のクラスタに情報を追加する処理を説明するための図である。図８に示すように、登録対象であるＣＩ「Ｃ４」、リレーションシップ「Ｒ３」の登録要求を受け付けると、クラスタ検索表記憶部１２が保持するクラスタ検索表で検索対象を検索し、登録対象が属するクラスタがすでにＦＣＭＤＢに存在するか判定する。
【００４１】
この結果、登録を受け付けたＦＣＭＤＢ１０は、登録対象の属するクラスタがＦＣＭＤＢに存在する場合には、Ｃ４およびＲ３が属するクラスタにＣ４を追加するために、ＦＣＭＤＢ  ＩＤが「１」のＦＣＭＤＢ「１」にＣ４、Ｒ３を格納する。
【００４２】
続いて、ＦＣＭＤＢ１０は、Ｃ４およびＲ３それぞれのハッシュ値を計算し、各ハッシュ値からそれを管理するＦＣＭＤＢを決定する。例えば、図８に例示するように、ＦＣＭＤＢ１０は、Ｃ４のハッシュ値が「４１」であり、Ｒ３のハッシュ値が「２２」である場合には、Ｃ４の管理するＦＣＭＤＢとして、ＦＣＭＤＢ  ＩＤが「４」のＦＣＭＤＢを決定し、Ｒ３の管理するＦＣＭＤＢとして、ＦＣＭＤＢ  ＩＤが「２」のＦＣＭＤＢを決定する。
【００４３】
その後、ＦＣＭＤＢ１０は、決定されたＦＣＭＤＢのクラスタ検索表に対して、クラスタＩＤを登録するように制御する。例えば、ＦＣＭＤＢ１０は、ＦＣＭＤＢ  ＩＤが「４」のＦＣＭＤＢの検索表に対して、Ｃ４のハッシュ値「４１」とクラスタＩＤ「ＣＬ１」とを対応付けて記憶するように制御する。
【００４４】
また、ＦＣＭＤＢ１０は、登録対象のリレーションシップのソースまたはターゲットとなるＣＩがすでに存在するが、クラスタ「ＣＬ１」のサイズがクラスタ上限サイズを超えてしまう場合には、そのＣＩの属するクラスタに登録対象を追加しない。ここで、新規クラスタに情報を追加する処理について図９を用いて、説明する。図９は、新規クラスタを追加する処理を説明するための図である。図９に示すように、登録対象であるＣＩ「Ｃ４」、リレーションシップ「Ｒ３」の登録要求を受け付けると、クラスタ検索表記憶部１２が保持するクラスタ検索表で検索対象を検索し、登録対象が属するクラスタがすでにＦＣＭＤＢに存在するか判定する。
【００４５】
この結果、登録を受け付けたＦＣＭＤＢ１０は、登録対象の属するクラスタ「ＣＬ１」がＦＣＭＤＢ「１」に存在すると判定されたが、Ｃ４およびＲ３をクラスタ「ＣＬ１」に追加すると、クラスタ「ＣＬ１」のサイズがクラスタ上限サイズを超えてしまう。この場合には、登録を受け付けたＦＣＭＤＢ１０は、新規クラスタ「ＣＬ２」にＣ４およびＲ３を登録し、クラスタ「ＣＬ１」にＲ３のレプリカを登録する。つまり、クラスタのエッジとなるリレーションシップのみレプリカを持たせることで、記憶領域の使用量を抑えつつ、検索処理の高速化を実現する。
【００４６】
図２の説明に戻って、データ検索サービス受付部１７は、ＣＩまたはリレーションシップを検索対象とした検索要求を受け付けた場合に、検索対象を含むクラスタの格納先を特定し、クラスタの格納先から検索対象のＣＩまたはリレーションシップを検索する。
【００４７】
具体的には、データ検索サービス受付部１７は、検索要求であるクエリ式をクライアント端末から受け付けた場合には、クエリの先頭のＣＩのハッシュ値を計算し、そのハッシュ値を担当するＦＣＭＤＢのクラスタ検索表からハッシュ値に対応するクラスタＩＤを取得する。続いて、データ検索サービス受付部１７は、ＦＣＭＤＢ検索表からクラスタＩＤに対応するＦＣＭＤＢ  ＩＤを取得し、そのＦＣＭＤＢ  ＩＤのＦＣＭＤＢに対してクエリを発行する。
【００４８】
そして、クエリを受け付けたＦＣＭＤＢがクエリを処理し、検索要求を受け付けたＦＣＭＤＢにクエリの結果を返す。ここで、クエリを受け付けたＦＣＭＤＢは、接続関係にあるＣＩまたはリレーションシップの一群であるクラスタを保持するので、サブクエリを発行することなくクエリを処理することができる。その後、検索要求を受け付けたＦＣＭＤＢのデータ検索サービス受付部１７は、クエリの結果を受信すると、クエリの結果を検索結果としてクライアント端末に出力する。
【００４９】
ここで、図１０の例を用いて検索処理について説明する。図１０は、同一ＦＣＭＤＢ内で検索が終了する検索処理を説明するための図である。図１０に示すように、ＦＣＭＤＢ「５」は、検索要求であるクエリ式「％Ｃ１／＆Ｒ１／％Ｃ２／＆Ｒ２／％Ｃ３」をクライアント端末から受け付けた場合には、クエリの先頭のＣＩ「Ｃ１」について、ハッシュ値「４９」を算出し、ＦＣＭＤＢ「４」のクラスタ検索表からハッシュ値に対応するクラスタＩＤ「１」を取得する。続いて、ＦＣＭＤＢ「５」は、ＦＣＭＤＢ検索表からクラスタＩＤ「１」に対応するＦＣＭＤＢ  ＩＤ「１」を取得し、そのＦＣＭＤＢ  ＩＤ「１」のＦＣＭＤＢに対してクエリを発行する。
【００５０】
そして、クエリを受け付けたＦＣＭＤＢ「１」は、クエリを処理し、検索要求を受け付けたＦＣＭＤＢ「５」にクエリの結果を返す。その後、検索要求を受け付けたＦＣＭＤＢ「５」は、クエリの結果を受信すると、クエリの結果を検索結果としてクライアント端末に出力する。このように、ＦＣＭＤＢ「１」がサブクエリを発行することなく検索処理を完了し、検索結果であるＣＩ「Ｃ３」を得ることができるので、高速な検索処理を実現することができる。
【００５１】
また、ＦＣＭＤＢは、クラスタをまたがったクエリを行う場合がある。このような場合におけるＦＣＭＦＢの検索処理について、図１１を用いて説明する。図１１は、ＦＣＭＤＢをまたがった検索処理を説明するための図である。図１１に示すように、ＦＣＭＤＢ「５」は、検索要求であるクエリ式「％Ｃ１／＆Ｒ３／％Ｃ４」をクライアント端末から受け付けた場合には、クエリの先頭のＣＩ「Ｃ１」について、ハッシュ値「４９」を算出し、ＦＣＭＤＢ「４」のクラスタ検索表からハッシュ値に対応するクラスタＩＤ「１」を取得する。続いて、ＦＣＭＤＢ「５」は、ＦＣＭＤＢ検索表からクラスタＩＤ「１」に対応するＦＣＭＤＢ  ＩＤ「１」を取得し、そのＦＣＭＤＢ  ＩＤ「１」のＦＣＭＤＢに対してクエリを発行する。
【００５２】
そして、クエリを受け付けたＦＣＭＤＢ「１」は、クエリ式に従って探索を行い、Ｒ３の先がクラスタ「ＣＬ１」に存在しないので、クエリ式の「％Ｃ４」以下のクエリを分割してサブクエリとする。続いて、ＦＣＭＤＢ「１」は、サブクエリの先頭のＣＩ「Ｃ４」について、ハッシュ値「４１」を算出し、ＦＣＭＤＢ「４」のクラスタ検索表からハッシュ値に対応するクラスタＩＤ「２」を取得する。続いて、ＦＣＭＤＢ「１」は、ＦＣＭＤＢ検索表からクラスタＩＤ「２」に対応するＦＣＭＤＢ  ＩＤ「２」を取得し、そのＦＣＭＤＢ  ＩＤ「２」のＦＣＭＤＢに対してサブクエリを発行する。
【００５３】
そして、サブクエリを受け付けたＦＣＭＤＢ「２」は、サブクエリ処理を行ってクエリの結果であるＣ４を検索し、ＦＣＭＤＢ「１」を介して、ＦＣＭＤＢ「５」にＣ４を送信する。そして、ＦＣＭＤＢ「５」は、クエリの結果であるＣ４を受信すると、クエリの結果を検索結果としてクライアント端末に出力する。
【００５４】
クラスタ最適化実行部１５は、クラスタの再配置、統合、分割を実行する。具体的には、クラスタ最適化実行部１５は、クラスタの再配置処理として、参照回数記憶部１６によって記憶されたクラスタ参照回数表における参照回数をＦＣＭＤＢ  ＩＤごとに集計する。そして、各ＦＣＭＤＢ  ＩＤごとの参照回数合計が所定の閾値以上であって、かつ、そのクラスタの位置するＦＣＭＤＢ  ＩＤと参照回数が多かったＦＣＭＤＢとが異なる場合には、参照回数が多かったＦＣＭＤＢにクラスタを移動して再配置する。
【００５５】
例えば、図１２の例を用いてクラスタの再配置処理について説明する。図１２は、クラスタの再配置処理を説明するための図である。図１２に示すように、ＦＣＭＤＢ２は、クラスタＣＬ２のクラスタ参照回数表における参照回数をＦＣＭＤＢ  ＩＤごとに集計する。そして、ＦＣＭＤＢ２は、ＦＣＭＤＢ  ＩＤが「１」の参照回数合計が閾値「１００」以上であって、かつ、そのクラスタの位置するＦＣＭＤＢ  ＩＤ「２」と参照回数が多かったＦＣＭＤＢ「１」とが異なると判定し、参照回数が多かったＦＣＭＤＢ「１」にクラスタをコピーする。そして、ＦＣＭＤＢ２は、クラスタＣＬ２とＦＣＭＤＢ  ＩＤ「１」とを対応付けて記憶するようにＦＣＭＤＢノード検索表を修正し、クラスタＣＬ２のデータを削除する。
【００５６】
また、クラスタ最適化実行部１５は、クラスタの統合処理として、参照回数記憶部１６によって記憶されたクラスタ参照回数表における参照回数合計が所定の閾値以上であり、かつ、クラスタが同一のＦＣＭＤＢに保持されている場合には、クラスタ同士を統合する。
【００５７】
例えば、図１３の例を用いてクラスタの統合処理について説明する。図１３は、クラスタの統合処理を説明するための図である。図１３に示すように、ＦＣＭＤＢ１は、クラスタＣＬ２のクラスタ参照回数表における参照回数をＦＣＭＤＢ  ＩＤごとに集計する。そして、ＦＣＭＤＢ１は、ＦＣＭＤＢ  ＩＤが「１」の参照回数合計が閾値以上であって、かつ、そのクラスタの位置するＦＣＭＤＢ  ＩＤ「１」と参照回数が多かったＦＣＭＤＢ「１」とが同じであると判定する。
【００５８】
この場合に、ＦＣＭＤＢ１は、クラスタＣＬ１にクラスタＣＬ２の要素を追加するとともに、クラスタ検索表にあるクラスタＩＤがＣＬ２のデータをＣＬ１に修正する。そして、ＦＣＭＤＢ１は、ＦＣＭＤＢノード検索表にあるクラスタＩＤがＣＬ２のデータを削除するとともに、クラスタＣＬ２のデータを削除する。つまり、参照回数が大きいクラスタ間は強く関係するもとみなし、同一のクラスタに統合する。
【００５９】
また、クラスタ最適化実行部１５は、クラスタ統合後、クラスタのサイズがクラスタ上限サイズを超えている場合には、クラスタ内のリレーションシップの参照回数に基づいて分割する。ここで、参照回数とは、各リレーションシップについて、クエリの処理で参照された回数である。例えば、クラスタ最適化実行部１５は、クラスタ内のＣＩについて、接続されたリレーションシップの参照回数の合計が大きいＣＩを選択する。そして、クラスタ最適化実行部１５は、選択されたＣＩから参照回数の大きいリレーションシップの順にリレーションシップおよびＣＩを追加していき、ＣＩ数がクラスタ上限サイズを超えない範囲で選択したものを新たなクラスタとする。
【００６０】
ここで、図１４の例を用いてクラスタの分割処理について説明する。図１４は、クラスタの分割処理を説明するための図である。図１４の例では、クラスタ上限サイズを「３」とする。また、図１４の例では、リレーションシップＲ１の参照回数が「２０」であり、リレーションシップＲ２の参照回数が「２５」であり、リレーションＲ３の参照回数が「１０」であるものとする。このため、図１４の例では、クラスタ内における各ＣＩであるＣ１〜Ｃ４に接続されたリレーションシップの参照回数の合計について、Ｃ１が「３０」、Ｃ２が「４５」、Ｃ３が「２５」、Ｃ４が「１０」となる。
【００６１】
そして、クラスタ最適化実行部１５は、接続されたリレーションシップの参照回数の合計が最も大きい「Ｃ２」を選択し、選択された「Ｃ２」から参照回数の大きいリレーションシップであるＲ２およびＣ３、Ｒ１およびＣ１の順に追加する。そして、クラスタ最適化実行部１５は、ＣＩ数がクラスタサイズの上限「３」に到達するため、Ｃ１、Ｒ１、Ｃ２、Ｒ２、Ｃ３およびＲ３のレプリカを新たなクラスタＣＬ３とし、Ｃ４およびＲ３をクラスタＣＬ４として分割する。
【００６２】
また、クラスタ最適化実行部１５は、上記の分割処理を行う前であってクラスタ統合後に、サブクエリ数の削減効果に応じて、クラスタ上限サイズを調整する。例えば、クラスタ最適化実行部１５は、サイズ増加率よりもサブクエリ数改善率の方が大きいか判定し、サイズ増加率よりもサブクエリ数改善率の方が大きい場合には、クラスタ上限サイズを大きくする。また、クラスタ最適化実行部１５は、サイズ増加率よりもサブクエリ数改善率の方が大きくない場合には、クラスタ上限サイズを小さくする。ここで、サイズ増加率とは、クラスタ統合後のサイズをクラスタ統合前のサイズで除算した値であり、サブクエリ数改善率とは、統合後のサブクエリ数を統合前のサブクエリ数で除算した値である。
【００６３】
ここで、図１５の例を用いてクラスタ上限サイズ決定処理について説明する。図１５は、クラスタ上限サイズ決定処理を説明するための図である。図１５の例では、クラスタＣＬ３の初期状態は、クラスタのサイズｓｂが「３」であり、クラスタ上限サイズが「３」であるものとする。そして、統合クラスタが統合された結果、クラスタのサイズｓｂが「４」であり、統合前サイズｓａが「３」となり、サイズ増加率ｓｂ／ｓａ＝１．３３となる。また、統合前平均サブクエリｑａが「２．２」であり、平均サブクエリｑｂが「１．５」であり、サブクエリ数改善率ｑａ／ｑｂ＝１．４７となる。そして、ＦＣＭＤＢは、サイズ増加率ｓｂ／ｓａ「１．３３」とサブクエリ数改善率ｑａ／ｑｂ「１．４７」とを比較し、サイズ増加率よりもサブクエリ数改善率の方が大きいと判定し、クラスタ上限サイズ「３」を統合後のクラスタサイズである「４」に調整する。
【００６４】
さらに、統合クラスタが統合された結果、クラスタのサイズｓｂが「６」であり、統合前サイズｓａが「４」となり、サイズ増加率ｓｂ／ｓａ＝１．５となる。また、統合前平均サブクエリｑａが「１．５」であり、平均サブクエリｑｂが「１．３」であり、サブクエリ数改善率ｑａ／ｑｂ＝１．１５となる。そして、ＦＣＭＤＢは、サイズ増加率ｓｂ／ｓａ「１．５」とサブクエリ数改善率ｑａ／ｑｂ「１．１５」とを比較し、サイズ増加率よりもサブクエリ数改善率の方が小さいと判定し、クラスタ上限サイズ「４」統合前サイズの「４」のままとする。この場合には、ＦＣＭＤＢは、クラスタのサイズがクラスタ上限サイズを超えているので、上記した分割処理を実行する。
【００６５】
上記のように、関連が高いＣＩおよびリレーションシップ群を登録するので、図１６に示すように、例えば、ＦＣＭＤＢ１における同一クラスタ内のＣ１からＣ２への探索を行う場合に、サブクエリを最低１回発行するだけよい。また、各ＦＣＭＤＢにＣＩまたはリレーションシップのレプリカを格納しないので、データ量が少なくてよい。図１６は、各ＦＣＮＤＢに記憶されるクラスタと検索に必要なサブクエリとの関係を説明するための図である。
【００６６】
［ＦＣＭＤＢによる処理］
次に、図１７〜図２３を用いて、実施例２に係るＦＣＭＤＢ１０による処理を説明する。図１７は、登録処理を説明するためのフローチャートである。図１８−１および図１８−２は、検索処理を説明するためのフローチャートである。図１９は、クラスタの再配置処理または統合処理の実行を判断する処理を説明するためのフローチャートである。図２０は、クラスタの再配置処理を説明するためのフローチャートである。図２１は、クラスタの統合処理を説明するためのフローチャートである。図２２は、クラスタの分割処理を説明するためのフローチャートである。図２３は、クラスタの上限サイズを決定する処理を説明するためのフローチャートである。
【００６７】
図１７に示すように、ＦＣＭＤＢ１０は、ＣＩ／リレーションシップ群を受信すると（ステップＳ１０１）、受信したリレーションシップのｓｏｕｒｃｅまたはｔａｒｇｅｔとなるＣＩをクラスタ検索表で検索する（ステップＳ１０２）。そして、ＦＣＭＤＢ１０は、検索の結果、クラスタ検索表からｓｏｕｒｃｅまたはｔａｒｇｅｔとなるＣＩを発見したか判定する（ステップＳ１０３）。
【００６８】
この結果、ＦＣＭＤＢ１０は、クラスタ検索表からｓｏｕｒｃｅまたはｔａｒｇｅｔとなるＣＩを発見しなかった場合には、ＣＩ／リレーションシップ群の振り分け先ＦＣＭＤＢ（ｆ）をランダムに決定する（ステップＳ１０４）。そして、ＦＣＭＤＢ１０は、振り分け先ＦＣＭＤＢ（ｆ）と現時刻から、一意のクラスタＩＤ（ｃ）を作成する（ステップＳ１０５）。
【００６９】
そして、ＦＣＭＤＢ１０は、ＦＣＭＤＢ（ｆ）にクラスタＩＤ（ｃ）としてＣＩ／リレーションシップ群を登録し（ステップＳ１０９）、ＣＩ／リレーションシップごとのハッシュ値をクラスタ検索表に登録する（ステップＳ１１０）。その後、ＦＣＭＤＢ１０は、クラスタ（ｃ）を新規追加したか判定し（ステップＳ１１１）、クラスタ（ｃ）を新規追加していないと判定された場合には、処理を終了する。また、ＦＣＭＤＢ１０は、クラスタ（ｃ）を新規追加したと判定された場合には、ＦＣＭＤＢ検索表に、クラスタＩＤ（ｃ）と、ＦＣＭＤＢのＩＤ（ｆ）とを対応付けて追加する（ステップＳ１１２）。
【００７０】
また、ステップＳ１０３に戻って、ＦＣＭＤＢ１０は、クラスタ検索表からｓｏｕｒｃｅまたはｔａｒｇｅｔとなるＣＩを発見した場合には、発見されたクラスタのＩＤ（ｃ）を取得する（ステップＳ１０６）。そして、ＦＣＭＤＢ１０は、ＦＣＭＤＢ検索表から、クラスタ（ｃ）が登録されたＦＣＭＤＢ（ｆ）を取得する（ステップＳ１０７）。その後、ＦＣＭＤＢ１０は、クラスタ（ｃ）以外のクラスタが有するＣＩをｓｏｕｒｃｅまたはｔａｒｇｅｔとするリレーションシップについて、各々ＣＩのクラスタＩＤ、ＦＣＭＤＢを調べ、リレーションシップのレプリカを追加する。（ステップＳ１０８）。
【００７１】
そして、ＦＣＭＤＢ１０は、ＦＣＭＤＢ（ｆ）にクラスタＩＤ（ｃ）としてＣＩ／リレーションシップ群を登録し（ステップＳ１０９）、ＣＩ／リレーションシップごとのハッシュ値をクラスタ検索表に登録する（ステップＳ１１０）。その後、ＦＣＭＤＢ１０は、クラスタ（ｃ）を新規追加したか判定し（ステップＳ１１１）、クラスタ（ｃ）を新規追加していないと判定された場合には、処理を終了する。また、ＦＣＭＤＢ１０は、クラスタ（ｃ）を新規追加したと判定された場合には、ＦＣＭＤＢ検索表に、クラスタＩＤ（ｃ）と、ＦＣＭＤＢのＩＤ（ｆ）とを対応付けて追加する（ステップＳ１１２）。
【００７２】
次に、図１８−１および図１８−２を用いて検索処理の処理手順を説明する。図１８−１に示すように、ＦＣＭＤＢ１０は、クエリ対象クラスタのＩＤが（ｃ）で、呼び出し元クラスタのＩＤが（ｏ）であるクエリを受信する（ステップＳ２０１）。そして、ＦＣＭＤＢ１０は、クラスタ参照回数表を更新し（ステップＳ２０２）、受信されたクエリの処理を実行する（ステップＳ２０３）。
【００７３】
続いて、ＦＣＭＤＢ１０は、リレーションシップ参照回数を更新し（ステップＳ２０４）、受信されたクエリの処理を最後まで実行したか判定する（ステップＳ２０５）。この結果、ＦＣＭＤＢ１０は、ＦＣＭＤＢ１０は、受信されたクエリの処理を最後まで実行した場合には、ステップＳ２１１に進む。また、受信されたクエリの処理を最後まで実行していない場合には、終了していない部分から先をサブクエリとする（ステップＳ２０６）。
【００７４】
そして、ＦＣＭＤＢ１０は、サブクエリの最初のＣＩを取り出し、ハッシュ値（ｈ）を計算し（ステップＳ２０７）、クラスタ検索表からハッシュ値（ｈ）をもとにクラスタＩＤ（ｃ）を取得する（ステップＳ２０８）。続いて、ＦＣＭＤＢ１０は、ＦＣＭＤＢ検索表からクラスタＩＤ（ｃ）をもとにＦＣＭＤＢＩＤ（ｆ）を取得し（ステップＳ２０９）、ＦＣＭＤＢ（ｆ）へクエリを送信する（ステップＳ２１０）。そして、クエリを受信したＦＣＭＤＢは、ステップＳ２０１の処理を開始する。
【００７５】
その後、ＦＣＭＤＢ１０は、自装置がクライアントからクエリを受信したＦＣＭＤＢか判定し（ステップＳ２１１）、自装置がクエリを受信したＦＣＭＤＢである場合には、クエリの結果を取得する（ステップＳ２１２）。そして、ＦＣＭＤＢ１０は、クラスタ統計情報を更新し（ステップＳ２１３）、クライアントにクエリの結果を返す（ステップＳ２１４）。また、ＦＣＭＤＢ１０は、自装置がクエリを受信したＦＣＭＤＢでない場合には、クエリの結果を検索要求を受け付けたＦＣＭＤＢへ送信し（ステップＳ２１５）、クラスタ統計情報を更新する（ステップＳ２１６）。
【００７６】
次に、図１９を用いて、クラスタの再配置処理または統合処理の実行を判断する処理を説明する。図１９に示すように、ＦＣＭＤＢ１０は、クラスタ（ｃ）に対するクラスタ参照回数を各クラスタが属するＦＣＭＤＢごとに集計する（ステップＳ３０１）。そして、ＦＣＭＤＢ１０は、クラスタ（ｃ）に対するクラスタ参照回数が最も大きいＦＣＭＤＢ（ｔ）を特定する（ステップＳ３０２）。
【００７７】
そして、ＦＣＭＤＢ１０は、ＦＣＭＤＢ検索表から、クラスタ（ｃ）が記憶されたＦＣＭＤＢ（ｆ）を取得する（ステップＳ３０３）。そして、ＦＣＭＤＢ（ｔ）とＦＣＭＤＢ（ｆ）とが同一であるか判定し（ステップＳ３０４）、ＦＣＭＤＢ（ｔ）とＦＣＭＤＢ（ｆ）とが同一でない場合には、クラスタの再配置処理（後に、図２０を用いて詳述）を行う（ステップＳ３０５）。また、ＦＣＭＤＢ１０は、ＦＣＭＤＢ（ｔ）とＦＣＭＤＢ（ｆ）とが同一である場合には、クラスタの統合処理（後に、図２１を用いて詳述）を行う（ステップＳ３０６）。
【００７８】
次に、図２０を用いて、クラスタの再配置処理を説明する。図２０に示すように、ＦＣＭＤＢ１０は、登録先ＦＣＭＤＢをｔとして、クラスタ（ｃ）のＣＩ／リレーションシップを登録し（ステップＳ３０７）、クラスタ分割処理（後に図２２を用いて後述）に移行した後、ＦＣＭＤＢ検索表のうちクラスタ（ｃ）を記憶するＦＣＭＤＢ（ｆ）をＦＣＭＤＢ（ｔ）へ修正する（ステップＳ３０８）。その後、ＦＣＭＤＢは、ＦＣＭＤＢ（ｆ）に記憶された元々のクラスタ（ｃ）を削除して（ステップＳ３０９）、処理を終了する。
【００７９】
次に、図２１を用いて、クラスタの統合処理を説明する。図２１に示すように、ＦＣＭＤＢ１０は、ＦＣＭＤＢ（ｆ）に記憶されたクラスタのうち、クラスタ参照回数が最も大きなクラスタ（ｄ）を取得する（ステップＳ３１０）。そして、ＦＣＭＤＢ１０は、クラスタ（ｄ）のクラスタ統計情報のうち、統合前のサイズを現在のサイズに更新し、統合前平均サブクエリ数をサブクエリ数／クエリ数に更新する（ステップＳ３１１）。
【００８０】
その後、ＦＣＭＤＢ１０は、クラスタ（ｃ）のＣＩ／Ｒｅｌａｔｏｐｍｓｈｉｐをクラスタ（ｄ）に登録し（ステップＳ３１２）、ステップＳ１０９に移行して登録処理を行う。その後、ＦＣＭＤＢ１０は、ＦＣＭＤＢ検索表からクラスタ（ｃ）を削除し（ステップＳ３１３）、ＦＣＭＤＢ（ｆ）に記憶されたクラスタ（ｃ）を削除して（ステップＳ３１４）、処理を終了する。
【００８１】
次に、図２２を用いて、クラスタの分割処理を説明する。図２２に示すように、ＦＣＭＤＢは、クラスタ（ｃ）のサイズＳとクラスタ上限サイズＵを判定する（ステップＳ４０１）。この結果、クラスタ（ｃ）のサイズＳがクラスタ上限サイズＵよりも大きいか判定する（ステップＳ４０２）。この結果、ＦＣＭＤＢ１０は、クラスタ（ｃ）のサイズＳがクラスタ上限サイズＵよりも大きくない場合には、クラスタの分割処理を終了する。
【００８２】
また、ＦＣＭＤＢ１０は、クラスタ（ｃ）のサイズＳがクラスタ上限サイズＵよりも大きい場合には、クラスタ（ｃ）内のＣＩごとに、そのＣＩをｓｏｕｒｃｅまたはｔａｒｇｅｔとするリレーションシップの参照回数の合計を計算する（ステップＳ４０３）。そして、ＦＣＭＤＢ１０は、新たなクラスタ候補としてクラスタ（ｄ）を作成し（ステップＳ４０４）、クラスタ候補リストＬに追加しておらず、リレーションシップの参照回数の大きい順にＣＩ（ｘ）を一つ取り出す（ステップＳ４０５）。
【００８３】
続いて、ＦＣＭＤＢ１０は、ＣＩ（ｘ）をクラスタ（ｄ）に追加し（ステップＳ４０６）、クラスタ（ｄ）に追加された各ＣＩをｓｏｕｒｃｅまたはｔａｒｇｅｔとするリレーションシップの一群（Ｒ）を選択する（ステップＳ４０７）。そして、ＦＣＭＤＢ１０は、Ｒのサイズが０よりも大きいか判定する（ステップＳ４０８）。その後、ＦＣＭＤＢ１０は、Ｒのサイズが０よりも大きい場合には、Ｒｌａｔｉｏｎｓｈｉｐ群（Ｒ）のうち、ＣＩ（ｘ）を起点としてリレーションシップ経路の参照回数の合計が最大となるようなリレーションシップ（ｑ）とそれにつながるＣＩ（ｙ）とをクラスタ（ｄ）に追加する（ステップＳ４０９）。
【００８４】
そして、ＦＣＭＤＢ１０は、クラスタ（ｄ）のサイズがクラスタ上限サイズＵに１を減算した値Ｕ−１よりも大きいか判定し（ステップＳ４１０）、クラスタ（ｄ）のサイズがＵ−１よりも大きくない場合には、ステップＳ４０７の処理に戻る。また、ＦＣＭＤＢ１０は、クラスタ（ｄ）のサイズがＵ−１よりも大きい場合には、クラスタ（ｄ）をクラスタ候補リストＬに追加し（ステップＳ４１１）、まだクラスタ（ｃ）に追加されていないＣＩが存在するか判定する（ステップＳ４１２）。
【００８５】
この結果、ＦＣＭＤＢ１０は、まだクラスタ（ｃ）に追加されていないＣＩが存在する場合には、ステップＳ４０４の処理に戻る。また、ＦＣＭＤＢ１０は、クラスタ（ｃ）に追加されていないＣＩが存在しない場合には、クラスタ候補リストＬ内のクラスタについて、まだ登録されていないクラスタを一つ取り出す（ステップＳ４１３）。そして、ＦＣＭＤＢ１０は、ステップＳ１０４の処理に移行して、登録処理を行い、クラスタ候補リストＬ内に未追加のクラスタはあるか判定する（ステップＳ４１４）。この結果、ＦＣＭＤＢ１０は、クラスタ候補リストＬ内に未追加のクラスタはある場合には、ステップＳ４１３に戻る。また、ＦＣＭＤＢ１０は、クラスタ候補リストＬ内に未追加のクラスタはある場合には、処理を終了する。
【００８６】
次に、図２３を用いて。クラスタの上限サイズを決定する処理を説明する。図２３に示すように、ＦＣＭＤＢ１０は、クラスタの統計情報を取得する（ステップＳ５０１）。ここでクラスタの統計情報とは、クラスタのサイズ、クラスタの結合前のサイズ、統合前平均サブクエリ数、サブクエリ数、クエリ数、クラスタ上限サイズ、クラスタ最大サイズのことをいう。
【００８７】
そして、ＦＣＭＤＢ１０は、サイズ変化率αを算出し（ステップＳ５０２）、サブクエリ改善率βを算出する（ステップＳ５０３）。続いて、ＦＣＭＤＢ１０は、サブクエリ改善率βがサイズ変化率αよりも大きいか判定し（ステップＳ５０４）、サブクエリ改善率βがサイズ変化率αよりも大きくない場合には、クラスタ上限サイズＵを結合前サイズｓｂと同じ値になるよう調整する（ステップ５０７）。
【００８８】
また、ＦＣＭＤＢ１０は、サブクエリ改善率βがサイズ変化率αよりも大きい場合には、クラスタ最大サイズＭがクラスタサイズｓａよりも大きいか判定する（ステップＳ５０５）。この結果、ＦＣＭＤＢ１０は、クラスタ最大サイズＭがクラスタサイズｓａよりも大きい場合には、クラスタ上限サイズＵをクラスタサイズｓａと同じ値になるよう調整して（ステップＳ５０６）、処理を終了する。また、ＦＣＭＤＢ１０は、クラスタ最大サイズＭがクラスタサイズｓａよりも大きくない場合には、クラスタ上限サイズＵをクラスタ最大サイズＭと同じ値に調整して（ステップＳ５０８）、処理を終了する。
【００８９】
[実施例２の効果]
上述してきたように、ＦＣＭＤＢ１０は、管理対象に関する情報を示すＣＩとＣＩ間の接続関係に関する情報を示すリレーションシップとを他のＦＣＭＤＢと分散して記憶するローカルデータ記憶部１４を有する。そして、ＦＣＭＤＢ１０は、接続関係にあるＣＩおよびリレーションシップの一群であるクラスタについて登録要求を受け付けた場合に、クラスタの格納先を決定し、ローカルデータ記憶部１４または他のＦＣＭＤＢに格納するように制御する。そして、ＦＣＭＤＢ１０は、ＣＩまたはリレーションシップを検索対象とした検索要求を受け付けた場合に、検索対象を含むクラスタの格納先を特定し、クラスタの格納先から検索対象のＣＩまたはリレーションシップを検索する。このため、検索処理時のＦＣＭＤＢ間の通信回数を減らし、検索処理の高速化を実現することが可能である。
【００９０】
また、実施例２によれば、ＦＣＭＤＢ１０は、検索処理において複数のクラスタ間をまたいで参照回数が所定の閾値以上であって、かつ、複数のクラスタそれぞれが異なるＦＣＭＤＢに格納されている場合には、複数のクラスタが格納されるＦＣＭＤＢが同じになるように再配置する。このため、参照回数からクラスタ間をまたがった検索であるサブクエリが発生する回数が多いクラスタ同士を同じるＦＣＭＤＢに格納することで、ネットワーク経由のサブクエリを低減し、検索処理の高速化を実現することが可能である。
【００９１】
また、実施例２によれば、ＦＣＭＤＢ１０は、検索処理において複数のクラスタ間をまたいで参照した回数が所定の閾値以上であって、かつ、複数のクラスタが同じＦＣＭＤＢに格納されている場合には、クラスタ同士を統合する。このため、参照回数からクラスタ間をまたがった検索であるサブクエリが発生する回数が多いクラスタ同士を一つのクラスタとすることで、ネットワーク経由のサブクエリを低減し、検索処理の高速化を実現することが可能である。
【００９２】
また、実施例２によれば、ＦＣＭＤＢ１０は、クラスタに含まれるＣＩおよびリレーションシップの数がクラスタ上限サイズ以上である場合には、クラスタ内のリレーションシップが検索処理時に参照された回数を用いて、クラスタを分割する。このため、大きくなりすぎたクラスタの大きさを最適化させることで、クエリの分散に役立ち、関連検索を高速化することが可能である。
【００９３】
また、実施例２によれば、ＦＣＭＤＢ１０は、クラスタ間をまたいだ検索処理の回数の削減数とクラスタに含まれるＣＩおよびリレーションシップの増加数との関係に応じて、クラスタ上限サイズを設定する。このため、クラスタの上限サイズをサブクエリの削減度合いに応じて調整することで、サブクエリを削減しつつ、クエリの分散に役立ち、関連検索を高速化することが可能である。
【実施例３】
【００９４】
さて、これまで実施例１、２について説明したが、本実施例は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【００９５】
（１）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、データ登録サービス処理部１１とクラスタ検索表記憶部１２を統合してもよい。
【００９６】
（２）プログラム
なお、本実施例で説明した分散情報管理方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００９７】
１Ａ、１Ｂ  構成情報管理装置
２  構成情報記憶部
３  格納制御部
４  検索処理部
１０  ＦＣＭＤＢ
１１  データ登録サービス処理部
１２  クラスタ検索表記憶部
１３  ＦＣＭＤＢ検索表記憶部
１４  ローカルデータ記憶部
１５  クラスタ最適化実行部
１６  参照回数記憶部
１７  データ検索サービス受付部
１８  ＦＣＭＤＢ間データ送受信部
【図１】
0005402667.tif 000002
【図２】
0005402667.tif 000003
【図３】
0005402667.tif 000004
【図４】
0005402667.tif 000005
【図５】
0005402667.tif 000006
【図６】
0005402667.tif 000007
【図７】
0005402667.tif 000008
【図８】
0005402667.tif 000009
【図９】
0005402667.tif 000010
【図１０】
0005402667.tif 000011
【図１１】
0005402667.tif 000012
【図１２】
0005402667.tif 000013
【図１３】
0005402667.tif 000014
【図１４】
0005402667.tif 000015
【図１５】
0005402667.tif 000016
【図１６】
0005402667.tif 000017
【図１７】
0005402667.tif 000018
【図１８−１】
0005402667.tif 000019
【図１８−２】
0005402667.tif 000020
【図１９】
0005402667.tif 000021
【図２０】
0005402667.tif 000022
【図２１】
0005402667.tif 000023
【図２２】
0005402667.tif 000024
【図２３】
0005402667.tif 000025
【図２４】
0005402667.tif 000026
【図２５】
0005402667.tif 000027
【図２６】
0005402667.tif 000028
【図２７】
0005402667.tif 000029