(57)【特許請求の範囲】
【請求項１】
所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち１つの装置が前記分散処理の実行対象から除外された場合に第１バックアップデータを処理し、前記複数の装置のうち２つの装置が前記分散処理の実行対象から除外された場合に第２バックアップデータを処理する前記複数の装置の数を取得する取得部と、
前記取得部によって取得された装置の数に応じて、第１の装置が前記分散処理の実行対象から除外された場合に第２の装置に処理を実行させるデータと、前記第２の装置が前記分散処理の実行対象から除外された場合に前記第１の装置に処理を実行させるデータとの割り振りが同一の装置へ重複せず、かつ、同一の装置に対し、前記メインデータ又は前記第１バックアップデータのいずれかと同一の前記第２バックアップデータを割り振りしないように、前記第２バックアップデータの割り振りを決定する決定部と
を有することを特徴とするデータ割振り装置。 
【請求項２】
前記決定部は、
各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、２点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように２点を結ぶ線分を含むグラフモデルを用いて、各線分の始点と対応する装置が前記分散処理の実行対象から除外される際に、当該線分の終点と対応する装置が処理を実行するデータを前記第２バックアップデータとして前記割振り対象とする装置に割り振ることを特徴とする請求項１に記載のデータ割振り装置。 
【請求項３】
前記決定部は、
各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を１度ずつ通るように線分が作成されたハミルトン閉路から、割振り対象となる装置に対応する点を始点とする線分に続く線分を選択し、選択した線分の始点に対応する装置が前記分散処理の実行対象から除外される際に、当該線分の終点と対応する装置が処理を実行するデータを前記第２バックアップデータとして前記割振り対象となる装置に割り振ることを特徴とする請求項１に記載のデータ割振り装置。 
【請求項４】
コンピュータが、
所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち１つの装置が前記分散処理の実行対象から除外された場合に第１バックアップデータを処理し、前記複数の装置のうち２つの装置が前記分散処理の実行対象から除外された場合に第２バックアップデータを処理する前記複数の装置の数を取得し、  前記装置の数に応じて、第１の装置が前記分散処理の実行対象から除外された場合に第２の装置に処理を実行させるデータと、前記第２の装置が前記分散処理の実行対象から除外された場合に前記第１の装置に処理を実行させるデータとの割り振りが同一の装置へ重複せず、かつ、同一の装置に対し、前記メインデータ又は前記第１バックアップデータのいずれかと同一の前記第２バックアップデータを割り振りしないように、前記第２バックアップデータの割り振りを決定する
処理を実行することを特徴とするデータ割振り方法。 
【請求項５】
コンピュータに、
所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち１つの装置が前記分散処理の実行対象から除外された場合に第１バックアップデータを処理し、前記複数の装置のうち２つの装置が前記分散処理の実行対象から除外された場合に第２バックアップデータを処理する前記複数の装置の数を取得し、前記装置の数に応じて、第１の装置が前記分散処理の実行対象から除外された場合に第２の装置に処理を実行させるデータと、前記第２の装置が前記分散処理の実行対象から除外された場合に前記第１の装置に処理を実行させるデータとの割り振りが同一の装置へ重複せず、かつ、同一の装置に対し、前記メインデータ又は前記第１バックアップデータのいずれかと同一の前記第２バックアップデータを割り振りしないように、前記第２バックアップデータの割り振りを決定する
処理を実行させることを特徴とするデータ割振りプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ割振り装置、データ割振り方法及びデータ割振りプログラムに関する。
【背景技術】
【０００２】
１つの問題を分割して複数の計算機で並列に処理させる並列分散処理が知られている。このような並列分散処理を実現するには、１つのコンピュータ（computer）に複数のプロセッサ（processor）を搭載して処理する方法と、ネットワーク（network）を通じて複数のコンピュータを結び付けて処理する方法とがある。
【０００３】
一例として、複数のサーバ（server）がデータを分担して処理を並列に行う場合、すなわち後者の方法を採用する場合を想定する。このとき、複数のサーバのうち一部のサーバに故障が発生したり、また、サーバの保守を行う場合には、故障や保守により稼働が停止されるサーバを分散処理を実行する対象から除外する。このように分散処理を実行するサーバの数が変化した場合でも、分散処理の実行対象とするサーバをサーバ全体から残りのサーバへ縮退した上で処理を実行する必要がある。
【０００４】
このため、各サーバには、自装置が処理するデータとともに、他装置が分散処理の実行対象から除外された場合に自装置が他装置の代わりに処理するデータがバックアップ（backup）として事前に割り振られる。
【０００５】
一例として、図１９を用いて、複数のサーバのうちサーバが１つ故障した場合を想定して各サーバに割り振られるバックアップについて説明する。図１９は、従来技術における第１バックアップの割り振りの一例を示す図である。図１９に示す符号６００は、各実行サーバ１〜Ｎによって他のサーバの故障の有無に関係なく処理されるメインデータを示す。また、図１９に示す符号６１０は、サーバ１〜サーバＮのうちサーバが１つ故障した場合に故障が検知されたサーバの代わりに残りのサーバによって処理される第１バックアップを示す。これらメインデータ６００及び第１バックアップ６１０の各データに付される数字のうち、左側の数字は、正常時に処理を担当するサーバを指し、右側の数字は、縮退時に処理を担当するサーバを指す。
【０００６】
図１９に示すように、メインデータ６００は、Ｎ×（Ｎ−１）個のデータに分割された上で（Ｎ−１）個のデータがサーバ１〜サーバＮのＮ個のサーバへそれぞれ割り振られる。例えば、サーバ１には、メインデータ（１，２）、メインデータ（１，３）、・・・、メインデータ（１，Ｎ）のＮ−１個のメインデータが割り振られる。このとき、サーバ１〜サーバＮの全てのサーバに故障がない場合には、メインデータ（１，２）、メインデータ（１，３）、・・・、メインデータ（１，Ｎ）は、サーバ１によって処理される。なお、サーバ２〜サーバＮについてもＮ−１個のメインデータが同様に割り振られる。
【０００７】
また、第１バックアップ６１０は、Ｎ×（Ｎ−１）個の第１バックアップが（Ｎ−１）個ずつＮ個のサーバへ割り振られる。例えば、サーバ１には、第１バックアップ（２，１）、第１バックアップ（３，１）、・・・、第１バックアップ（Ｎ，１）のＮ−１個の第１バックアップが割り振られる。このとき、サーバ１〜サーバＮの全てのサーバに故障がない場合には、第１バックアップ（２，１）、第１バックアップ（３，１）、・・・、第１バックアップ（Ｎ，１）はサーバ１によって処理されることはない。なお、サーバ２〜サーバＮについてもＮ−１個の第１バックアップが同様に割り振られる。
【０００８】
一例として、サーバ１〜サーバＮのうちサーバ２が故障した場合を想定する。この場合には、サーバ２が処理を担当するはずであったメインデータ（２，１）、（２，３）・・・（２，Ｎ）に対応する第１バックアップ（２，１）、（２，３）・・・（２，Ｎ）がサーバ２の代わりに各サーバによって処理される。すなわち、第１バックアップ（２，１）はサーバ１によって処理される。第１バックアップ（２，３）はサーバ３によって処理される。また、第１バックアップ（２，Ｎ）はサーバＮによって処理される。
【０００９】
このように、メインデータ６００及び第１バックアップ６１０は、サーバ１〜サーバＮへ均等に割り振られる。このため、サーバ１〜サーバＮの性能が同一である場合には、縮退時における１つのサーバあたりの負荷も均等になる。
【００１０】
図２０は、サーバが１つ故障した場合における残りのサーバの処理負荷を示す図である。図２０に示す例は、図１９に示したサーバ１〜サーバＮのうちサーバ２が故障した場合を想定している。図２０に示す網掛け部分のデータ（２，１）、（２，３）及び（２，Ｎ）は、サーバ２の故障によって他のサーバで追加して処理が実行される第１バックアップを表す。
【００１１】
図２０に示すように、サーバ２が故障した場合には、Ｎ−１個のメインデータが各サーバで処理されるとともに、各サーバに割り振られた第１バックアップのうちサーバ２に対応する第１バックアップ（２，Ｉ）がサーバ２の代わりに各サーバにより処理される。なお、「Ｉ」は、１〜Ｎの自然数であるものとする。例えば、サーバ１には、Ｎ−１個のメインデータとともに第１バックアップ（２，１）が処理される。また、サーバ３には、Ｎ−１個のメインデータとともに第１バックアップ（２，３）が処理される。また、サーバＮには、Ｎ−１個のメインデータとともに第１バックアップ（２，Ｎ）が処理される。このように、サーバ２を除く各サーバによってデータがＮ個ずつ割り振られる結果、各サーバの処理負荷は均等になる。
【００１２】
さらに、複数のサーバのうちサーバが１つ故障した場合に加えてサーバが２つ故障した場合も想定してバックアップを各サーバへ割り振る技術もある。図２１は、従来技術における第２バックアップの割り振りの一例を示す図である。図２１に示す符号７００は、各実行サーバ１〜５によって他のサーバの故障の有無に関係なく処理されるメインデータを示す。また、図２１に示す符号７１０は、サーバ１〜サーバ５のうちサーバが１つ故障した場合に故障が検知されたサーバの代わりに残りのサーバによって処理される第１バックアップを示す。また、図２１に示す符号７２０は、サーバ１〜サーバ５のうちサーバが２つ故障した場合に故障が検知されたサーバの代わりに残りのサーバによって処理される第２バックアップを示す。これらメインデータ７００、第１バックアップ７１０及び第２バックアップ７２０の各データに付される数字のうち、左側の数字は、正常時に処理を担当するサーバを指す。また、右側の数字は、正常時に処理を担当するサーバが故障した場合にその代わりに処理を担当するサーバを指す。
【００１３】
図２１に示すように、メインデータ７００は、図１９の場合と同様に、Ｎ×（Ｎ−１）個、すなわちＮ＝５であるので５×（５−１）＝２０個のデータに分割された上で（Ｎ−１）個、すなわち４個のデータがサーバ１〜５の５個のサーバへ割り振られる。また、図２１に示すように、第１バックアップ７１０は、図１９の場合と同様に、Ｎ×（Ｎ−１）個、すなわち２０個の第１バックアップが、（Ｎ−１）個、すなわち４個ずつ、サーバ１〜サーバ５の５個のサーバへ割り振られる。
【００１４】
ここで、第２バックアップ７２０は、一例として、次のように割り振られる。すなわち、各サーバに割り振った第１バックアップのコピー（copy）がそのサーバに付与された番号の次の番号を持つサーバの第２バックアップとして割り振られる。このとき、第１バックアップのコピーの中に割り振り先のサーバの番号を含む第１バックアップは、さらに次の番号を持つサーバの第２バックアップとして割り振られる。
【００１５】
図２１に示すように、サーバ１の第１バックアップのコピー（２，１）、（３，１）、（４，１）及び（５，１）がサーバ１の次の番号を持つサーバ２の第２バックアップとして割り振られる。このとき、第１バックアップのコピーのうち（２，１）のデータは、サーバ２の番号を含むので、サーバ２のさらに次の番号を持つサーバ３へ割り振られる。また、サーバ５の第１バックアップのコピー（１，５）は、割り振り先のサーバの番号が１であるので、サーバ１のさらに次の番号を持つサーバ２へスライドして割り振られる。このようにして、サーバ２の第２バックアップ（１，５）、（３，１）、（４，１）及び（５，１）が割り振られる。なお、サーバ２以外のサーバ１、サーバ３〜サーバ５についてもＮ−１個、すなわち４個の第２バックアップが同様に割り振られる。
【００１６】
このように、各サーバに第２バックアップを割り振っておけば、複数のサーバのうち２つのサーバが故障や保守によって分散処理の実行対象から除外された場合でも、分散処理の実行対象から除外されたサーバの分のデータを残りのサーバによって処理できる。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００９−４８３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、上記の従来技術では、複数のサーバのうち２つのサーバが故障や保守によって分散処理の実行対象から除外された場合に、サーバ間における処理負荷のばらつきが大きくなってしまうケース（case）があるという問題がある。
【００１９】
図２２は、サーバが２つ故障した場合における残りのサーバの処理負荷を示す図である。図２２に示す例は、図２１に示したサーバ１〜サーバ５のうちサーバ４及びサーバ５が故障した場合を想定している。図２２に示す網掛け部分のデータ（４，１）、（４，２）及び（４，３）は、サーバ４の故障によって他のサーバで追加して処理が実行される第１バックアップを表す。また、図２２に示す網掛け部分のデータ（５，１）、（５，２）及び（５，３）は、サーバ５の故障によって他のサーバで追加して処理が実行される第１バックアップを表す。また、図２２に示す網掛け部分のデータ（５，４）及び（４，５）は、サーバ４及びサーバ５の故障によって他のサーバで追加して処理が実行される第２バックアップを表す。なお、図１９〜図２２の例では、サーバが故障により分散処理の実行対象から除外される場合を想定しているが、保守や他の要因によって分散処理の実行対象から除外される場合も同様である。
【００２０】
図２２に示すように、サーバ４及びサーバ５が故障した場合には、４個のメインデータが各サーバで処理される。さらに、各サーバに割り振られた第１バックアップのうちサーバ４及びサーバ５に対応する第１バックアップ（Ｊ，Ｋ）及び（Ｋ，Ｊ）がサーバ４及びサーバ５の代わりに各サーバにより処理される。なお、「Ｊ」及び「Ｋ」は、１〜５の自然数であり、Ｊ≠Ｋであるものとする。例えば、サーバ１は、４個のメインデータを処理するとともに、第１バックアップ（４，１）及び（５，１）と第２バックアップ（５，４）及び（４，５）とをさらに処理する。また、サーバ２は、４個のメインデータを処理するとともに、第１バックアップ（４，２）及び（５，２）を処理する。また、サーバ３は、４個のメインデータを処理するとともに、第１バックアップ（４，３）及び（５，３）を処理する。
【００２１】
このように、サーバ４及びサーバ５が故障した場合には、サーバ１によって４つのバックアップデータが処理される一方で、サーバ２及びサーバ３によっては２つのバックアップデータしか処理されない。このため、サーバ１〜サーバ３の間で処理負荷の差はバックアップデータの２つ分となり、故障時の処理負荷がサーバ１に偏ってしまう。
【００２２】
なお、ここでは、複数のサーバがデータを分担して処理を並列に行う場合を例示して説明したが、１つのコンピュータに複数のプロセッサを搭載して処理する場合にも同様に生ずる問題である。
【００２３】
開示の技術は、上記に鑑みてなされたものであって、サーバ間における処理負荷のばらつきを抑制できるデータ割振り装置、データ割振り方法及びデータ割振りプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
本願の開示するデータ割振り装置は、所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置の数を取得する取得部を有する。前記複数の装置は、前記複数の装置のうち１つの装置が前記分散処理の実行対象から除外された場合に第１バックアップデータを処理する。さらに、前記複数の装置は、前記複数の装置のうち２つの装置が前記分散処理の実行対象から除外された場合に第２バックアップデータを処理する。前記データ割振り装置は、前記取得部によって取得された装置の数に応じて、前記第２バックアップデータの割り振りを決定する決定部を有する。前記決定部は、所定の割り振りが同一の装置へ重複しないように、前記第２バックアップデータの割り振りを決定する。前記所定の割り振りには、第１の装置が前記分散処理の実行対象から除外された場合に第２の装置に処理を実行させるデータと、前記第２の装置が前記分散処理の実行対象から除外された場合に前記第１の装置に処理を実行させるデータとが含まれる。また、前記所定の割り振りには、同一の装置に対し、前記メインデータ又は前記第１バックアップデータのいずれかと同一の前記第２バックアップデータが含まれる。
【発明の効果】
【００２５】
本願の開示するデータ割振り装置の一つの態様によれば、サーバ間における処理負荷のばらつきを抑制できるという効果を奏する。
【図面の簡単な説明】
【００２６】
【図１】図１は、実施例１に係る検索システムのシステム構成を示す図である。
【図２】図２は、実施例１における第２バックアップの割り振りの一例を示す図である。
【図３】図３は、実施例１に係る管理サーバの構成を示すブロック図である。
【図４Ａ】図４Ａは、グラフモデルの作成方法を説明するための図である。
【図４Ｂ】図４Ｂは、グラフモデルの作成方法を説明するための図である。
【図４Ｃ】図４Ｃは、グラフモデルの作成方法を説明するための図である。
【図４Ｄ】図４Ｄは、グラフモデルの作成方法を説明するための図である。
【図５Ａ】図５Ａは、グラフモデルの作成結果の一例を示す図である。
【図５Ｂ】図５Ｂは、グラフモデルの作成結果の一例を示す図である。
【図６Ａ】図６Ａは、既に求められた選択辺集合の流用方法を説明するための図である。
【図６Ｂ】図６Ｂは、既に求められた選択辺集合の流用方法を説明するための図である。
【図６Ｃ】図６Ｃは、既に求められた選択辺集合の流用方法を説明するための図である。
【図６Ｄ】図６Ｄは、既に求められた選択辺集合の流用方法を説明するための図である。
【図７】図７は、グラフモデルを用いて決定された第２バックアップの割り振りの一例を示す図である。
【図８】図８は、実施例１に係る管理サーバによって実行される全体処理の手順を示すフローチャートである。
【図９】図９は、実施例１に係る第２バックアップの割振り決定処理の手順を示すフローチャートである。
【図１０】図１０は、実施例１に係る故障処理の手順を示すフローチャートである。
【図１１】図１１は、実施例１に係る復旧処理の手順を示すフローチャートである。
【図１２】図１２は、応用例により決定された第２バックアップの割り振りの一例を示す図である。
【図１３】図１３は、応用例に係る第２バックアップの割振り決定処理の手順を示すフローチャートである。
【図１４Ａ】図１４Ａは、ハミルトン閉路の一例を示す図である。
【図１４Ｂ】図１４Ｂは、ハミルトン閉路の一例を示す図である。
【図１４Ｃ】図１４Ｃは、ハミルトン閉路の一例を示す図である。
【図１４Ｄ】図１４Ｄは、ハミルトン閉路の一例を示す図である。
【図１５Ａ】図１５Ａは、ハミルトン閉路に基づく第２バックアップの割振り方法を説明するための図である。
【図１５Ｂ】図１５Ｂは、ハミルトン閉路に基づく第２バックアップの割振り方法を説明するための図である。
【図１５Ｃ】図１５Ｃは、ハミルトン閉路に基づく第２バックアップの割振り方法を説明するための図である。
【図１５Ｄ】図１５Ｄは、ハミルトン閉路に基づく第２バックアップの割振り方法を説明するための図である。
【図１５Ｅ】図１５Ｅは、ハミルトン閉路に基づく第２バックアップの割振り方法を説明するための図である。
【図１６】図１６は、ハミルトン閉路を用いて決定された第２バックアップの割り振りの一例を示す図である。
【図１７】図１７は、実施例２に係る第２バックアップの割振り決定処理の手順を示すフローチャートである。
【図１８】図１８は、実施例３に係るデータ割振りプログラムを実行するコンピュータの一例について説明するための図である。
【図１９】図１９は、従来技術における第１バックアップの割り振りの一例を示す図である。
【図２０】図２０は、サーバが１つ故障した場合における残りのサーバの処理負荷を示す図である。
【図２１】図２１は、従来技術における第２バックアップの割り振りの一例を示す図である。
【図２２】図２２は、サーバが２つ故障した場合における残りのサーバの処理負荷を示す図である。
【発明を実施するための形態】
【００２７】
以下に、本願の開示するデータ割振り装置、データ割振り方法及びデータ割振りプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００２８】
［システム構成］
まず、本実施例に係る検索システムについて説明する。図１は、実施例１に係る検索システムのシステム構成を示す図である。図１に示す検索システム（system）は、クライアント３０から受け付けた検索要求に応答して検索処理を複数の実行サーバ１〜Ｎに並列して実行させるものである。なお、図１の例では、データ割振り装置の一態様である管理サーバ１０が複数の実行サーバ１〜Ｎによって検索処理に使用されるデータを割り振ることにより、検索処理を実行サーバ１〜Ｎに分散処理させる場合を想定する。
【００２９】
図１に示すように、検索システムには、クライアント（client）３０と、管理サーバ（server）１０と、実行サーバ１〜Ｎとが収容される。図１の例では、１つのクライアント、１つの管理サーバをそれぞれ図示したが、開示のシステムは図示の構成に限定されない。すなわち、検索システムは、任意の数のクライアントおよび管理サーバを収容できる。また、検索システムに収容される実行サーバの数は、２つの実行サーバが分散処理の実行対象から除外された場合に２つ以上の実行サーバＮが検索処理を代行できる数、すなわちＮ≦４であればよい。
【００３０】
これら管理サーバ１０及びクライアント３０は、ネットワーク（network）２０を介して相互に通信可能に接続される。なお、ネットワーク２０には、有線または無線を問わず、インターネット（Internet）、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００３１】
クライアント３０は、管理サーバ１０及び実行サーバ１〜Ｎによる検索サービス（service）の提供を受ける側のコンピュータである。かかるクライアント３０の一例としては、パーソナルコンピュータ（personal  computer）など固定端末の他、携帯電話機、ＰＨＳ（Personal  Handyphone  System）やＰＤＡ（Personal  Digital  Assistant）などの移動体端末を適用することもできる。
【００３２】
このクライアント３０は、利用者から入力デバイス（device）を介して検索条件を受け付ける。かかる検索条件の一例としては、文書中に含まれるキーワード（key  word）や文書が作成された日付などの項目に関する条件の他、項目間の条件をＡＮＤ条件とするか、あるいはＯＲ条件とするかなどの指定が受け付けられる。そして、クライアント３０は、利用者から受け付けた検索条件をネットワーク２０を介して管理サーバ１０へ送信することにより検索要求を行う。その後、クライアント３０は、管理サーバ１０から返信された検索結果を所定の表示デバイスに表示させる。
【００３３】
実行サーバ１〜Ｎは、管理サーバ１０からの検索指示に基づいて検索処理を実行するコンピュータである。一例としては、実行サーバ１〜Ｎは、管理サーバ１０から検索処理に使用するデータをロード（load）した上でメモリ（memory）に展開することにより、検索対象とするデータをアクティベート（activate）する。そして、実行サーバ１〜Ｎは、検索対象とするデータをアクティベートした状態で管理サーバ１０から検索指示を受け付けた場合に検索指示に含まれる検索条件にしたがって検索処理を実行し、その検索結果を管理サーバ１０へ応答する。なお、実行サーバ１〜Ｎは、各実行サーバ１〜Ｎの処理負荷を均等にする観点から、各実行サーバ間で性能が同一であることが好ましい。
【００３４】
管理サーバ１０は、クライアント３０に検索サービスを提供するコンピュータである。一例としては、管理サーバ１０は、クライアント３０から検索要求を受け付けた場合に、検索条件を含む検索指示を実行サーバ１〜実行サーバＮへ通知する。これによって、アクティベートされていたデータに対する検索処理が実行サーバ１〜Ｎの各サーバによって実行される。その後、管理サーバ１０は、実行サーバ１〜Ｎから応答された検索結果を統合した上で統合後の検索結果をクライアント３０へ返信する。
【００３５】
ここで、管理サーバ１０は、実行サーバ１〜Ｎのうち一部のサーバに故障が発生したり、また、サーバの保守を行う場合に、故障や保守により稼働が停止される実行サーバを検索処理を実行する対象から除外する。このように稼働が停止することにより検索処理を分担する実行サーバの数が変化した場合には、管理サーバ１０は、検索処理の実行対象とする実行サーバをサーバ全体から残りの実行サーバへ縮退した上で検索処理を実行させる。なお、以下では、実行サーバの故障により検索処理を分担する実行サーバの数が減少したり、故障した実行サーバの復旧により検索処理を分担する実行サーバの数が増加する場合を想定して説明を行うが、保守や他の要因によって数が増減する場合も同様である。
【００３６】
かかる縮退処理を実現するために、管理サーバ１０は、各実行サーバ１〜Ｎに他のサーバの故障の有無に関係なく検索処理を実行させるメインデータの他に、一部の実行サーバが故障することを想定してバックアップデータを各実行サーバ１〜Ｎに割り振る。
【００３７】
すなわち、実行サーバ１〜Ｎには、自装置が検索処理するメインデータとともに、他装置が故障した場合に自装置が他装置の代わりに検索処理するデータがバックアップデータ（backup  data）として管理サーバ１０により割り振られる。かかるバックアップデータとしては、第１バックアップ及び第２バックアップの２種類のデータが用意される。このうち、第１バックアップは、実行サーバ１〜Ｎのうちサーバが１つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって検索処理させるデータを指す。また、第２バックアップは、実行サーバ１〜Ｎのうちサーバが２つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって検索処理を実行させるデータを指す。
【００３８】
一例として、管理サーバ１０は、検索対象とするデータの総体をＮ×（Ｎ−１）個に分割した上で分割後の（Ｎ−１）個のデータをメインデータとして実行サーバ１〜ＮのＮ個のサーバへそれぞれ割り振る。また、管理サーバ１０は、分割後の（Ｎ−１）個のデータを複製した上で複製後の（Ｎ−１）個のデータを第１バックアップとして実行サーバ１〜ＮのＮ個のサーバへそれぞれ割り振る。さらに、管理サーバ１０は、分割後の（Ｎ−１）個のデータを複製した上で複製後の（Ｎ−１）個のデータを第２バックアップとして実行サーバ１〜ＮのＮ個のサーバへそれぞれ割り振る。
【００３９】
［第２バックアップの割振りポリシー］
ここで、本実施例に係る管理サーバ１０は、実行サーバ１〜Ｎのうち２つのサーバが故障や保守によって検索処理の実行対象から除外された場合でも、サーバ間における処理負荷のばらつきを抑制できる第２バックアップの割り振りを実現する。なお、メインデータ及び第１バックアップについては、上記の従来技術と同様の割り振りを行うことによって正常時あるいは実行サーバ１〜Ｎのうちサーバが１つ故障した場合における実行サーバの１台あたりの処理負荷を均等にできる。
【００４０】
図２は、実施例１における第２バックアップの割り振りの一例を示す図である。この図２の例では、５つの実行サーバ１〜実行サーバ５に検索処理を並列に実行させる場合を想定している。図２に示す符号２００は、各実行サーバ１〜５によって他のサーバの故障の有無に関係なく処理されるメインデータを示す。また、図２に示す符号２１０は、実行サーバ１〜５のうちサーバが１つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって処理させる第１バックアップを示す。また、図２に示す符号２２０は、実行サーバ１〜５のうちサーバが２つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって処理させる第２バックアップを示す。これらメインデータ２００、第１バックアップ２１０及び第２バックアップ２２０の各データに付される数字のうち、左側の数字は、正常時に処理を担当するサーバを指す。また、右側の数字は、正常時に処理を担当するサーバが故障した場合にその代わりに処理を担当するサーバを指す。
【００４１】
図２に示すように、メインデータ２００は、Ｎ×（Ｎ−１）個、すなわちＮ＝５であるので５×（５−１）＝２０個のデータに分割された上で（Ｎ−１）個、すなわち４個のデータがサーバ１〜５の５個のサーバへ割り振られる。また、第１バックアップ２１０は、Ｎ×（Ｎ−１）個、すなわち２０個の第１バックアップが、（Ｎ−１）個、すなわち４個ずつ、サーバ１〜サーバ５の５個のサーバへ割り振られる。
【００４２】
ここで、第２バックアップは、次に例示する割振りポリシー（１）〜（３）にしたがって第２バックアップの割り振りを決定する。かかる割振りポリシー（１）として、（１）データ量を均等に割り振るという方針を採用する。さらに、割振りポリシー（２）として、メインデータ及び第１バックアップで担当させるデータを第２バックアップとして割り振らないという方針を採用する。さらに、割振りポリシー（３）として、同一の実行サーバの組をサポートする第２バックアップを同じ実行サーバに割り振らないという方針を採用する。
【００４３】
これを説明すると、管理サーバ１０は、割振りポリシー（１）にしたがって検索対象とするメインデータ総体をＮ×（Ｎ−１）個に分割した上で分割後の（Ｎ−１）個のデータを第２バックアップとして実行サーバ１〜ＮのＮ個のサーバへそれぞれ割り振る。図２の例で言えば、管理サーバ１０は、分散処理を行う実行サーバの数Ｎが５であるため、検索対象とするデータをＮ×（Ｎ−１）＝２０個に分割する。その上で、管理サーバ１０は、５つの実行サーバ１〜５に対して、Ｎ×（Ｎ−１）個、すなわち２０個に分割された第２バックアップを４個ずつ割り振る。このように、割振りポリシー（１）にしたがって割り振ることによって、各実行サーバで保持される第２バックアップのデータ量を均等にできる。
【００４４】
また、管理サーバ１０は、割振りポリシー（２）にしたがって、メインデータ及び第１バックアップで担当させるデータを第２バックアップとして同じ実行サーバには割り振らない。図２の例で言えば、実行サーバ１には、メインデータ（１，２）、（１，３）、（１，４）及び（１，５）と、第１バックアップ（２，１）、（３，１）、（４，１）及び（５，１）とが割り振られる。この場合には、管理サーバ１０は、第２バックアップ（１，２）、（１，３）、（１，４）、（１，５）、（２，１）、（３，１）、（４，１）及び（５，１）を実行サーバ１には割り振らない。このように、割振りポリシー（２）にしたがって割り振ることによって、実行サーバが２つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避することができ、その結果、耐故障性を高めることができる。
【００４５】
さらに、管理サーバ１０は、割振りポリシー（３）にしたがって、第２バックアップ（Ｊ，Ｋ）及び（Ｋ，Ｊ）を同じ実行サーバに割り振らない。なお、「Ｊ」及び「Ｋ」は、１〜５の自然数であり、Ｊ≠Ｋであるものとする。図２の例で言えば、管理サーバ１０は、第２バックアップ（３，５）を実行サーバ１に割り振ることを決定した場合に、実行サーバ１には第２バックアップ（５，３）を割り振らない。このように、割振りポリシー（３）にしたがって割り振ることによって、実行サーバ３及び実行サーバ５の２つサーバが故障した場合でも、第２バックアップ（３，５）の処理および第２バックアップ（５，３）の処理が実行サーバ１に偏ることを防止できる。
【００４６】
ここで、図２を用いて、実行サーバが２つ故障した場合における残りの実行サーバの処理負荷について説明する。図２の例では、実行サーバ１〜実行サーバ５のうち実行サーバ３及び実行サーバ５が故障した場合を想定している。図２に示す網掛け部分のデータ（３，１）、（３，２）及び（３，４）は、実行サーバ３の故障によって他の事項サーバで追加して処理が実行される第１バックアップを表す。また、図２に示す網掛け部分のデータ（５，１）、（５，２）及び（５，４）は、実行サーバ５の故障によって他の実行サーバで追加して処理が実行される第１バックアップを表す。また、図２に示す網掛け部分のデータ（３，５）及び（５，３）は、実行サーバ３及び実行サーバ５の故障によって他の実行サーバで追加して処理が実行される第２バックアップを表す。
【００４７】
図２に示すように、実行サーバ３及び実行サーバ５が故障した場合には、４個のメインデータが各実行サーバで処理される。さらに、各実行サーバに割り振られた第１バックアップのうち実行サーバ３及び実行サーバ５に対応する第１バックアップ（Ｊ，Ｋ）及び（Ｋ，Ｊ）が実行サーバ３及び実行サーバ５の代わりに各実行サーバにより処理される。例えば、実行サーバ１は、４個のメインデータを処理するとともに、第１バックアップ（３，１）及び（５，１）と第２バックアップ（３，５）とをさらに処理する。また、実行サーバ２は、４個のメインデータを処理するとともに、第１バックアップ（３，２）及び（５，２）と第２バックアップ（５，３）とを処理する。また、実行サーバ４は、４個のメインデータを処理するとともに、第１バックアップ（３，４）及び（５，４）を処理する。
【００４８】
このように、実行サーバ３及び実行サーバ５が故障した場合には、実行サーバ１及び実行サーバ２によって３つのバックアップデータが処理されるとともに、実行サーバ４によっては２つのバックアップデータが処理される。このため、実行サーバ１、実行サーバ２及び実行サーバ４の間で処理負荷の差がバックアップデータの１つ分、すなわち最小差とすることができる。
【００４９】
［管理サーバの構成］
次に、本実施例に係る検索システムに含まれる管理サーバの構成について説明する。図３は、実施例１に係る管理サーバの構成を示すブロック図である。図３に示す管理サーバ１０は、通信Ｉ／Ｆ部１１と、記憶部１２と、制御部１３とを有する。なお、管理サーバ１０は、図３に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば入力デバイスや表示デバイス等を有するものとする。
【００５０】
このうち、通信Ｉ／Ｆ部１１は、他の装置、例えば実行サーバ１〜Ｎやクライアント３０との間で通信を行うためのインタフェース（interface）である。
【００５１】
記憶部１２は、例えば、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク（hard  disk）、光ディスクなどの記憶装置である。なお、記憶部１２は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。
【００５２】
記憶部１２は、制御部１３で実行されるＯＳ（Operating  System）やデータ割振りプログラムなどの各種プログラムを記憶する。さらに、記憶部１２は、制御部１３で実行されるプログラムの実行に必要な各種のデータ、例えばシステム構成データ１２ａと、検索対象データ１２ｂとを併せて記憶する。
【００５３】
このうち、システム構成データ１２ａは、検索システムの構成を示すデータである。かかるシステム構成データ１２ａの一態様としては、管理サーバ１０や実行サーバ１〜Ｎの性能に関する情報の他、管理サーバ１０に接続されている実行サーバの個数などが含まれる。なお、システム構成データ１２ａは、検索システムに実行サーバ１〜Ｎが追加されたり、あるいは削除されたりした場合に実行サーバの個数の増減が更新される。
【００５４】
また、検索対象データ１２ｂは、検索処理の実行対象とされるデータである。かかるシステム構成データ１２ａの一態様としては、文書データを始めとする各種のコンテンツ（contents）が含まれる。なお、検索対象データ１２ｂは、後述の分割部１３ｂによって所定数のデータに分割された後に各実行サーバ１〜Ｎへ割り振られる原本データとして使用される。
【００５５】
制御部１３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１３は、図３に示すように、取得部１３ａと、分割部１３ｂと、複製部１３ｃと、割振り決定部１３ｄと、実行制御部１３ｅと、サーバ監視部１３ｆとを有する。
【００５６】
このうち、取得部１３ａは、検索処理を分担する実行サーバ１〜Ｎの数を取得する処理部である。一例としては、取得部１３ａは、記憶部１２に記憶されたシステム構成データ１２ａを読み出すことにより、管理サーバ１０に接続されている実行サーバ１〜Ｎの数を取得する。他の一例としては、取得部１３ａは、各実行サーバ１〜Ｎに問合せを行うことにより応答が得られた実行サーバの数を計測する。更なる一例としては、取得部１３ａは、システム構成データ１２ａに相当するデータを保持する図示しない外部装置に問い合わせることにより、管理サーバ１０に接続されている実行サーバ１〜Ｎの数を取得する。
【００５７】
分割部１３ｂは、取得部１３ａによって取得された実行サーバ１〜Ｎの数に応じて、検索対象データ１２ｂを分割する処理部である。かかる分割の一態様として、分割部１３ｂは、記憶部１２に記憶された検索対象データ１２ｂをＮ×（Ｎ−１）個に分割する。例えば、実行サーバの数Ｎが５である場合には、分割部１３ｂは、検索対象データ１２ｂをＮ×（Ｎ−１）個、すなわち５×（５−１）＝２０個のデータに分割する。
【００５８】
複製部１３ｃは、分割部１３ｂによって分割されたデータを複製する処理部である。かかる複製の一態様として、複製部１３ｃは、メインデータ、第１バックアップ及び第２バックアップの３組のデータを実行サーバ１〜Ｎに割り振るために、分割後のＮ×（Ｎ−１）個のデータを用いて２組分のＮ×（Ｎ−１）個のデータをさらに複製する。これによって、実行サーバ１〜Ｎに割り振られるＮ×（Ｎ−１）個のデータが３組準備されることになる。
【００５９】
割振り決定部１３ｄは、メインデータ、第１バックアップ及び第２バックアップの割り振りを決定する処理部である。なお、ここでは、割振り決定部１３ｄがメインデータ、第１バックアップ及び第２バックアップの全ての割り振りを決定する場合を説明するが、全部または一部の割り振りの決定を外部記憶装置または外部装置から取得することとしてもかまわない。
【００６０】
これを説明すると、割振り決定部１３ｄは、メインデータ、第１バックアップ及び第２バックアップのうち、メインデータ及び第１バックアップの割り振りを図２に示した方法と同様で決定する。すなわち、割振り決定部１３ｄは、分割部１３ｂによって分割されたＮ×（Ｎ−１）個のデータをメインデータとして実行サーバ１〜ＮのＮ個のサーバへそれぞれ均等に（Ｎ−１）個ずつ割り振る。また、割振り決定部１３ｄは、複製部１３ｃによって複製されたＮ×（Ｎ−１）個のデータを第１バックアップとして実行サーバ１〜ＮのＮ個のサーバへそれぞれ均等に（Ｎ−１）個ずつ割り振る。
【００６１】
また、割振り決定部１３ｄは、上記の割振りポリシー（１）〜（３）にしたがって作成されるグラフモデルに基づいて第２バックアップの割り振りを決定する。ここで言う「グラフモデル」とは、実行サーバ１〜Ｎを点で表すとともに第２バックアップを辺で表して作成されるグラフを指す。
【００６２】
ここで、第２バックアップの割振り決定に関するアルゴリズム（algorithm）について説明する。まず、割振り決定部１３ｄは、各々の実行サーバ１〜Ｎに対応させた点を正多角形の頂点の位置にそれぞれ配置する。その上で、割振り決定部１３ｄは、割振り対象とする実行サーバに対応する点以外の点を始点とし、割振りポリシー（１）〜（３）を満たすように定義された辺選択ポリシー（イ）、（ロ）及び（ハ）にしたがって２点を結ぶ線分、すなわち辺を選択する。このような辺の選択を繰り返すことによって、割振り決定部１３ｄは、グラフモデルを作成する。そして、割振り決定部１３ｄは、グラフモデルを作成することによって得られた辺に対応するデータを割振り対象とする実行サーバの第２バックアップとして決定する。
【００６３】
かかる辺選択ポリシー（イ）として、割振り対象とする実行サーバに対応する点を含む辺を選択しないという方針を採用する。この辺選択ポリシー（イ）を採用することによって、実行サーバが２つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避し、耐故障性を高める。また、辺選択ポリシー（ロ）として、既に選択が終わった選択辺とは逆向きの辺、すなわち２点の組合せが同一であるとともに始点及び終点が逆となる有向線分を選択しないという方針を採用する。この辺選択ポリシー（ロ）を採用することによって、実行サーバＪ及び実行サーバＫの２つサーバが故障した場合でも、第２バックアップ（Ｊ，Ｋ）の処理および第２バックアップ（Ｋ，Ｊ）の処理が１つの実行サーバに偏ることを防止する。さらに、選択ポリシー（ハ）として、既に選択が終わった選択辺の集合および排除辺の集合に含まれない点を選択するという方針を採用する。この辺選択ポリシー（ハ）を採用する理由は、１つの点に対して得た選択辺の集合を正多角形の重心を中心にして回転することにより、他の点に対する選択辺の集合を求める際に既に求めた選択辺の集合を流用するためである。
【００６４】
図４Ａ〜図４Ｄは、グラフモデルの作成方法を説明するための図である。図５Ａ及び図５Ｂは、グラフモデルの作成結果の一例を示す図である。これら図４Ａ〜図４Ｄ、図５Ａ及び図５Ｂの例では、分散処理を行う実行サーバの数Ｎが５つである場合を想定している。図４Ａ〜図４Ｄ、図５Ａ及び図５Ｂに示す丸表記の「点」は、実行サーバ１〜実行サーバ５を示す。図４Ａ〜図４Ｄ、図５Ａ及び図５Ｂに示す点１の網掛けは、割振り対象とする実行サーバとして選択された点であることを示す。図４Ａ〜図４Ｄ、図５Ａ及び図５Ｂに示す実線は、辺選択ポリシーにしたがって選択された選択辺を指す。図４Ａ〜図４Ｄ、図５Ａ及び図５Ｂに示す点線は、正多角形の重心を中心にして選択辺を回転することにより得られる排除辺を指す。
【００６５】
まず、割振り決定部１３ｄは、図４Ａに示すように、各々の実行サーバ１〜Ｎに対応させた点を正５角形の頂点の位置にそれぞれ配置する。そして、割振り決定部１３ｄは、第２バックアップの割振り対象とする実行サーバに対応する点を１つ選択する。ここでは、図４Ａの例にしたがって実行サーバ１に対応する点が選択されたものとして説明を進めるが、他の実行サーバ２〜５に対応する点を選択してもよい。その後、割振り決定部１３ｄは、辺選択ポリシー（イ）、（ロ）及び（ハ）にしたがって２点を結ぶ辺を１つ選択する。ここでは、図４Ａの例にしたがって第２バックアップ（２，３）に対応する辺（２，３）が選択されたものとして説明を進めるが、辺選択ポリシーに反する辺でなければ任意の辺を選択できる。そして、割振り決定部１３ｄは、このようにして選択した選択辺（２，３）を図示しない作業用メモリに選択辺集合として登録する。
【００６６】
続いて、割振り決定部１３ｄは、辺（２，３）を選択した後に、辺（２，３）を正５角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図４Ｂに示すように、辺（２，３）を右回りに回転させた場合には、辺（３，４）、辺（４，５）、辺（５，１）及び辺（１，２）が排除辺として得られ、これらの排除辺が排除辺集合として登録される。このようにして、割振り決定部１３ｄは、割振り対象として選択された点に対する辺の選択の余地がなくなり、有向完全グラフが完成するまで、辺の選択、選択辺集合への選択辺の追加、排除辺集合への排除辺の追加を繰り返し行う。なお、図４Ｂに示す例では、有向完全グラフが作成されていないので、さらなる辺の選択を実行する。
【００６７】
そして、割振り決定部１３ｄは、辺選択ポリシー（イ）、（ロ）及び（ハ）にしたがって２点を結ぶ辺をさらに１つ選択する。ここでは、図４Ｃの例にしたがって第２バックアップ（５，２）に対応する辺（５，２）を選択したものとする。続いて、割振り決定部１３ｄは、このようにして選択した選択辺（５，２）を図示しない作業用メモリに選択辺集合として登録する。その後、割振り決定部１３ｄは、選択辺（５，２）を正５角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図４Ｃに示すように、辺（５，２）を右回りに回転させた場合には、辺（１，３）、辺（２，４）、辺（３，５）及び辺（４，１）が排除辺として得られ、これらの排除辺が排除辺集合として登録される。なお、図４Ｃに示す例では、有向完全グラフが作成されていないので、さらなる辺の選択を実行する。
【００６８】
続いて、割振り決定部１３ｄは、辺選択ポリシー（イ）、（ロ）及び（ハ）にしたがって２点を結ぶ辺をさらに１つ選択する。ここでは、図４Ｄの例にしたがって第２バックアップ（５，４）に対応する辺（５，４）を選択したものとする。そして、割振り決定部１３ｄは、このようにして選択した選択辺（５，４）を図示しない作業用メモリに選択辺集合として登録する。その後、割振り決定部１３ｄは、選択辺（５，４）を正５角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図４Ｄに示すように、辺（５，４）を右回りに回転させた場合には、辺（１，５）、辺（２，１）、辺（３，２）及び辺（４，３）が排除辺として得られ、これらの排除辺が排除辺集合として登録される。なお、図４Ｄに示す例では、有向完全グラフが作成されていないので、さらなる辺の選択を実行する。
【００６９】
そして、割振り決定部１３ｄは、辺選択ポリシー（イ）、（ロ）及び（ハ）にしたがって２点を結ぶ辺をさらに１つ選択する。ここでは、図５Ａの例にしたがって第２バックアップ（５，３）に対応する辺（５，３）を選択したものとする。続いて、割振り決定部１３ｄは、このようにして選択した選択辺（５，３）を図示しない作業用メモリに選択辺集合として登録する。その後、割振り決定部１３ｄは、選択辺（５，３）を正５角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図５Ａに示すように、辺（５，３）を右回りに回転させた場合には、辺（１，４）、辺（２，５）、辺（３，１）及び辺（４，２）が排除辺として得られ、これらの排除辺が排除辺集合として登録される。
【００７０】
このようにして割振り対象とする実行サーバ１の有向完全グラフが完成すると、図５Ｂに示す選択辺集合、すなわち辺（２，３）、辺（５，２）、辺（５，４）及び辺（５，３）が得られる。この場合には、割振り決定部１３ｄは、辺（２，３）、辺（５，２）、辺（５，４）及び辺（５，３）に対応する第２バックアップ（２，３）、（５，２）、（５，４）及び（５，３）を実行サーバ１に割り振ることを決定する。
【００７１】
そして、割振り決定部１３ｄは、実行サーバに割り振る第２バックアップが１つ決定した場合に、既に求められた選択辺集合を流用して、他の実行サーバに対する第２バックアップの割り振りを決定する。
【００７２】
図６Ａ〜図６Ｄは、既に求められた選択辺集合の流用方法を説明するための図である。図６Ａ〜図６Ｄに示す黒点の網掛けは、既に求められた選択辺集合が求められた点を指す。図６Ａ〜図６Ｄに示す斜線のハッチングは、既に求められた選択辺集合を用いて新たに選択辺集合を求める点を指す。図６Ａ〜図６Ｄに示す実線は、回転前の選択辺集合を指す。図６Ａ〜図６Ｄに示す一点鎖線は、回転後の選択辺集合を指す。
【００７３】
図６Ａに示すように、割振り決定部１３ｄは、正５角形の重心を中心にして、最初に選択した点１が次の頂点である点２と一致するまで、最初に選択した点１の選択辺集合、すなわち実線の集合を回転させる。このようにして点１の選択辺集合を回転させると、一点鎖線の集合（１，５）、（１，４）、（１，３）及び（３，４）が得られる。このようにして、回転後に得られる選択辺集合が最初に選択した点１の選択辺集合と同じものが得られるまで、選択辺集合の回転を繰り返す。図６Ａに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部１３ｄは、次の頂点である点２を新たに選択したものとし、回転後の選択辺集合（１，５）、（１，４）、（１，３）及び（３，４）を関連付ける。そして、割振り決定部１３ｄは、選択辺集合（１，５）、（１，４）、（１，３）及び（３，４）を新たに選択した点２に対応する実行サーバ２の第２バックアップとして振り分けることを決定する。
【００７４】
続いて、割振り決定部１３ｄは、図６Ｂに示すように、正５角形の重心を中心にして、前回に選択した点２が次の頂点である点３と一致するまで、前回に選択した点２の選択辺集合、すなわち実線の集合を回転させる。このようにして点２の選択辺集合を回転させると、一点鎖線の集合（２，１）、（２，５）、（２，４）及び（４，５）が得られる。図６Ｂに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部１３ｄは、次の頂点である点３を新たに選択したものとし、回転後の選択辺集合（２，１）、（２，５）、（２，４）及び（４，５）を関連付ける。そして、割振り決定部１３ｄは、選択辺集合（２，１）、（２，５）、（２，４）及び（４，５）を新たに選択した点３に対応する実行サーバ３の第２バックアップとして振り分けることを決定する。
【００７５】
そして、割振り決定部１３ｄは、図６Ｃに示すように、正５角形の重心を中心にして、前回に選択した点３が次の頂点である点４と一致するまで、前回に選択した点３の選択辺集合、すなわち実線の集合を回転させる。このようにして点３の選択辺集合を回転させると、一点鎖線の集合（３，２）、（３，１）、（３，５）及び（５，１）が得られる。図６Ｃに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部１３ｄは、次の頂点である点４を新たに選択したものとし、回転後の選択辺集合（３，２）、（３，１）、（３，５）及び（５，１）を関連付ける。そして、割振り決定部１３ｄは、選択辺集合（３，２）、（３，１）、（３，５）及び（５，１）を新たに選択した点４に対応する実行サーバ４の第２バックアップとして振り分けることを決定する。
【００７６】
続いて、割振り決定部１３ｄは、図６Ｄに示すように、正５角形の重心を中心にして、前回に選択した点４が次の頂点である点５と一致するまで、前回に選択した点４の選択辺集合、すなわち実線の集合を回転させる。このようにして点４の選択辺集合を回転させると、一点鎖線の集合（４，３）、（４，２）、（４，１）及び（１，２）が得られる。図６Ｄに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部１３ｄは、次の頂点である点５を新たに選択したものとし、回転後の選択辺集合（４，３）、（４，２）、（４，１）及び（１，２）を関連付ける。そして、割振り決定部１３ｄは、選択辺集合（４，３）、（４，２）、（４，１）及び（１，２）を新たに選択した点５に対応する実行サーバ５の第２バックアップとして振り分けることを決定する。
【００７７】
その後、割振り決定部１３ｄは、正５角形の重心を中心にして、前回に選択した点５が次の頂点である点１と一致するまで、前回に選択した点５の選択辺集合、すなわち実線の集合を回転させる。このようにして点５の選択辺集合を回転させると、一点鎖線の集合（２，３）、（５，２）、（５，４）及び（５，３）が得られる。この場合には、割振り決定部１３ｄは、回転後の選択辺集合が最初の選択辺集合と一致するので、第２バックアップの割り振りを終了する。
【００７８】
このようにして割り振りが決定された各実行サーバ１〜５の第２バックアップは図７に示すような割り振りとなる。図７は、グラフモデルを用いて決定された第２バックアップの割り振りの一例を示す図である。図７に示すように、割振り決定部１３ｄは、メインデータ３００及び第１バックアップ３１０については上記の従来技術の場合と同様に割り振る。一方、割振り決定部１３ｄは、第２バックアップ３２０については辺集合ポリシーにしたがって生成されるグラフモデルに基づいて割り振る。それゆえ、割振り決定部１３ｄは、図７に示すように、各実行サーバで保持される第２バックアップのデータ量が均等になるように割り振ることができる。さらに、割振り決定部１３ｄは、図７に示すように、実行サーバが２つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避するように第２バックアップを割り振ることができる。さらに、割振り決定部１３ｄは、図７に示すように、実行サーバＪ及びＫの２つサーバが故障した場合でも、第２バックアップ（Ｊ，Ｋ）の処理および第２バックアップ（Ｋ，Ｊ）の処理が１つの実行サーバに偏ることがないように割り振ることができる。
【００７９】
図３の説明に戻り、実行制御部１３ｅは、実行サーバ１〜Ｎによってなされる検索処理の実行制御を行う処理部である。かかる実行制御の一態様として、実行制御部１３ｅは、メインデータ、第１バックアップまたは第２バックアップに関するアクティベートまたはディアクティベートを実行するように実行サーバ１〜Ｎへ指示する。
【００８０】
一例として、実行制御部１３ｅは、割振り決定部１３ｄによってメインデータ、第１バックアップ及び第２バックアップの割り振りが決定または再決定された場合に、メインデータ、第１バックアップ及び第２バックアップを各実行サーバ１〜Ｎへ送信する。その上で、実行制御部１３ｅは、メインデータのアクティベートを実行サーバ１〜Ｎへ指示することにより、各実行サーバ１〜Ｎのメモリ上にメインデータを展開させる。このように、実行制御部１３ｅは、各実行サーバ１〜Ｎへ検索指示を行う前の段階でメインデータをロードしたり、メインデータをメモリへ展開したりという準備を事前に実行させる。
【００８１】
他の一例として、実行制御部１３ｅは、サーバ監視部１３ｆによって実行サーバ１〜Ｎのいずれかのサーバの故障が検知された場合に、次のような処理を実行する。すなわち、実行制御部１３ｅは、故障が検知された実行サーバによって検索処理が実行される予定であったデータに対応するバックアップデータを残りの実行サーバにアクティベートさせる。なお、以下では、サーバ監視部１３ｆによって故障が検知された実行サーバのことを「故障サーバ」と呼ぶ。
【００８２】
このとき、故障が検知された実行サーバが１つである場合には、実行制御部１３ｅは、故障が検知されていない残りの実行サーバに故障サーバの番号Ｊを通知する。そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）をアクティベートするように故障サーバＪを除く実行サーバｉへ指示する。ここで言う「ｉ」は、１〜Ｎの自然数のうち任意の数を指す。これによって、故障サーバＪの代わりに残りの実行サーバｉに第１バックアップを検索処理させる準備を実行させる。
【００８３】
また、故障が検知された実行サーバが２つである場合には、実行制御部１３ｅは、故障が検知されていない残りの実行サーバに故障サーバの番号Ｊ及び番号Ｋを通知する。そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）及び（Ｋ，ｉ）をアクティベートするように故障サーバＪ及びＫを除く実行サーバｉへ指示する。さらに、実行制御部１３ｅは、第２バックアップ（Ｊ，Ｋ）または（Ｋ，Ｊ）をアクティベートするように故障サーバＪ及びＫを除く実行サーバｉへ指示する。これによって、故障サーバＪ及びＫの代わりに残りの実行サーバｉに第１バックアップ及び第２バックアップを検索処理させる準備を実行させる。
【００８４】
更なる一例として、実行制御部１３ｅは、サーバ監視部１３ｆによって故障サーバの復旧が検知された場合に、次のような処理を実行する。すなわち、実行制御部１３ｅは、故障からの復旧が検知されたサーバの代わりに残りの実行サーバに実行させる予定であったバックアップデータを残りの実行サーバにディアクティベートさせる。なお、以下では、サーバ監視部１３ｆによって故障からの復旧が検知された実行サーバのことを「復旧サーバ」と呼ぶ。
【００８５】
このとき、故障からの復旧が検知された実行サーバが２つである場合には、実行制御部１３ｅは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号Ｊ及び番号Ｋを通知する。そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）及び（Ｋ，ｉ）をディアクティベートするように復旧サーバＪ及びＫを除く実行サーバｉへ指示する。さらに、実行制御部１３ｅは、第２バックアップ（Ｊ，Ｋ）または（Ｋ，Ｊ）をディアクティベートするように復旧サーバＪ及びＫを除く実行サーバｉへ指示する。これによって、復旧サーバＪ及びＫの代わりに残りの実行サーバｉに第１バックアップ及び第２バックアップを検索処理させようとしていた準備を解除させる。
【００８６】
また、故障からの復旧が検知された実行サーバが１つであり、かつ故障サーバが２つである状態から故障サーバが１つになった場合には、実行制御部１３ｅは、次のような処理を実行する。すなわち、実行制御部１３ｅは、それまでに故障せずに残っていた実行サーバに故障サーバの番号Ｊと復旧サーバの番号Ｋとを通知する。そして、実行制御部１３ｅは、第１バックアップ（Ｋ，ｉ）をディアクティベートするように故障サーバＪ及び復旧サーバＫを除く実行サーバｉへ指示する。さらに、実行制御部１３ｅは、第２バックアップ（Ｊ，Ｋ）または（Ｋ，Ｊ）をディアクティベートするように故障サーバＪ及び復旧サーバＫを除く実行サーバｉへ指示する。これによって、復旧サーバＫの代わりに残りの実行サーバｉに第１バックアップ及び第２バックアップを検索処理させようとしていた準備を解除させる。
【００８７】
また、故障からの復旧が検知された実行サーバが１つであり、かつ故障サーバが１つである状態から故障サーバがゼロになった場合には、実行制御部１３ｅは、次のような処理を実行する。すなわち、実行制御部１３ｅは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号Ｊを通知する。そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）をディアクティベートするように復旧サーバＪを除く実行サーバｉへ指示する。
【００８８】
実行制御の他の一態様として、実行制御部１３ｅは、クライアント３０から検索要求を受け付けた場合に、検索条件を含む検索指示を各実行サーバ１〜Ｎへ行うことにより、各実行サーバ１〜Ｎでアクティベート中のデータに対して検索処理を実行させる。
【００８９】
サーバ監視部１３ｆは、実行サーバ１〜Ｎの稼働状態を監視する処理部である。一例としては、サーバ監視部１３ｆは、実行サーバ１〜Ｎとの間で稼働状態を確認するための通信を任意のタイミング、例えば一定周期や規定時刻などに行う。この結果、サーバ監視部１３ｆは、通信の応答が得られなかった実行サーバがある場合に、その実行サーバを故障サーバとして検知する。また、サーバ監視部１３ｆは、通信の応答が得られた実行サーバの中に故障サーバがある場合に、その故障サーバを復旧サーバとして検知する。
【００９０】
［処理の流れ］
次に、本実施例に係る検索システムにおける処理の流れを説明する。なお、ここでは、管理サーバ１０によって実行される（１）全体処理について説明してから、全体処理の中のサブフローとして実行される（２）第２バックアップの割振り決定処理、（３）故障処理、（４）復旧処理を説明する。
【００９１】
（１）全体処理
図８は、実施例１に係る管理サーバによって実行される全体処理の手順を示すフローチャートである。この全体処理は、検索システムのシステム構成、すなわち管理サーバ１０に接続されている実行サーバの数が変更された場合に処理が起動される。
【００９２】
図８に示すように、分割部１３ｂは、取得部１３ａによって取得された管理サーバ１０に接続中の実行サーバ１〜Ｎの数に応じて、検索対象データ１２ｂをＮ×（Ｎ−１）個に分割する。そして、複製部１３ｃは、分割後のＮ×（Ｎ−１）個のデータを用いて２組分のＮ×（Ｎ−１）個のデータをさらに複製する（ステップＳ１０１）。
【００９３】
続いて、割振り決定部１３ｄは、メインデータの割り振りを決定し（ステップＳ１０２）、さらに、第１バックアップの割り振りを決定する（ステップＳ１０３）。そして、割振り決定部１３ｄは、一例として、グラフモデルに基づく第２バックアップの割振り決定処理によって第２バックアップの割り振りを決定する（ステップＳ１０４）。
【００９４】
その後、実行制御部１３ｅは、割振り決定部１３ｄによって決定されたメインデータ、第１バックアップ及び第２バックアップの割り振りにしたがってメインデータ、第１バックアップ及び第２バックアップを各実行サーバ１〜Ｎへ送信する（ステップＳ１０５）。その上で、実行制御部１３ｅは、メインデータのアクティベートを実行サーバ１〜Ｎへ指示する（ステップＳ１０６）。
【００９５】
そして、サーバ監視部１３ｆによって実行サーバの故障が検知された場合（ステップＳ１０７肯定）には、実行制御部１３ｅは、故障サーバのバックアップデータをアクティベートする故障処理を実行する（ステップＳ１０８）。なお、故障処理が終了した後には、ステップＳ１０７へ移行する。
【００９６】
また、サーバ監視部１３ｆによって故障サーバの復旧が検知された場合（ステップＳ１０９肯定）には、実行制御部１３ｅは、復旧サーバのバックアップデータをディアクティベートする復旧処理を実行する（ステップＳ１１０）。なお、復旧処理が終了した後には、ステップＳ１０７へ移行する。
【００９７】
また、クライアント３０から検索要求を受け付けた場合（ステップＳ１１１肯定）には、実行制御部１３ｅは、検索条件を含む検索指示を実行サーバ１〜Ｎへ行うことにより（ステップＳ１１２）、実行サーバ１〜Ｎでアクティベート中のデータを検索処理させる。なお、実行サーバ１〜Ｎに検索指示を行った後には、ステップ１０７へ移行する。
【００９８】
このようにして、割振り決定部１３ｄによってメインデータ、第１バックアップ及び第２バックアップの割り振りが決定された後には、ステップＳ１０７〜ステップＳ１１２までの処理が繰り返し実行される。
【００９９】
なお、図８に示したフローチャートでは、ステップＳ１０１〜ステップＳ１０４の順に処理を実行する場合を図示したが、これらの処理順序は図示のものに限定されない。すなわち、ステップＳ１０１〜ステップＳ１０４の処理は任意の順序に変更できる。
【０１００】
（２）第２バックアップの割振り決定処理
図９は、実施例１に係る第２バックアップの割振り決定処理の手順を示すフローチャートである。この割振り決定処理は、図８に示したステップＳ１０４に対応する処理であり、一例として、ステップＳ１０３が終了した後に実行される。
【０１０１】
図９に示すように、割振り決定部１３ｄは、各々の実行サーバ１〜Ｎに対応させた点を正多角形の頂点の位置にそれぞれ配置する（ステップＳ２０１）。そして、割振り決定部１３ｄは、第２バックアップの割振り対象とする実行サーバに対応する点を１つ選択する（ステップＳ２０２）。
【０１０２】
このとき、割振り決定部１３ｄは、割振り対象の実行サーバとして選択した点の除く全ての点に関し、選択辺集合及び排除辺集合として登録された辺以外に選択できる辺が存在するか否か、すなわち有向完全グラフが完成したか否かを判定する（ステップＳ２０３）。ここで言う「有向完全グラフ」は、有向線分によって形成されるものであり、選択辺集合に登録された選択辺の逆方向の辺は辺選択ポリシー（ロ）の規定により選択が禁止されているものとする。なお、第２バックアップの割振り対象とする実行サーバに対応する点を選択した時点では、選択辺集合及び排除辺集合に１つも辺が登録されておらず、有向完全グラフは完成していないので、そのままステップＳ２０４へ移行する。
【０１０３】
続いて、割振り決定部１３ｄは、辺選択ポリシー（イ）、（ロ）及び（ハ）にしたがって２点を結ぶ辺を１つ選択する（ステップＳ２０４）。そして、割振り決定部１３ｄは、このようにして選択した選択辺を図示しない作業用メモリに選択辺集合として登録する（ステップＳ２０５）。
【０１０４】
続いて、割振り決定部１３ｄは、選択辺を正多角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する（ステップＳ２０６）。その後、割振り決定部１３ｄは、有向完全グラフが完成するまで（ステップＳ２０３否定）、ステップＳ２０４〜ステップＳ２０６までの処理を繰り返し実行する。
【０１０５】
そして、有向完全グラフが完成すると（ステップＳ２０３肯定）、割振り決定部１３ｄは、次のような決定を下す。すなわち、割振り決定部１３ｄは、ステップＳ２０２で選択した点に対応する実行サーバにステップＳ２０４〜ステップＳ２０６の処理で得た選択辺集合に対応する第２バックアップを割り振ることを決定する（ステップＳ２０７）。
【０１０６】
続いて、割振り決定部１３ｄは、正多角形の重心を中心にして、最初に選択した点が次の頂点である点と一致するまで、最初に選択した点の選択辺集合を回転させる（ステップＳ２０８）。そして、割振り決定部１３ｄは、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものが得られたか否かを判定する（ステップＳ２０９）。なお、最初の回転では、回転後の選択辺集合が最初の選択辺集合と一致しないので、そのままステップＳ２１０へ移行する。
【０１０７】
そして、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものではない場合（ステップＳ２０９否定）には、割振り決定部１３ｄは、次の頂点である点を新たに選択したものとし、回転後の選択辺集合を関連付ける（ステップＳ２１０）。続いて、割振り決定部１３ｄは、選択辺集合を新たに選択した点に対応する実行サーバの第２バックアップとして振り分けることを決定する（ステップＳ２０７）。
【０１０８】
これに続いて、割振り決定部１３ｄは、正多角形の重心を中心にして、前回に選択した点が次の頂点である点と一致するまで、前回に選択した点の選択辺集合を回転させる（ステップＳ２０８）。その後、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものとなるまで（ステップＳ２０９否定）、ステップＳ２１０、ステップＳ２０７、ステップＳ２０８の処理を繰り返し行う。
【０１０９】
そして、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものとなった場合（ステップＳ２０９肯定）には、割振り決定部１３ｄは、第２バックアップの割り振りを終了する。
【０１１０】
（３）故障処理
図１０は、実施例１に係る故障処理の手順を示すフローチャートである。この故障処理は、図８に示したステップＳ１０８に対応する処理であり、サーバ監視部１３ｆによって実行サーバの故障が検知された場合に処理が起動する。
【０１１１】
図１０に示すように、故障が検知された実行サーバが１つである場合（ステップＳ３０１否定）には、実行制御部１３ｅは、故障が検知されていない残りの実行サーバに故障サーバの番号Ｊを通知する（ステップＳ３０２）。
【０１１２】
そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）をアクティベートするように故障サーバＪを除く実行サーバｉへ指示し（ステップＳ３０３）、処理を終了する。これによって、故障サーバＪの代わりに残りの実行サーバｉに第１バックアップを検索処理させる準備を実行させる。
【０１１３】
また、故障が検知された実行サーバが２つである場合（ステップＳ３０１肯定）には、実行制御部１３ｅは、故障が検知されていない残りの実行サーバに故障サーバの番号Ｊ及び番号Ｋを通知する（ステップＳ３０４）。
【０１１４】
そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）及び（Ｋ，ｉ）をアクティベートするように故障サーバＪ及びＫを除く実行サーバｉへ指示する（ステップＳ３０５）。さらに、実行制御部１３ｅは、第２バックアップ（Ｊ，Ｋ）または（Ｋ，Ｊ）をアクティベートするように故障サーバＪ及びＫを除く実行サーバｉへ指示し（ステップＳ３０６）、処理を終了する。これによって、故障サーバＪ及びＫの代わりに残りの実行サーバｉに第１バックアップ及び第２バックアップを検索処理させる準備を実行させる。
【０１１５】
（４）復旧処理
図１１は、実施例１に係る復旧処理の手順を示すフローチャートである。この復旧処理は、図８に示したステップＳ１１０に対応する処理であり、サーバ監視部１３ｆによって故障サーバの復旧が検知された場合に処理が起動する。
【０１１６】
図１１に示すように、故障からの復旧が検知された実行サーバが２つである場合（ステップＳ４０１肯定）には、実行制御部１３ｅは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号Ｊ及び番号Ｋを通知する（ステップＳ４０２）。
【０１１７】
そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）及び（Ｋ，ｉ）をディアクティベートするように復旧サーバＪ及びＫを除く実行サーバｉへ指示する（ステップＳ４０３）。さらに、実行制御部１３ｅは、第２バックアップ（Ｊ，Ｋ）または（Ｋ，Ｊ）をディアクティベートするように復旧サーバＪ及びＫを除く実行サーバｉへ指示し（ステップＳ４０４）、処理を終了する。
【０１１８】
また、故障からの復旧が検知された実行サーバが１つであり（ステップＳ４０１否定）、かつ故障サーバが１つである状態から故障サーバがゼロになった場合（ステップＳ４０５否定）には、実行制御部１３ｅは、次のような処理を実行する。すなわち、実行制御部１３ｅは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号Ｊを通知する（ステップＳ４０６）。そして、実行制御部１３ｅは、第１バックアップ（Ｊ，ｉ）をディアクティベートするように復旧サーバＪを除く実行サーバｉへ指示し（ステップＳ４０７）、処理を終了する。
【０１１９】
また、故障からの復旧が検知された実行サーバが１つであり（ステップＳ４０１否定）、かつ故障サーバが２つである状態から故障サーバが１つになった場合（ステップＳ４０５肯定）には、実行制御部１３ｅは、次のような処理を実行する。すなわち、実行制御部１３ｅは、それまでに故障せずに残っていた実行サーバに故障サーバの番号Ｊと復旧サーバの番号Ｋとを通知する（ステップＳ４０８）。
【０１２０】
そして、実行制御部１３ｅは、第１バックアップ（Ｋ，ｉ）をディアクティベートするように故障サーバＪ及び復旧サーバＫを除く実行サーバｉへ指示する（ステップＳ４０９）。さらに、実行制御部１３ｅは、第２バックアップ（Ｊ，Ｋ）または（Ｋ，Ｊ）をディアクティベートするように故障サーバＪ及び復旧サーバＫを除く実行サーバｉへ指示し（ステップＳ４１０）、処理を終了する。
【０１２１】
［実施例１の効果］
上述してきたように、本実施例に係る管理サーバ１０は、２つの実行サーバの故障に備えて実行サーバ１〜Ｎへ第２バックアップを割り振る場合に、次のような割り振りを実行する。すなわち、本実施例に係る管理サーバ１０は、実行サーバＪの故障時に実行サーバＫが処理するデータと実行サーバＫの故障時にサーバＪが処理するデータが重ならないよう割り振る。
【０１２２】
つまり、本実施例に係る管理サーバ１０は、上記の割振りポリシー（３）にしたがって、第２バックアップ（Ｊ，Ｋ）及び（Ｋ，Ｊ）を同じ実行サーバに割り振らない。このような割振りポリシー（３）にしたがって割り振ることによって、実行サーバＪ及びＫの２つサーバが故障した場合でも、第２バックアップ（Ｊ，Ｋ）の処理および第２バックアップ（Ｋ，Ｊ）の処理が１つの実行サーバに偏ることを防止できる。したがって、本実施例に係る管理サーバ１０によれば、実行サーバ間の作業差を最小限にできる結果、サーバ間における処理負荷のばらつきを抑制することが可能になる。
【０１２３】
ここで、本実施例および従来技術で処理負荷が最高となる実行サーバ間の負荷増加割合を比較する。すなわち、正常時には、本実施例および従来技術のいずれにおいても、各実行サーバ１〜ＮによってＮ−１個のデータブロックが処理されることになる。また、故障サーバが１つである場合には、本実施例および従来技術のいずれにおいても、故障サーバ以外の残りの実行サーバｉによってＮ個のデータブロックが処理されることになる。
【０１２４】
しかしながら、故障サーバが２つである場合には、本実施例および従来技術のいずれの方式を採用するかによって負荷の増加割合が異なる。すなわち、本実施例の方式の場合には、故障サーバ以外の残りの実行サーバのうち処理負荷が最高となる実行サーバではＮ＋２個のデータブロックが処理される。一方、従来技術の方式の場合には、故障サーバ以外の残りの実行サーバのうち処理負荷が最高となる実行サーバではＮ＋３個のデータブロックが処理される。
【０１２５】
このため、実行サーバの数がＮ＝５個であるとしたとき、本実施例の方式では、故障サーバが２つである場合の負荷増加割合が１７５％となるのに対し、従来技術の方式では、故障サーバが２つである場合の負荷増加割合が２００％となる。また、実行サーバの数がＮ＝６個であるとしたとき、本実施例の方式では、故障サーバが２つである場合の負荷増加割合が１３０％となるのに対し、従来技術の方式では、故障サーバが２つである場合の負荷増加割合が１４０％となる。さらに、実行サーバの数がＮ＝７個であるとしたとき、本実施例の方式では、故障サーバが２つである場合の負荷増加割合が１１５％となるのに対し、従来技術の方式では、故障サーバが２つである場合の負荷増加割合が１２０％となる。このように、実行サーバの数にかかわらず、本実施例の方式の方が従来技術の方式に比べて負荷増加割合が低いことがわかる。
【０１２６】
また、本実施例に係る管理サーバ１０は、上記の辺選択ポリシー（イ）〜（ハ）にしたがって作成されるグラフモデルに基づいて第２バックアップの割り振りを決定する。それゆえ、本実施例に係る管理サーバ１０によれば、割振りポリシー（１）〜（３）をコンピュータの情報処理としてアルゴリズムを規定することが可能になる。
【０１２７】
［実施例１の応用例］
ところで、上記の実施例１では、グラフモデルに基づいて第２バックアップの割り振りを決定する場合に、割振り対象の実行サーバとして選択した点を対象に複数の辺の中から辺を割振り決定部１３ｄに選択させる場合を説明した。この場合には、複数の辺の中から複数の辺の中から辺選択ポリシー（イ）〜（ハ）にしたがって任意の辺を選択できる一方で、選択辺集合および排除辺集合を参照する必要がある。
【０１２８】
そこで、本応用例では、複数の辺のいずれの辺を選択するかを予め定義しておき、定義にしたがって選択辺集合および排除辺集合を参照せずに辺を選択する場合について説明する。なお、本応用例では、割振り決定部１３ｄ以外の機能部については上記の実施例１と同様の機能を有するので、その説明は省略する。
【０１２９】
これを説明すると、割振り決定部１３ｄは、辺の始点とする実行サーバの番号を「最小のサーバ番号」と定めるとともに、辺の終点とする実行サーバの番号を「最小のサーバ番号＋１」と定める。さらに、割振り決定部１３ｄは、第２バックアップの割振り対象とする実行サーバの番号を最大のサーバ番号、すなわちＮと定める。
【０１３０】
一例として、分散処理を行う実行サーバの数Ｎが６つである場合を想定する。この場合には、割振り決定部１３ｄは、辺の始点とする実行サーバの番号を「１」と定めるとともに、辺の終点とする実行サーバの番号を「２」と定める。さらに、割振り決定部１３ｄは、第２バックアップの割振り対象とする実行サーバの番号を「６」と定める。
【０１３１】
このように、辺の始点および終点とする実行サーバの番号を可及的に小さくするのは、分散処理を行う実行サーバの数Ｎが少ない場合でも適用可能とするためである。すなわち、実行サーバが２つ故障した場合でも実行サーバで分散処理を実行させるには４つの実行サーバが必要となるが、この際に辺の始点を「４」、「５」と設定した場合には実行サーバが５つ以上設けられている場合にしか適用できなくなるからである。
【０１３２】
そして、割振り決定部１３ｄは、現在の辺の終点が最大のサーバ番号、すなわちＮであるか否かを判定する。このとき、辺の始点、辺の終点および割振り対象とする実行サーバの番号を定めた時点では、辺の終点「最小のサーバ番号＋１」≠最大のサーバ番号「Ｎ」であるので、そのまま次の処理に移行する。
【０１３３】
ここで、現在の辺の終点がＮではない場合には、割振り決定部１３ｄは、現在の（辺の始点，辺の終点）に対応するデータを図示しない作業用メモリへ割振りデータ集合として登録する。そして、割振り決定部１３ｄは、現在の辺の終点を１つインクリメントする。例えば、本例の場合には、辺の始点が「１」、辺の終点が「２」であるので、割振り決定部１３ｄは、辺（１，２）に対応するデータを割振りデータ集合へ登録することになる。そして、割振り決定部１３ｄは、現在の辺の終点「２」を１つインクリメントし、辺の終点を「３」とする。
【０１３４】
そして、割振り決定部１３ｄは、現在の辺の終点が最大のサーバ番号、すなわちＮになるまで、先に説明した割振りデータ集合への登録、辺の終点のインクリメントを繰り返し実行する。例えば、本例の場合には、最大のサーバ番号Ｎは「６」であるため、割振り決定部１３ｄは、辺の終点が「６」にインクリメントされるまで、割振りデータ集合への登録、辺の終点のインクリメントを繰り返す。すなわち、割振り決定部１３ｄは、辺の終点が「６」までインクリメントして、辺（１，３）、（１，４）及び（１，５）に対応するデータを割振りデータ集合へ登録する。この時点で割振りデータ集合には、辺（１，２）、（１，３）、（１，４）及び（１，５）が登録されることになる。
【０１３５】
その後、現在の辺の終点がＮになった場合には、割振り決定部１３ｄは、辺（最小のサーバ番号＋２，最小のサーバ番号＋１）を割振りデータ集合へ追加する。このような割振りデータ集合への追加を行うのは、割振り対象とする実行サーバの番号Ｎを割り振るのを避けるとともに、既に割振りデータ集合へ追加した辺の逆向きの辺を追加するのを避けるためである。すなわち、割振り対象とする実行サーバへ（Ｎ−１）個の第２バックアップを割り振るには、辺の終点をインクリメントしただけでは１つ足りない。そして、インクリメントの延長として辺（１，６）を追加した場合には、割振り対象とする実行サーバ６の番号を含むため、辺選択ポリシー（イ）に反してしまう。また、既に割振りデータ集合へ追加した辺の逆向きの辺、例えば（２，１）を追加した場合には、辺選択ポリシー（ロ）に反してしまう。よって、本例では、分散処理を行う実行サーバの数Ｎが少ない場合でも適用可能とするため、一例として、辺（最小のサーバ番号＋２，最小のサーバ番号＋１）を割振りデータ集合へ追加し、割振りデータ集合を（Ｎ−１）個とする。
【０１３６】
そして、割振り決定部１３ｄは、割振りデータ集合として登録されている辺に対応するデータを割振り対象とする実行サーバの第２バックアップとして割り振ることを決定する。例えば、本例の場合には、辺（１，２）、（１，３）、（１，４）及び（１，５）に加え、辺（最小のサーバ番号＋２，最小のサーバ番号＋１）、すなわち辺（３，２）が実行サーバ６の第２バックアップとして割り振られる。
【０１３７】
続いて、割振り決定部１３ｄは、割振り対象とする実行サーバの番号をインクリメントする。なお、ここでは、インクリメント後のサーバ番号がＮ＋１になる場合には、最小のサーバ番号である「１」を算出結果とする。そして、割振り決定部１３ｄは、割振りデータ集合に含まれる全ての要素の（辺の始点，辺の終点）を１つずつインクリメントする。
【０１３８】
例えば、本例の場合には、割振り対象とする実行サーバの番号が「６」＝Ｎであり、そのままインクリメントするとＮ＋１となるので、割振り決定部１３ｄは、インクリメントの結果を「１」とし、割振り対象とする実行サーバの番号を「１」とする。そして、割振り決定部１３ｄは、全ての割振りデータ集合（１，２）、（１，３）、（１，４）、（１，５）及び（３，２）の辺の始点及び終点を１つずつインクリメントとし、次の結果を算出する。すなわち、割振り決定部１３ｄは、割振りデータ集合（２，３）、（２，４）、（２，５）、（２，６）及び（４，３）を算出する。
【０１３９】
このように、割振りデータ集合に含まれる全ての要素の（辺の始点，辺の終点）を１つずつインクリメントする計算は、上記の実施例１で説明した「正多角形の重心を中心にして選択辺集合を次の頂点となる点まで回転させる処理」に相当する。これによって、割り振り対象とする実行サーバについて割振りデータ集合を各個に求める場合に比べて処理を簡略化する。
【０１４０】
その後、割振り決定部１３ｄは、割振り対象とする実行サーバの番号がＮ−１になるまで、上記の処理を繰り返す。すなわち、割振り決定部１３ｄは、上記の割振り対象とする実行サーバへの割振りデータ集合の割り振り、割振り対象とする実行サーバの番号のインクリメント、さらには、割振りデータ集合の全ての要素に対するインクリメントを繰り返す。
【０１４１】
例えば、本例の場合には、サーバ番号のＮ−１は「５＝（６−１）」であるため、割振り決定部１３ｄは、割振り対象とする実行サーバの番号が「５」にインクリメントされるまで、次のような処理を繰り返す。例えば、割振り対象の実行サーバの番号が「１」にインクリメントされた場合には、実行サーバ６の割振りデータ集合が１つずつインクリメントされた辺（２，３）、（２，４）、（２，５）、（２，６）及び（４，３）が実行サーバ１の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「２」にインクリメントされた場合には、実行サーバ１の割振りデータ集合が１つずつインクリメントされた辺（３，４）、（３，５）、（３，６）、（３，１）及び（５，４）が実行サーバ２の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「３」にインクリメントされた場合には、実行サーバ２の割振りデータ集合が１つずつインクリメントされた辺（４，５）、（４，６）、（４，１）、（４，２）及び（６，５）が実行サーバ３の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「４」にインクリメントされた場合には、実行サーバ３の割振りデータ集合が１つずつインクリメントされた辺（５，６）、（５，１）、（５，２）、（５，３）及び（１，６）が実行サーバ４の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「５」にインクリメントされた場合には、実行サーバ４の割振りデータ集合が１つずつインクリメントされた辺（６，１）、（６，２）、（６，３）、（６，４）及び（２，１）が実行サーバ５の割振りデータ集合とされる。
【０１４２】
そして、割振り決定部１３ｄは、割振り対象とする実行サーバの番号がＮ−１になると、第２バックアップの割り振りを終了する。なお、本応用例では、実行サーバの番号が連番である場合を想定するが、連番でない場合にも割振り対象とする実行サーバの番号をインクリメントするに際して実行サーバ間の番号の差に応じてインクリメントする数を調節することにより同様に適用できる。
【０１４３】
このようにして割り振りが決定された各実行サーバ１〜６の第２バックアップは図１２に示すような割り振りとなる。図１２は、応用例により決定された第２バックアップの割り振りの一例を示す図である。図１２に示すように、割振り決定部１３ｄは、メインデータ４００及び第１バックアップ４１０については上記の従来技術の場合と同様に割り振る。一方、割振り決定部１３ｄは、第２バックアップ４２０については予め定めた辺選択の定義にしたがって辺選択を固定的に行って生成されるグラフモデルに基づいて割り振る。それゆえ、割振り決定部１３ｄは、図１２に示すように、各実行サーバで保持される第２バックアップのデータ量が均等になるように割り振ることができる。さらに、割振り決定部１３ｄは、図１２に示すように、実行サーバが２つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避するように第２バックアップを割り振ることができる。さらに、割振り決定部１３ｄは、図１２に示すように、実行サーバＪ及びＫの２つサーバが故障した場合でも、第２バックアップ（Ｊ，Ｋ）の処理および第２バックアップ（Ｋ，Ｊ）の処理が１つの実行サーバに偏ることがないように割り振ることができる。
【０１４４】
［応用例の処理の流れ］
次に、本応用例に係る第２バックアップの割振り決定処理について説明する。図１３は、応用例に係る第２バックアップの割振り決定処理の手順を示すフローチャートである。この割振り決定処理は、上記の実施例１と同様に、図８に示したステップＳ１０４に対応する処理であり、一例として、ステップＳ１０３が終了した後に実行される。
【０１４５】
図１３に示すように、割振り決定部１３ｄは、辺の始点とする実行サーバの番号を「最小のサーバ番号」と定める（ステップＳ５０１）。そして、辺の終点とする実行サーバの番号を「最小のサーバ番号＋１」と定める（ステップＳ５０２）。さらに、割振り決定部１３ｄは、第２バックアップの割振り対象とする実行サーバの番号を最大のサーバ番号、すなわちＮと定める（ステップＳ５０３）。
【０１４６】
そして、割振り決定部１３ｄは、現在の辺の終点が最大のサーバ番号、すなわちＮであるか否かを判定する（ステップＳ５０４）。このとき、辺の始点、辺の終点および割振り対象とする実行サーバの番号を定めた時点では、辺の終点「最小のサーバ番号＋１」≠最大のサーバ番号「Ｎ」であるので（ステップＳ５０４否定）、そのままステップＳ５０５に移行する。
【０１４７】
続いて、割振り決定部１３ｄは、現在の（辺の始点，辺の終点）に対応するデータを図示しない作業用メモリへ割振りデータ集合として登録する（ステップＳ５０５）。そして、割振り決定部１３ｄは、現在の辺の終点を１つインクリメントする（ステップＳ５０６）。
【０１４８】
そして、割振り決定部１３ｄは、現在の辺の終点が最大のサーバ番号、すなわちＮになるまで（ステップＳ５０４否定）、上記のステップＳ５０５及びステップＳ５０６の処理を繰り返し実行する。
【０１４９】
その後、現在の辺の終点がＮになった場合には、割振り決定部１３ｄは、辺（最小のサーバ番号＋２，最小のサーバ番号＋１）を割振りデータ集合へ追加する（ステップＳ５０７）。
【０１５０】
続いて、割振り決定部１３ｄは、割振りデータ集合として登録されている辺に対応するデータを割振り対象とする実行サーバの第２バックアップとして割り振ることを決定する（ステップＳ５０８）。その後、割振り決定部１３ｄは、割振り対象とする実行サーバの番号をインクリメントする（ステップＳ５０９）。そして、割振り決定部１３ｄは、割振りデータ集合に含まれる全ての要素の（辺の始点，辺の終点）を１つずつインクリメントする（ステップＳ５１０）。
【０１５１】
そして、割振り決定部１３ｄは、割振り対象とする実行サーバの番号がＮ−１になるまで（ステップＳ５１１否定）、上記のステップＳ５０８〜ステップＳ５１０の処理を繰り返し実行する。その後、割振り対象とする実行サーバの番号がＮ−１になると（ステップＳ５１１肯定）、第２バックアップの割り振りを終了する。
【０１５２】
［応用例の効果］
このように、本応用例に係る管理サーバ１０では、選択辺集合および排除辺集合を参照せずに辺を決定する。このため、本応用例に係る管理サーバ１０では、グラフモデルの生成過程を簡略化することができる。それゆえ、本応用例に係る管理サーバ１０によれば、上記の実施例１と同様に、サーバ間における処理負荷のばらつきを抑制することに加えて、第２バックアップの割振り決定処理を効率化することも可能になる。
【実施例２】
【０１５３】
さて、上記の実施例１では、辺選択ポリシー（イ）〜（ハ）にしたがって作成されるグラフモデルに基づいて第２バックアップの割り振りを決定する場合を説明したが、開示の装置はこれに限定されるものではなく、グラフ生成に他の理論を適用することもできる。
【０１５４】
そこで、実施例２では、他の一態様として、ハミルトン閉路に基づいて第２バックアップの割り振りを決定する場合について説明する。なお、本実施例では、割振り決定部１３ｄ以外の機能部については上記の実施例１と同様の機能を有するため、その説明は省略する。また、本実施例では、上記の実施例１の管理サーバ及び割振り決定部と区別する観点から、管理サーバの符号を「５０」とし、割振り決定部の符号を「５１」として以下の説明を行う。
【０１５５】
本実施例に係る管理サーバ５０は、Ｎ点を含んでなる有向完全グラフが辺を共有しないＮ−１個の閉路を持つというハミルトン閉路の性質を利用してグラフを生成する。すなわち、本実施例に係る管理サーバ５０は、Ｎ−１個のハミルトン閉路の一部を割振り対象とする実行サーバに対応する点を含まないようにそれぞれ抽出することで、辺選択ポリシー（イ）〜（ハ）を満たすグラフを生成する。
【０１５６】
これを説明すると、割振り決定部５１は、各実行サーバ１〜Ｎに対応する点を含んでなる辺を共有しないＮ−１個のハミルトン閉路を作成する。例えば、実行サーバの数Ｎを「５」とした場合には、図１４Ａ〜図１４Ｄに示す４つのハミルトン閉路が得られる。図１４Ａ〜図１４Ｄは、ハミルトン閉路の一例を示す図である。図１４Ａに示すハミルトン閉路は、辺（１，２）、（２，３）、（３，５）、（５，４）及び（４，１）を含んでなる。図１４Ｂに示すハミルトン閉路は、辺（１，５）、（５，２）、（２，４）、（４，３）及び（３，１）を含んでなる。図１４Ｃに示すハミルトン閉路は、辺（１，３）、（３，４）、（４，２）、（２，５）及び（５，１）を含んでなる。図１４Ｄに示すハミルトン閉路は、辺（１，４）、（４，５）、（５，３）、（３，２）及び（２，１）を含んでなる。
【０１５７】
続いて、割振り決定部５１は、実行サーバ１〜Ｎに対応する点のうち未選択の点を第２バックアップの割振り対象として１つ選択する。そして、割振り決定部５１は、各ハミルトン閉路のうち、割振り対象として選択した点を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第２バックアップとして割り振る。このようにして、割振り決定部５１は、全ての実行サーバ１〜Ｎに第２バックアップを割り振るまで、未選択の点の選択、さらには、第２バックアップの割り振りを繰り返し実行する。
【０１５８】
図１５Ａ〜図１５Ｅは、ハミルトン閉路に基づく第２バックアップの割振り方法を説明するための図である。図１５Ａ〜図１５Ｅの例では、割振り対象とする点として実行サーバ１〜５に対応する点が選択された場合に各ハミルトン閉路からの辺選択方法をそれぞれ示す。図１５Ａ〜図１５Ｅに示す点の網掛けは、割振り対象とする点として選択された点を示す。
【０１５９】
図１５Ａに示すように、割振り対象とする点として実行サーバ１に対応する点が選択された場合には、割振り決定部５１は、次のような処理を行う。すなわち、割振り決定部５１は、図１４Ａ〜図１４Ｄに示したハミルトン閉路のうち、点１を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバ１の第２バックアップとして割り振る。例えば、割振り決定部５１は、図１４Ａに示したハミルトン閉路のうち、点１を始点とする辺（１，２）の次の辺（２，３）を実行サーバ１の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｂに示したハミルトン閉路のうち、点１を始点とする辺（１，５）の次の辺（５，２）を実行サーバ１の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｃに示したハミルトン閉路のうち、点１を始点とする辺（１，３）の次の辺（３，４）を実行サーバ１の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｄに示したハミルトン閉路のうち、点１を始点とする辺（１，４）の次の辺（４，５）を実行サーバ１の第２バックアップとして割り振ることを決定する。このようにして、実行サーバ１の第２バックアップとして、辺（２，３）、（５，２）、（３，４）及び（４，５）に対応するデータが割り振られる。
【０１６０】
図１５Ｂに示すように、割振り対象とする点として実行サーバ２に対応する点が選択された場合には、割振り決定部５１は、次のような処理を行う。すなわち、割振り決定部５１は、図１４Ａ〜図１４Ｄに示したハミルトン閉路のうち、点２を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバ２の第２バックアップとして割り振る。例えば、割振り決定部５１は、図１４Ａに示したハミルトン閉路のうち、点２を始点とする辺（２，３）の次の辺（３，５）を実行サーバ２の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｂに示したハミルトン閉路のうち、点２を始点とする辺（２，４）の次の辺（４，３）を実行サーバ２の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｃに示したハミルトン閉路のうち、点２を始点とする辺（２，５）の次の辺（５，１）を実行サーバ２の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｄに示したハミルトン閉路のうち、点２を始点とする辺（２，１）の次の辺（１，４）を実行サーバ２の第２バックアップとして割り振ることを決定する。このようにして、実行サーバ２の第２バックアップとして、辺（３，５）、（４，３）、（５，１）及び（１，４）に対応するデータが割り振られる。
【０１６１】
図１５Ｃに示すように、割振り対象とする点として実行サーバ３に対応する点が選択された場合には、割振り決定部５１は、次のような処理を行う。すなわち、割振り決定部５１は、図１４Ａ〜図１４Ｄに示したハミルトン閉路のうち、点３を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバ３の第２バックアップとして割り振る。例えば、割振り決定部５１は、図１４Ａに示したハミルトン閉路のうち、点３を始点とする辺（３，５）の次の辺（５，４）を実行サーバ３の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｂに示したハミルトン閉路のうち、点３を始点とする辺（３，１）の次の辺（１，５）を実行サーバ３の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｃに示したハミルトン閉路のうち、点３を始点とする辺（３，４）の次の辺（４，２）を実行サーバ３の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｄに示したハミルトン閉路のうち、点３を始点とする辺（３，２）の次の辺（２，１）を実行サーバ３の第２バックアップとして割り振ることを決定する。このようにして、実行サーバ３の第２バックアップとして、辺（５，４）、（１，５）、（４，２）及び（２，１）に対応するデータが割り振られる。
【０１６２】
図１５Ｄに示すように、割振り対象とする点として実行サーバ４に対応する点が選択された場合には、割振り決定部５１は、次のような処理を行う。すなわち、割振り決定部５１は、図１４Ａ〜図１４Ｄに示したハミルトン閉路のうち、点４を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第２バックアップとして割り振る。例えば、割振り決定部５１は、図１４Ａに示したハミルトン閉路のうち、点４を始点とする辺（４，１）の次の辺（１，２）を実行サーバ４の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｂに示したハミルトン閉路のうち、点４を始点とする辺（４，３）の次の辺（３，１）を実行サーバ４の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｃに示したハミルトン閉路のうち、点４を始点とする辺（４，２）の次の辺（２，５）を実行サーバ４の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｄに示したハミルトン閉路のうち、点４を始点とする辺（４，５）の次の辺（５，３）を実行サーバ４の第２バックアップとして割り振ることを決定する。このようにして、実行サーバ４の第２バックアップとして、辺（１，２）、（３，１）、（２，５）及び（５，３）に対応するデータが割り振られる。
【０１６３】
図１５Ｅに示すように、割振り対象とする点として実行サーバ５に対応する点が選択された場合には、割振り決定部５１は、次のような処理を行う。すなわち、割振り決定部５１は、図１４Ａ〜図１４Ｄに示したハミルトン閉路のうち、点５を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第２バックアップとして割り振る。例えば、割振り決定部５１は、図１４Ａに示したハミルトン閉路のうち、点５を始点とする辺（５，４）の次の辺（４，１）を実行サーバ５の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｂに示したハミルトン閉路のうち、点５を始点とする辺（５，２）の次の辺（２，４）を実行サーバ５の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｃに示したハミルトン閉路のうち、点５を始点とする辺（５，１）の次の辺（１，３）を実行サーバ５の第２バックアップとして割り振ることを決定する。さらに、割振り決定部５１は、図１４Ｄに示したハミルトン閉路のうち、点５を始点とする辺（５，３）の次の辺（３，２）を実行サーバ５の第２バックアップとして割り振ることを決定する。このようにして、実行サーバ５の第２バックアップとして、辺（４，１）、（２，４）、（１，３）及び（３，２）に対応するデータが割り振られる。
【０１６４】
このように、割振り決定部５１は、全ての実行サーバ１〜Ｎに第２バックアップを割り振ると、第２バックアップの割り振りを終了する。このようにして割り振りが決定された各実行サーバ１〜５の第２バックアップは図１６に示すような割り振りとなる。図１６は、ハミルトン閉路を用いて決定された第２バックアップの割り振りの一例を示す図である。図１６に示すように、割振り決定部５１は、メインデータ５００及び第１バックアップ５１０については上記の従来技術の場合と同様に割り振る。一方、割振り決定部５１は、第２バックアップ５２０についてはハミルトン閉路に基づいて生成されるグラフに基づいて割り振る。それゆえ、割振り決定部５１は、図１６に示すように、各実行サーバで保持される第２バックアップのデータ量が均等になるように割り振ることができる。さらに、割振り決定部５１は、図１６に示すように、実行サーバが２つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避するように第２バックアップを割り振ることができる。さらに、割振り決定部５１は、図１６に示すように、実行サーバＪ及びＫの２つサーバが故障した場合でも、第２バックアップ（Ｊ，Ｋ）の処理および第２バックアップ（Ｋ，Ｊ）の処理が１つの実行サーバに偏ることがないように割り振ることができる。
【０１６５】
［第２バックアップの割振り決定処理］
続いて、本実施例に係る第２バックアップの割振り決定処理について説明する。図１７は、実施例２に係る第２バックアップの割振り決定処理の手順を示すフローチャートである。この割振り決定処理は、上記の実施例１と同様に、図８に示したステップＳ１０４に対応する処理であり、一例として、ステップＳ１０３が終了した後に実行される。
【０１６６】
図１７に示すように、割振り決定部５１は、各実行サーバ１〜Ｎに対応する点を含んでなる辺を共有しないＮ−１個のハミルトン閉路を作成する（ステップＳ６０１）。続いて、割振り決定部５１は、実行サーバ１〜Ｎに対応する点のうち未選択の点を第２バックアップの割振り対象として１つ選択する（ステップＳ６０２）。
【０１６７】
ここで、割振り決定部５１は、各ハミルトン閉路のうち、割振り対象として選択した点を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第２バックアップとして割り振る（ステップＳ６０３）。
【０１６８】
その後、全ての実行サーバ１〜Ｎに第２バックアップを割り振るまで（ステップＳ６０４否定）、上記のステップＳ６０２〜ステップＳ６０３の処理を繰り返し実行する。そして、全ての実行サーバ１〜Ｎに第２バックアップを割り振ると（ステップＳ６０４肯定）、第２バックアップの割り振りを終了する。
【０１６９】
［実施例２の効果］
上述してきたように、本実施例に係る管理サーバ５０は、ハミルトン閉路に基づいて第２バックアップの割り振りを決定する。このため、本実施例に係る管理サーバ５０では、Ｎ−１個のハミルトン閉路の一部を割振り対象とする実行サーバに対応する点を含まないようにそれぞれ抽出することで、辺選択ポリシー（イ）〜（ハ）を満たすグラフを生成する。それゆえ、本実施例に係る管理サーバ５０によれば、上記の実施例１と同様に、実行サーバ間の作業差を最小限にできる結果、サーバ間における処理負荷のばらつきを抑制することが可能になる。
【０１７０】
さらに、本実施例に係る管理サーバ５０は、選択辺集合および排除辺集合を参照せずに辺を決定する。このため、本実施例に係る管理サーバ５０では、グラフモデルの生成過程を簡略化することができる。それゆえ、本実施例に係る管理サーバ５０によれば、第２バックアップの割振り決定処理を効率化することも可能になる。
【実施例３】
【０１７１】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１７２】
［適用範囲］
例えば、上記の実施例１及び実施例２では、検索システムに適用する場合を説明したが、開示の装置の適用範囲はこれに限定されない。すなわち、検索処理以外の他の処理、例えば集計処理などを分散処理させる場合にも同様に適用できる。
【０１７３】
また、上記の実施例１及び実施例２では、複数の実行サーバ１〜Ｎが接続される管理サーバ１０が取得部１３ａ、分割部１３ｂ、複製部１３ｃ、割振り決定部１３ｄ、実行制御部１３ｅ及びサーバ監視部１３ｆのデータ割振り機能を有する場合を説明した。しかしながら、開示の装置は、管理サーバ１０として第２バックアップの割振り決定を行う実装形態に限定されない。例えば、管理サーバ１０を設けずに実行サーバ１〜Ｎをリングネットワークとして構成し、各実行サーバ１〜Ｎにデータ割振り機能を持たせるようにしてもかまわない。また、必ずしも全ての実行サーバ１〜Ｎにデータ割振り機能を持たせる必要はない。例えば、複数の実行サーバ１〜Ｎのうち少なくとも１つの実行サーバをマスタノードとしてデータ割振り機能を持たせ、他の実行サーバをスレーブノードして構成するようにしてもよい。
【０１７４】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部１３ａ、分割部１３ｂ、複製部１３ｃ、割振り決定部１３ｄ、実行制御部１３ｅ又はサーバ監視部１３ｆを管理サーバ１０の外部装置としてネットワーク経由で接続するようにしてもよい。また、取得部１３ａ、分割部１３ｂ、複製部１３ｃ、割振り決定部１３ｄ、実行制御部１３ｅ又はサーバ監視部１３ｆを別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の管理サーバ１０の機能を実現するようにしてもよい。
【０１７５】
［データ割振りプログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１８を用いて、上記の実施例と同様の機能を有するデータ割振りプログラムを実行するコンピュータの一例について説明する。なお、図１８は、実施例３に係るデータ割振りプログラムを実行するコンピュータの一例について説明するための図である。
【０１７６】
図１８に示すように、実施例３におけるコンピュータ１００は、操作部１１０ａと、マイク１１０ｂと、スピーカ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ（Hard  Disk  Drive）１７０と、ＲＡＭ（Random  Access  Memory）１８０と有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０１７７】
ＲＯＭ１６０には、上記の実施例１で示した取得部１３ａと、分割部１３ｂと、複製部１３ｃと、割振り決定部１３ｄと、実行制御部１３ｅと、サーバ監視部１３ｆと同様の機能を発揮する制御プログラムが予め記憶される。つまり、ＲＯＭ１６０には、図１８に示すように、取得プログラム１６０ａと、分割プログラム１６０ｂと、複製プログラム１６０ｃと、割振り決定プログラム１６０ｄと、サーバ監視プログラム１６０ｅと、実行制御プログラム１６０ｆとが記憶される。これらのプログラム１６０ａ〜１６０ｆについては、図３に示した管理サーバの各構成要素と同様、適宜統合又は分離しても良い。なお、ＲＡＭ１６０に格納される各データは、常に全てのデータがＲＡＭ１６０に格納される必要はなく、処理に必要なデータのみがＲＡＭ１６０に格納されれば良い。
【０１７８】
そして、ＣＰＵ１５０が、これらのプログラム１６０ａ〜１６０ｆをＲＯＭ１６０から読み出して実行する。これによって、ＣＰＵ１５０は、図１８に示すように、各プログラム１６０ａ〜１６０ｆについては、取得プロセス１５０ａ、分割プロセス１５０ｂ及び複製プロセス１５０ｃとして機能するようになる。さらに、ＣＰＵ１５０は、割振り決定プロセス１５０ｄ、サーバ監視プロセス１５０ｅ及び実行制御プロセス１５０ｆとして機能するようになる。これらプロセス１５０ａ〜１５０ｆは、図３に示した取得部１３ａと、分割部１３ｂと、複製部１３ｃと、割振り決定部１３ｄと、実行制御部１３ｅと、サーバ監視部１３ｆとにそれぞれ対応する。なお、ＣＰＵ１５０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ１５０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【０１７９】
そして、ＨＤＤ１７０には、システム構成データ１７０ａと、検索対象データ１７０ｂとが設けられる。なお、これらシステム構成データ１７０ａ及び検索対象データ１７０ｂは、図３に示したシステム構成データ１２ａ及び検索対象データ１２ｂに対応する。
【０１８０】
そして、ＣＰＵ１５０は、システム構成データ１７０ａ及び検索対象データ１７０ｂを読み出してＲＡＭ１８０に格納する。さらに、ＣＰＵ１５０は、ＲＡＭ１８０に格納されたシステム構成データ１８０ａと、検索対象データ１８０ｂとを用いて、データ割振りプログラムを実行する。
【０１８１】
なお、上記したデータ割振りプログラムについては、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶させておく必要はない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ１００がこれらから各プログラムを取得して実行するようにしてもよい。
【０１８２】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１８３】
（付記１）所定のデータが均等に分割されたデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち１つの装置が前記分散処理の実行対象から除外された場合に第１バックアップデータを処理し、前記複数の装置のうち２つの装置が前記分散処理の実行対象から除外された場合に第２バックアップデータを処理する前記複数の装置の数を取得する取得部と、
前記取得部によって取得された装置の数に応じて、第１の装置が前記分散処理の実行対象から除外された場合に第２の装置に処理を実行させるデータと、前記第２の装置が前記分散処理の実行対象から除外された場合に前記第１の装置に処理を実行させるデータとの割り振りが同一の装置へ重複しないように、前記第２バックアップデータの割り振りを決定する決定部と
を有することを特徴とするデータ割振り装置。
【０１８４】
（付記２）前記決定部は、
各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、２点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように２点を結ぶ線分が装置ごとに同数作成されるグラフモデルに基づいて、前記第２バックアップデータの割り振りを決定することを特徴とする付記１に記載のデータ割振り装置。
【０１８５】
（付記３）前記決定部は、
各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を１度ずつ通るように線分が作成されたハミルトン閉路に基づいて、前記第２バックアップデータの割り振りを決定することを特徴とする付記１に記載のデータ割振り装置。
【０１８６】
（付記４）コンピュータが、
所定のデータが均等に分割されたデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち１つの装置が前記分散処理の実行対象から除外された場合に第１バックアップデータを処理し、前記複数の装置のうち２つの装置が前記分散処理の実行対象から除外された場合に第２バックアップデータを処理する前記複数の装置の数を取得し、  前記装置の数に応じて、第１の装置が前記分散処理の実行対象から除外された場合に第２の装置に処理を実行させるデータと、前記第２の装置が前記分散処理の実行対象から除外された場合に前記第１の装置に処理を実行させるデータとの割り振りが同一の装置へ重複しないように、前記第２バックアップデータの割り振りを決定する
処理を実行することを特徴とするデータ割振り方法。
【０１８７】
（付記５）各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、２点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように２点を結ぶ線分が装置ごとに同数作成されるグラフモデルに基づいて、前記第２バックアップデータの割り振りを決定する処理を実行することを特徴とする付記４に記載のデータ割振り方法。
【０１８８】
（付記６）各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を１度ずつ通るように線分が作成されたハミルトン閉路に基づいて、前記第２バックアップデータの割り振りを決定する処理を実行することを特徴とする付記４に記載のデータ割振り方法。
【０１８９】
（付記７）コンピュータに、
所定のデータが均等に分割されたデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち１つの装置が前記分散処理の実行対象から除外された場合に第１バックアップデータを処理し、前記複数の装置のうち２つの装置が前記分散処理の実行対象から除外された場合に第２バックアップデータを処理する前記複数の装置の数を取得し、  前記装置の数に応じて、第１の装置が前記分散処理の実行対象から除外された場合に第２の装置に処理を実行させるデータと、前記第２の装置が前記分散処理の実行対象から除外された場合に前記第１の装置に処理を実行させるデータとの割り振りが同一の装置へ重複しないように、前記第２バックアップデータの割り振りを決定する
処理を実行させることを特徴とするデータ割振りプログラム。
【０１９０】
（付記８）各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、２点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように２点を結ぶ線分が装置ごとに同数作成されるグラフモデルに基づいて、前記第２バックアップデータの割り振りを決定する処理を実行させることを特徴とする付記７に記載のデータ割振りプログラム。
【０１９１】
（付記９）各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を１度ずつ通るように線分が作成されたハミルトン閉路に基づいて、前記第２バックアップデータの割り振りを決定する処理を実行させることを特徴とする付記７に記載のデータ割振りプログラム。
【符号の説明】
【０１９２】
１，２，３，Ｎ    実行サーバ
１０    管理サーバ
１１    通信Ｉ／Ｆ部
１２    記憶部
１２ａ  システム構成データ
１２ｂ  検索対象データ
１３    制御部
１３ａ  取得部
１３ｂ  分割部
１３ｃ  複製部
１３ｄ  割振り決定部
１３ｅ  実行制御部
１３ｆ  サーバ監視部
２０    ネットワーク
３０    クライアント
【図１】
0005614182.tif 000002
【図２】
0005614182.tif 000003
【図３】
0005614182.tif 000004
【図４Ａ】
0005614182.tif 000005
【図４Ｂ】
0005614182.tif 000006
【図４Ｃ】
0005614182.tif 000007
【図４Ｄ】
0005614182.tif 000008
【図５Ａ】
0005614182.tif 000009
【図５Ｂ】
0005614182.tif 000010
【図６Ａ】
0005614182.tif 000011
【図６Ｂ】
0005614182.tif 000012
【図６Ｃ】
0005614182.tif 000013
【図６Ｄ】
0005614182.tif 000014
【図７】
0005614182.tif 000015
【図８】
0005614182.tif 000016
【図９】
0005614182.tif 000017
【図１０】
0005614182.tif 000018
【図１１】
0005614182.tif 000019
【図１２】
0005614182.tif 000020
【図１３】
0005614182.tif 000021
【図１４Ａ】
0005614182.tif 000022
【図１４Ｂ】
0005614182.tif 000023
【図１４Ｃ】
0005614182.tif 000024
【図１４Ｄ】
0005614182.tif 000025
【図１５Ａ】
0005614182.tif 000026
【図１５Ｂ】
0005614182.tif 000027
【図１５Ｃ】
0005614182.tif 000028
【図１５Ｄ】
0005614182.tif 000029
【図１５Ｅ】
0005614182.tif 000030
【図１６】
0005614182.tif 000031
【図１７】
0005614182.tif 000032
【図１８】
0005614182.tif 000033
【図１９】
0005614182.tif 000034
【図２０】
0005614182.tif 000035
【図２１】
0005614182.tif 000036
【図２２】
0005614182.tif 000037