(57)【要約】【課題】非共有型データベースクラスタシステムにおいて動的にデータ再配置を行い、データ分散および負荷分散，ならびに稼動時拡張を可能とする。【解決手段】データベースノード１２Ａは、定期的に自データベースノード１２Ａと最も大きくデータ量に差があるデータベースノード（例えば、１２Ｃ）を探し、そのデータベースノード１２Ｃとのデータ量の差に極端な開きがあるかどうかを調べ、データ量に差がある旨のメッセージを送信する。これを受けて、データベースノード１２Ｃも同様に、データベースノード１２Ｃの配置するデータ量とデータベースノード１２Ａの配置するデータ量との差が大きいと判断した場合、データベースノード１２Ａ，１２Ｃは、データベースノード１２Ａからデータベースノード１２Ｃへのデータ移転を行う。【選択図】図１
2005078394.tif 000002
【特許請求の範囲】
【請求項１】
データを排他的に分散して配置する複数のデータベースノードを備える非共有型データベースクラスタシステムにおいて、
各データベースノードが、
自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストするデータ量調査手段と、
前記データ量調査手段の調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べるデータ量比較手段と、
前記データ量比較手段でデータ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信し、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除するネゴシエーション手段と
を有することを特徴とする非共有型データベースクラスタシステム。
【請求項２】
前記データ量調査手段が、自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの増設を可能にすることを特徴とする請求項１記載の非共有型データベースクラスタシステム。
【請求項３】
前記データ量調査手段が、自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの削除を可能にすることを特徴とする請求項１記載の非共有型データベースクラスタシステム。
【請求項４】
負荷分散装置が、クライアントからのデータ処理要求メッセージを前記複数のデータベースノードのいずれかに振り分けて送信し、各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストし、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信し、前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードがデータ処理結果をまとめて前記負荷分散装置を介してクライアントに返信することを特徴とする請求項１記載の非共有型データベースクラスタシステム。
【請求項５】
負荷分散装置が、クライアントからのデータ処理要求メッセージを全データベースノードにブロードキャストし、各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に送信し、前記負荷分散装置が、全データベースノードからのデータ処理結果をまとめてクライアントに返信することを特徴とする請求項１記載の非共有型データベースクラスタシステム。
【請求項６】
自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストするデータ量調査手段と、
前記データ量調査手段の調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べるデータ量比較手段と、
前記データ量比較手段でデータ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信し、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除するネゴシエーション手段と
を有することを特徴とするデータベースノード。
【請求項７】
前記データ量調査手段が、自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、共有型データベースクラスタシステムへの増設を可能にすることを特徴とする請求項６記載のデータベースノード。
【請求項８】
前記データ量調査手段が、自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、共有型データベースクラスタシステムからの削除を可能にすることを特徴とする請求項６記載のデータベースノード。
【請求項９】
負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストし、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信し、前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードであればデータ処理結果をまとめて前記負荷分散装置に返信することを特徴とする請求項６記載のデータベースノード。
【請求項１０】
負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に返信することを特徴とする請求項６記載のデータベースノード。
【請求項１１】
データを排他的に分散して配置する複数のデータベースノードを備える非共有型データベースクラスタシステムの動的データ再配置方法において、
自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストする工程と、
自データベースノードでの調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べる工程と、
データ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信する工程と、
データ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除する工程と
を含むことを特徴とする非共有型データベースクラスタシステムの動的データ再配置方法。
【請求項１２】
自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの増設を可能にすることを特徴とする請求項１１記載の非共有型データベースクラスタシステムの動的データ再配置方法。
【請求項１３】
自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの削除を可能にすることを特徴とする請求項１１記載の非共有型データベースクラスタシステムの動的データ再配置方法。
【請求項１４】
負荷分散装置が、クライアントからのデータ処理要求メッセージを前記複数のデータベースノードのいずれかに振り分けて送信する工程と、
各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストする工程と、
各データベースノードが、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信する工程と、
前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードがデータ処理結果をまとめて前記負荷分散装置を介してクライアントに返信する工程と
を含むことを特徴とする請求項１１記載の非共有型データベースクラスタシステムの動的データ再配置方法。
【請求項１５】
負荷分散装置が、クライアントからのデータ処理要求メッセージを全データベースノードにブロードキャストする工程と、
各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に送信する工程と、
前記負荷分散装置が、全データベースノードからのデータ処理結果をまとめてクライアントに返信する工程と
を含むことを特徴とする請求項１１記載の非共有型データベースクラスタシステムの動的データ再配置方法。
【請求項１６】
コンピュータを、自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストするデータ量調査手段と、前記データ量調査手段の調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べるデータ量比較手段と、前記データ量比較手段でデータ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信し、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除するネゴシエーション手段として動作させるためのプログラム。
【請求項１７】
前記データ量調査手段が、自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの増設を可能にすることを特徴とする請求項１６記載のプログラム。
【請求項１８】
前記データ量調査手段が、自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの削除を可能にすることを特徴とする請求項１６記載のプログラム。
【請求項１９】
負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストし、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信し、前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードがデータ処理結果をまとめて前記負荷分散装置を介してクライアントに返信することを特徴とする請求項１６記載のプログラム。
【請求項２０】
負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に送信することを特徴とする請求項１６記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は非共有型（シェアドナッシング型）のデータベースクラスタシステム，データベースノードおよび動的データ再配置方法ならびにプログラムに関し、特に稼動時拡張性を有する非共有型データベースクラスタシステム，データベースノードおよび動的データ再配置方法ならびにプログラムに関する。
【背景技術】
【０００２】
従来の非共有型データベースクラスタシステムについては様々な形態があるが、各データベースノードが、前もって特定の基準に応じて排他的に分散されたデータを配置する。そして、各データは、各データベースノード間で動的に転送されることはない。
【０００３】
例えば、売上データならば、売り上げた地域や期間に基づいてデータを分散して配置する。このため、設計者は、非共有型データベースクラスタシステムの構築前に、どのデータベースノードにどのようなデータを配置するかを前もって確定させておく必要がある。
【０００４】
図１８は、従来の非共有型データベースクラスタシステム１０１の一例を示すブロック図である。この非共有型データベースクラスタシステム１０１は、データを排他的に分散して配置する複数のデータベースノード１１２Ａ，１１２Ｂ，１１２Ｃ，…と、クライアント１０２からのデータ処理要求メッセージをデータベースノード１１２Ａ，１１２Ｂ，１１２Ｃ，…のいずれかに振り分けて送信する負荷分散装置１１１とから構成されていた。
【０００５】
しかし、従来の非共有型データベースクラスタシステム１０１では、負荷分散装置１１１が、データ処理要求メッセージを処理対象のデータを配置しているデータベースノードに振り分ける必要があった。そのためには、負荷分散装置１１１は、どのデータベースノードがどのデータを配置しているかという情報を常に最新の状態で配置しておく必要がある。なぜなら、この情報は動的に変化する情報であるからである。そのためには、高機能な負荷分散装置１１１が必要となっていた。
【０００６】
なお、従来技術として、表データを複数の記憶装置に分割して格納するデータベースシステムにおいて、記憶装置を追加した際に、すでに格納されているデータを再分割配置する再配置処理を実行することはすでに公知であるが（特許文献１参照）、本発明のように、非共有型データベースクラスタシステムで、データベースノード間で配置されているデータを再配置する技術は知られていない。
【特許文献１】特開２００３―６０２１号公報（第８−９頁、図１０）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の非共有型データベースクラスタシステムにおいては、次のような課題がある。
【０００８】
第１の課題は、データベースノード同士が互いにデータを共有していないため、特定のデータを配置しているデータベースノードに負荷が集中しやすく、この場合に負荷を均等に分散することが難しいということである。
【０００９】
第２の課題は、非共有型データベースクラスタシステムの構築前にデータ配置設計をある程度確定させておく必要があるため、非共有型データベースクラスタシステムの構築後はデータの再配置が困難であるということである。例えば、あるデータベースノードのデータ量が膨大な量となり、このため、そのデータベースノードへのアクセス量が増えても、データを配置し直すことは難しい。
【００１０】
第３の課題は、非共有型データベースクラスタシステム全体の負荷が高くなったからといって、データの再配置を考えることなく、データベースノードを追加することができない（負荷状況の変化に臨機応変に対応できない）。
【００１１】
本発明の目的は、上記のような課題を解決するために、動的にデータの再配置を行える非共有型データベースクラスタシステム，データベースノードおよび動的データ再配置方法ならびにプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の非共有型データベースクラスタシステムは、データを排他的に分散して配置する複数のデータベースノードを備える非共有型データベースクラスタシステムにおいて、各データベースノードが、自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストするデータ量調査手段と、前記データ量調査手段の調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べるデータ量比較手段と、前記データ量比較手段でデータ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信し、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除するネゴシエーション手段とを有することを特徴とする。
【００１３】
また、本発明の非共有型データベースクラスタシステムは、前記データ量調査手段が、自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの増設を可能にすることを特徴とする。
【００１４】
さらに、本発明の非共有型データベースクラスタシステムは、前記データ量調査手段が、自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの削除を可能にすることを特徴とする。
【００１５】
さらにまた、本発明の非共有型データベースクラスタシステムは、負荷分散装置が、クライアントからのデータ処理要求メッセージを前記複数のデータベースノードのいずれかに振り分けて送信し、各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストし、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信し、前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードがデータ処理結果をまとめて前記負荷分散装置を介してクライアントに返信することを特徴とする。
【００１６】
また、本発明の非共有型データベースクラスタシステムは、負荷分散装置が、クライアントからのデータ処理要求メッセージを全データベースノードにブロードキャストし、各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に送信し、前記負荷分散装置が、全データベースノードからのデータ処理結果をまとめてクライアントに返信することを特徴とする。
【００１７】
一方、本発明のデータベースノードは、自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストするデータ量調査手段と、前記データ量調査手段の調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べるデータ量比較手段と、前記データ量比較手段でデータ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信し、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除するネゴシエーション手段とを有することを特徴とする。
【００１８】
また、本発明のデータベースノードは、前記データ量調査手段が、自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、共有型データベースクラスタシステムへの増設を可能にすることを特徴とする。
【００１９】
さらに、本発明のデータベースノードは、前記データ量調査手段が、自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、共有型データベースクラスタシステムからの削除を可能にすることを特徴とする。
【００２０】
さらにまた、本発明のデータベースノードは、負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストし、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信し、前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードであればデータ処理結果をまとめて前記負荷分散装置に返信することを特徴とする。
【００２１】
また、本発明のデータベースノードは、負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に返信することを特徴とする。
【００２２】
他方、本発明の非共有型データベースクラスタシステムの動的データ再配置方法は、データを排他的に分散して配置する複数のデータベースノードを備える非共有型データベースクラスタシステムの動的データ再配置方法において、自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストする工程と、自データベースノードでの調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べる工程と、データ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信する工程と、データ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除する工程とを含むことを特徴とする。
【００２３】
また、本発明の非共有型データベースクラスタシステムの動的データ再配置方法は、自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの増設を可能にすることを特徴とする。
【００２４】
さらに、本発明の非共有型データベースクラスタシステムの動的データ再配置方法は、自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの削除を可能にすることを特徴とする。
【００２５】
さらにまた、本発明の非共有型データベースクラスタシステムの動的データ再配置方法は、負荷分散装置が、クライアントからのデータ処理要求メッセージを前記複数のデータベースノードのいずれかに振り分けて送信する工程と、各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストする工程と、各データベースノードが、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信する工程と、前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードがデータ処理結果をまとめて前記負荷分散装置を介してクライアントに返信する工程とを含むことを特徴とする。
【００２６】
また、本発明の非共有型データベースクラスタシステムの動的データ再配置方法は、負荷分散装置が、クライアントからのデータ処理要求メッセージを全データベースノードにブロードキャストする工程と、各データベースノードが、前記負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に送信する工程と、前記負荷分散装置が、全データベースノードからのデータ処理結果をまとめてクライアントに返信する工程とを含むことを特徴とする。
【００２７】
加えて、本発明のプログラムは、コンピュータを、自データベースノードの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストするデータ量調査手段と、前記データ量調査手段の調査結果のデータ量および他の全データベースノードからブロードキャストされたデータ量に基づいて自データベースノードのデータ量と最も大きなデータ量の差がある他のデータベースノードを決定し、該他のデータベースノードとのデータ量の差が閾値以上であるかどうかを調べるデータ量比較手段と、前記データ量比較手段でデータ量の差が閾値以上であると判明したときに、自データベースノードのデータ量が該他のデータベースノードのデータ量より小さければ、不足データ量分の移転データの転送要求メッセージを該他のデータベースノードに送信し、該他のデータベースノードから移転データを受信したときに受信完了メッセージを該他のデータベースノードに送信し、自データベースノードのデータ量が該他のデータベースノードのデータ量より大きければ、該他のデータベースノードからの転送要求メッセージに基づいて移転データを該他のデータベースノードに送信し、該他のデータベースノードから受信完了メッセージを受信した後に移転データを自データベースノードから削除するネゴシエーション手段として動作させることを特徴とする。
【００２８】
また、本発明のプログラムは、前記データ量調査手段が、自データベースノードの増設時に自データベースノードのデータ量として初期値０のデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの増設を可能にすることを特徴とする。
【００２９】
さらに、本発明のプログラムは、前記データ量調査手段が、自データベースノードの削除時に自データベースノードのデータ量として、その時点で配置しているデータ量より大きなデータ量をデータ量メッセージとして他の全データベースノードにブロードキャストして、データベースノードの削除を可能にすることを特徴とする。
【００３０】
さらにまた、本発明のプログラムは、負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行い、自データベースノードになければ他の全データベースノードにデータ処理要求メッセージをブロードキャストし、他のデータベースノードから受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を該他のデータベースノードに送信し、前記負荷分散装置からデータ処理要求メッセージを受信したデータベースノードがデータ処理結果をまとめて前記負荷分散装置を介してクライアントに返信することを特徴とする。
【００３１】
また、本発明のプログラムは、負荷分散装置から受信したデータ処理要求メッセージの処理対象のデータが自データベースノードにあればデータ処理を行ってデータ処理結果を前記負荷分散装置に送信することを特徴とする。
【００３２】
本発明の非共有型データベースクラスタシステムは、各データベースノード間のデータの再配置を、管理者やユーザから意識せずに（つまり透過的に）実現し、かつ非共有型データベースクラスタシステムに対する負荷が増大した場合に、稼動時にデータベースノードを追加することのできる稼働時拡張性を有する。
【００３３】
図１において、非共有型データベースクラスタシステム１は、クライアント２からのデータ処理要求を含むメッセージ（以下、「データ処理要求メッセージ」と記述する）をデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…のいずれかに振り分けて送信する負荷分散装置１１と、データを排他的に分散して配置する複数のデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…とから構成されている。
【００３４】
データは、各データベースノード１２Ａ，１２Ｂ，１２Ｃ，…に排他的に分散して配置されており、同じデータが複数のデータベースノードに存在することは無い。
【００３５】
負荷分散装置１１は、クライアント２からのデータ処理要求メッセージを、負荷を分散させるためにデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…のいずれかに振り分けて送信する。しかし、高機能な負荷分散装置１１の必要性を排除するために、各データベースノード１２Ａ，１２Ｂ，１２Ｃ，…もデータ処理要求メッセージを受け付けることができるようにする。例えば、データ処理要求メッセージを受信したデータベースノード１２Ａは、データ処理要求メッセージの処理対象のデータを配置しているかどうかを検索する。処理対象のデータを配置していなければ、他のデータベースノード１２Ｂ，１２Ｃ，…に同様のデータ処理要求メッセージを送信して処理させ、返信されたデータ処理結果をクライアント２に送信する。
【００３６】
データベースノード１２Ａは、配置しているデータを排他的に管理する。他のデータベースノード１２Ｂ，１２Ｃ，…からデータベースノード１２Ａの配置するデータへのアクセスは、データベースノード１２Ａへデータ処理要求メッセージを送信することによって行う。データベースノード１２Ｂ，１２Ｃ，…についても、同様である。
【００３７】
データベースノード１２Ａは、自データベースノード１２Ａの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他のデータベースノード１２Ｂ，１２Ｃ，…とやり取りし合う。データベースノード１２Ｂ，１２Ｃ，…についても、同様である。
【００３８】
この結果、各データベースノード１２Ａ，１２Ｂ，１２Ｃ，…が配置するデータのデータ量に極端な差があった場合、データベースノード同士が自律的にネゴシエーションを行う。その結果、必要ならば、データベースノード１２Ａ，１２Ｂ，１２Ｃ，…間でデータを移転させて、各データベースノード１２Ａ，１２Ｂ，１２Ｃ，…のデータ量の均等化を図る。
【００３９】
これにより、非共有型データベースクラスタシステム１が、動的なデータ再配置を自発的に行うことができ、データ配置設計の必要が無くなる。また、新規にデータベースノードを増やしても、データ再配置設計やデータ再配置に伴うシステム停止の必要が無い。
【００４０】
以上により、非共有型データベースクラスタシステム１において、データベースノード１２Ａ，１２Ｂ，１２Ｃ，…間でデータを動的に再配置することにより、透過的なデータ分散および負荷分散が可能となる。
【００４１】
このようにして、本発明では、各データベースノードが自データベースノードの配置しているデータを排他的に管理し、ブロードキャストなどで各データベースノードが自発的にネゴシエーションを行って、各データベースノードが配置するデータを動的にやり取りして再配置する。このため、非共有型データベースクラスタシステムにおいて、データの配置設計を行う必要が無い。
【００４２】
また、特定のデータベースノードが多くのデータを偏って配置し、この結果、多くのデータ処理要求メッセージを処理しなければいけない状況に陥ることもない。このため、特定のデータベースノードの負荷が極端に高くなることを抑制できる。
【００４３】
さらに、上記の構成で、負荷分散を効率良くするために、処理対象のデータを全く配置していないデータベースノードもデータ処理要求メッセージを受信することができる。処理対象のデータを全く配置していないデータベースノードがデータ処理要求メッセージを受信した場合は、ブロードキャストによって他の全データベースノードを対象に再要求をする。このため、負荷分散装置によってデータ処理要求メッセージがいずれのデータベースノードに振り分けられたとしても、最終的に処理対象のデータを配置するデータベースノードにデータ処理要求メッセージが到達し、データ分散および負荷分散を実現できる。
【発明の効果】
【００４４】
本発明は、以下に記載するような効果を奏する。
【００４５】
第１の効果は、各データベースノードに排他的に分散されて配置されたデータは、各データベースノードが自発的にネゴシエーションを行って動的に再配置するため、データの再配置設計を行う必要が無いということである。
【００４６】
第２の効果は、上記データ再配置を動的に行うことによって、特定のデータベースノードが偏って多くのデータ処理要求メッセージを処理しなければいけない状況に陥り、負荷が高くなるということはない。つまり、各データベースノードの負荷が平準化するということである。
【００４７】
第３の効果は、上記データ再配置を動的に行うことによって、新規にデータベースノードを追加しても各データベースノードに配置されるデータのデータ量が自律的に均等になる。つまり、稼動時に非共有型データベースクラスタシステムの拡張が可能になるということである（稼働時拡張性）。
【発明を実施するための最良の形態】
【００４８】
以下、本発明の実施例について図面を参照して詳細に説明する。
【実施例１】
【００４９】
図１は、本発明の実施例１に係る非共有型データベースクラスタシステム１の構成を示すブロック図である。
【００５０】
非共有型データベースクラスタシステム１は、クライアント２に接続され、負荷分散装置１１と、複数のデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…とから、その主要部が構成されている。以下、データベースノードが、データベースノード１２Ａ，１２Ｂ，１２Ｃの３つであるものとして説明する。ただし、データベースノードの数は、負荷状況などの必要に応じて動的に増減することができる。つまり、３台のデータベースノード１２Ａ，１２Ｂ，１２Ｃの能力では処理が追いつかない場合は、データベースノードを増やすことができるし、逆に能力を持て余す場合は、データベースノードを減らすこともできる。
【００５１】
なお、データは各データベースノード１２Ａ，１２Ｂ，１２Ｃに排他的に分散して配置されており、同じデータが複数のデータベースノードに存在することは無い。
【００５２】
クライアント２は、非共有型データベースクラスタシステム１に対してデータ処理要求メッセージを送信する端末である。
【００５３】
負荷分散装置１１は、クライアント２から受信したデータ処理要求メッセージをデータベースノード１２Ａ，１２Ｂ，１２Ｃのいずれか１つへ振り分けて送信する。負荷分散装置１１によるデータ処理要求メッセージの振り分け先は、処理対象のデータを配置しているデータベースノードである必要は必ずしもなく、例えば、サイクリックに決定することもできる。
【００５４】
データベースノード１２Ａは、データ量調査手段１２１と、データ量比較手段１２２と、ネゴシエーション手段１２３と、データ決定手段１２４と、データ移転手段１２５とを含んで構成されている。データベースノード１２Ｂおよび１２Ｃについても、同様である。
【００５５】
データベースノード１２Ａは、データを配置し、そのデータを排他的に管理する。つまり、データベースノード１２Ａは、自データベースノード１２Ａの配置しているデータに対してのみ処理を行う。また、データベースノード１２Ｂ，１２Ｃあるいは負荷分散装置１１は、データベースノード１２Ａの配置しているデータに対して直接処理を行うことはできない。データベースノード１２Ｂ，１２Ｃあるいは負荷分散装置１１は、データベースノード１２Ａの配置するデータに対して処理を行う必要があるときには、データ処理要求メッセージをデータベースノード１２Ａに送信しなければならない。以上は、データベースノード１２Ｂ，１２Ｃについても同様である。
【００５６】
図２を参照すると、データ量調査手段１２１の処理は、データ量測定ステップＳ１０１からなる。
【００５７】
図３を参照すると、データ量比較手段１２２の処理の一例は、閾値設定・自データベースノードデータ量設定ステップＳ２０１と、他データベースノードデータ量受信・他データベースノードデータ量設定ステップＳ２０２と、不足データ量算出ステップＳ２０３と、不足データ量判定ステップＳ２０４と、データ移転試行ステップＳ２０５と、無実行ステップＳ２０６と、データ移転試行ステップＳ２０６とからなる。
【００５８】
図４を参照すると、データ量比較手段１２２の処理の他の例は、閾値設定・自データベースノードデータ量設定ステップＳ２１１と、他データベースノードデータ量受信・全他データベースノード平均データ量設定ステップＳ２１２と、不足データ量算出ステップＳ２１３と、不足データ量判定ステップＳ２１４と、データ移転試行ステップＳ２１５と、無実行ステップＳ２１６と、データ移転試行ステップＳ２１７とからなる。
【００５９】
図５を参照すると、データ不足のデータベースノードにおけるネゴシエーション手段１２３およびデータ移転手段１２５の処理は、不足データ量設定・閾値設定ステップＳ３０１と、不足データ量他全データベースノード送信ステップＳ３０２と、移転データ量設定ステップＳ３０３と、転送要求メッセージ送信ステップＳ３０４と、移転データ受信ステップＳ３０５と、正当性確認ステップＳ３０６と、受信完了メッセージ送信ステップＳ３０７と、削除完了メッセージ受信ステップＳ３０８と、不足データ量更新ステップＳ３０９と、不足データ量判定ステップＳ３１０とからなる。
【００６０】
同じく、図５を参照すると、データ過剰のデータベースノードにおけるネゴシエーション手段１２３，データ決定手段１２４およびデータ移転手段１２５の処理は、過剰データ量設定・閾値設定ステップＳ４０１と、不足データ量設定ステップＳ４０２と、移転データ量算出ステップＳ４０３と、移転データ量送信ステップＳ４０４と、転送要求メッセージ受信・移転データ決定ステップＳ４０５と、移転データ送信ステップＳ４０６と、受信完了メッセージ受信ステップＳ４０７と、移転データ削除ステップＳ４０８と、過剰データ量更新ステップＳ４０９と、過剰データ量判定ステップＳ４１０とからなる。
【００６１】
図６を参照すると、データ決定手段１２４の処理の一例は、最少アクセスデータ決定ステップＳ５０１からなる。
【００６２】
次に、このように構成された実施例１に係る非共有型データベースクラスタシステム１の動作について、図７ないし図１２に示すシーケンスチャートを参照しながら説明する。
【００６３】
なお、ここでは、データベースノード１２Ａを中心とした動作について説明するが、データベースノード１２Ｂ，１２Ｃについても同様であることはいうまでもない。
【００６４】
データベースノード１２Ａは、データ量調査手段１２１により、自データベースノード１２Ａの配置しているデータのデータ量を定期的に調査し、調査結果のデータ量をデータ量メッセージとして他の全データベースノード１２Ｂ，１２Ｃにブロードキャストする（図７（ａ）参照）。
【００６５】
一例として、データ量調査手段１２１は、図２に示すように、自データベースノードの記憶装置に配置されているデータ量（ディスクの使用量など）を測定する（ステップＳ１０１）。
【００６６】
同様に、データベースノード１２Ｂ，１２Ｃも、データ量調査手段１２１により、自データベースノード１２Ｂ，１２Ｃの配置しているデータ量をデータ量メッセージとして定期的にブロードキャストしているので、データベースノード１２Ａは、非共有型データベースクラスタシステム１内の全データベースノード１２Ａ，１２Ｂ，１２Ｃの総データ量を定期的に把握していることになる（図７（ｂ）参照）。
【００６７】
次に、データベースノード１２Ａは、データ量比較手段１２２により、定期的にデータベースノード１２Ａのデータ量と最も大きなデータ量の差があるデータベースノードを探し、そのデータベースノードとのデータ量の差に極端な開きがあるかどうかを調べる（図７（ｃ）参照）。
【００６８】
一例として、データ量比較手段１２２は、図３に示すように、閾値をｔｈｒｅｓｈｏｌｄに、自データベースノード１２Ａのデータ量をＤｍに設定し（ステップＳ２０１）、他データベースノードのデータ量を受信して他データベースノードのデータ量をＤｏに設定し（ステップＳ２０２）、不足データ量算出関数ｆｎを用いてｆｎ（Ｄｏ，Ｄｍ）をＤｌａｃｋに設定し（単純な例では減算し）（ステップＳ２０３）、Ｄｌａｃｋ＞ｔｈｒｅｓｈｏｌｄであればデータを他のデータベースノードから移転するように試み（ステップＳ２０５）、―Ｄｌａｃｋ＞ｔｈｒｅｓｈｏｌｄであればデータを他のデータベースノードへ移転するように試み（ステップＳ２０７）、Ｄｌａｃｋの絶対値がｔｈｒｅｓｈｏｌｄ以下であれば特に何もしない（ステップＳ２０６）。
【００６９】
他の例として、データ量比較手段１２２は、図４に示すように、閾値をｔｈｒｅｓｈｏｌｄに、自データベースノード１２Ａのデータ量をＤｍに設定し（ステップＳ２１１）、他データベースノードのデータ量を受信して全他データベースノードの平均データ量をＤａｖｇに設定し（ステップＳ２１２）、不足データ量算出関数ｆｎを用いてｆｎ（Ｄａｖｇ，Ｄｍ）をＤｌａｃｋに設定し（単純な例では減算し）（ステップＳ２１３）、Ｄｌａｃｋ＞ｔｈｒｅｓｈｏｌｄであればデータを他のデータベースノードから移転するように試み（ステップＳ２１５）、―Ｄｌａｃｋ＞ｔｈｒｅｓｈｏｌｄであればデータを他のデータベースノードへ移転するように試み（ステップＳ２１７）、Ｄｌａｃｋの絶対値がｔｈｒｅｓｈｏｌｄ以下であれば特に何もしない（ステップＳ２１６）。
【００７０】
いま、この結果、データベースノード１２Ｃの配置するデータ量と、データベースノード１２Ａの配置するデータ量との差が最も大きく、データベースノード１２Ａがデータ不足のデータベースノードであり、データベースノード１２Ｃがデータ過剰のデータベースノードであったものとする。
【００７１】
データベースノード１２Ａは、データベースノード１２Ｃに対してデータ量に大きな差がある旨のメッセージを送信する（図７（ｄ）参照）。
【００７２】
メッセージを受信して、データベースノード１２Ｃも同様に、データベースノード１２Ｃの配置するデータ量とデータベースノード１２Ａの配置するデータ量との差が大きいと判断した場合（図７（ｅ）参照）、データベースノード１２Ａ，１２Ｃは、データベースノード１２Ａからデータベースノード１２Ｃへのデータ移転を行う。このときに移転されるデータ（以下、移転データという）は、各データベースノード１２Ａ，１２Ｂ，１２Ｃの配置するデータ量が均等になるために予測した量のデータである（図７（ｆ）参照）。例えば、データベースノード１２Ａのデータ量とデータベースノード１２Ｃのデータ量との差の半分である。
【００７３】
データベースノード１２Ａは、データベースノード１２Ｃから移転データを全て受信すると（図７（ｇ）参照）、移転成功の旨のメッセージをデータベースノード１２Ｃへ送信する（図７（ｈ）参照）。
【００７４】
データベースノード１２Ｃは、データベースノード１２Ａから移転成功の旨のメッセージを受信した時点で、移転データを自データベースノード１２Ｃ上から抹消する（図７（ｉ）参照）。
【００７５】
詳しくは、図５に示すように、データベースノード１２Ａは、自データベースノード１２Ａの不足データ量をＤｌａｃｋに、閾値をｔｈｒｅｓｈｏｌｄに設定し（ステップＳ３０１）、ネゴシエーション手段１２３により、Ｄｌａｃｋを自データベースノード１２Ａの情報等とともに他の全データベースノード１２Ｂ，１２Ｃにブロードキャストする（ステップＳ３０２）。
【００７６】
データベースノード１２Ｃは、自データベースノード１２Ｃの過剰データ量をＤｅｘｃｅに、閾値をｔｈｒｅｓｈｏｌｄに設定し（ステップＳ４０１）、受信した他のデータベースノードの不足データ量をＤｌａｃｋに設定し（ステップＳ４０２）、移転データ量算出関数ｆｎを用いてｆｎ（Ｄｅｘｃｅ，Ｄｌａｃｋ）をＤｔｒａｎｓに設定し（単純な例では最小値）（ステップＳ４０３）、ネゴシエーション手段１２３により、Ｄｔｒａｎｓをデータベースノード１２Ａに送信する（ステップＳ４０４）。
【００７７】
データベースノード１２Ａは、受信したＤｔｒａｎｓとＤｌａｃｋとの最小値をＤｔｒａｎｓに再設定し（ステップＳ３０３）、ネゴシエーション手段１２３により、Ｄｔｒａｎｓ分のデータの転送要求メッセージをデータベースノード１２Ｃに送信する（ステップＳ３０４）。
【００７８】
データベースノード１２Ｃは、転送要求メッセージを受信し、移転データ量をＤｔｒａｎｓに設定し、データ決定手段１２４により移転データを決定し（ステップＳ４０５）、データ移転手段１２５によりＤｔｒａｎｓ分の移転データをデータベースノード１２Ａに送信する（ステップＳ４０６）。
【００７９】
一例として、データ決定手段１２４は、図６に示すように、自データベースノードＣの配置しているデータの中から最もアクセスの少ないデータを移転データとして決定する（ステップＳ５０１）。
【００８０】
データベースノード１２Ａは、Ｄｔｒａｎｓ分の移転データを受信すると（ステップＳ３０５）、受信を完了して移転データの正当性を確認し（ステップＳ３０６）、ネゴシエーション手段１２３により、受信完了メッセージをデータベースノード１２Ｃに送信する（ステップＳ３０７）。
【００８１】
データベースノード１２Ｃは、受信完了メッセージを受信すると（ステップＳ４０７）、移転データを自データベースノード１２Ｃから削除して、ネゴシエーション手段１２３により、削除完了メッセージをデータベースノード１２Ａに送信する（ステップＳ４０８）。
【００８２】
この後、データベースノード１２Ｃは、Ｄｅｘｃｅに（Ｄｅｘｃｅ―Ｄｔｒａｎｓ）を再設定し（ステップＳ４０９）、Ｄｅｘｃｅ＞ｔｈｒｅｓｈｏｌｄであるかどうかを判定し（ステップＳ４１０）、そうであればステップＳ４０２に制御を戻し、そうでなければ処理を終了する。
【００８３】
一方、データベースノード１２Ａは、削除完了メッセージを受信すると（ステップＳ３０８）、Ｄｌａｃｋに（Ｄｌａｃｋ―Ｄｔｒａｎｓ）を設定し（ステップＳ３０９）、Ｄｌａｃｋ＞ｔｈｒｅｓｈｏｌｄであるかどうかを判定し（ステップＳ３１０）、そうであればステップＳ３０２に制御を戻し、そうでなければ処理を終了する。
【００８４】
このような処理を繰り返す結果として、各データベースノード１２Ａ，１２Ｂ，１２Ｃの配置しているデータ量は限りなく均等に近づいていく。
【００８５】
次に、データを全く配置していない新しいデータベースノード１２Ｄが追加された場合について、図８を用いて説明する。
【００８６】
データベースノード１２Ｄが非共有型データベースクラスタシステム１内に追加される（図８（ａ）参照）。
【００８７】
データベースノード１２Ｄは、自データベースノード１２Ｄの配置しているデータのデータ量（初期値０）をデータ量メッセージとして他の全てのデータベースノード１２Ａ，１２Ｂ，１２Ｃにブロードキャストする（図８（ｂ）参照）。
【００８８】
データベースノード１２Ｂは、データベースノード１２Ｄの配置するデータ量と自データベースノード１２Ｂの配置しているデータ量とに大きな開きがあることを検知する（図８（ｃ）参照）。
【００８９】
データベースノード１２Ｂは、その旨のメッセージを、自データベースノード１２Ｂの配置しているデータ量とともにデータベースノード１２Ｄに送信する（図８（ｄ）参照）。
【００９０】
データベースノード１２Ｄは、受信したメッセージに含まれているデータベースノード１２Ｂの配置しているデータ量と、自データベースノード１２Ｄの配置しているデータ量とを比較し、大きく差が開いていると判断した場合は（図８（ｅ）参照）、データベースノード１２Ｂに対して同意する旨のメッセージを送信する（図８（ｆ）参照）。
【００９１】
データベースノード１２Ｂは、同意する旨のメッセージを受信すると、相当と判断したデータ量の移転データをデータベースノード１２Ｄに対して送信する（図８（ｇ）参照）。
【００９２】
データベースノード１２Ｄは、移転データを受信すると（図８（ｈ）参照）、移転成功メッセージをデータベースノード１２Ｂに送信する（図８（ｉ）参照）。
【００９３】
データベースノード１２Ｂは、移転成功メッセージを受信すると、移転データを自データベースノード１２Ｂ上から抹消する（図８（ｊ）参照）。
【００９４】
続いて、データを配置していたデータベースノード１２Ｄを削除するように明示的に設定した場合について、図９を用いて説明する。
【００９５】
データベースノード１２Ｄがデータベースクラスタ１内で、削除対象として設定される（図９（ａ）参照）。
【００９６】
データベースノード１２Ｄは、配置しているデータ量を他の全データベースノード１２Ａ，１２Ｂ，１２Ｃにブロードキャストする。なお、このとき、配置しているデータ量は、実際よりも多いデータ量が送信される（図９（ｂ）参照）。
【００９７】
データベースノード１２Ｂは、データベースノード１２Ｄの配置するデータ量と、自データベースノード１２Ｂの配置しているデータ量とに大きな開きがあることを検知する（図９（ｃ）参照）。
【００９８】
データベースノード１２Ｂは、その旨のメッセージを、データベースノード１２Ｂの配置しているデータ量とともにデータベースノード１２Ｄに送信する（図９（ｄ）参照）。
【００９９】
データベースノード１２Ｄは、データベースノード１２Ｂの配置しているデータ量と、自データベースノード１２Ｄの配置しているデータ量とを比較し、大きく差が開いていると判断し（図９（ｅ）参照）、データベースノード１２Ｂに対して同意する旨のメッセージを送信する（図９（ｆ）参照）。
【０１００】
データベースノード１２Ｄは、データベースノード１２Ｂに対して、相当と判断したデータ量の移転データを送信する（図９（ｇ）参照）。
【０１０１】
データベースノード１２Ｂは、移転データの受信を完了すると（図９（ｈ）参照）、移転成功メッセージをデータベースノード１２Ｄに送信する（図９（ｉ）参照）。
【０１０２】
移転データが完全に送信された後、データベースノード１２Ｄは、移転データを自データベースノード１２Ｄ上から抹消する（図９（ｊ）参照）。
【０１０３】
上記が繰り返され、やがてデータベースノード１２Ｄ上に配置されたデータ量が０となり、データベースノード１２Ｄをデータベースクラスタ１から取り除くことが可能となる。
【０１０４】
このように、実施例１によれば、各データベースノード１２Ａ，１２Ｂ，１２Ｃが自発的にネゴシエーションを行って各データベースノード１２Ａ，１２Ｂ，１２Ｃに分散されたデータを動的に再配置するため、データ配置設計を行う必要が無い。
【０１０５】
また、上記データ再配置を動的に行うことによって、特定のデータベースノードが偏って多くのデータ処理要求メッセージを処理しなければいけない状況に陥り、負荷が高くなることはないので、各データベースノードの負荷が平準化する。
【０１０６】
さらに、上記データ再配置を動的に行うことによって、新規にデータベースノードを追加しても各データベースに配置されるデータ量が自律的に均等になるので、稼動時に非共有型データベースクラスタシステムの拡張が可能である。
【０１０７】
次に、クライアント２からデータ処理要求メッセージが発行された場合の動作について、図１０ないし図１２を参照しながら説明する。
【０１０８】
クライアント２からのデータ処理要求メッセージを負荷分散装置１１が受信する（図１０（ａ）参照）。
【０１０９】
負荷分散装置１１は、データ処理要求メッセージをどのデータベースノードに処理させるかを決定する（図１０（ｂ）参照）。ここで、仮にデータベースノード１２Ａに決定したとする。
【０１１０】
負荷分散装置１１は、クライアント２からのデータ処理要求メッセージをデータベースノード１２Ａに送信する（図１０（ｃ）参照）。
【０１１１】
データベースノード１２Ａは、データ処理要求メッセージの処理対象のデータを自データベースノード１２Ａが配置しているかどうかを検索する（図１０（ｄ）参照）。
【０１１２】
処理対象のデータの全部がデータベースノード１２Ａに配置されている場合、データベースノード１２Ａは、データを要求内容に従って処理し、データ処理結果をクライアント２に送信する（図１０（ｅ）参照）。以上で処理は終了となる。
【０１１３】
このとき、処理対象のデータがデータベースノード１２Ａに全く存在しなかった場合、データベースノード１２Ａは、データ処理要求メッセージを他の全データベースノード１２Ｂ，１２Ｃにブロードキャストし、返信を一定時間待つ（図１１（ｅ）参照。図１１（ａ）〜（ｄ）は、図１０（ａ）〜（ｄ）と同じ）。
【０１１４】
データベースノード１２Ｂ（１２Ｃ）は、データ処理要求メッセージの処理対象のデータが自データベースノード１２Ｂ（１２Ｃ）に配置されているかどうかを検索する（図１１（ｆ）参照）。
【０１１５】
データベースノード１２Ｂ（１２Ｃ）は、処理対象のデータが自データベースノード１２Ｂ（１２Ｃ）に全く配置されていなかった場合、何もしない。
【０１１６】
データベースノード１２Ａは、データベースノード１２Ｂ（１２Ｃ）からの返信を一定時間待った後、まったく返信が無かった場合は、処理対象のデータが無い旨のメッセージをクライアント２に送信する（図１１（ｇ）参照）。以上で処理は終了となる。
【０１１７】
このとき、データベースノード１２Ｂ（１２Ｃ）は、自データベースノード１２Ｂ（１２Ｃ）が処理対象のデータを一部でも配置していた場合、その旨のメッセージをデータベースノード１２Ａに送信する（図１２（ｇ）参照。図１２（ａ）〜（ｆ）は、図１１（ａ）〜（ｆ）と同じ）。
【０１１８】
さらに、データベースノード１２Ｂ（１２Ｃ）は、データ処理要求メッセージに基づいてデータを処理し（図１２（ｈ）参照）、そのデータ処理結果をデータベースノード１２Ａに続けて送信する（図１２（ｉ）参照）。
【０１１９】
データベースノード１２Ａは、データベースノード１２Ｂ（１２Ｃ）からの返信を一定時間待った後、返信があった場合は、それらの返信であるデータ処理結果をとりまとめ（図１２（ｊ）参照）、その結果をクライアント２に返信する（図１２（ｋ）参照）。以上で処理は終了となる。
【０１２０】
データ処理結果を取りまとめる例としては、例えば、データ更新要求メッセージに対して、データベースノード１２Ａとデータベースノード１２Ｂとの両方に分散して処理対象のデータが配置されていた場合、データベースノード１２Ａから送信された処理件数と、データベースノード１２Ｂから送信された処理件数とを合算して、データ処理結果としてクライアント２に送信する。
【０１２１】
データ処理結果を取りまとめる他の例としては、データ参照要求メッセージに対して、データベースノード１２Ａとデータベースノード１２Ｂとの両方に分散して処理対象のデータが配置されていた場合、データベースノード１２Ａから送信された参照結果の内容と、データベースノード１２Ｂから送信された参照結果の内容とを合成して、クライアント２にデータ処理結果として送信する。
【０１２２】
このように、実施例１では、どのデータベースノードがデータ処理要求メッセージを受信したとしても、データ処理要求メッセージを他の全てのデータベースノードにブロードキャストし、そのデータ処理要求メッセージに対して他のデータベースノードが応答することによって、非共有型データベースクラスタシステム１全体としては正しくデータ処理を実行することができる。このため、負荷分散装置１１には、データがどのデータベースノードに配置されているかという情報を常に最新に保っておく機能は必要ない。
【０１２３】
つまり、本発明の基本的構成が、全てのデータに関してそのデータを配置しているデータベースノードを動的に把握するような高度な負荷分散装置１１でなくても、比較的単純な機能の負荷分散装置１１にて実現可能であるという効果が得られる。
【０１２４】
実施例１によれば、データ処理要求メッセージが全てのデータベースノードにブロードキャストされ、最終的に処理対象のデータを配置するデータベースノードにデータ処理要求メッセージが到達するので、データの位置を動的に把握するような高機能な負荷分散装置１１でなくても実現可能である。
【実施例２】
【０１２５】
図１３は、本発明の実施例２に係る非共有型データベースクラスタシステム１’の構成を示すブロック図である。この実施例２に係る非共有型データベースクラスタシステム１’では、図１に示した実施例１の非共有型データベースクラスタシステム１における負荷分散装置１１がデータ処理要求メッセージをいずれか１つのデータベースノードに振り分けて送信するものであったのに対して、実施例２に係る非共有型データベースクラスタシステム１’における負荷分散装置１１’がデータ処理要求メッセージを全データベースノード１２Ａ，１２Ｂ，１２Ｃにブロードキャストするものであることだけが異なる。
【０１２６】
なお、その他の手段等は、図１に示した実施例１に係る非共有型データベースクラスタシステム１における対応する手段等と同様に構成されているので、同一符号を付して、それらの詳しい説明を省略する。
【０１２７】
次に、このように構成された実施例２に係る非共有型データベースクラスタシステム１’の動作について、図１４および図１５のシーケンスチャートを参照しながら説明する。
【０１２８】
クライアント２からのデータ処理要求メッセージを負荷分散装置１１’が受信する（図１４（ａ）参照）。
【０１２９】
負荷分散装置１１’は、全データベースノード１２Ａ，１２Ｂ，１２Ｃにデータ処理要求メッセージをブロードキャストし、一定時間返信を待つ（図１４（ｂ）参照）。
【０１３０】
データベースノード１２Ａ（１２Ｂ，１２Ｃ）は、受信した処理要求メッセージに対応するデータを自データベースノード１２Ａ（１２Ｂ，１２Ｃ）が配置しているかどうかを検索する（図１４（ｃ）参照）。
【０１３１】
データベースノード１２Ａ（１２Ｂ，１２Ｃ）は、処理対象のデータが自データベースノード１２Ａ（１２Ｂ，１２Ｃ）に全く存在しなかった場合、何もしない。
【０１３２】
負荷分散装置１１’は、データベースノード１２Ａ（１２Ｂ，１２Ｃ）からの返信を一定時間待った後、まったく返信が無かった場合は、処理対象のデータが無い旨のメッセージをクライアント２に送信する。以上で処理は終了となる（図１４（ｄ）参照）。
【０１３３】
このとき、データベースノード１２Ａ（１２Ｂ，１２Ｃ）は、自データベースノード１２Ａ（１２Ｂ，１２Ｃ））が処理対象のデータを一部でも配置していた場合、その旨のメッセージを負荷分散装置１１’に送信する（図１５（ｄ）参照。図１５（ａ）〜（ｃ）は、図１４（ａ）〜（ｃ）と同じ）。
【０１３４】
さらに、データベースノード１２Ａ（１２Ｂ，１２Ｃ）は、データ処理要求メッセージに基づいてデータを処理し（図１５（ｅ）参照）、その結果を負荷分散装置１１’に続けて送信する（図１５（ｆ）参照）。
【０１３５】
負荷分散装置１１’は、データベースノード１２Ａ（１２Ｂ，１２Ｃ）からの返信を一定時間待った後、返信があった場合は、それらの返信である処理結果をとりまとめ（図１５（ｇ）参照）、その結果をクライアント２に返信する（図１５（ｈ）参照）。以上で処理は終了となる。
【０１３６】
処理結果を取りまとめる例としては、例えば、データ更新要求メッセージに対して、データベースノード１２Ａとデータベースノード１２Ｂとの両方に分散して処理対象のデータが存在していた場合は、データベースノード１２Ａから送信された処理件数と、データベースノード１２Ｂから送信された処理件数とを合算して、クライアント２に処理結果として送信する。
【０１３７】
処理結果を取りまとめる例として他には、データ参照要求メッセージに対して、データベースノード１２Ａとデータベースノード１２Ｂの両方に分散して処理対象のデータが存在していた場合は、データベースノード１２Ａから送信された参照結果の内容と、データベースノード１２Ｂから送信された参照結果の内容を合成して、クライアント２に処理結果として送信する。
【０１３８】
このように、実施例２では、どのデータベースノードがデータ処理要求メッセージを受信したとしてもブロードキャストメッセージを送信し、そのメッセージに対して他のデータベースノードが応答することによって、非共有型データベースクラスタシステム１’全体としては正しく処理することができる。このため、負荷分散装置１１’には、データがどのデータベースノードに配置されているかという情報を常に最新に保っておく機能は必要ない。
【０１３９】
つまり、本発明の基本的構成が、全てのデータに関してそのデータを所有しているデータベースノードを動的に把握するような高度な負荷分散装置１１’でなくても、比較的単純な機能の負荷分散装置１１’にて実現可能であるという効果が得られる。
【実施例３】
【０１４０】
図１６は、本発明の実施例３に係る非共有型データベースクラスタシステム１の構成を示すブロック図である。本実施例３に係る非共有型データベースクラスタシステム１は、図１に示した実施例１に係る非共有型データベースクラスタシステム１のデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…に対してデータベースプログラム１３をそれぞれ付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付してそれらの詳しい説明を省略する。
【０１４１】
データベースプログラム１３は、データベースノード１２Ａ，１２Ｂ，１２Ｃ，…にそれぞれ読み込まれ、データベースノード１２Ａ，１２Ｂ，１２Ｃ，…の動作を、データ量調査手段１２１，データ量比較手段１２２，ネゴシエーション手段１２３，データ決定手段１２４，およびデータ移転手段１２５として制御する。データベースプログラム１３の制御によるデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…の動作は、実施例１におけるデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…の動作と全く同様になるので、その詳しい説明を割愛する。
【実施例４】
【０１４２】
図１７は、本発明の実施例４に係る非共有型データベースクラスタシステム１’の構成を示すブロック図である。本実施例４に係る非共有型データベースクラスタシステム１’は、図１３に示した実施例２に係る非共有型データベースクラスタシステム１’のデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…に対してデータベースプログラム１３をそれぞれ付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付してそれらの詳しい説明を省略する。
【０１４３】
データベースプログラム１３は、データベースノード１２Ａ，１２Ｂ，１２Ｃ，…にそれぞれ読み込まれ、データベースノード１２Ａ，１２Ｂ，１２Ｃ，…の動作を、データ量調査手段１２１，データ量比較手段１２２，ネゴシエーション手段１２３，データ決定手段１２４，およびデータ移転手段１２５として制御する。データベースプログラム１３の制御によるデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…の動作は、実施例２におけるデータベースノード１２Ａ，１２Ｂ，１２Ｃ，…の動作と全く同様になるので、その詳しい説明を割愛する。
【図面の簡単な説明】
【０１４４】
【図１】本発明の実施例１に係る非共有型データベースクラスタシステムの構成を示すブロック図である。
【図２】図１中のデータ量調査手段の処理を示すフローチャートである。
【図３】図１中のデータ量比較手段の処理の一例を示すフローチャートである。
【図４】図１中のデータ量比較手段の処理の他の例を示すフローチャートである。
【図５】図１中のネゴシエーション手段，データ決定手段およびデータ移転手段の処理を示すフローチャートである。
【図６】図１中のデータ決定手段の処理の一例を示すフローチャートである。
【図７】実施例１に係る非共有型データベースクラスタシステムにおけるデータ移転時のシーケンスチャートである。
【図８】実施例１に係る非共有型データベースクラスタシステムにおけるデータベースノード追加時のシーケンスチャートである。
【図９】実施例１に係る非共有型データベースクラスタシステムにおけるデータベースノード削除時のシーケンスチャートである。
【図１０】実施例１に係る非共有型データベースクラスタシステムにおけるデータ処理要求時のシーケンスチャートである。
【図１１】実施例１に係る非共有型データベースクラスタシステムにおけるデータ処理要求時のシーケンスチャートである。
【図１２】実施例１に係る非共有型データベースクラスタシステムにおけるデータ処理要求時のシーケンスチャートである。
【図１３】本発明の実施例２に係る非共有型データベースクラスタシステムの構成を示すブロック図である。
【図１４】実施例２に係る非共有型データベースクラスタシステムにおけるデータ処理要求時のシーケンスチャートである。
【図１５】実施例２に係る非共有型データベースクラスタシステムにおけるデータ処理要求時のシーケンスチャートである。
【図１６】本発明の実施例３に係る非共有型データベースクラスタシステムの構成を示すブロック図である。
【図１７】本発明の実施例４に係る非共有型データベースクラスタシステムの構成を示すブロック図である。
【図１８】従来の非共有型データベースクラスタシステムの構成を示すブロック図である。
【符号の説明】
【０１４５】
１  非共有型データベースクラスタシステム
２  クライアント
１１  負荷分散装置
１３  データベースプログラム
１２Ａ，１２Ｂ，１２Ｃ，１２Ｄ  データベースノード
１２１  データ量調査手段
１２２  データ量比較手段
１２３  ネゴシエーション手段
１２４  データ決定手段
１２５  データ移転手段
Ｓ１０１  データ量測定ステップ
Ｓ２０１  閾値設定・自データベースノードデータ量設定ステップ
Ｓ２０２  他データベースノードデータ量受信・他データベースノードデータ量設定ステップ
Ｓ２０３  不足データ量算出ステップ
Ｓ２０４  不足データ量判定ステップ
Ｓ２０５  データ移転試行ステップ
Ｓ２０６  無実行ステップ
Ｓ２０６  データ移転試行ステップ
Ｓ２１１  閾値設定・自データベースノードデータ量設定ステップ
Ｓ２１２  他データベースノードデータ量受信・全他データベースノード平均データ量設定ステップ
Ｓ２１３  不足データ量算出ステップ
Ｓ２１４  不足データ量判定ステップ
Ｓ２１５  データ移転試行ステップ
Ｓ２１６  無実行ステップ
Ｓ２１６  データ移転試行ステップ
Ｓ３０１  不足データ量設定・閾値設定ステップ
Ｓ３０２  不足データ量他全データベースノード送信ステップ
Ｓ３０３  移転データ量設定ステップ
Ｓ３０４  転送要求メッセージ送信ステップ
Ｓ３０５  移転データ受信ステップ
Ｓ３０６  正当性確認ステップ
Ｓ３０７  受信完了メッセージ送信ステップ
Ｓ３０８  削除完了メッセージ受信ステップ
Ｓ３０９  不足データ量更新ステップ
Ｓ３１０  不足データ量判定ステップ
Ｓ４０１  過剰データ量設定・閾値設定ステップ
Ｓ４０２  不足データ量設定ステップ
Ｓ４０３  移転データ量算出ステップ
Ｓ４０４  移転データ量送信ステップ
Ｓ４０５  転送要求メッセージ受信・移転データ決定ステップ
Ｓ４０６  移転データ送信ステップ
Ｓ４０７  受信完了メッセージ受信ステップ
Ｓ４０８  移転データ削除ステップ
Ｓ４０９  過剰データ量更新ステップ
Ｓ４１０  過剰データ量判定ステップ
Ｓ５０１  最少アクセスデータ決定ステップ
【図１】
2005078394.tif 000003
【図２】
2005078394.tif 000004
【図３】
2005078394.tif 000005
【図４】
2005078394.tif 000006
【図５】
2005078394.tif 000007
【図６】
2005078394.tif 000008
【図７】
2005078394.tif 000009
【図８】
2005078394.tif 000010
【図９】
2005078394.tif 000011
【図１０】
2005078394.tif 000012
【図１１】
2005078394.tif 000013
【図１２】
2005078394.tif 000014
【図１３】
2005078394.tif 000015
【図１４】
2005078394.tif 000016
【図１５】
2005078394.tif 000017
【図１６】
2005078394.tif 000018
【図１７】
2005078394.tif 000019
【図１８】
2005078394.tif 000020