(57)【要約】【課題】ネットワークを介して多数のコンピュータシステムを統合し、安価で高い耐障害性を持つ、分散型データベース制御装置および制御方法並びに制御プログラムを提供する。【解決手段】データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部２２とデータ格納部２３とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて、データベースを第１〜第ｎのスロットに分割し、第１〜第ｎのスロットを各々原本スロットとして第１〜第ｎのコンピュータのデータ格納部に記憶させ、各原本スロットの複製を各々原本スロットが記憶されているデータ格納部２３と異なるデータ格納部２３に記憶させる【選択図】　図２
2004094681.tif 000002
【特許請求の範囲】
【請求項１】
データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて、
前記データベースを第１〜第ｎのスロットに分割し、
前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、
前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させたことを特徴とする分散型データベースシステム。
【請求項２】
第ｎ＋１のコンピュータが新たに使用可能となった場合に、第１〜第ｎのコンピュータの格納するスロットに関する情報に基づいて、第ｋ（ｋ＝１、２、・・・ｎ）のスロットの複製を第ｎ＋１のコンピュータのデータ格納部内に記憶させることを特徴とする請求項１に記載の分散型データベースシステム。
【請求項３】
第ｍ（ｍ＝１、２、・・・ｎ）のコンピュータが使用不能となった場合に、第ｍのスロットの複製いずれか１つを原本に変更し、該複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのスロットの複製を記憶させることを特徴とする請求項１に記載の分散型データベースシステム。
【請求項４】
前記第ｍのコンピュータが使用不能となった場合に、第ｍのコンピュータが記憶していた複製と同一の複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのコンピュータが記憶していた複製を記憶させることを特徴とする請求項３に記載の分散型データベースシステム。
【請求項５】
前記第ｍのコンピュータが復帰し使用可能となった場合に、原本スロットが２つ以上格納されているコンピュータから前記第ｍのコンピュータのデータ格納部内に第ｍのスロットの原本を記憶させることを特徴とする請求項３または請求項４に記載の分散型データベースシステム。
【請求項６】
データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて、
前記データベースを第１〜第ｎのスロットに分割し、前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させておき、
第ｋ（ｋ＝１、２、・・・ｎ）のコンピュータの制御部がデータ検索を行う場合、前記第１〜第ｎのコンピュータの制御部へ各々検索要求を送信し、
前記第１〜第ｎのコンピュータの制御部がそれぞれ自データ格納部の検索を行い、検索結果を前記第ｋのコンピュータの制御部へ送信し、
前記第ｋのコンピュータの制御部がデータ更新を行う場合、更新すべきデータを含む原本スロットを有するコンピュータの制御部へ更新要求を送信し、
前記送信を受けたコンピュータの制御部がデータ格納部内の原本スロットのデータ更新を行うと共に、該原本スロットの複製スロットを有するコンピュータへ更新要求を送信し、
前記送信を受けたコンピュータの制御部がデータ格納部内の複製スロットのデータ更新を行い、
前記第ｋのコンピュータの制御部がデータ挿入を行う場合、前記第１〜第ｎの原本スロットの中でデータ量が少ない原本スロットにデータを挿入することを特徴とする分散型データベース制御方法。
【請求項７】
前記第ｋのコンピュータの制御部がデータ更新を行う場合において、更新すべきデータを含む原本スロットを有するコンピュータがわからない場合、前記第１〜第ｎのコンピュータの制御部へ各々検索要求を送信することを特徴とする請求項６に記載の分散型データベース制御方法。
【請求項８】
第ｎ＋１のコンピュータが新たに使用可能となった場合に、第１〜第ｎのコンピュータの格納するスロットに関する情報に基づいて、第ｋ（ｋ＝１、２、・・・ｎ）のスロットの複製を第ｎ＋１のコンピュータのデータ格納部内に記憶させることを特徴とする請求項６または請求項７に記載の分散型データベース制御方法。
【請求項９】
第ｍ（ｍ＝１、２、・・・ｎ）のコンピュータが使用不能となった場合に、第ｍのスロットの複製いずれか１つを原本に変更し、該複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのスロットの複製を記憶させることを特徴とする請求項７または請求項８に記載の分散型データベース制御方法。
【請求項１０】
前記第ｍのコンピュータが使用不能となった場合に、前記第ｍのコンピュータが記憶していた複製と同一の複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのコンピュータが記憶していた複製を記憶させることを特徴とする請求項９に記載の分散型データベース制御方法。
【請求項１１】
前記第ｍのコンピュータが復帰し使用可能となった場合に、原本スロットが２つ以上格納されているコンピュータから第ｍのコンピュータのデータ格納部内に第ｍのスロットの原本を記憶させることを特徴とする請求項９または請求項１０に記載の分散型データベース制御方法。
【請求項１２】
データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて用いられるプログラムであって、
前記データベースを第１〜第ｎのスロットに分割し、前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させておき、
第ｋ（ｋ＝１、２、・・・ｎ）のコンピュータの制御部がデータ検索を行う場合、前記第１〜第ｎのコンピュータの制御部へ各々検索要求を送信し、
前記第ｋのコンピュータの制御部がデータ更新を行う場合、更新すべきデータを含む原本スロットを有するコンピュータまたは前記第１〜第ｎのコンピュータすべての制御部へ更新要求を送信し、
前記第ｋのコンピュータの制御部がデータ挿入を行う場合、前記第１〜第ｎの原本スロットの中でデータ量が少ない原本スロットにデータを挿入することを特徴とする分散型データベース制御プログラム。
【請求項１３】
データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて用いられるプログラムであって、
前記データベースを第１〜第ｎのスロットに分割し、前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させておき、
第ｋ（ｋ＝１、２、・・・ｎ）のコンピュータの制御部がデータ検索を行う場合、前記第ｋのコンピュータの制御部より検索要求を受信し、
前記第１〜第ｎのコンピュータの制御部がそれぞれ自データ格納部の検索を行い、検索結果を前記第ｋのコンピュータの制御部へ送信し、
前記第ｋのコンピュータの制御部がデータ更新を行う場合、第ｋのコンピュータの制御部より更新要求を受信し、
更新すべきデータを含む原本スロットを有する場合、データ更新要求のあった原本データの更新を行うと共に、該原本スロットの複製スロットを有するコンピュータへ更新要求を送信し、
前記送信を受けたコンピュータの制御部がデータ格納部内の複製スロットのデータ更新を行い、
前記第ｋのコンピュータの制御部がデータ挿入を行う場合、前記第１〜第ｎの原本スロットの中でデータ量が少ない原本スロットにデータを挿入することを特徴とする分散型データベース制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はネットワークで接続された多数のコンピュータを用いて分散型データベースを構築するデータ制御装置および制御方法並びに制御プログラムに関する。
【０００２】
【従来の技術】
従来、分散型データベースシステムにおいて、耐障害性能の向上を図るために、ネットワーク上の複数のサーバを連携させて一つの大きなシステムとして機能させる方法が提案されている。複数のサーバは並列的に処理を行うことによって全体の処理時間を短縮し、また、複製データを複数のサーバに分散させることによって、あるサーバで障害が発生しても他のサーバからデータを復元することができる。
【０００３】
上述した分散型データベースは、利用者においては、単一のデータベースのように扱うことができる必要がある。この要求を実現するためには、データベースが統合されて見える仮想領域を構築することが考えられる。この場合、従来は、センターサーバに仮想領域を配置するか、各サーバそれぞれが仮想領域のデータをすべての複製するといったことが行われていた。
また１つの情報は１システムのみが保有している大規模な分散データベースにおいては、システムごとに仮想領域のデータをミラーリングすることが行われていた。
【０００４】
しかし、データの複製やミラーリング等によるサーバシステムの容量拡大は、指数的なコストの増大を必要とする。このような従来システムにおいては、高速性とフォールトトラレント性を同時に実現しようとすると、耐障害性を確保するために高価なシステムに頼らざるを得ず、コストが高くなるという問題点があった。
【０００５】
【発明が解決しようとする課題】
この発明はこのような事情を考慮してなされたもので、その目的は、ネットワークを介して多数のコンピュータシステムを統合し、安価で高い耐障害性を持つ、分散型データベース制御装置および制御方法並びに制御プログラムを提供することにある。
【０００６】
【課題を解決するための手段】
この発明は上記の課題を解決すべくなされたもので、請求項１に記載の発明は、データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて、前記データベースを第１〜第ｎのスロットに分割し、前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、
前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させたことを特徴とする。
【０００７】
請求項２に記載の発明は、請求項１に記載の発明において、第ｎ＋１のコンピュータが新たに使用可能となった場合に、第１〜第ｎのコンピュータの格納するスロットに関する情報に基づいて、第ｋ（ｋ＝１、２、・・・ｎ）のスロットの複製を第ｎ＋１のコンピュータのデータ格納部内に記憶させることを特徴とする。
【０００８】
請求項３に記載の発明は、請求項１に記載の発明において、第ｍ（ｍ＝１、２、・・・ｎ）のコンピュータが使用不能となった場合に、第ｍのスロットの複製いずれか１つを原本に変更し、該複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのスロットの複製を記憶させることを特徴とする。
【０００９】
請求項４に記載の発明は、請求項３に記載の発明において、前記第ｍのコンピュータが使用不能となった場合に、第ｍのコンピュータが記憶していた複製と同一の複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのコンピュータが記憶していた複製を記憶させることを特徴とする。
【００１０】
請求項５に記載の発明は、請求項３または請求項４に記載の発明において、前記第ｍのコンピュータが復帰し使用可能となった場合に、原本スロットが２つ以上格納されているコンピュータから前記第ｍのコンピュータのデータ格納部内に第ｍのスロットの原本を記憶させることを特徴とする。
【００１１】
請求項６に記載の発明は、データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて、前記データベースを第１〜第ｎのスロットに分割し、前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させておき、第ｋ（ｋ＝１、２・・・ｎ）のコンピュータの制御部がデータ検索を行う場合、前記第１〜第ｎのコンピュータの制御部へ各々検索要求を送信し、前記第１〜第ｎのコンピュータの制御部がそれぞれ自データ格納部の検索を行い、検索結果を前記第ｋのコンピュータの制御部へ送信し、前記第ｋのコンピュータの制御部がデータ更新を行う場合、更新すべきデータを含む原本スロットを有するコンピュータの制御部へ更新要求を送信し、前記送信を受けたコンピュータの制御部がデータ格納部内の原本スロットのデータ更新を行うと共に、該原本スロットの複製スロットを有するコンピュータへ更新要求を送信し、前記送信を受けたコンピュータの制御部がデータ格納部内の複製スロットのデータ更新を行い、前記第ｋのコンピュータの制御部がデータ挿入を行う場合、前記第１〜第ｎの原本スロットの中でデータ量が少ない原本スロットにデータを挿入することを特徴とする。
【００１２】
請求項７に記載の発明は、請求項６に記載の発明において、前記第ｋのコンピュータの制御部がデータ更新を行う場合において、更新すべきデータを含む原本スロットを有するコンピュータがわからない場合、前記第１〜第ｎのコンピュータの制御部へ各々検索要求を送信することを特徴とする。
【００１３】
請求項８に記載の発明は、請求項６または請求項７に記載の発明において、第ｎ＋１のコンピュータが新たに使用可能となった場合に、第１〜第ｎのコンピュータの格納するスロットに関する情報に基づいて、第ｋ（ｋ＝１、２、・・・ｎ）のスロットの複製を第ｎ＋１のコンピュータのデータ格納部内に記憶させることを特徴とする。
【００１４】
請求項９に記載の発明は、請求項７または請求項８に記載の発明において、第ｍ（ｍ＝１、２、・・・ｎ）のコンピュータが使用不能となった場合に、第ｍのスロットの複製いずれか１つを原本に変更し、該複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのスロットの複製を記憶させることを特徴とする。
【００１５】
請求項１０に記載の発明は、請求項９に記載の発明において、前記第ｍのコンピュータが使用不能となった場合に、前記第ｍのコンピュータが記憶していた複製と同一の複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのコンピュータが記憶していた複製を記憶させることを特徴とする。
【００１６】
請求項１１に記載の発明は、請求項９または請求項１０に記載の発明において、前記第ｍのコンピュータが復帰し使用可能となった場合に、原本スロットが２つ以上格納されているコンピュータから第ｍのコンピュータのデータ格納部内に第ｍのスロットの原本を記憶させることを特徴とする。
【００１７】
請求項１２に記載の発明は、データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて用いられるプログラムであって、前記データベースを第１〜第ｎのスロットに分割し、前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させておき、第ｋ（ｋ＝１、２、・・・ｎ）のコンピュータの制御部がデータ検索を行う場合、前記第１〜第ｎのコンピュータの制御部へ各々検索要求を送信し、前記第ｋのコンピュータの制御部がデータ更新を行う場合、更新すべきデータを含む原本スロットを有するコンピュータまたは前記第１〜第ｎのコンピュータすべての制御部へ更新要求を送信し、前記第ｋのコンピュータの制御部がデータ挿入を行う場合、前記第１〜第ｎの原本スロットの中でデータ量が少ない原本スロットにデータを挿入することを特徴とする分散型データベース制御プログラムである。
【００１８】
請求項１３に記載の発明は、データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて用いられるプログラムであって、前記データベースを第１〜第ｎのスロットに分割し、前記第１〜第ｎのスロットを各々原本スロットとして前記第１〜第ｎのコンピュータのデータ格納部に記憶させ、前記各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させておき、第ｋ（ｋ＝１、２、・・・ｎ）のコンピュータの制御部がデータ検索を行う場合、前記第ｋのコンピュータの制御部より検索要求を受信し、前記第１〜第ｎのコンピュータの制御部がそれぞれ自データ格納部の検索を行い、検索結果を前記第ｋのコンピュータの制御部へ送信し、前記第ｋのコンピュータの制御部がデータ更新を行う場合、第ｋのコンピュータの制御部より更新要求を受信し、更新すべきデータを含む原本スロットを有する場合、データ更新要求のあった原本データの更新を行うと共に、該原本スロットの複製スロットを有するコンピュータへ更新要求を送信し、前記送信を受けたコンピュータの制御部がデータ格納部内の複製スロットのデータ更新を行い、前記第ｋのコンピュータの制御部がデータ挿入を行う場合、前記第１〜第ｎの原本スロットの中でデータ量が少ない原本スロットにデータを挿入することを特徴とする分散型データベース制御プログラムである。
【００１９】
【発明の実施の形態】
以下、図面を参照しこの発明の一実施形態について説明する。図１はこの発明の一実施形態による分散データベース制御方法を適用した分散データベースシステムの全体構成を示すブロック図であり、このシステムは、ネットワーク１０を介して相互接続された６個のコンピュータシステム（以下、Ｐｅｅｒという）Ａ〜Ｆから構成されている。
【００２０】
図２はＰｅｅｒＡ〜Ｆの構成を示すブロック図である。この図において、２１はネットワーク１０を介して他のＰｅｅｒと通信を行う通信部、２２は各種のデータ処理を行うデータ制御部、２３はスロットデータ格納部である。ここで、スロットとはデータの束をいう。２４は状態格納部であり、スロットデータ格納部２３内のスロットデータの数や種類に関する情報を記憶している。
【００２１】
次に、スロットデータ格納部２３内に格納されるスロットデータについて説明する。いま、図１のシステム全体のデータ記憶領域について仮想領域を構築し、仮想領域Ｄ１とすると、図３に示すように、この仮想領域Ｄ１をＳｌｏｔＡ〜ＳｌｏｔＦに６等分し、各ＳｌｏｔＡ〜ＳｌｏｔＦを各々ＰｅｅｒＡ〜Ｆのスロットデータ格納部２３に記憶させる。このデータを原本という。次に、図３に示すように、ＳｌｏｔＡの複製であるＳｌｏｔＡ’をＰｅｅｒＢおよびＰｅｅｒＣのスロットデータ格納部２３に記憶させ、ＳｌｏｔＢの複製であるＳｌｏｔＢ’をＰｅｅｒＣおよびＰｅｅｒＤのスロットデータ格納部２３に記憶させ、・・・、ＳｌｏｔＦの複製であるＳｌｏｔＦ’をＰｅｅｒＡおよびＰｅｅｒＢのスロットデータ格納部２３に記憶させる。このように、原本１スロット毎に、２スロットの複製を異なるＰｅｅｒに記憶させておく。この原本と複製のスロット数の合計値３をデータの多重度とする。
【００２２】
また、ＰｅｅｒＡの状態格納部２４には、スロットデータ格納部２３にＳｌｏｔＡ、ＳｌｏｔＥ’、ＳｌｏｔＦ’が格納され、ＳｌｏｔＡ’がＰｅｅｒＢおよびＰｅｅｒＣに格納されていること、ＳｌｏｔＥがＰｅｅｒＥに、ＳｌｏｔＦがＰｅｅｒＦに、ＳｌｏｔＥ’がＰｅｅｒＦに、ＳｌｏｔＦ’がＰｅｅｒＥに格納されていることを示す情報が記憶されている。ＰｅｅｒＢ〜Ｆの状態格納部２４も同様である。
【００２３】
次に、上述したシステムの動作を説明する。
（１）データ検索
ＰｅｅｒＡ〜Ｆのいずれかのデータ制御部２２がデータ検索を行う場合、図４に示すように、全ＰｅｅｒＡ〜Ｆへ検索要求を送信する。各ＰｅｅｒＡ〜Ｆは各々自らのスロットデータ格納部２３内の原本（ＳｌｏｔＡ〜ＳｌｏｔＦ）を検索し、検索結果を検索要求元へ送信する。
【００２４】
（２）データ更新
例えば、ＰｅｅｒＡのデータ制御部２２がデータ更新を行う場合において、もし、更新すべきデータを含む原本Ｓｌｏｔの所在が状態格納部２４に記憶されている場合は、その原本Ｓｌｏｔを持つＰｅｅｒへ直接更新要求メッセージを送信する。いま、そのＰｅｅｒが、例えばＰｅｅｒＣであった場合は、更新要求メッセージがＰｅｅｒＣへ送信される。ＰｅｅｒＣはそのメッセージを受け、まず、スロットデータ格納部２３内の原本ＳｌｏｔＣをメッセージに基づいて更新し、次いで、ＳｌｏｔＣ’を保持するＰｅｅｒＤおよびＰｅｅｒＥへ更新要求メッセージを送信する。ＰｅｅｒＤおよびＰｅｅｒＥはその更新要求メッセージを受け、ＳｌｏｔＣ’の更新を行う。
また、上述したデータ更新を行う場合において、更新すべきデータを含む原本Ｓｌｏｔの所在が分からない場合は、図５に示すように、全ＰｅｅｒＡ〜Ｆへ更新要求メッセージを送信する。更新対象データを含む原本Ｓｌｏｔを持つＰｅｅｒは、その原本Ｓｌｏｔを更新し、次いで、複製Ｓｌｏｔを持つＰｅｅｒへ更新要求メッセージを送信する。
【００２５】
（３）データ挿入
ＰｅｅｒＡ〜Ｆのいずれかのデータ制御部２２がデータ挿入を行う場合、Ｐｅｅｒは、仮想領域に対してデータ挿入を行う。仮想領域に挿入されたデータは、挿入するデータと既に記憶されているデータの主キーの値が重複しないことを確認した後、ＳｌｏｔＡ〜Ｆのうちデータ量の少ないＳｌｏｔに対して挿入される。
【００２６】
（４）Ｐｅｅｒの状態監視
ＰｅｅｒＡ〜Ｆのデータ制御部２２は一定時間間隔ごとに他のＰｅｅｒすべての状態を互いに監視しあう。
【００２７】
次にＰｅｅｒＡ〜Ｆのいずれかが障害発生により、停止した場合におけるシステムの動作について説明する。
（５）データ修復
例えばＰｅｅｒＡが障害発生により停止した場合、ＰｅｅｒＢ〜ＦはＰｅｅｒＡが停止したことを認識し、図６に示すようにデータ修復を行う。まずＰｅｅｒＡの停止により損失した原本ＳｌｏｔＡの複製ＳｌｏｔＡ’を持つＰｅｅｒＢは、複製ＳｌｏｔＡ’を原本ＳｌｏｔＡに変更する。次にＰｅｅｒＢは、原本ＳｌｏｔＡの複製を２スロット異なるＰｅｅｒに記憶させるために、ＰｅｅｒＦが複製ＳｌｏｔＡ’を持たないことを確認した後、原本ＳｌｏｔＡの複製ＳｌｏｔＡ’を作成する。またＰｅｅｒＥは、ＰｅｅｒＤが複製ＳｌｏｔＥ’を持たないことを確認した後、複製ＳｌｏｔＥ’を作成する。またＰｅｅｒＦは、ＰｅｅｒＥが複製ＳｌｏｔＦ’を持たないことを確認した後、複製ＳｌｏｔＦ’を作成する。
【００２８】
次に障害発生により停止したＰｅｅｒが復帰した場合におけるシステムの動作について説明する。
（６）データ分散
Ｐｅｅｒの復帰時に、他に原本Ｓｌｏｔを２つ以上持つ原本スロット過剰Ｐｅｅｒが存在する場合、過剰Ｐｅｅｒは復帰したＰｅｅｒに対して自身が持つ原本Ｓｌｏｔを挿入する。またＰｅｅｒ全体において複製Ｓｌｏｔの数が多重度に足りない場合、足りない複製Ｓｌｏｔの原本を持つＰｅｅｒは、復帰したＰｅｅｒに対して自身が持つ原本Ｓｌｏｔの複製を行う。
【００２９】
次に上記システムにおけるスロットの複製過程について説明する。
（７）段階的データ複製
Ｐｅｅｒの停止が起こる平均時間間隔が１データレコードのライフサイクルに比べ十分に長い場合、複製処理は段階的に行われる。図７において、ＰｅｅｒＤはＳｌｏｔＢ’の複製元であり、複製先であるＰｅｅｒＥにＳｌｏｔＢ’をレコード単位で複製処理中である。ＳｌｏｔＢ’はレコードｂ１、ｂ２、ｂ３、ｂ４で構成され、今レコードｂ１の複製が完了し、さらにレコードｂ２、ｂ３、ｂ４をレコード単位で複製していく。図８は図７において進行中である複製が完了した状態であり、ＰｅｅｒＤはＰｅｅｒＥにレコードｂ１、ｂ２、ｂ３、ｂ４すべてが複製されたことを確認した後、ＳｌｏｔＢ’を削除する。
【００３０】
（８）段階的データ複製時におけるデータ検索
データ検索要求は、障害により原本スロットが検索できない場合、複製スロットに対して行われる。図９において、原本ＳｌｏｔＢを持つＰｅｅｒＢが停止している間にＰｅｅｒＦよりＳｌｏｔＢのレコードｂ１に対してデータ検索要求があった場合、複製処理中である複製元ＰｅｅｒＤ、複製先ＰｅｅｒＥは共に検索を行う。複製先ＰｅｅｒＥで検索し該当データが見つかればそれを値として、ＰｅｅｒＦに送信し、ＰｅｅｒＥで見つからなかった場合は、複製元ＰｅｅｒＤの検索結果をＰｅｅｒＦに送信する。
【００３１】
（９）段階的データ複製時におけるデータ挿入
複製スロットに対してデータ挿入要求があった場合、複製元は新たなデータを持つ必要がないため、挿入は複製先にのみ行う。図１０において、複製元ＰｅｅｒＤが複製先であるＰｅｅｒＥにＳｌｏｔＢ’を構成するレコードｂ２の複製処理を行っている間に、ＰｅｅｒＢがデータ挿入要求を行うと、複製先であるＰｅｅｒＥのＳｌｏｔＢにレコードｂ２がＰｅｅｒＢより挿入される。
【００３２】
（１０）段階的データ複製時におけるデータ更新
複製スロットに対してデータ更新要求があった場合、複製元は新たなデータを管理する必要がないため、更新は複製先にのみ挿入処理を行い、複製元は未更新レコードを削除する。図１１において、複製元ＰｅｅｒＤが複製先であるＰｅｅｒＥにＳｌｏｔＢ’を構成するレコードｂ２の複製処理を行っている間に、ＰｅｅｒＢがデータ更新要求を行うと、複製先であるＰｅｅｒＥのＳｌｏｔＢ’にＰｅｅｒＢの更新レコードｂ２が挿入される。
【００３３】
（１１）段階的データ複製時におけるデータ修復
複製処理中であるＰｅｅｒ２つのいずれかが障害により停止した場合、停止したＰｅｅｒが複製先であれば、進行中の複製処理を中止し、複製元のＰｅｅｒを復旧する。　複製元のＰｅｅｒは、復旧後、新たな複製先を決定し最初から複製処理を行う。停止したＰｅｅｒが複製元であった場合は、進行中の複製処理を一旦中断し未処理のレコード複製を行うことができるＰｅｅｒを決定した後、レコード複製を再開する。図１２においては、停止したのは複製元であるため、進行中の複製処理を一旦中断し、ＳｌｏｔＢを持つＰｅｅｒＢがＳｌｏｔＢ’を構成するレコードｂ２より、複製処理を再開する。
【００３４】
以上のＰｅｅｒの動作におけるスロットの状態を以下に定め、スロットの状態がどのように遷移するかについて説明する。図１３における各スロットの状態は次の意味を示す。
符号０ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＩｎｓｕｆｆｉｃｉｅｎｔ
符号１ＰｒｉｍａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎ
符号２ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙｓｕｆｆｉｃｉｅｎｔ
符号３ＰｒｉｍａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓ
符号４ＳｅｃｏｎｄａｒｙＰｒｅｐａｒｉｎｇ
符号５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇ
符号６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄ
符号７ＳｅｃｏｎｄａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎ
符号８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌ
符号９ＳｅｃｏｎｄａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓ
符号１０ＳｅｃｏｎｄａｒｙＣｌｏｓｅ
【００３５】
符号０は、該当スロットが原本で、そのスロットの複製の数が規定値に足りない状態を示す。符号１は、当該スロットが原本で、他のＰｅｅｒに複製を作成している状態を示す。符号２は、当該スロットが原本で、複製スロットが規定数ある定常状態を示す。符号３は、当該スロットが原本で、複製スロットのうちの１つを当該スロットの代わりに原本スロットに変更している状態を示す。
【００３６】
符号４は、スロットが符号１または符号７の状態にある他のＰｅｅｒからの要求により複製スロット作成している状態を示す。符号５は複製が完了し、複製スロットとして定常動作している状態を示す。符号６は、当該スロットが複製で、Ｐｅｅｒ内のスロットの数が規定数以上で過負荷状態となっている状態を示す。符号７は、当該スロットが複製で、他のＰｅｅｒに複製を作成している状態を示す。符号８は、当該スロットが複製で、対応する原本スロットを持つＰｅｅｒが停止したために、他の対応する複製スロットを持つＰｅｅｒと、どのＰｅｅｒが持つ複製スロットを原本スロットにするか、を決定している状態を示す。符号９は、当該スロットが複製で、対応する原本スロットが状態３にあり原本と複製の関係を交換している状態を示す。符号１０は過負荷状態だったＰｅｅｒが複製スロットの複製を他のＰｅｅｒに作成した結果、複製元スロットが消滅する状態を示す。符号Ｐ１は原本スロット生成前の状態、　符号Ｐ２は複製スロット生成前の状態、　Ｅ１はスロット消滅後の状態を示す。
【００３７】
ネットワーク上に過剰に原本スロットがない状態で新しくＰｅｅｒが起動すると、原本スロットを作成する条件が整うため、状態Ｐ１から状態０ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＩｎｓｕｆｆｉｃｉｅｎｔへ遷移する（図１３のステップａを参照）。
【００３８】
当該スロットの複製を保持しないＰｅｅｒのうち１番負荷の低いＰｅｅｒが認識され，そのＰｅｅｒに複製スロットを作成する準備が整うと、複製が開始されるため、状態０ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＩｎｓｕｆｆｉｃｉｅｎｔから状態１ＰｒｉｍａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎへ遷移する（ステップｂを参照）。
【００３９】
一方、複製が完了してもなお複製スロットが足りない、または複製が途中で失敗すると、状態１ＰｒｉｍａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎから状態０ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＩｎｓｕｆｆｉｃｉｅｎｔへ遷移する（ステップｃを参照）。
【００４０】
複製スロットの作成が終了し複製が規定数に達すると定常状態になるため、状態１ＰｒｉｍａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎから状態２ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙｓｕｆｆｉｃｉｅｎｔに遷移する（ステップｄを参照）。
【００４１】
複製スロットを持つＰｅｅｒが停止した場合、複製が規定数に達しないため、状態２ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＳｕｆｆｉｃｉｅｎｔから状態０ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＩｎｓｕｆｆｉｃｉｅｎｔに遷移する（ステップｅを参照）。
【００４２】
２つ以上の原本スロットを持つＰｅｅｒが存在すると、原本スロットと、それに対応する複製スロット間で、原本と、複製の関係を入れ替えるため、状態２ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙｓｕｆｆｉｃｉｅｎｔから状態３ＰｒｉｍａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓに遷移する（ステップｆを参照）。
【００４３】
複製スロットから原本スロットへの変更が障害により失敗した場合、複製は削除されるので規定数に達しないため、状態３ＰｒｉｍａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓから状態０ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＩｎｓｕｆｆｉｃｉｅｎｔに遷移する（ステップｇを参照）。
【００４４】
一方、　複製スロットから原本スロットへの変更が成功すると当該スロットは原本スロットから複製スロットの定常状態になるため、状態３ＰｒｉｍａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓから状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇに遷移する（ステップｈを参照）。
【００４５】
複製元のスロットが、状態１にあって、当該スロットの複製を保持しないＰｅｅｒのうち１番負荷の低いＰｅｅｒが認識され，そのＰｅｅｒに複製スロットを作成する準備が整う、或いは，状態７にあって、過剰にスロットを持つＰｅｅｒから他のＰｅｅｒに複製スロットを作成する準備が開始されるため、Ｐ２から状態４ＳｅｃｏｎｄａｒｙＰｒｅｐａｒｉｎｇに遷移する（ステップｉを参照）。
【００４６】
複製スロットの生成が完了し、複製スロットとして動作可能な状態になると定常状態となり、状態４ＳｅｃｏｎｄａｒｙＰｒｅｐａｒｉｎｇから状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇに遷移する（ステップｊを参照）。
【００４７】
複製により、Ｐｅｅｒが保持するスロットの数が過大となる場合、状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇから状態符号６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄに遷移する（ステップｋを参照）。
【００４８】
当該スロットを保持するＰｅｅｒの，他の複製スロットの複製が他のＰｅｅｒに作成され，その複製スロットが削除された事で，当該スロットを保持するＰｅｅｒが保持するスロットの数が適正数になると定常状態になるため再び状態６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄから状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇに遷移する（ステップｌを参照）。
【００４９】
当該スロットの複製を保持しないＰｅｅｒのうち１番負荷の低いＰｅｅｒで，　そのＰｅｅｒに当該スロットを移動した結果，　そのＰｅｅｒの負荷が当該スロットを保持していたＰｅｅｒと逆転しないようなＰｅｅｒが見つかった場合，　状態６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄから状態７ＳｅｃｏｎｄａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎに遷移し，　当該Ｐｅｅｒにスロットを複製する（ステップｍを参照）。
【００５０】
一方、複製スロットの作成に失敗すると過剰にスロットを持つＰｅｅｒが依然存在することになるため、再び状態７ＳｅｃｏｎｄａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎから状態６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄに遷移する（ステップｎを参照）。
【００５１】
スロットの数が過大であるＰｅｅｒにおいて、複製スロットの複製が完了すると、状態７ＳｅｃｏｎｄａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎから状態１０ＳｅｃｏｎｄａｒｙＣｌｏｓｅに遷移する（ステップｏを参照）。
【００５２】
複製スロットの消滅が完了すると最終状態Ｅ１に遷移する（ステップｐを参照）。
【００５３】
原本スロットを持つＰｅｅｒから複製スロットを原本スロットへ変更する要求が行われると、変更処理が行われるため、状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇから状態９ＳｅｃｏｎｄａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓに遷移する（ステップｑを参照）。
【００５４】
複製スロットから原本スロットへの変更処理が終了すると、定常状態となるため状態９ＳｅｃｏｎｄａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓから状態２ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙｓｕｆｆｉｃｉｅｎｔに遷移する（ステップｒを参照）。
【００５５】
Ｐｅｅｒが障害発生により、原本を保持したまま停止すると、保持されていた原本が足りなくなるため、状態９ＳｅｃｏｎｄａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓ、状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇ、状態６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄ、状態７ＳｅｃｏｎｄａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎから状態８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌに遷移する（ステップｓ、ｔ、ｕ、ｖを参照）。
【００５６】
原本を持ったまま停止したＰｅｅｒが保持していた原本スロットの別のＰｅｅｒの複製スロットを原本スロットに変更し、かつ、状態８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌに遷移する前は、状態６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄまたは状態７ＳｅｃｏｎｄａｒｙＭａｋｉｎｇＤｕｐｌｉｃａｔｉｏｎであった場合、Ｐｅｅｒ内のスロットの数が規定数以上であった過負荷状態に戻るため、状態８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌから状態６ＳｅｃｏｎｄａｒｙＯｖｅｒｌｏａｄに遷移する（ステップｗを参照）。
【００５７】
また、原本を持ったまま停止したＰｅｅｒが保持していた原本スロットの別のＰｅｅｒの複製スロットを原本スロットに変更し、定常状態となると、状態８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌに遷移する前は状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇまたは状態９ＳｅｃｏｎｄａｒｙＴｒａｎｓｆｅｒｉｎｇＰｒｉｍａｒｙＲｉｇｈｔｓであった場合、状態８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌから状態５ＳｅｃｏｎｄａｒｙＥｘｅｃｕｔｉｎｇに遷移する（ステップｘを参照）。
【００５８】
当該複製スロットが原本に変更され、かつ、複製スロットが規定数以下であると、複製を作成するため、状態８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌから状態０ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＩｎｓｕｆｆｉｃｉｅｎｔに遷移する（ステップｙを参照）。
【００５９】
また、当該複製スロットが原本に変更され、複製スロットが規定数を満たすので定常状態になるため、状態８ＳｅｃｏｎｄａｒｙＰｒｉｍａｒｙＦａｉｌから状態２ＰｒｉｍａｒｙＳｅｃｏｎｄａｒｙＳｕｆｆｉｃｉｅｎｔに遷移する（ステップｚを参照）。
【００６０】
なお、上記実施例においては、Ｐｅｅｒの数を６とし、多重度を３としたが、Ｐｅｅｒの数をｎ（ｎは自然数）、多重度をｍ（ｍは２以上の整数）としてもよい。このとき、各Ｐｅｅｒは原本スロット１個と、複製スロットｍ−１個を持つ。
【００６１】
【発明の効果】
以上説明したように、請求項１並びに請求項６並びに請求項１２および請求項１３の発明によれば、データベースを使用してデータ処理を行う分散型データベースシステムであって、制御部とデータ格納部とを具備する第１〜第ｎのコンピュータをネットワークを介して接続して構成した分散型データベースシステムにおいて、データベースを第１〜第ｎのスロットに分割し、第１〜第ｎのスロットを各々原本スロットとして第１〜第ｎのコンピュータのデータ格納部に記憶させ、各原本スロットの複製を各々原本スロットが記憶されているデータ格納部と異なるデータ格納部に記憶させるので、サーバを介せずに多数のコンピュータシステムを統合しデータの分散化と多重化することができるので、安価で高い耐障害性を持つ分散型データベース制御システムおよび制御方法並びに制御プログラムを提供することができる。
【００６２】
請求項２および請求項８の発明によれば、第ｎ＋１のコンピュータが新たに使用可能となった場合に、第１〜第ｎのコンピュータの格納するスロットに関する情報に基づいて、第ｋ（ｋ＝１、２、・・・ｎ）のスロットの複製を第ｎ＋１のコンピュータのデータ格納部内に記憶させるので、格納するデータが特定のコンピュータに偏重することを防ぎ、他の新たに起動したコンピュータに分散されるので耐障害性にさらに優れた分散型データベース制御システム並びに制御方法を提供することができる。
【００６３】
請求項３および請求項９の発明によれば、第ｍのコンピュータが使用不能となった場合に、第ｍのスロットの複製いずれか１つを原本に変更し、該複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのスロットの複製を記憶させるので、原本を持ったコンピュータが停止した場合でも、他のコンピュータによって原本を復元することができ、耐障害性にさらに優れた分散型データベース制御システムおよび制御方法を提供することができる。
【００６４】
請求項４および請求項１０の発明によれば、第ｍのコンピュータが使用不能となった場合に、第ｍのコンピュータが記憶していた複製を有するコンピュータ以外のコンピュータのデータ格納部内に第ｍのコンピュータが記憶していた複製と同一の複製を記憶させるのでコンピュータの停止によって失われた複製データを復元することができ、耐障害性にさらに優れた分散型データベース制御システムおよび制御方法を提供することができる。
【００６５】
請求項５の発明および請求項１１の発明によれば、第ｍのコンピュータが復帰し使用可能となった場合に、原本スロットが２つ以上格納されているコンピュータから第ｍのコンピュータのデータ格納部内に第ｍのスロットの原本を記憶させるので、原本スロットが特定のコンピュータに偏重することを防ぎ、他の新たに起動したコンピュータに分散されるので耐障害性にさらに優れた分散型データベース制御システム並びに制御方法を提供することができる。
【００６６】
請求項７の発明によれば、前記第ｋのコンピュータの制御部がデータ更新を行う場合において、更新すべきデータを含む原本スロットを有するコンピュータがわからない場合、前記第１〜第ｎのコンピュータの制御部へ各々検索要求を送信するので、検索要求が当該コンピュータにおいて確実に受信され、検索性に優れた分散型データベース制御方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の一実施例である分散データベース制御アルゴリズムを用いて実施された分散データベースシステムの構成を示すブロック図である。
【図２】Ｐｅｅｒの構成を示すブロック図である。
【図３】スロットの初期状態を示した図である。
【図４】各Ｐｅｅｒにデータ検索要求があった状態を示した図である。
【図５】各Ｐｅｅｒにデータ更新要求があった状態を示した図である。
【図６】Ｐｅｅｒが障害発生により停止した場合に他のＰｅｅｒが停止したＰｅｅｒのスロットを復元する過程を示した図である。
【図７】段階的に複製スロットを管理する権限を複製する過程を示した図である。
【図８】図７において進行中である複製が完了した状態を示した図である。
【図９】複製処理中にデータ検索要求があった状態を示した図である。
【図１０】複製処理中にデータ挿入要求があった状態を示した図である。
【図１１】複製処理中にデータ更新要求があった状態を示した図である。
【図１２】複製処理中に障害が発生した状態を示した図である。
【図１３】スロットの状態遷移を示した図である。
【符号の説明】
Ａ〜Ｆ…Ｐｅｅｒ
１０…ネットワーク
２１…通信部
２２…データ制御部
２３…スロットデータ格納部
２４…状態格納部
【図１】
2004094681.tif 000003
【図２】
2004094681.tif 000004
【図３】
2004094681.tif 000005
【図４】
2004094681.tif 000006
【図５】
2004094681.tif 000007
【図６】
2004094681.tif 000008
【図７】
2004094681.tif 000009
【図８】
2004094681.tif 000010
【図９】
2004094681.tif 000011
【図１０】
2004094681.tif 000012
【図１１】
2004094681.tif 000013
【図１２】
2004094681.tif 000014
【図１３】
2004094681.tif 000015