(57)【要約】  プロセッサとメモリを備えて複数の検索実行計算機に接続された管理計算機で、データ内容とデータ内容を接続する関係性を保持し、当該関係性により接続されるデータ群で構成されるグラフ構造データを受け付けて、複数の検索実行計算機に分配する分散管理部と、検索条件を受け付けたときには、前記複数の検索実行計算機に前記検索条件を送信し、複数の検索実行計算機からの検索結果を受信する分散検索部と、を備え、前記分散管理部は、前記関係性が一致するグラフ構造データをグループ化して、当該グループに属するグラフ構造データを分割して前記複数の検索実行計算機に配置し、前記分散検索部は、前記データ間の関係性の検索条件と、前記データ内容の検索条件とを含む検索条件を前記複数の検索実行計算機にそれぞれ送信して、並列して検索を実行させる。
2013175611.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを備えた管理計算機と、
プロセッサとメモリを備えた検索実行計算機と、
前記管理計算機と複数の前記検索実行計算機を接続するネットワークとを備えたデータの分散検索システムであって、
前記管理計算機は、
データ内容とデータ内容を接続する関係性を保持し、当該関係性により接続されるデータ群で構成されるグラフ構造データを受け付けて、前記複数の検索実行計算機に分配する分散管理部と、
検索条件を受け付けたときには、前記複数の検索実行計算機に前記検索条件を送信し、前記複数の検索実行計算機からの検索結果をそれぞれ受信する分散検索部と、を有し、
前記検索実行計算機は、
前記管理計算機から受信したグラフ構造データを格納するグラフ構造データ格納部と、
前記管理計算機から受信した検索条件で前記グラフ構造データの検索を実行し、検索結果を前記管理計算機へ返信する検索実行部と、を有し、
前記管理計算機の分散管理部は、
前記関係性が一致するグラフ構造データをグループ化して、当該グループに属するグラフ構造データを分割して前記複数の検索実行計算機に配置し、
前記管理計算機の分散検索部は、
前記データ間の関係性の検索条件と、前記データ内容の検索条件とを含む検索条件を前記複数の検索実行計算機にそれぞれ送信して、並列して検索を実行させ、
前記検索実行計算機の検索実行部は、
前記データ間の関係性の検索条件が一致するグラフ構造データを解候補として抽出し、前記解候補として抽出されたグラフ構造データに含まれるデータ内容について、前記データ内容の検索条件で条件判定を行って、前記データ内容が前記データ内容の検索条件に一致するデータを検索結果として取得することを特徴とするデータの分散検索システム。
【請求項２】
請求項１に記載のデータの分散検索システムであって、
前記管理計算機の分散管理部は、
前記関係性が一致するグラフ構造データをグループ化する際に、前記関係性の接続先となるデータのデータ内容が、前記データ内容の検索条件で条件判定を行うデータ内容であることを特徴とするデータの分散検索システム。
【請求項３】
請求項１に記載のデータの分散検索システムであって、
前記管理計算機の分散管理部は、
前記関係性が一致するグラフ構造データをグループ化する際に、前記関係性は、前記関係性の接続先となるデータのデータ内容について過去に実施された検索回数を取得し、前記検索回数が第１の閾値以上のデータ内容のデータに接続された関係性であることを特徴とするデータの分散検索システム。
【請求項４】
請求項１に記載のデータの分散検索システムであって、
前記管理計算機の分散管理部は、
前記関係性が一致するグラフ構造データをグループ化する際に、前記複数の検索実行計算機に格納された全てのグラフ構造データに含まれる関係性の数を取得し、前記関係性の数が第２の閾値以上の関係性が一致するグラフ構造データをグループ化することを特徴とするデータの分散検索システム。
【請求項５】
請求項１に記載のデータの分散検索システムであって、
前記管理計算機の分散管理部は、
前記グループ化したグラフ構造データを、前記複数の検索実行計算機に分割して配置する際に、配置対象のグラフ構造データに含まれる関係性と１以上一致する関係性を構成要素とするグループに含まれる全てのグラフ構造データ数が配置されている数が最も少ない検索実行計算機を選択し、当該選択した検索実行計算機に前記配置対象のグラフ構造データを格納することを特徴とするデータの分散検索システム。
【請求項６】
請求項１に記載のデータの分散検索システムであって、
前記管理計算機は、
前記複数の検索実行計算機毎にグラフ構造データに含まれる関係性の数を取得し、前記関係性の数が第３の閾値以上の検索実行計算機が存在する場合には、検索実行計算機の追加とグラフ構造データの再配置を示す情報出力するプランニング部を、さらに備えたことを特徴とするデータの分散検索システム。
【請求項７】
請求項１に記載のデータの分散検索システムであって、
前記グラフ構造データをＲＤＦ形式で表現されるデータとし、
前記検索条件が、ＳＰＡＲＱＬであることを特徴とするデータの分散検索システム。
【請求項８】
請求項１に記載のデータの分散検索システムであって、
前記グラフ構造データは、
前記データ内容が、電子化されたコンテンツデータを含み、
前記関係性と前記関係性により電子化されたコンテンツデータと接続されるデータ内容に、前記電子化されたコンテンツデータから生成されたメタデータを含むことを特徴とするデータの分散検索システム。
【請求項９】
請求項１に記載のデータの分散検索システムであって、
前記検索実行計算機は、
前記グラフ構造データ格納部を有するストレージ装置に接続され、前記複数の検索実行計算機には前記ストレージ装置がそれぞれ占有して割り当てられたことを特徴とするデータの分散検索システム。
【請求項１０】
プロセッサとメモリを備えた管理計算機と、プロセッサとメモリを備えた検索実行計算機と、を備えてグラフ構造データを複数の前記検索実行計算機で検索するデータの分散検索方法であって、
前記管理計算機が、データ内容とデータ内容とを接続する関係性を保持し、当該関係性により接続されるデータ群で構成されるグラフ構造データを受け付ける第１のステップと、
前記管理計算機が、前記グラフ構造データを分割して前記複数の検索実行計算機に分配する第２のステップと、
前記検索実行計算機が、前記管理計算機から受信したグラフ構造データを格納する第３のステップと、
前記管理計算機が、検索条件を受け付けたときには、前記複数の検索実行計算機に前記検索条件を送信する第４のステップと、
前記検索実行計算機が、前記管理計算機から受信した検索条件で前記グラフ構造データの検索を実行し、検索結果を前記管理計算機へ返信する第５のステップと、
前記管理計算機が、前記複数の検索実行計算機からの検索結果をそれぞれ受信する第６のステップと、を含み、
前記第２のステップは、
前記関係性が一致するグラフ構造データをグループ化して、当該グループに属するグラフ構造データを分割して前記複数の検索実行計算機に配置し、
前記第４のステップは、
前記データ間の関係性の検索条件と、前記データ内容の検索条件とを含む検索条件を前記複数の検索実行計算機にそれぞれ送信して、並列して検索を実行させ、
前記第５のステップは、
前記データ間の関係性の検索条件が一致するグラフ構造データを解候補として抽出し、前記解候補として抽出されたグラフ構造データに含まれるデータ内容について、前記データ内容の検索条件で条件判定を行って、前記データ内容が前記データ内容の検索条件に一致するデータを検索結果として取得することを特徴とするデータの分散検索方法。
【請求項１１】
請求項１０に記載のデータの分散検索方法であって、
前記第２のステップは、
前記関係性が一致するグラフ構造データをグループ化する際に、前記関係性の接続先となるデータのデータ内容が、前記データ内容の検索条件で条件判定を行うデータ内容であることを特徴とするデータの分散検索方法。
【請求項１２】
請求項１０に記載のデータの分散検索方法であって、
前記第２のステップは、
前記関係性が一致するグラフ構造データをグループ化する際に、前記関係性は、前記関係性の接続先となるデータのデータ内容について過去に実施された検索回数を取得し、前記検索回数が第１の閾値以上のデータ内容のデータに接続された関係性であることを特徴とするデータの分散検索方法。
【請求項１３】
請求項１０に記載のデータの分散検索方法であって、
前記第２のステップは、
前記関係性が一致するグラフ構造データをグループ化する際に、前記複数の検索実行計算機に格納された全てのグラフ構造データに含まれる関係性の数を取得し、前記関係性の数が第２の閾値以上の関係性が一致するグラフ構造データをグループ化することを特徴とするデータの分散検索方法。
【請求項１４】
請求項１０に記載のデータの分散検索方法であって、
前記第２のステップは、
前記グループ化したグラフ構造データを、前記複数の検索実行計算機に分割して配置する際に、配置対象のグラフ構造データに含まれる関係性と１以上一致する関係性を構成要素とするグループに含まれる全てのグラフ構造データ数が配置されている数が最も少ない検索実行計算機を選択し、当該選択した検索実行計算機に前記配置対象のグラフ構造データを格納することを特徴とするデータの分散検索方法。
【請求項１５】
請求項１０に記載のデータの分散検索方法であって、
前記管理計算機が、前記複数の検索実行計算機毎にグラフ構造データに含まれる関係性の数を取得し、前記関係性の数が第３の閾値以上の検索実行計算機が存在する場合には、検索実行計算機の追加とグラフ構造データの再配置を示す情報出力する第６のステップを、さらに含むことを特徴とするデータの分散検索方法。
【請求項１６】
請求項１０に記載のデータの分散検索方法であって、
前記グラフ構造データをＲＤＦ形式で表現されるデータとし、
前記検索条件が、ＳＰＡＲＱＬであることを特徴とするデータの分散検索方法。
【請求項１７】
請求項１０に記載のデータの分散検索方法であって、
前記グラフ構造データは、
前記データ内容が、電子化されたコンテンツデータを含み、
前記関係性と前記関係性により電子化されたコンテンツデータと接続されるデータ内容に、前記電子化されたコンテンツデータから生成されたメタデータを含むことを特徴とするデータの分散検索方法。
【請求項１８】
請求項１０に記載のデータの分散検索方法であって、
前記検索実行計算機は、前記グラフ構造データを格納するストレージ装置に接続され、前記複数の検索実行計算機には前記ストレージ装置がそれぞれ占有して割り当てられたことを特徴とするデータの分散検索方法。
【請求項１９】
プロセッサとメモリを備えて複数の検索実行計算機に接続された管理計算機であって、
前記管理計算機は、
データ内容とデータ内容を接続する関係性を保持し、当該関係性により接続されるデータ群で構成されるグラフ構造データを受け付けて、前記複数の検索実行計算機に分配する分散管理部と、
検索条件を受け付けたときには、前記複数の検索実行計算機に前記検索条件を送信し、前記複数の検索実行計算機からの検索結果をそれぞれ受信する分散検索部と、を備え、
前記分散管理部は、
前記関係性が一致するグラフ構造データをグループ化して、当該グループに属するグラフ構造データを分割して前記複数の検索実行計算機に配置し、
前記分散検索部は、
前記データ間の関係性の検索条件と、前記データ内容の検索条件とを含む検索条件を前記複数の検索実行計算機にそれぞれ送信して、並列して検索を実行させることを特徴とする管理計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフ構造データを複数の計算機に分散して格納し、並列して検索を行う計算機システムおよび方法の改良に関する。
【背景技術】
【０００２】
複数のデータ間の任意の関係性を表現するためにグラフ構造データが用いられる。グラフ構造データとは、グラフ構造データに含まれるデータが、そのデータの内容と他のデータとの関係性を保持し、関係性によって接続される一連のデータ群である。【０００３】
このグラフ構造データを蓄積して管理するグラフデータベース装置と、グラフデータベースに蓄積されたグラフ構造データから任意のグラフ構造データを抽出するグラフ構造データ検索装置と、が存在する。グラフ構造データ検索装置は、データ内容とデータ間の関係性を条件とし、その条件に一致するグラフ構造データをグラフデータベース装置から抽出する。【０００４】
大量のグラフ構造データに対する検索処理を高速化するためにグラフ構造データを複数のサーバノードに分散して共有し、各サーバノードで検索処理を並列実行する技術が知られている。【０００５】
これら複数のサーバノードで並列実行した検索処理の結果を、管理サーバで受信してマージすることで、全てのグラフ構造データを対象にした検索処理を実行した場合と同じグラフ構造データを含む結果を得ることができる。ただし、グラフ構造データの検索では、データ内容とデータ間の関係性を条件とするため、関係性のあるデータが複数のサーバノードに分散すると、複数のサーバノードで条件の確認が必要になる。複数のサーバノードにおいて条件を確認するために、サーバノード間で通信が発生し処理が遅延する可能性がある。この遅延を防ぐため、非特許文献１には関係性で接続されるデータを同一サーバノードに保持させる技術が開示されている。【０００６】
非特許文献１に記載される技術を用いると、検索時のサーバノード間の通信が不要となり、各サーバノードで必要な検索時間は、各サーバノードに保持されるグラフ構造データからデータ内容とデータ間の関係性で指定された条件に一致するグラフ構造データを抽出する検索処理にかかる時間となる。この場合、各サーバノードで検索処理を並列実行しているため、全ての検索結果を得る時間は、最も検索処理の遅いサーバノードに依存する。また、各サーバノードで処理する検索内容は同一のため、全ての検索結果を得る時間は、各サーバノードで検索処理に関わるグラフ構造データ数に依存することとなる。【０００７】
ここで、検索処理に関わるグラフ構造データについて説明する。一般にデータを検索する場合には、インデックスと呼ばれる索引を用いて一部または全ての検索条件に一致するデータを抽出する。グラフ構造データにおけるインデックスは、データの内容やデータ間の関係性を特定の順番に並べた辞書データである。この辞書データから一部または全部の検索条件に一致するデータ範囲を抽出することで、全てのグラフ構造データを検査することなく目的のグラフ構造データを取得することができる。このとき、一部の検索条件に一致するデータ範囲を抽出した場合は、抽出したデータの範囲を解候補とし、これらの解候補の全てに対して残りの検索条件に一致するか否かを判定する処理が必要となる。この解候補数が検索処理に関わるグラフ構造データ数である。なお、インデックスが存在しない場合には、全てのグラフ構造データが解候補となる。【０００８】
この検索処理に関わるグラフ構造データ数は、検索内容と各サーバノードへのグラフ構造データの配置状態により異なる。そのため、特定のサーバノードにおいて検索処理に関わるグラフ構造データ数が他のサーバノードより多くなると、特定のサーバノードで負荷が高くなり、検索処理が遅延する。このような問題を解決するため特許文献１では、過去の検索内容とその検索処理に関わるデータ数を記憶しておき、検索処理に関わるデータ数が多いサーバノードから少ないサーバノードにデータを再配置し、負荷を分散する方法が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平０６−２５９４７８号公報
【非特許文献】
【００１０】
【非特許文献１】Huang, J., Abadi, D. and Ren, K.、「Scalable SPARQL Querying of Large RDF Graph」、VLDB Endowment Inc.、Vol. 4 (VLDB 2011)
【発明の概要】
【発明が解決しようとする課題】
【００１１】
グラフ構造データの検索が稼働しつづけるシステムに特許文献１の技術を適用する場合、サーバノード間でグラフ構造データを移動して再配置する際の負荷が増大すると、検索処理が遅延する可能性がある。また、上記特許文献１の技術では、過去の検索内容を用いて判断するようになっている。そのため、グラフ構造データを新たに追加する場合には、追加されたグラフ構造データが頻繁に検索されるデータを含むか否かを判定できず、負荷分散のための配置先サーバノードを決定できない、という問題があった。【００１２】
本発明は、グラフ構造データを複数のサーバノードに分散配置して管理するシステムにおいて、検索処理の性能を向上させることを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一態様は、プロセッサとメモリを備えた管理計算機と、プロセッサとメモリを備えた検索実行計算機と、前記管理計算機と複数の前記検索実行計算機を接続するネットワークとを備えたデータの分散検索システムであって、前記管理計算機は、データ間のデータ内容を接続する関係性を保持し、当該関係性により接続されるデータ群で構成されるグラフ構造データを受け付けて、前記複数の検索実行計算機に分配する分散管理部と、検索条件を受け付けたときには、前記複数の検索実行計算機に前記検索条件を送信し、前記複数の検索実行計算機からの検索結果をそれぞれ受信する分散検索部と、を備え、前記検索実行計算機は、前記管理計算機から受信したグラフ構造データを格納するグラフ構造データ格納部と、前記管理計算機から受信した検索条件で前記グラフ構造データの検索を実行し、検索結果を前記管理計算機へ返信する検索実行部と、を備え、前記管理計算機の分散管理部は、前記関係性が一致するグラフ構造データをグループ化して、当該グループに属するグラフ構造データを分割して前記複数の検索実行計算機に配置し、前記管理計算機の分散検索部は、前記データ間の関係性の検索条件と、前記データ内容の検索条件とを含む検索条件を前記複数の検索実行計算機にそれぞれ送信して、並列して検索を実行させ、前記検索実行計算機の検索実行部は、前記データ間の関係性の検索条件が一致するグラフ構造データを解候補として抽出し、前記解候補として抽出されたグラフ構造データに含まれるデータ内容について、前記データ内容の検索条件で条件判定を行って、前記データ内容が前記データ内容の検索条件に一致するデータを検索結果として取得する。
【発明の効果】
【００１４】
本発明の一態様によれば、グラフ構造データを複数のサーバノードに分散配置して管理するシステムの検索処理性能を向上させることができる。上記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施例を示し、グラフ構造データの分散管理及び検索を行う計算機システムの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、グラフ構造データ分散管理部の機能部位の一例を示すブロック図である。
【図３】本発明の第１の実施例を示し、グラフ構造データ分散検索部の機能部位の一例を示すブロック図である。
【図４】本発明の第１の実施例を示し、グラフ構造データ分散管理部で行われるグループ化処理の一例を示すフローチャートである。
【図５】本発明の第１の実施例を示し、グラフ構造データ分散管理部で行われる分散配置処理の一例を示すフローチャートである。
【図６】本発明の第１の実施例を示し、グループ管理表の一例を示す図である。
【図７】本発明の第１の実施例を示し、所属グループ管理表の一例を示す図である。
【図８】本発明の第１の実施例を示し、配置管理表の一例を示す図である。
【図９】本発明の第２の実施例を示し、グラフ構造データ分散管理部で行われるグループ化処理の一例を示すフローチャートである。
【図１０】本発明の第３の実施例を示し、検索実行計算機で行われる条件判定対象のデータ内容に接続される関係性を記憶する処理の一例を示すフローチャートである。
【図１１】本発明の第３の実施例を示し、関係性検索数管理表の一例を示す図である。
【図１２】本発明の第３の実施例を示し、グラフ構造データ分散管理部が、グループ化に利用する関係性を統計情報から抽出する処理の一例を示すフローチャートである。
【図１３】本発明の第３の実施例を示し、関係性検索数管理表の一例を示す図である。
【図１４】本発明の第４の実施例を示し、グラフ構造データ分散管理部が、関係性の出現数を計測する処理の一例を示すフローチャートである。
【図１５】本発明の第４の実施例を示し、関係性出現数管理表の一例を示す図である。
【図１６】本発明の第４の実施例を示し、グラフ構造データ分散管理部が、出現頻度の低い関係性を省いてグラフ構造データをグループ化する処理の一例を示すフローチャートである。
【図１７】本発明の第４の実施例を示し、管理計算機のグラフ構造データ分散管理部の構成を示すブロック図である。
【図１８】本発明の第５の実施例を示し、グラフ構造データ分散管理部が、検索実行計算機にグラフ構造データを分散配置する処理の一例を示すフローチャートである。
【図１９】本発明の第６の実施例を示し、管理計算機の構成の一例を示すブロック図である。
【図２０】本発明の第６の実施例を示し、管理計算機で行われるグラフ構造データのキャパシティ管理処理の一例を示すフローチャートである。
【図２１】本発明の第８の実施例を示し、グラフ構造データの分散管理及び検索を行う計算機システムの一例を示すブロック図である。
【図２２】本発明を適用するグラフ構造データの一例を示す図である。
【図２３】本発明を適用する検索クエリの一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態について図面を用いて詳細に説明する。
【実施例１】
【００１７】
本実施例１では、グラフ構造データを対象として、データの内容とデータ間の関係性を条件とする検索処理を実行する場合に、その条件（データの内容とデータ間の関係性の条件）に該当するグラフ構造データを、検索処理を行うグラフ構造データとしてグループ化する。そして、グラフ構造データのグループを複数の検索実行ノードである検索実行計算機に分散して配置し、検索対象とするグラフ構造データ分散管理及び検索システムの例を説明する。本実施例１におけるグラフ構造データの分散配置と分散検索を実現する計算機システムの構成例を図１に示す。図１は、グラフ構造データの分散管理及び検索を行う計算機システムの一例を示すブロック図である。【００１８】
図１に示すグラフ構造データ分散管理及び検索を行う計算機システムは、グラフ構造データの管理と検索の実行を管理する管理計算機１０１と、グラフ構造データを保持して検索処理を実行する複数の検索実行計算機１０２−１〜１０２−ｎ（ｎは任意の自然数）と、管理計算機１０１と検索実行計算機１０２と、検索要求を発行するクライアント８０と、これらの計算機を接続するネットワーク１４０から構成される。【００１９】
管理計算機１０１は、メモリ１１１と、ＣＰＵ１１２と、通信装置１１３と、ハードディスクなどの補助記憶装置を含む記憶装置１１４と、入力装置１１５と、表示装置１１６とを備えるコンピュータを用いて実現することができる。【００２０】
複数の検索実行計算機１０２−１〜１０２−ｎもそれぞれ管理計算機１０１と同様なコンピュータを用いて実現することができる。なお、検索実行計算機１０２−１〜１０２−ｎの総称を符号１０２で表す。【００２１】
管理計算機１０１の入力装置１１５は、キーボード、マウス、タッチパネルなどで構成されてユーザの指示を入力するための装置であり、プログラム起動などの指示を入力する。表示装置１１６は、ディスプレイなどであり、管理計算機１０１による処理の実行状況や実行結果などを表示する。ＣＰＵ１１２は、メモリ１１１に格納される各種プログラムを実行する。通信装置１１３は、ＬＡＮなどの通信線を介して、他の装置と各種データやコマンドを交換する。記憶装置１１４は、管理計算機１０１が処理を実行するための各種プログラム１２１やデータ１２２を保存する。メモリ１１１は、管理計算機１０１が処理を実行する各種プログラム１２１および一時的なデータ１２２を保持する。【００２２】
なお、本実施形態では、管理計算機１０１や検索実行計算機１０２を物理的に独立させた構成例を用いて説明するが、本発明は、このような構成に限定されるものではなく、各機計算機の全部又は一部を論理的な構成とすることもできる【００２３】
複数の検索実行計算機１０２でグラフ構造データを分散して配置する場合、管理計算機１０１は、蓄積するグラフ構造データを受信すると、データ間の関係性が一致するグラフ構造データをグループ化する。そして、管理計算機１０１は、当該グループに所属するグラフ構造データが保持される数が最も少ない検索実行計算機１０２を選択して通信装置１１３を介してグラフ構造データ７０を配信する。検索実行計算機１０２は、通信装置５３を介して受信したグラフ構造データを記憶装置５４にグラフ構造データ７０として格納する。【００２４】
グラフ構造データの分散管理と検索を実現するために、管理計算機１０１で実行するプログラムについて説明する。管理計算機１０１が持つＣＰＵ１１２は、記憶装置１１４に格納されたプログラム１２１とデータ１２２をメモリ１１１に読み出して実行する。プログラム１２１は、グラフ構造データ分散管理部１３１、グラフ構造データ分散検索部１３２を構成する。これらのプログラムを用いて、複数の検索実行計算機と通信装置を介してデータを送受信することで、グラフ構造データの分散検索と分散管理を実現する。【００２５】
ＣＰＵ１１２は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、ＣＰＵ１１２は、グラフ構造データ分散管理プログラムに従って動作することでグラフ構造データ分散管理部１３１として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１１２は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。【００２６】
グラフ構造データ分散管理部１３１やグラフ構造データ分散検索部１３２の各機能を実現するプログラム、テーブル等の情報は、記憶領域１１４や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。【００２７】
グラフ構造データの分散配置と検索を提供する検索実行計算機１０２で実行するプログラムについて説明する。検索実行計算機１０２のＣＰＵ５２は、記憶装置５４に格納されたプログラム７１とデータ７２をメモリ５１に読み出して実行する。プログラム７１は、クエリ実行部６０を有する。クエリ実行部６０は、管理計算機１０１から受信した検索条件でグラフ構造データ７０の検索処理を実行し、検索結果を管理計算機１０１に返信する。記憶装置５４は、プログラム７１を格納するのに加え、グラフ構造データを格納する格納部として機能し、さらにグラフ構造データ７０のインデックスなどをデータ７２として格納する。【００２８】
なお、クライアント８０は、図示しないＣＰＵとメモリ、通信装置、入力装置及び出力装置を備えた計算機であり、検索要求として検索条件（または検索クエリ）を管理計算機１０１へ送信する。【００２９】
図２は、グラフ構造データの分散管理を実現する場合に、管理計算機１０１のメモリ１１１に読み出して実行するプログラムであるグラフ構造データ分散管理部１３１に含まれる各機能部を示したブロック図である。【００３０】
管理計算機１０１がグラフ構造データ分散管理部として機能するために実行するプログラムには、グラフ構造データ受信部２０１、関係性抽出部２０２、グループ生成部２０３、グループ情報保持部２０４、データ分類部２０５、データ配置決定部２０６、分散ノード情報保持部２０７、グラフ構造データ配信部２０８及び後述するテーブルが含まれる。【００３１】
グラフ構造データ受信部２０１では、入力装置１１５や通信装置１１３を介して管理対象のグラフ構造データを受信する。関係性抽出部２０２は、前記受信したグラフ構造データに含まれるデータ間の関係性を抽出する。ここで、グラフ構造データとは、例えば、図２２で示すように、ある都市名のデータに、位置情報（緯度や経度等）及び所属（国）という関係性を保持し、この関係性によって接続される一連のデータ及びデータ群を示す。図２２は、本実施例を適用するグラフ構造データの一例を示す図である。例えば、図２２のグラフ構造データは、都市名「YOKOHAMA」のデータ内容が、国名「JAPAN」というデータ内容に「所属」という関係性で接続されることを示す。また、都市名「YOKOHAMA」のデータ内容は「35.47, 139.63」というデータ内容に「緯度、経度」という関係性で接続されることを示す。関係性抽出部２０２では、データが接続されている関係性を抽出することになる。【００３２】
グループ生成部２０３では、前記抽出したデータ間の関係性を構成要素とするグラフ構造データのグループを生成し、前記生成したグループのＩＤと、各グループの構成要素の関連性をグループ管理表６００で管理する。つまり、グループ生成部２０３は、構成要素が異なる関係性毎にグループとして扱い、新たなグループが生成されると、グループ管理表６００に新たなエントリを追加する。グループ管理表６００は、グループ情報保持部２０４によってメモリ１１１に保持される。図６は、グループ管理表６００の一例を示す図である。グループ管理表６００は、グラフ構造データのグループの識別子を格納するグループＩＤ６０１と、データ間の関係性を示す構成要素を格納する関係性一覧６０２から一つのエントリ（またはレコード）が構成される。【００３３】
データ分類部２０５は、グループ情報保持部２０４に保持されるグループ情報（グループ管理表６００）を用いて、受信したグラフ構造データに含まれるデータ間の関係性と同じ構成要素を持つグループ（グループＩＤ６０１）を所属グループとして特定し、所属グループ管理表７００で管理する。【００３４】
図７は、所属グループ管理表７００の一例を示す図である。所属グループ管理表７００は、グラフ構造データの識別子を格納するグラフ構造データＩＤ７０１と、グループ管理表６００のグループＩＤ６１と、を格納するグループＩＤ７０２から一つのエントリ（またはレコード）が構成される。【００３５】
データ配置決定部２０６は、所属するグループが特定されたグラフ構造データのグループＩＤと同一のグループＩＤ８０１に所属するグラフ構造データの数が最も少ない検索実行計算機１０２を選択する。【００３６】
つまり、データ配置決定部２０６は、図８に示す配置管理表８００において、図６で特定したグループＩＤ６０１と一致するグループＩＤ８０１の検索実行計算機１０２−１〜１０２−ｎで、グラフ構造データの配置数が最小（若しくは、より小さい）となる値の検索実行計算機を配置数８０２−１〜８０２−ｎから選択する。【００３７】
そして、データ配置決定部２０６は、グラフ構造データＩＤ７０１が特定された検索実行計算機１０２をグラフ構造データの配置先として決定する。【００３８】
分散ノード情報保持部２０７は、データ配置決定部２０６でグラフ構造データの配置先を決定するために用いる所属グループ情報を保持する。図８は、所属グループ情報を保持する配置管理表８００の一例を示す図である。配置管理表８００は、各検索実行計算機１０２が保持するグラフ構造データのグループ毎の配置数を所属グループ情報として保持する。【００３９】
配置管理表８００は、各グラフ構造データグループの識別子を格納するグループＩＤ８０１と、図７で対応づけられたグラフ構造データＩＤ毎の数を、検索実行計算機１０２−１〜１０２−ｎに対応する配置数８０２−１〜８０２−ｎとして保持する。【００４０】
グラフ構造データ配信部２０８は、前記決定した配置先の検索実行計算機１０２に対して、通信装置５３を介し、グラフ構造データ７０を配信する。検索実行計算機１０２は、受信したグラフ構造データ７０を記憶装置５４へ格納する。【００４１】
図４は、グラフ構造データ分散管理部１３１で行われるグループ化処理の一例を示すフローチャートである。グラフ構造データ分散管理部１３１を構成する機能部のうち、受信したグラフ構造データをグループ化する処理を図４に示すフローチャートに従って説明する。なお、図４の処理では、グラフ構造データ分散管理部１３１のうち、グラフ構造データ受信部２０１、関係性抽出部２０２、グループ生成部２０３、グループ情報保持部２０４、データ分類部２０５を利用する。【００４２】
まず、管理計算機１０１内の通信装置１１３を介して、グラフ構造データ受信部２０１がグラフ構造データを受信し（ステップ４０１）、関係性抽出部２０２に送信する。関係性抽出部２０２は、受信したグラフ構造データに含まれるデータ間の関係性を全て抽出し、グループ生成部２０３に送信する（ステップ４０２）。【００４３】
グループ生成部２０３は、グループ情報保持部２０４からグループ管理表６００を取得し、取得した関係性一覧６０２に含まれる関係性の構成要素の全てと、関係性抽出部２０２が抽出した関係性の構成要素の全てが完全に一致するグループＩＤ６０１が存在するか否かを判定する。【００４４】
グループ生成部２０３は一致するグループＩＤ６０１が存在すれば、受信したグラフ構造データを一意に特定するグラフ構造データＩＤ７０１を生成し、グループＩＤ７０２と１対１で対応するように、所属グループ管理表７００に新たなエントリを追加する（ステップ４０６）。【００４５】
一方、グループ生成部２０３は、上記ステップ４０４の判定で、一致するグループＩＤ６０１が存在しなければステップ４０５に進む。関係性抽出部２０２が抽出した関係性の全てを関係性一覧６０２とするグループと、当該グループを一意に特定するグループＩＤ６０１を生成し、グループ管理表６００に新たなエントリ追加する（ステップ４０５）。【００４６】
その後、一致するグループＩＤ６０１が存在した場合と同様に、グループ生成部２０３は、受信したグラフ構造データを一意に特定するグラフ構造データＩＤ７０１を生成し、グラフ構造データのグループＩＤ７０２と１対１で対応するように所属グループ管理表７００に新たなエントリを追加する。【００４７】
以上の処理により、管理計算機１０１が受信したグラフ構造データは、関係性一覧６０２が同一であれば、同じグラフ構造データのグループＩＤ７０２が割り当てられて、グループ管理表６００と所属グループ管理表７００で管理される。【００４８】
図５は、グラフ構造データ分散管理部１３１で行われるグラフ構造データの分散配置処理の一例を示すフローチャートである。この処理は、グラフ構造データ分散管理部１３１を構成する機能部のうち、グラフ構造データ受信部２０１、グループ情報保持部２０４、データ分類部２０５、データ配置決定部２０６、分散ノード情報保持部２０７、グラフ構造データ配信部２０８を用いる。また、この処理は、受信したグラフ構造データについて、所属するグループに含まれるグラフ構造データが均等に分散配置されるように検索実行計算機１０２に配信する処理である。【００４９】
まず、グラフ構造データ受信部２０１がグラフ構造データを受信し、データ分類部２０５に送信する（ステップ５０１）。なお、ここで送信するグラフ構造データは、上記図４に示すフローチャートに従ってグラフ構造データグループを生成した後に、グループ生成部２０３が、同じグラフ構造データをデータ分類部２０５へ送信してもよい。上記図４の処理で、グラフ構造データグループを生成する場合には、受信したグラフ構造データをメモリや記憶装置、外部の記憶装置などに一時的に保持した後に再利用してもよい。【００５０】
データ分類部２０５は、グループ情報保持部２０４から所属グループ管理表７００を参照して、受信したグラフ構造データが所属するグループのグループＩＤ７０２を取得し、当該グループＩＤ７０２とともにグラフ構造データをデータ配置決定部２０６に送信する（ステップ５０２）。【００５１】
データ配置決定部２０６は、分散ノード情報保持部２０７より配置管理表８００を取得し、受信したグループＩＤ７０２と一致するグループＩＤ８０１が存在するか否かを判定する。グループＩＤ７０２と一致するグループＩＤ８０１が存在する場合、データ配置決定部２０６は、検索実行計算機１０２−１、検索実行計算機１０２−２、・・・検索実行計算機ｎでの配置数８０２−１〜８０２−ｎのうち最も配置数が少ない検索実行計算機を抽出する。データ配置決定部２０６は、抽出した検索実行計算機の位置情報とともに、受信したグラフ構造データをグラフ構造データ配信部に送信し、送信先に該当する検索実行計算機１０２の配置数に１を加算する（ステップ５０３）。【００５２】
ここで、最も配置数が少ない検索実行計算機１０２が複数存在する場合は、それら検索実行計算機１０２からランダムに１つの検索実行計算機１０２を抽出してもよいし、最初または最後に見つかった最も配置数が少ない検索実行計算機１０２を抽出してもよい。なお、検索実行計算機１０２の位置情報にはネットワーク上での位置情報を示すＩＰアドレスを用いてもよいし、検索実行計算機を一意に示すＩＤを位置情報として用いてもよい。【００５３】
最後に、グラフ構造データ配信部２０８は通信装置１１３を介し、データ配置決定部２０６が決定した位置情報で示される検索実行計算機１０２へ、受信したグラフ構造データを配信する（ステップ５０４）。【００５４】
上記の処理によって、管理計算機１０１は、受信したグラフ構造データからグループＩＤ８０１を抽出し、配置管理表８００上の同一のグループＩＤ８０１で最もデータの配置数が少ない検索実行計算機１０２が選択され、この検索実行計算機１０２にグラフ構造データ７０が配信される。【００５５】
管理計算機１０１は、前述のグラフ構造データ分散管理部として機能することにより各検索実行計算機１０２にグラフ構造データを分散して蓄積する。そして、管理計算機１０１は、検索実行計算機１０２に蓄積したグラフ構造データから任意のグラフ構造データを検索する場合、管理計算機１０１のメモリで実行するグラフ構造データ分散検索部１３２によりグラフ構造データ分散検索部として機能する。【００５６】
図３は、グラフ構造データ分散検索部１３２の機能部位の一例を示すブロック図である。【００５７】
グラフ構造データ分散検索部として機能する管理計算機１０１は、検索クエリ受信及び配信部３０１が、検索を要求するクライアント８０から通信装置１１３を介して受信した検索条件を各検索実行計算機１０２へ通信装置１１３を介して転送する。このとき、管理計算機１０１は、検索条件の配信先の検索実行計算機１０２を検索ノード情報保持部３０２に保存しておく。なお、クライアント８０は、検索要求として検索クエリ（以下、検索条件）を発行する。【００５８】
検索条件を受信した各検索実行計算機１０２は、クエリ実行部６０で検索条件を解析し、各記憶装置５４のデータの１つとして保持するインデックスデータを用いて解候補を抽出し、解候補保持部６１に抽出した解候補を保持する。その後、検索実行計算機１０２のクエリ実行部６０は解候補から検索条件に一致するグラフ構造データ７０を抽出し、抽出したグラフ構造データを管理計算機１０１に送信する。なお、検索実行計算機１０２は、検索条件に一致するグラフ構造データが存在しなければ、該当するデータが存在しないことを示す情報を管理計算機１０１に送信する。【００５９】
ここで、検索条件は、図２３で示すように、データ条件と関係性条件で構成される。図２３は、本発明を適用する検索クエリの一例を示す図である。図示の例では、データ条件として関係性条件が「所属」、データ条件が「JAPAN」と、関係性条件が「緯度、経度」、データ条件が「北緯30度以上」という検索条件を示す。この例では、「所属」が「JAPAN」のデータ条件はインデックス検索によって求められるが、「北緯40度以上」というデータ条件については、インデックス検索によって求められた解候補から条件判定を行うことで解を抽出することになる。【００６０】
管理計算機１０１の検索結果受信部３０３は、各検索実行計算機１０２から返信された検索結果を受信し、検索結果マージ部３０４に転送する。検索結果マージ部３０４は、検索ノード情報保持部３０２に保存された検索条件の配信先の検索実行計算機１０２の全てから検索結果が返信されるのを待つ。そして、検索結果マージ部３０４は、全ての検索実行計算機１０２から返信されたグラフ構造データをひとつのデータにまとめてから、検索条件を発行したクライアント８０に検索結果返信部３０５を介して送信する。【００６１】
以上のグラフ構造データの分散管理及び検索処理により、データがデータ内容とデータ間の関係性を保持し、関係性で接続される一連のデータ群であるグラフ構造データを対象として、データ間の関係性が同一のグラフ構造データでグループを作り、複数の検索実行計算機１０２に均等に配置するグラフ構造データの分散管理方法を提供することができる。このように、グラフ構造データを複数の検索実行計算機１０２で分散して管理することで、同じデータ間の関係性を含むグラフ構造データを検索する場合、複数の検索実行計算機１０２で検索処理に関わるグラフ構造データ数を均等にすることが可能となって、検索実行計算機１０２の負荷を均一にすることができる。【００６２】
なお、上記実施例１では、グラフ構造データの分散配置と分散検索を提供する計算機システムが、管理計算機１０１と複数の検索実行計算機１０２で構成された例を示したが、これに限定されるものではない。例えば、多数のプロセッサを備えた物理計算機では、ハイパーバイザやＶＭＭ（Virtual Machine Monitor）で複数の仮想マシンを生成し、仮想マシンの一つを管理計算機１０１とし、他の計算機を検索実行計算機１０２として稼働させても良い。
【実施例２】
【００６３】
検索実行計算機１０２に分散配置したグラフ構造データ７０を検索する場合、各検索実行計算機１０２のクエリ実行部６０は、記憶装置５４に保持したインデックスに含まれる辞書データを用いて解候補を抽出する。そして、各クエリ実行部６０は、全ての解候補となるグラフ構造データに含まれるデータの内容や、データ間の関係性が検索条件と一致するか否かを判定する。なお、第２の実施例では前記第１の実施例と同様の構成のグラフ構造データの分散管理及び検索を行う計算機システムを用いる。また、記憶装置５４のインデックスや後述の辞書データは、例えば、データ７２に含まれるものとする。【００６４】
検索実行計算機１０２の検索で用いる辞書データの１レコードには、グラフ構造データ７０に含まれるデータのデータ内容やデータ間の関係性が、文字列や、数列、または記号列として含まれている。これら複数のレコードを、内容に応じて辞書式に並べることで、クエリ実行部６０は検索条件に一致するグラフ構造データのデータ内容の範囲を絞り込み、解候補として抽出できる。【００６５】
データのレコードに含まれる情報は次の２種類に分類できる。１つは、データの型や分類を示すクラス情報である。例えばＵＲＩ（Uniform Resource Identifier）や単語で表現される。もう１つは、データ自身の意味を示す情報（以下、インスタンス情報）であり、例えば文章、何らかのスキーマに従った記号の列、数列、数値及びこれらの組合せで表現される。【００６６】
前者のクラス情報は、検索を実施する場合に対象となるデータを、型や分類により絞り込むために多く利用される。後者のインスタンス情報は、解候補として抽出された後に、抽出されたデータに部分的に含まれる情報や、特定の範囲内にデータが存在するか否かを判定するような条件判定を実施される（あるいは、実施される可能性が高い）。ここで、条件判定とは具体的に、データ内容に含まれる部分文字列や、データ内容に含まれる数字の列が特定の値（データ条件）より大きいか小さいか、あるいは、データに含まれる日時が特定の日時（データ条件）より前か後ろかなどである。【００６７】
グラフ構造データに含まれるデータ間の関係性は、データの型や分類の一種であるため、前者のクラス情報に属する。データの内容に関しては、型や分類情報が含まれるなら前者のクラス情報に属し、それ以外は後者のインスタンス情報に属する。【００６８】
例えば、図２２で示すグラフ構造データの場合、都市名「YOKOHAMA」のデータ内容と、国名「JAPAN」のデータ内容が、「所属」という分類で接続され、関係性を構築する。「所属」という関係性は、検索を実施する場合に対象となるデータ内容をインデックスによって分類することができる。つまり、「所属」という分類で接続されるデータ内容は、クラス情報となる。【００６９】
一方、数字列「35.47, 139.63」というデータ内容は、都市名「YOKOHAMA」の座標を示すインスタンス情報である。そして、数字列「35.47, 139.63」というデータ内容は、緯度の範囲あるいは経度の範囲のデータ条件で検索される可能性が高い。本実施例２では、都市名「YOKOHAMA」と接続された数字列「35.47, 139.63」の関係性「緯度、経度」でグラフ構造データをグループ化し、複数の検索実行計算機１０２に均等に配置することで、条件判定の検索処理の負荷を均等にすることとなる。一方、本実施例２では、関係性が「所属」で都市名と接続された国名はクラス情報であるため、「所属」という関係性ではグループ化しない。これは、関係性が「所属」で接続されるデータ内容はクラス情報のためインデックス検索によって解を抽出でき、その結果、検索実行計算機１０２に与える負荷の影響が低いためである。【００７０】
グラフ構造データを検索する場合、検索実行計算機１０２のクエリ実行部６０は予め生成したインデックスを用いて、上記クラス情報のデータ条件に該当するデータ内容を解候補として抽出する。次に、インスタンス情報のデータ条件（及び関係性条件）で関係条件を満たすデータ内容を検索条件で判定することになる。【００７１】
例えば、図２３で示すように、検索条件（データ条件、関係性条件）のうちデータ条件が「JAPAN」という分類を示すデータ内容で、クエリ実行部６０はインデックスによって都市名の解候補を抽出する。次に、クエリ実行部６０は、関係性条件が「北緯」でデータ条件が「３０度以上」の数字列を条件判定で抽出し、検索結果を得る。【００７２】
分散検索を行う計算機システムにおいては、条件判定を実行する回数を複数の検索実行計算機１０２で均等に分散することで、各検索実行計算機１０２での検索処理の負荷を均等に近づけることができる。【００７３】
条件判定を実行する回数を複数の検索実行計算機１０２で均等に分散させることを実現するため、本第２の実施例では検索実行時に解候補として抽出されるグラフ構造データを同一グループとする際に、上述した条件判定の対象となるインスタンス情報の内容を接続先とするデータ間の関係性が一致するグラフ構造データを同一グループとする。そして、当該グループに含まれるグラフ構造データを各検索実行計算機１０２に均等に分散して配置するグラフ構造データ分散管理方法を提供する。つまり、図２２のグラフ構造データの例では、数字列「35.47, 139.63」のデータ内容の接続先が都市名となる関係性「緯度、経度」でグラフ構造データをグループ化する。【００７４】
第２の実施例では、前記第１の実施例の図２に示したグラフ構造データ分散管理部１３１に含まれるグラフ構造データ受信部２０１と、関係性抽出部２０２、グループ生成部２０３、グループ情報保持部２０４、データ分類部２０５を用いて、上記処理を行う。【００７５】
図９は、管理計算機１０１が、グラフ構造データを解候補として抽出した後に、条件判定を実施することが多いデータの内容と接続する関係性が一致するグラフ構造データをグループ化する処理の一例を示すフローチャートである。【００７６】
まず、管理計算機１０１の通信装置１１３を介して、グラフ構造データ受信部２０１がグラフ構造データを受信し、関係性抽出部２０２に送信する。関係性抽出部は受信したグラフ構造データに複数含まれるデータ間の関係性を抽出し、グループ生成部に送信する。【００７７】
グループ生成部２０３は、受信した関係性の接続先となるデータの内容がデータの型や分類を示すクラス情報、例えばＵＲＩで示される情報であるか否かを判定する（ステップ９０３）。グループ生成部２０３は、クラス情報であればステップ９０５に進み、クラス情報が存在しなければステップ９０５に進む。【００７８】
ステップ９０４では、グループ生成部２０３が、ステップ９０２で抽出されたクラス情報を示すデータ内容に接続される関係性を、前記抽出した関係性から取り除く。すなわち、接続先がインスタンス情報となる関係性のデータ内容を再抽出する。【００７９】
ステップ９０５では、グループ生成部２０３がグループ情報保持部２０４からグループ管理表６００を取得し、その関係性一覧６０２に含まれる関係性の全てと、抽出した関係性の全てが完全に一致するグラフ構造データグループＩＤが存在するか否かを判定する。【００８０】
グループ生成部２０３は、両者が完全に一致するグラフ構造データグループＩＤが存在すれば、ステップ９０７へ進んで、受信したグラフ構造データを一意に特定するグラフ構造データＩＤ７０１を生成し、グループＩＤ７０２と１対１で対応するように所属グループ管理表７００に新たなエントリを追加する。【００８１】
一方、両者が完全に一致するグラフ構造データグループＩＤが存在しなければ、グループ生成部２０３は、ステップ９０６へ進んで、抽出した関係性の全てを関係性一覧６０２とするグループとそのグループを一意に特定するグループＩＤ６０１を生成し、グループ管理表６００に新たなエントリを追加する。【００８２】
ステップ９０６でグループ管理表６００に新たなエントリを追加した後は、上述したステップ９０７へ進んで、グループ生成部２０３は、受信したグラフ構造データを一意に特定するグラフ構造データＩＤ７０１を生成し、グループＩＤ７０２と１対１に対応するように所属グループ管理表７００に新たなエントリを追加する。【００８３】
以上の処理により、管理計算機１０１は同一の検索条件で解候補を抽出した後に、データ内容の検索条件であるデータ条件による条件判定の対象となるグラフ構造データでグループを生成し、前記グループに含まれるグラフ構造データを複数の検索実行計算機１０２で均等になるように配置するグラフ構造データ分散管理方法を提供することができる。【００８４】
このようにグラフ構造データを複数の検索実行計算機１０２で分散して管理することで、条件判定を実行する回数を複数の検索実行計算機１０２で均等に分散させることが可能となる。
【実施例３】
【００８５】
前記実施例２では、条件判定の対象となるグラフ構造データでグループを作り、前記グループに含まれるグラフ構造データを複数の検索実行計算機１０２で均等になるように配置した。【００８６】
実際の検索を実施する場合には、データの型や分類を示すクラス情報ではなく、データ自身の意味を示すインスタンス情報であっても条件判定の対象になりやすいデータ内容となりにくいデータ内容が存在する。そのため、検索実行計算機１０２で実行する検索の条件（検索クエリ）を記憶しておき、過去の検索条件からより多く条件判定されるデータ内容を接続先とする関係性が同一のグラフ構造データをグループ化する。そして、グループ化したグラフ構造データを複数の検索実行計算機１０２へ均等に配置することで、分散検索の実行時に抽出する解候補を複数の検索実行計算機１０２に分散し、検索処理の負荷を分散できる可能性を増大する。【００８７】
検索処理の負荷分散を実現するため、検索の実行時に解候補として抽出されるグラフ構造データを同一グループとする場合に、過去の検索実行時に条件判定の対象となる頻度が高いデータ内容を接続先とするデータ間の関係性が同一のグラフ構造データを同一グループとする。そして、同一グループに含まれるグラフ構造データを各検索実行計算機１０２で均等に分散して配置することで、検索処理の負荷分散を実現する。【００８８】
なお、第３の実施例では前記第１の実施例の図１に示した検索実行計算機１０２のデータ７２に、関係性検索数管理表７２１を加えたものであり、その他の構成は前記実施例１と同様であり、同一のものに同一の符号を付して説明を省略する。【００８９】
図１３は、検索実行計算機１０２の記憶装置５１に格納されるデータ７２の一例を示すブロック図である。データ７２には、インデックス７２２と、関係性の種類毎に検索回数を記録する関係性検索数表７２１が格納される。【００９０】
図１１は、関係性検索数管理表７２１の一例を示す図である。関係性検索数表７２１は、検索対象となった関係性を格納する検索関係性７２１１と、当該関係性が検索された回数を格納する関係性検索数７２１２とから一つのエントリが構成される。【００９１】
図１０は、前記実施例１の図１に示した各検索実行計算機１０２のクエリ実行部６０が、条件判定対象となったデータ内容を接続先とする関係性を記憶する処理の一例を示すフローチャートである。【００９２】
まず、クエリ実行部６０は検索クエリを管理計算機１０１から受信した後に、インデックスを用いて解候補となるグラフ構造データ７０を抽出する（ステップ１８０１）。なお、インデックスは前記実施例２と同様であり、記憶装置５４のデータ７２に含まれるものとする。【００９３】
その後、クエリ実行部６０は抽出した解候補に対して条件判定が必要か否かを判定する（ステップ１８０２）。クエリ実行部６０は、条件判定の必要があれば、条件判定の対象となるデータ内容を接続先とする関係性を管理計算機１０１から取得する（ステップ１８０３）。【００９４】
続いて、クエリ実行部６０は記憶装置５４のデータ７２に保持された図１１で示す関係性検索数管理表７２１の検索関係性７２１１に、ステップ１８０３で取得した関係性が含まれるか否かを判定する（ステップ１８０４）。クエリ実行部６０は、取得した関係性と検索関係性７２１１に同一の関係性が存在する場合、ステップ８０６に進む。一方、取得した関係性が、検索関係性７２１１に存在しなければ、クエリ実行部６０は取得した関係性を関係性検索数管理表７２０の検索関係性７２１１に追記し、新たな関係性検索数７０１２を「０」に初期化した後に、ステップ１８０６に進む（ステップ１８０５）。【００９５】
ステップ１８０６では、クエリ実行部６０が、前記取得した関係性に対応する関係性検索数７２１２に１を加える。その後、条件判定処理を継続する。【００９６】
なお、この図１１に示す関係性検索数管理表７２１は、各検索実行計算機１０２の記憶装置５４のデータとして保持する例を示したが、所定のタイミングで管理計算機１０１に送信し、管理計算機１０１が記憶装置１１４に保持してもよい。【００９７】
図１２は、グラフ構造データ分散管理部が、グループ化に利用する関係性を統計情報から抽出する処理の一例を示すフローチャートである。図１０のフローチャートに従ってクエリ実行部６０が生成した関係性検索数管理表７２１と、図２に示すグラフ構造データ管理部１３１に含まれるグラフ構造データ受信部２０１、関係性抽出部２０２、グループ生成部２０３、グループ情報保持部２０４、データ分類部２０５と、図１に示すグラフ構造データ分散検索部１３２を用いて、図１２のフローチャートの処理が管理計算機１０１で行われる。【００９８】
まず、管理計算機１０１は通信装置１１３を介して、グラフ構造データ受信部２０１がグラフ構造データを受信し、関係性抽出部２０２へ送信する（ステップ１００１）。関係性抽出部２０２は受信したグラフ構造データに複数含まれるデータ間の関係性を抽出し、グループ生成部２０３に送信する（ステップ１００２）。グループ生成部２０３は、図１１に示す関係性検索数管理表７２１を検索実行計算機１０２の記憶装置５４（または管理計算機１０１の記憶装置１１４）から取得する。【００９９】
その後、グループ生成部２０３は、グラフ構造データから抽出された関係性について、取得した関係性検索数管理表７２１に存在し、かつ、所定の閾値以上の関係性出現数を有する関係性を再抽出してからステップ１００４に進む。所定の閾値は、例えば１などの一定値、管理計算機１０１の入力装置１１５を介して入力された値、関係性検索数管理表７２１に含まれる関係性出現数の順番で並び替えた場合に、任意の順位の関係性出現数などである。【０１００】
ステップ１００４では、グループ生成部２０３がグループ情報保持部２０４からグループ管理表６００を取得し、関係性一覧６０２に含まれる関係性の全てと、抽出した関係の性全てが完全に一致するグラフ構造データグループＩＤが存在するか否かを判定する。【０１０１】
関係性一覧６０２と抽出した関係性の全てが一致するグラフ構造データグループＩＤが存在すれば、ステップ１００６へ進む。【０１０２】
一方、関係性一覧６０２と抽出した関係性の全てが一致しなければ、ステップ１００５へ進み、グループ生成部２０３は、抽出した関係性の全てを関係性一覧６０２とするグループとそのグループを一意に特定するグループＩＤ６０１を生成しグループ管理表６００に新たなエントリを追加する（ステップ１００５）。【０１０３】
次に、グループ生成部２０３は、受信したグラフ構造データを一意に特定するグラフ構造データＩＤ７０１を生成し、グループＩＤ７０２と１対１で対応するように、所属グループ管理表７００に新たなエントリを追加する（ステップ１００６）。【０１０４】
以上の処理により、過去の検索実行時に解候補として抽出された回数が閾値を超えるデータ内容に接続する関係性が一致するグラフ構造データでグループを作り、複数の検索実行計算機１０２へ均等に配置するグラフ構造データ分散管理方法を提供することができる。【０１０５】
このようにグラフ構造データを分散して管理することで、過去の検索実行と同様の頻度で前記の関係性が検索条件となった場合に接続先となるデータ内容が複数の検索実行計算機１０２で均等に解候補として抽出され、各検索実行計算機で検索処理に関わるグラフ構造データを均等にするグラフ構造データ分散検索方法を提供できる。
【実施例４】
【０１０６】
出現頻度の低いデータ間の関係性が検索条件に指定された場合、解候補は少なくなる。一方、出現頻度の高い関係性が検索条件に指定されると解候補が多い。従って、複数の検索実行計算機１０２に出現頻度の高い関係性を含むグラフ構造データを均等に分散すると、検索処理負荷の多くが分散し、短縮できる検索時間が大きくなる。実施例４では、検索処理の高速化のために、検索実行時に解候補として抽出されるグラフ構造データを同一グループとする場合に、出現頻度の高い関係性が同一のグラフ構造データを同一グループとし、当該グループに含まれるグラフ構造データを各検索実行計算機１０２に均等に分散して配置するグラフ構造データ分散管理方法を提供する。【０１０７】
なお、第３の実施例では前記第１の実施例の図２に示した管理計算機１０１のグラフ構造データ分散管理部１３１に図１５で示す関係性出現数管理表９００を加えたものであり、その他の構成は前記実施例１と同様であり、同一のものに同一の符号を付して説明を省略する。【０１０８】
図１７は、実施例４における管理計算機１０１のグラフ構造データ分散管理部１３１の構成を示すブロック図である。本実施例４のグラフ構造データ分散管理部１３１には、関係性抽出部２０２が管理する関係性出現数管理表９００が加えられる。その他の構成は前記実施例１の構成と同様である。【０１０９】
図１５は、本発明の第４の実施例を示し、関係性出現数管理表９００の一例を示す図である。関係性出現数管理表９００は、検索対象となった関係性を格納する関係性９０１と、当該関係性が出現した回数を格納する出現数９０２から一つのエントリが構成される。【０１１０】
図１４は、グラフ構造データ分散管理部１３１が、関係性の出現数を計測する処理の一例を示すフローチャートである。この処理は、グラフ構造データ分散管理部１３１に含まれるグラフ構造データ受信部２０１、関係性抽出部２０２、を用いて、出現頻度の高い関係性を抽出する。【０１１１】
まず、管理計算機１０１は通信装置１１３を介して、グラフ構造データ受信部２０１がグラフ構造データを受信し、関係性抽出部２０２へ送信する（ステップ１１０１）。関係性抽出部２０２は、受信したグラフ構造データに複数含まれるデータ間の関係性を抽出した後に図１５で示した関係性出現数管理表９００を記憶装置１１４から取得する（ステップ１１０２）。その後、関係性抽出部２０２は抽出した関係性が全て関係性出現数管理表９００に含まれているか否かを判定する（ステップ１１０３）。【０１１２】
抽出した関係性の全てが関係性出現数管理表９００に含まれていれば、ステップ１１０５に進み、含まれていない関係性が存在すればステップ１１０４に進む。【０１１３】
ステップ１１０４では、関係性抽出部２０２が関係性出現数管理表９００に含まれていない関係性を関係性出現数管理表９００に追加し、その出現数を「０」で初期化した後に、ステップ１１０５に進む。ステップ１１０５では、関係性抽出部２０２が抽出した関係性と対応する関係性出現数管理表９００内の出現数の全てに１を加算する。【０１１４】
以上の処理により生成した図１５で示す関係性出現数管理表９００と、図１７に示すグラフ構造データ分散管理部１３１に含まれるグラフ構造データ受信部２０１、関係性抽出部２０２、グループ生成部２０３、グループ情報保持部２０４、データ分類部２０５を用いて、管理計算機１０１では出現頻度の低い関係性を省いてグラフ構造データをグループ化する。【０１１５】
図１６は、グラフ構造データ分散管理部１３１が、出現頻度の低い関係性を省いてグラフ構造データをグループ化する処理の一例を示すフローチャートである。【０１１６】
まず、管理計算機１０１の通信装置１１３を介して、グラフ構造データ受信部２０１がグラフ構造データを受信し、関係性抽出部２０２に送信する（ステップ１３０１）。関係性抽出部２０２は受信したグラフ構造データに複数含まれるデータ間の関係性を抽出し、グループ生成部２０３に送信する（ステップ１３０２）。【０１１７】
グループ生成部２０３は、図１５に示す関係性出現数管理表９００を記憶装置１１４から読み出し、関係性抽出部２０２から受信した関係性のうち関係性出現数管理表９００において閾値回数以上の出現数を持つ関係性を再抽出してから、ステップ１３０４に進む（ステップ１３０３）。この閾値は例えば、管理計算機１０１の入力装置１１５を介して入力された値や、関係性出現数管理表９００に含まれる出現数の順番で並び替えた場合に、任意の順番までの出現数などである。【０１１８】
ステップ１３０４では、グループ生成部２０３が、グループ情報保持部２０４からグループ管理表６００を取得し、その関係性一覧６０２に含まれる関係性の全てと、関係性抽出部２０２が再抽出した関係性の全てが完全に一致するグラフ構造データグループＩＤが存在するか否かを判定する。【０１１９】
関係性抽出部２０２が再抽出した関係性の全てと、関係性一覧６０２に含まれる関係性の全てが一致する場合にはステップ１３０４へ進み、一致しない場合にはステップ１３０５へ進む。【０１２０】
関係性の全てが一致しなければ、ステップ１３０５に進んで、グループ生成部２０３は、関係性抽出部２０２が再抽出した関係性の全てを、関係性一覧６０２とするグループと、当該グループを一意に特定するグループＩＤ６０１を生成して、グループ管理表６００に新たなエントリを追加する。【０１２１】
その後、グループ生成部２０３はステップ１３０６で、受信したグラフ構造データを一意に特定するグラフ構造データＩＤ７０１を生成し、グループＩＤ６０１（７０１）と１対１に対応するように、所属グループ管理表７００に新たなエントリを追加する（ステップ１３０６）。【０１２２】
以上の処理により、出現頻度の高い関係性でグラフ構造データのグループを生成し、複数の検索実行計算機１０２へ均等にグラフ構造データを配置することができる。このようにグラフ構造データを分散して管理することで、出現頻度の高い関係性を含む検索条件で多くの解候補を抽出した場合には、各検索実行計算１０２機に解候補が均等に分散されて、検索処理の高速化を図ることが可能になる。
【実施例５】
【０１２３】
グラフ構造データに含まれるデータ間の関係性によりグループを生成した場合、複数のグループ間で関係性が部分的に一致する可能性がある。この部分的に一致する関係性により解候補を取得した場合でも複数の検索実行計算機１０２に解候補が均等に分散し、条件判定処理の負荷を分散できるように、各グループに属するグラフ構造データを配置する必要がある。【０１２４】
なお、第５の実施例の構成は前記実施例１と同様であり、同一のものに同一の符号を付して説明を省略する。【０１２５】
本実施例５では、関係性が部分的に一致する場合でも、条件判定処理の負荷を分散させるため、各検索実行計算機１０２に保持されるグラフ構造データ７０に含まれる関係性の数を図２に示すグラフ構造データ分散管理部１３１に含まれるグラフ構造データ受信部２０１、データ分類部２０５、グループ情報保持部２０４、データ配置決定部２０６、分散ノード情報保持部２０７、グラフ構造データ配信部２０８を用い、グループ間で部分一致する関係性を考慮して検索実行計算機１０２にグラフ構造データを分散配置する。【０１２６】
図１８は、グラフ構造データ分散管理部１３１が、検索実行計算機１０２にグラフ構造データを分散配置する処理の一例を示すフローチャートである。【０１２７】
まず、管理計算機１０１の通信装置１１３を介して、グラフ構造データ受信部２０１がグラフ構造データを受信し、データ分類部２０５に受信したグラフ構造データを送信する（ステップ１４０１）。【０１２８】
データ分類部２０５は、所属グループ管理表７００をグループ情報保持部２０４から取得し、受信したグラフ構造データが所属するグループのグループＩＤ７０２を取得する。その後、データ分類部２０５は、グループ管理表６００から取得したグループＩＤ７０２に対応するグループＩＤ６０１を検索する。データ分類部２０５は、検索したグループＩＤ６０１に対応する関係性一覧６０２を抽出する（ステップ１４０２）。さらに、データ分類部２０５は、グループ管理表６００を用いて、前記抽出した関係性一覧６０２に含まれる関係性を含むグループのグループＩＤを関連グループＩＤとして取得する。【０１２９】
その後、データ分類部２０５は、グラフ構造データと、そのグラフ構造データが所属するグループのグループＩＤ６０１、関連グループＩＤ、をデータ配置決定部２０６に送信する（ステップ１４０３）。【０１３０】
データ配置決定部２０６は、ステップ１４０４で、配置管理表８００を分散ノード情報保持部２０７から取得する。続いて、データ配置決定部２０６は、各検索実行計算機１０２に含まれるグループＩＤと関連グループＩＤに所属するグラフ構造データの数を加算し、各検索実行計算機１０２の関連グラフ構造データ数とする。データ配置決定部２０６は、この関連グラフ構造データ数が最も少ない検索実行計算機１０２を抽出し、当該検索実行計算機１０２の位置情報とともに、前記受信したグラフ構造データをグラフ構造データ配信部２０８に送信し、ステップ１４０５に進む。【０１３１】
ここで、最も配置数が少ない検索実行計算機１０２が複数存在する場合は、それら検索実行計算機１０２からランダムに１つの検索実行計算機を抽出してもよいし、最初または最後に見つかった最も配置数が少ない検索実行計算機を抽出してもよい。なお、検索実行計算機１０２の位置情報には上述のようにネットワーク上での位置情報を示すＩＰアドレスを用いてもよいし、検索実行計算機１０２を一意に示すＩＤを位置情報として用いてもよい。【０１３２】
次に、ステップ処理１４０５では、グラフ構造データ配信部２０８は通信装置１１３を介して、受信したグラフ構造データ７０を、ステップ１４０４で選択した位置情報で示される検索実行計算機１０２へ配信する。【０１３３】
以上の処理により、複数の検索実行計算機１０２に対して様々な関係性が均等に配置されるグラフ構造データ分散管理方法を提供することができる。このようにグラフ構造データを分散管理することで、同じデータ間の関係性を含むグラフ構造データを検索する場合に、複数のグループに含まれるグラフ構造データが対象となっても複数の検索実行計算機で検索処理に関わるグラフ構造データを均等にするグラフ構造データ分散検索方法を提供することができる。
【実施例６】
【０１３４】
各検索実行計算機１０２に分散配置されたグラフ構造データ７０を対象に検索を実行する場合、各検索実行計算機１０２に保持されるグラフ構造データ７０に含まれるデータ間の関係性のうち、最も多い関係性が検索条件に指定された場合には解候補が最も多く抽出される。条件判定処理は解候補の全てに対して実施するため、解候補が多くなれば検索処理が完了するまでの時間が増大する。つまり、各検索実行計算機１０２に含まれるデータ間の関係性の数を取得して、解候補１つを条件判定する時間を乗算することで、分散検索の実行に必要な時間を概算することができ、概算の結果を用いて検索が規定時間内に収まるか否かを判定することができる。【０１３５】
そこで、本実施例６では、管理計算機１０１が、分散検索の実行に必要な時間を概算し、検索処理が、規定時間内に終わらないと判定すれば、検索実行計算機１０２を追加して、各検索実行計算機１０２で抽出される解候補が少なくなるようにグラフ構造データを再配置するものである。【０１３６】
なお、第６の実施例の構成は図１９で示すように、前記実施例１の管理計算機１０１に、関係性数計算部１５０１とキャパシティプランニング提示部１５０２を加えたものであり、その他の構成は前記実施例１と同様であり、同一のものに同一の符号を付して説明を省略する。【０１３７】
図１９は、管理計算機の構成の一例を示すブロック図である。検索実行計算機１０２の処理能力の判定に必要なグラフ構造データの配置状況を提示するため、管理計算機１０１では、図１９に示すグラフ構造データキャパシティ管理機能を提供する。管理計算機１０１は、グラフ構造データ分散管理部１３１を構成する機能部位である分散ノード情報保持部２０４及びグループ情報保持部２０７と関係性数計算部１５０１を接続し、キャパシティプランニング提示部１５０２を備える。キャパシティプランニング提示部１５０２は、各検索実行計算機１０２に分散配置されたグラフ構造データの検索にかかる時間を概算するための情報を表示し、検索実行計算機１０２の過不足を提示することができる。【０１３８】
図２０は、管理計算機１０１で行われるグラフ構造データのキャパシティ管理処理の一例を示すフローチャートである。【０１３９】
まず、関係性数計算部１５０１がグループ情報保持部２０７からグループ管理表６００を取得し、分散ノード情報保持部２０４から配置管理表８００を取得する（ステップ１６０１）。【０１４０】
次に、関係性数計算部１５０１は、グループ管理表６００の関係性一覧６０２に含まれる関係性を一つ（例えば名称）抽出し、抽出した関係性を関係性一覧に含むグループのグループＩＤ６０１を取得する。続いて、関係性数計算部１５０１は、配置管理表８００において、対象とする任意の検索実行計算機１０２の列で、前記取得した複数のグループＩＤ６０１に対応する数を全て足し合わせる（ステップ１６０２）。これにより、対象とした任意の検索実行計算機１０２に含まれる関係性の数（一例としては、名称の数）を計算することができる。関係性数計算部１５０１は、この処理を全ての検索実行計算機１０２と全ての関係性に対して実行する。【０１４１】
次に、ステップ１６０３では、関係性数計算部１５０１が、関係性の数が閾値以上の検索実行計算機１０２が存在するか否かを判定する。関係性の数が閾値以上の検索実行計算機１０２が存在する場合はステップ１６０４に進み、存在しない場合には処理を終了する。上記閾値は、予め定めた定数値としてもよいし、管理計算機１０１の入力装置１１５を介して受信した値であってもよい。または、過去の検索実行時間を記憶しておき任意の時間以上の検索実行時間がかかった時の解候補数を閾値としてもよいし、各検索実行計算機において最も出現数の多い関係性の数を閾値としてもよい。【０１４２】
ステップ１６０４では、キャパシティプランニング提示部１５０２が、閾値以上である関係性と、各検索実行計算機１０２に含まれている関係性の数と、当該関係性を含むグループ情報を表示装置１１６に出力する。【０１４３】
以上の処理により、複数の検索実行計算機１０２に分散配置されたグラフ構造データを検索する際に、最も解候補が多くなる関係性を条件として含んだ場合の条件判定対象となる解候補の数を取得することができる。この解候補数から条件判定にかかる時間を含む検索時間を概算し、検索時間を短縮するために検索実行計算機１０２を追加し、各検索実行計算機１０２に含まれるグラフ構造データを再配置するような判断を促す情報を提示することができる。
【実施例７】
【０１４４】
Ｗ３Ｃ（World Wide Web Consortium）により規格化が進んでいるＲＤＦ（Ｒｅｓｏｕｒｃｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ）と呼ばれるデータを表現する枠組みが知られている。ＲＤＦは、リソースの関係を示すデータを主語、述語、目的語の３つの要素で表現することを規定する。そして、３つの要素はトリプルと呼ばれる。このトリプルにおいて主語と目的語がデータの内容となり、述語が主語と目的語の関係性を示す。このトリプルに含まれる主語が他のトリプルの目的語となることもでき、複数のトリプルが一連のデータを表現することもできる。このように接続された複数のトリプルから構成されるデータは、本発明の処理対象であるグラフ構造データと同じ構造を持つ。【０１４５】
上記ＲＤＦにより表現されるグラフ構造データを検索するクエリ言語としてＳＰＡＲＱＬ（ＳＰＡＲＱＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）がＷ３Ｃにより勧告されている。ＳＰＡＲＱＬによりグラフ構造データを検索する場合にも、ＲＤＦの枠組みで規定される主語や目的語で示されるデータ内容や、述語で示される関係性が一致する解候補を抽出した後に、解候補に対して条件判定を実施することができる。【０１４６】
このＲＤＦの枠組みで表現されるグラフ構造データにおいても、上記実施例１から実施例６までの内容と同様に関係性を示す述語が一致するグラフ構造データをグループ化して、複数の検索実行計算機１０２に分散配置し、検索処理を並列実行することで検索処理の負荷を分散して、検索処理の高速化を図ることができる。
【実施例８】
【０１４７】
テキストや、音声、画像、動画などの様々なデータを横断的に管理し、検索するには、それぞれに含まれる情報を同一の形式で管理し、同一の枠組みで検索対象とする必要がある。例えば、複数拠点のストレージに保管されたデータをネットワーク経由で、データセンターに自動的に集約するコンテンツクラウドアーキテクチャでは、情報の形式と、検索の枠組みは同一であることが求められる。【０１４８】
情報を同一の形式で管理し、かつ、同一の枠組みで検索することを実現するため、テキストや、音声、画像などの様々な電子化されたコンテンツのデータから、様々な認識処理により抽出したデータに関するデータであるメタデータを用いることができる。なお、認識処理としては、公知または周知の技術を適用することができ、例えば、音声や、画像、動画などの特徴量を求め、特徴量からメタデータを生成する技術などを適宜採用すれば良い。【０１４９】
メタデータには、様々なデータに関する情報が含まれるため、データ内容と関係性で表現できるグラフ構造データを適用することが望ましい。例えば、青い車が描かれた画像データであれば、そのメタデータを示すグラフ構造データは、車というデータ内容を持つデータが、青色というデータ内容を持つデータに対して、色という関係性で接続されることとなる。【０１５０】
このようにして抽出したメタデータを用いてテキストや、音声、画像、動画などの様々なデータを検索するためには、それぞれのデータをメタデータとなるグラフ構造データと関連付けて一元的に管理するためのストレージ装置が必要となる。なお、メタデータに対してテキストや、音声、画像、動画などのデータは、データ容量が大きくストレージ装置にも大容量が求められ、複数のディスク装置を含むストレージ装置が必要となる。【０１５１】
テキストや、音声、画像、動画などの様々なデータを横断的に管理する環境においても、グラフ構造データ形式のメタデータを複数の検索実行計算機１０２を用いて分散検索することで、より高速なデータの検索を実現することができる。【０１５２】
上記テキストや、音声、画像、動画などの様々なデータのメタデータを本発明の対象にした場合、図２１に示すような計算機システムでメタデータの分散配置と、検索の並列実行を実現できる。【０１５３】
図２１は、グラフ構造データの分散管理及び検索を行う計算機システムの一例を示すブロック図である。第８の実施例の構成は前記実施例１の図１に示した構成に、ストレージ装置１５０を加え、さらに、管理計算機１０１の機能部位としてグラフ構造クエリ変換部１７０１と、データ分散配置部１７０２を加えたものである。なお、その他の構成は前記実施例１と同様であり、同一のものに同一の符号を付して説明を省略する。【０１５４】
ストレージ装置１５０は、ＣＰＵ１５１とメモリ１５２及び通信装置１５３を備えてネットワーク１４０を介して管理計算機１０１、検索実行計算機１０２及びクライアント８０に接続される。ストレージ装置１５０は複数のディスク装置１６０−１〜１６０−ｎを備えて、メタデータ１６１０と当該メタデータに対応するテキストや、音声、画像、動画などのデータ１６２０を格納する。ＣＰＵ１５１はメモリ１５２にロードした制御プログラムを実行して、通信装置１５３及びディスク装置１６０−１〜１６０−ｎの制御を行う。なお、以下では、ディスク装置１６０−１〜１６０−ｎの総称を符号１６０で示す。【０１５５】
グラフ構造クエリ変換部１７０１は、検索を要求するクライアント８０から受信した検索要求をグラフ構造データに対応する検索クエリに変換する。データ分散配置部１７０２は、ストレージ装置１５０を構成する複数のディスク装置１６０のＩ／Ｏ負荷を分散するデータの配置を制御する。【０１５６】
グラフ構造クエリ変換部１７０１では、メタデータ１６１０を表現するグラフ構造データに含まれる関係性を保持し、クライアント８０から受信した検索条件のうちデータ１６２０の型や分類を示す条件を関係性とする。そして、グラフ構造クエリ変換部１７０１は、その他の条件をデータ内容としてグラフ構造のクエリを生成して、グラフ構造データの分散検索を実行するグラフ構造データ分散検索部１３２へ送信する。例えば、関係性に分類される検索条件は「車」、「果物」、「名前」、「年齢」などのカテゴリを示すクラス情報であり、データ内容に分類される検索条件は、頭文字が「あ」の果物、「太郎」を含む名前、「２０歳以上」の年齢などのクラス情報の実体を示すインスタンス情報である。グラフ構造クエリ変換部１７０１は、クラス情報と接続するインスタンス情報をクエリとして生成することができる。【０１５７】
データ分散配置部１７０２は、複数の検索実行計算機１０２が同一ディスク装置１６０にアクセスして、Ｉ／Ｏ負荷が集中することがないように複数のディスク装置１６０へのデータ配置を決定する。【０１５８】
具体的には、各検索実行計算機１０２に占有のディスク装置１６０を割り当てて、グラフ構造データ分散管理部１３１が各検索実行計算機１０２へ配信したグラフ構造データ形式のメタデータ１６１０とそのメタデータに対応するテキスト、音声、画像、動画などのデータ１６２０を、各検索実行計算機１０２が占有するディスク装置１６０に割り当てる。例えば、各検索実行計算機１０２とディスク装置１６０の割り当て関係を１対１とする。【０１５９】
以上の処理により、テキストや、音声、画像、動画などの様々なデータを、認識処理により抽出したグラフ構造データ形式のメタデータを用いて管理する場合に、所望のデータを検索する処理の負荷を複数の検索実行計算機１０２で分散することができる。【０１６０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。【０１６１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【図１】
2013175611.tif 000003
【図２】
2013175611.tif 000004
【図３】
2013175611.tif 000005
【図４】
2013175611.tif 000006
【図５】
2013175611.tif 000007
【図６】
2013175611.tif 000008
【図７】
2013175611.tif 000009
【図８】
2013175611.tif 000010
【図９】
2013175611.tif 000011
【図１０】
2013175611.tif 000012
【図１１】
2013175611.tif 000013
【図１２】
2013175611.tif 000014
【図１３】
2013175611.tif 000015
【図１４】
2013175611.tif 000016
【図１５】
2013175611.tif 000017
【図１６】
2013175611.tif 000018
【図１７】
2013175611.tif 000019
【図１８】
2013175611.tif 000020
【図１９】
2013175611.tif 000021
【図２０】
2013175611.tif 000022
【図２１】
2013175611.tif 000023
【図２２】
2013175611.tif 000024
【図２３】
2013175611.tif 000025
【国際調査報告】
2013175611.tif 000026
2013175611.tif 000027
2013175611.tif 000028
2013175611.tif 000029