(57)【要約】【課題】  分散ネットワーク上でデータが時々刻々と大量に追記型で生成される環境において、複数のクライアントからのクエリを実行しながらデータベースを停止することなく、データベースを分割あるいは複製し、クエリ実行の性能向上（スケールアウト）を実現する。【解決手段】  本発明は、データベース中のデータの世代管理に使用するバージョン番号と、データベース分割のための振り分けルールを蓄積しておき、クエリ実行時に分割元のデータベースにデータが挿入、更新、または、削除される場合に該データに現時点のバージョン番号を付加しておき、データベースの分割前にバージョン番号をインクリメンタルな値に更新（増加）した後で、最新のバージョン番号よりも小さいバージョン番号が付加されている分割元のデータベース中のデータを振り分けルールに従って分割先のデータベースにコピーするのと並行して、振り分けルールに従って分割元のデータベースと分割先のデータベースにクエリを振り分けて実行する。【選択図】  図１
2010250741.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベースを１つ以上の分割先に分割する際に、
前記データコピー手段は、
分割先のデータベースとなる少なくとも１つ以上のデータベースを作成し、前記管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｂに変更し、
前記管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させ、
全てのクエリ処理手段にデータベースの分割開始通知を送信し、
前記全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、前記分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを前記振り分けルールｂに従って、前記分割先のデータベースのうちの条件を満たす一部のデータベースにコピーし、
コピー完了後、前記管理情報蓄積手段に蓄積されている前記振り分けルールｂを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｃに変更させ、
前記全てのクエリ処理手段に第１のデータベース分割終了通知を送信し、
前記全てのクエリ処理手段から前記第１のデータベース分割終了通知に対する受領確認を受け取った後で、前記管理情報蓄積手段に蓄積されている前記振り分けルールｃを「分割先データベースのみにクエリを振り分ける」振り分けルールｄに変更させ、
前記全てのクエリ処理手段に第２のデータベース分割終了通知を送信し、
前記全てのクエリ処理手段から前記第２のデータベース分割終了通知に対する受領確認を受け取った後で、前記分割元のデータベースを切り離す
ことを特徴とするデータベーススケールアウト方法。
【請求項２】
少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベースを１つ以上の分割先に分割する際に、
前記クエリ処理手段は、
起動時に前記管理情報蓄積手段からバージョン番号を取得して、第１の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第２の記憶手段に保持し、
少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析し、前記第２の記憶手段に保持している前記振り分けルールに従って該クエリを振り分け、
振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
前記データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、前記第１の記憶手段に保持している前記バージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第２の記憶手段に保持している前記振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
以後、前記データコピー手段からデータベースの分割が終了した旨の第１のデータベース分割終了通知を受け取るまでの間は、前記第２の記憶手段に保持している前記振り分けルールに従って、
参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新、または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
前記更新、または、削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新、または、削除）された全てのデータを分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
前記データコピー手段から前記第１のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第２の記憶手段に保持している振り分けルールを更新し、
前記データコピー手段に前記第１のデータベース分割終了通知に対する受領確認を通知し、
前記データコピー手段が前記第１のデータベース分割終了通知を取得後に振り分けルールを変更した旨の第２のデータベース分割終了通知を受け取るまでの間、前記第２の記憶手段に保持している振り分けルールに従って、
参照クエリの場合は分割先のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新、または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
前記更新、または、削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新、または、削除）された全てのデータを分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
前記データコピー手段から前記第２のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第２の記憶手段に保持している振り分けルールを更新し、
前記データコピー手段に前記第２のデータベース分割終了通知に対する受領確認を通知し、
以後、前記第２の記憶手段に保持している前記振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、該クエリの実行結果を前記クライアントに返却する
ことを特徴とするデータベーススケールアウト方法。
【請求項３】
少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベース中のコピー対象となるデータを１つ以上の分割先のデータベースにコピーする際に、
前記データコピー手段は、
分割先のデータベースとなる少なくとも１つ以上のデータベースを作成し、前記管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｂ'に変更し、
前記管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させ、
全てのクエリ処理手段にデータベースの分割開始通知を送信し、
前記全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベースにコピーし、
コピー完了後、前記管理情報蓄積手段の前記振り分けルールｂ'を「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか１つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｃ'に変更し、前記全てのクエリ処理手段に第１のデータベースの分割終了通知を送信し、
前記全てのクエリ処理手段から前記第１のデータベースの分割終了通知に対する受領確認を受け取る
ことを特徴とするデータベーススケールアウト方法。
【請求項４】
少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベース中のコピー対象となるデータを１つ以上の分割先のデータベースにコピーする際に、
前記クエリ処理手段は、
起動時に前記管理情報蓄積手段からバージョン番号を取得して、第１の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第２の記憶手段に保持し、
少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析し、前記第２の記憶手段に保持している前記振り分けルールに従って該クエリを振り分け、
振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
前記データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、前記第１の記憶手段に保持している前記バージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第２の記憶手段に保持している前記振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
以後、前記データコピー手段からデータベースの分割が終了した旨の第１のデータベース分割終了通知を受け取るまでの間は、前記第２の記憶手段に保持している前記振り分けルールに従って、
参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び全ての分割先のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースにクエリを振り分けて実行し、
前記更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新または削除）された全てのデータを全ての分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
前記データコピー手段から前記第１のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第２の記憶手段に保持している振り分けルールを更新し、
前記データコピー手段に前記第１のデータベース分割終了通知に対する受領確認を通知し、
以後、前記第２の記憶手段に保持している前記振り分けルールに従って、参照クエリは分割元のデータベースまたは分割先のデータベースのうちのいずれか１つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分けて実行し、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持する前記バージョン番号を付加し、削除クエリの場合は加えて削除フラグを該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却する
ことを特徴とするデータベーススケールアウト方法。
【請求項５】
少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト装置であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー処理手段と、を有し、
前記管理情報蓄積手段は、
データベース中のデータの世代管理に使用するバージョン番号を蓄積するバージョン番号蓄積手段と、
前記バージョン番号蓄積手段に蓄積している前記バージョン番号を返却するバージョン番号参照手段と、
前記バージョン番号蓄積手段に蓄積している前記バージョン番号を更新する（増加）するバージョン番号更新（増加）手段と、
データベース分割のための振り分けルールを蓄積する振り分けルール蓄積手段と、
前記振り分けルール蓄積手段に蓄積している前記振り分けルールを参照して要求元に返却する振り分けルール参照手段と、
前記振り分けルール蓄積手段に蓄積している前記振り分けルールを更新する振り分けルール変更手段と、
を有し、
前記クエリ処理手段は、
クライアントから受け付けクエリを解析するクエリ解析手段と、
前記振り分けルールに従ってクエリを振り分けるクエリ振り分け手段と、
振り分けられたデータベースに対してクエリを実行する分割クエリ実行手段と、
前記分割クエリ実行手段により削除クエリが実行された場合に、前記データベース中の削除対象データを物理的に削除せずに削除フラグを設定する削除フラグ設定手段と、
前記分割クエリ実行手段により挿入または更新または削除されたデータベース中のデータにバージョン番号を付与するバージョン番号記録手段と、
を有し、
前記データコピー処理手段は、
少なくとも１つ以上の分割先のデータベースを新たに作成するデータベース作成手段と、
前記分散コンピューティング環境上に存在する全てのクエリ処理手段にデータベースの分割開始を通知する分割開始通知手段と、
分割元のデータベースのデータを分割先のデータベースへコピーするデータコピー手段と、
前記クエリ処理手段にデータベースの分割終了を通知する分割終了通知手段と、
を有する
ことを特徴とするデータベーススケールアウト装置。
【請求項６】
前記データコピー処理手段の前記データコピー手段は、
前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｂに変更させる手段と、
前記管理情報蓄積手段の前記バージョン番号蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させ、前記分割開始通知手段に、全てのクエリ処理手段に対し、データベースの分割開始通知の送信を指示する手段と、
前記全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、前記分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを前記振り分けルールｂに従って、前記分割先のデータベースのうちの条件を満たす一部のデータベースにコピーする手段と、
コピー完了後、前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている前記振り分けルールｂを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｃに変更させ、前記分割終了通知手段に、前記全てのクエリ処理手段に第１のデータベース分割終了通知を送信させる手段と、
前記全てのクエリ処理手段から前記第１のデータベース分割終了通知に対する受領確認を受け取った後で、前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている前記振り分けルールｃを「分割先データベースのみにクエリを振り分ける」振り分けルールｄに変更させ、前記分割終了通知手段に前記全てのクエリ処理手段に対して第２のデータベース分割終了通知を送信させる手段と、
前記全てのクエリ処理手段から前記第２のデータベース分割終了通知に対する受領確認を受け取った後で、前記分割元のデータベースを切り離す手段と、
を含む請求項５記載のデータベーススケールアウト装置。
【請求項７】
前記クエリ処理手段は、
起動時に前記管理情報蓄積手段から前記バージョン番号を取得して、第１の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を受け取ると、前記分割クエリ実行手段による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、該第１の記憶手段に保持している前記バージョン番号を更新するバージョン番号更新手段と、
起動時に前記管理情報蓄積手段から前記振り分けルールを取得して、第２の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に前記管理情報蓄積手段から前記振り分けルールを取得して、該第２の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
前記データコピー処理手段から前記データベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段に送信する送受信手段と、
を更に有し、
前記クエリ解析手段は、少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリまたは、削除クエリのいずれであるかを解析する手段を有し、
前記クエリ振り分け手段は、前記第２の記憶手段に保持している前記振り分けルールに従って該クエリを振り分ける手段を有し、
前記分割クエリ実行手段は、
前記クエリ振り分け手段により振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリの実行結果を前記クライアントに返却する手段と、
前記データコピー処理手段から前記送受信手段を介して第１のデータベース分割終了通知を受け取るまでの間は、前記第２の記憶手段に保持している前記振り分けルールに従って、参照クエリ実行の場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新または削除）された全てのデータを分割先のデータベースにコピーする手段と、
前記データコピー処理手段から前記送受信手段を介して前記第１のデータベース分割終了通知を取得後に、該データコピー処理手段から振り分けルールを変更した旨の第２のデータベース分割終了通知を受け取るまでの間、前記第２の記憶手段に保持している前記振り分けルールに従って、参照クエリ実行の場合は分割先のデータベースのみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新または削除）された全てのデータを分割先のデータベースにコピーする手段と、
前記送受信手段を介して、前記前記データコピー処理手段に前記第２のデータベース分割終了通知に対する受領確認を通知した後、前記第２の記憶手段に保持している前記振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行する手段と、を有する
請求項５記載のデータベーススケールアウト装置。
【請求項８】
前記分割クエリ実行手段は、
前記クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに、前記バージョン番号記録手段により、前記第１の記憶手段に保持している前記バージョン番号が付加されたデータをクエリの実行結果としてクライアントに返却し、削除クエリの場合は加えて削除フラグ設定手段により該データベース中の削除対象データに削除フラグが設定されたデータをクエリの実行結果から除外して前記クライアントに返却する手段を含む、
請求項７記載のデータベーススケールアウト装置。
【請求項９】
前記データコピー処理手段の前記データコピー手段は、
前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｂ'に変更させる手段と、
前記管理情報蓄積手段の前記バージョン番号蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させる手段と、
前記分割通知開始手段を介して、全てのクエリ処理手段にデータベースの分割開始通知を送信し、該全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベースにコピーする手段と、
コピー完了後、前記管理情報蓄積手段の前記振り分けルールｂを「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか１つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｃ'に変更し、前記分割終了通知手段を介して、前記全てのクエリ処理手段に第１のデータベースの分割終了通知を送信し、該全てのクエリ処理手段から前記第１のデータベースの分割終了通知に対する受領確認を受け取る手段と、
を有する請求項５記載のデータベーススケールアウト装置。
【請求項１０】
前記クエリ処理手段は、
起動時に前記管理情報蓄積手段から前記バージョン番号を取得して、第１の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を受け取ると、前記分割クエリ実行手段による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、該第１の記憶手段に保持している前記バージョン番号を更新するバージョン番号更新手段と、
起動時に前記管理情報蓄積手段から前記振り分けルールを取得して、第２の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に前記管理情報蓄積手段から前記振り分けルールを取得して、該第２の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
前記データコピー処理手段から前記データベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段に送信する送受信手段と、
を更に有し、
前記クエリ解析手段は、少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する手段を有し、
前記クエリ振り分け手段は、前記第２の記憶手段に保持している前記振り分けルールに従って該クエリを振り分ける手段を有し、
前記分割クエリ実行手段は、
振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに前記第１の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却する手段と、
前記送受信手段を介して、前記データコピー処理手段からデータベース分割開始通知を受け取り、前記振り分けルール更新手段による振り分けルールを更新が行われ、該データコピー処理手段に該送受信手段を介して該データベース分割開始通知に対する受領確認を通知した後に、前記データコピー処理手段から第１のデータベース分割終了通知を受け取るまでの間は、前記第２の記憶手段に保持されている前記振り分けルールに従って、参照クエリ実行の場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース及び全ての分割先のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースにクエリを振り分けて実行する手段と、
前記更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新または削除）された全てのデータを全ての分割先のデータベースにコピーする手段と、
前記データコピー処理手段に該データコピー処理手段から取得した前記第１のデータベース分割終了通知に対する受領確認を通知した後に、前記第２の記憶手段に保持している前記振り分けルールに従って、参照クエリ実行の場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか１つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリ実行の場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分けて実行する手段と、
を有する請求項５記載のデータベーススケールアウト装置。
【請求項１１】
前記分割クエリ実行手段は、
前記挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに、前記バージョン番号記録手段により前記バージョン番号が付与されたデータをクエリの実行結果としてクライアントに返却し、削除クエリの場合は削除フラグ設定手段により削除フラグが設定されたデータをクエリの実行結果から除外して前記クライアントに返却する手段を含む、
請求項１０記載のデータベーススケールアウト装置。
【請求項１２】
請求項５乃至１１の何れか１項記載のデータベーススケールアウト装置を構成する各手段としてコンピュータを機能させるためのデータベーススケールアウトプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベーススケールアウト方法及び装置及びプログラムに係り、特に、大量のセンサデータや各種情報システムのログ情報、Ｗｅｂやブログなどのコンシューマによって生成されるコンテンツ情報、映像や音声などの各種ストリームデータなど、多種多様なデータが日々大量に追記型（Write Once）で生成される分散ネットワーク上で、これらのデータを収集・蓄積・管理するためのデータベーススケールアウト方法及び装置及びプログラムに関する。
【背景技術】
【０００２】
データベースに対するクエリ実行時の性能向上（スケールアウト）を目的とした方式として、パラレルクエリでは、処理の対象となるテーブルを複数のデータベースサーバに分割して格納し、分割した各テーブルに対して並行に検索を実行させる。分割された各テーブルは元のテーブルより小さくなるので、全体の処理時間は分割前のテーブルを単独のサーバで処理するよりも性能が向上することが期待できる。そのための仕組みとして、並列処理の対象となるテーブル情報を格納した「システムデータベース」を用意しておき、クライアントと分割されたデータベース（データベースノード）の間にクライアントから並列性を抽出してクエリの書き換えを行う「並列抽出部」と、各データベースノードに対してクエリを実行して各データベースノードが返却したクエリの実行結果を統合する「並列実行エンジン」を配置し、この順に動作させることでパラレルクエリによるデータベーススケールアウトを実現している（例えば、非特許文献１参照）。
【０００３】
また、クライアントとデータベースの間に「仮想モジュール」「グローバル・システム・カタログ」を配置し、仮想化モジュールではクライアントからのクエリを解析してクエリを各データベースサーバに振り分けて実行し、各データベースサーバからの実行結果をとりまとめた結果をクライアントに返却する。グローバル・システム・カタログでは、分割しているテーブルの情報や分割先のデータベースサーバへの接続情報など、データベース全体に共通するメタ情報を一元管理しておき、１つのテーブルを複数のテーブル（パーティション）に分割して複数のデータベースに分散配置することで検索処理時間を短縮し、パーティショニング機能によるデータベーススケールアウトを実現するPostgresForest（登録商標）がある（例えば、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「PostgreSQLウォッチ」第２８回パラレルクエリを実現したpgpool-II、石井達夫、Ｐ２「負荷分散とパラレルクエリ」およびＰ３「pgpool-IIのアーキテクチャ」、［２００８年１２月２５日検索］、インターネット<URL:htp://itpro.nikkeibp.co.jp/article/CLUMN/20060626/241783/?ST=1in-server&P=1>
【非特許文献２】「特選フリーソフト」PostgreSQLの可用性と拡張性を向上PostgresForest、藤塚勤也、P2「PostgresForestの主な機能」、Ｐ３『（３）パーティショニング』およびＰ４「PostgresForestの構造」、［２００８年１２月２５日検索］、インターネット<URL:http://itpro.nikkeibp.co.jp/article/COOLUMN/20080117/29126/?ST=lin-server&P=1>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、データベースに対するクエリ実行のスケールアウトを実現しようとすると、上記の非特許文献１の技術では並列処理の対象となるテーブル情報を格納した「システムデータベース」がデータベースの動的な分割に対応していないためクエリ実行中にデータベースを分割することができないという問題がある。
【０００６】
また、上記の非特許文献２のグローバル・システム・カタログは、分割しているテーブルの情報や分割先のデータベースサーバへの接続情報など、データベース全体に共通するメタ情報を一元管理しているが、データベースの動的な分割に対応していないため、これらの方式ではパラレルクエリやパーティショニング機能を利用する前にクライアントからのクエリ受付を一旦停止した状態で（データベースの一貫性を保った状態で）予めデータベースを分割しておく必要があり、分散ネットワーク上で多種多様なデータが時々刻々と大量に追記型（Write Once）で生成される環境では、データベース中に大量に蓄積されたデータを複数のデータベースに分割し終わるまでに長い時間を要することが予想され、その間、クライアントからのクエリを受け付けることができなくなるという問題がある。
【０００７】
本発明は、上記の点に鑑みなされたもので、分散ネットワーク上で多種多様なデータが時々刻々と大量に追記型（Write Once）で生成される環境において、少なくとも１つ以上のクライアントからのクエリを実行しながらデータベースを停止することなく、データベースを分割あるいは複製し、クエリ実行の性能向上（スケールアウト）を実現することが可能なデータベーススケールアウト方法及び装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
図１は、本発明の原理を説明するための図である。
【０００９】
本発明（請求項１）は、少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベースを１つ以上の分割先に分割する際に、
データコピー手段は、
分割先のデータベースとなる少なくとも１つ以上のデータベースを作成し（ステップ１）、管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｂに変更させ（ステップ２）、
管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させ（ステップ３）、
全てのクエリ処理手段にデータベースの分割開始通知を送信し（ステップ４）、
全てのクエリ処理手段からデータベースの分割開始通知に対する受領確認を受け取った後で（ステップ５）、分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを振り分けルールｂに従って、分割先のデータベースのうちの条件を満たす一部のデータベースにコピーし（ステップ６）、
コピー完了後、管理情報蓄積手段に蓄積されている振り分けルールｂを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｃに変更させ（ステップ７）、
全てのクエリ処理手段に第１のデータベース分割終了通知を送信し（ステップ８）、
全てのクエリ処理手段から第１のデータベース分割終了通知に対する受領確認を受け取った後で（ステップ９）、管理情報蓄積手段に蓄積されている振り分けルールｃを「分割先データベースのみにクエリを振り分ける」振り分けルールｄに変更し（ステップ１０）、
全てのクエリ処理手段に第２のデータベース分割終了通知を送信し（ステップ１１）、
全てのクエリ処理手段から第２のデータベース分割終了通知に対する受領確認を受け取った後で（ステップ１２）、分割元のデータベースを切り離す（ステップ１３）。
【００１０】
本発明（請求項２）は、少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベースを１つ以上の分割先に分割する際に、
クエリ処理手段は、
起動時に管理情報蓄積手段からバージョン番号を取得して、第１の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第２の記憶手段に保持し、
少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリまたは、削除クエリのいずれであるかを解析し、第２の記憶手段に保持している振り分けルールに従って該クエリを振り分け、
振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、第１の記憶手段に保持しているバージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第２の記憶手段に保持している振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
以後、データコピー手段からデータベースの分割が終了した旨の第１のデータベース分割終了通知を受け取るまでの間は、第２の記憶手段に保持している振り分けルールに従って、
参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新または削除）された全てのデータを分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段から第１のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第２の記憶手段に保持している振り分けルールを更新し、
データコピー手段に第１のデータベース分割終了通知に対する受領確認を通知し、
データコピー手段から、当該データコピー手段が第１のデータベース分割終了通知を取得後に振り分けルールを変更した旨の第２のデータベース分割終了通知を受け取るまでの間、第２の記憶手段に保持している振り分けルールに従って、
参照クエリの場合は分割先のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新または削除）された全てのデータを分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段から第２のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第２の記憶手段に保持している振り分けルールを更新し、
データコピー手段に第２のデータベース分割終了通知に対する受領確認を通知し、
以後、第２の記憶手段に保持している振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、該クエリの実行結果をクライアントに返却する。
【００１１】
本発明（請求項３）は、少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベース中のコピー対象となるデータを１つ以上の分割先のデータベースにコピーする際に、
データコピー手段は、
分割先のデータベースとなる少なくとも１つ以上のデータベースを作成し、管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｂ'に変更させ、
管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させ、
全てのクエリ処理手段にデータベースの分割開始通知を送信し、
全てのクエリ処理手段からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベースにコピーし、
コピー完了後、管理情報蓄積手段の振り分けルールｂ'を「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか１つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｃ'に変更し、全てのクエリ処理手段に第１のデータベースの分割終了通知を送信し、
全てのクエリ処理手段から第１のデータベースの分割終了通知に対する受領確認を受け取る。
【００１２】
本発明（請求項４）は、少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベース中のコピー対象となるデータを１つ以上の分割先のデータベースにコピーする際に、
クエリ処理手段は、
起動時に管理情報蓄積手段からバージョン番号を取得して、第１の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第２の記憶手段に保持し、
少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析し、第２の記憶手段に保持している振り分けルールに従って該クエリを振り分け、
振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、第１の記憶手段に保持しているバージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第２の記憶手段に保持している振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
以後、データコピー手段からデータベースの分割が終了した旨の第１のデータベース分割終了通知を受け取るまでの間は、第２の記憶手段に保持している振り分けルールに従って、
参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び全ての分割先のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースにクエリを振り分けて実行し、
更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更（更新または削除）された全てのデータを全ての分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段から第１のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第２の記憶手段に保持している振り分けルールを更新し、
データコピー手段に第１のデータベース分割終了通知に対する受領確認を通知し、
以後、第２の記憶手段に保持している振り分けルールに従って、参照クエリは分割元のデータベースまたは分割先のデータベースのうちのいずれか１つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分けて実行し、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持するバージョン番号を付加し、削除クエリの場合は加えて削除フラグを該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却する。
【００１３】
図２は、本発明の原理構成図である。
【００１４】
本発明（請求項５）は、少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト装置であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも１つ以上のクエリ処理手段１００と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段２００と、分割元のデータベース４００中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベース５００ａ，５００ｂにコピーするデータコピー処理手段３００と、を有し、
管理情報蓄積手段２００は、
データベース中のデータの世代管理に使用するバージョン番号を蓄積するバージョン番号蓄積手段２１０と、
バージョン番号蓄積手段２１０に蓄積しているバージョン番号を返却するバージョン番号参照手段２２０と、
バージョン番号蓄積手段２１０に蓄積しているバージョン番号を更新する（増加）するバージョン番号更新（増加）手段２３０と、
データベース分割のための振り分けルールを蓄積する振り分けルール蓄積手段２４０と、
振り分けルール蓄積手段２５０に蓄積している前記振り分けルールを参照して要求元に返却する振り分けルール参照手段２５０と、
振り分けルール蓄積手段２４０に蓄積している振り分けルールを更新する振り分けルール変更手段２６０と、
を有し、
クエリ処理手段１００は、
クライアントから受け付けクエリを解析するクエリ解析手段１１０と、
振り分けルールに従ってクエリを振り分けるクエリ振り分け手段１２０と、
振り分けられたデータベース５００に対してクエリを実行する分割クエリ実行手段１３０と、
分割クエリ実行手段１３０により削除クエリが実行された場合に、データベース中の削除対象データを物理的に削除せずに削除フラグを設定する削除フラグ設定手段１４０と、
分割クエリ実行手段１３０により挿入または更新または削除されたデータベース中のデータにバージョン番号を付与するバージョン番号記録手段１５０と、
を有し、
データコピー処理手段３００は、
少なくとも１つ以上の分割先のデータベースを新たに作成するデータベース作成手段３１０と、
分散コンピューティング環境上に存在する全てのクエリ処理手段１００にデータベースの分割開始を通知する分割開始通知手段３２０と、
分割元のデータベース４００のデータを分割先のデータベース５００へコピーするデータコピー手段３３０と、
クエリ処理手段１００にデータベースの分割終了を通知する分割終了通知手段３４０と、
を有する。
【００１５】
本発明（請求項６）は、請求項５のデータコピー処理手段３００のデータコピー手段３３０は、
管理情報蓄積手段２００の振り分けルール蓄積手段２４０に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｂに変更させる手段と、
管理情報蓄積手段２００のバージョン番号蓄積手段２１０に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させ、分割開始通知手段３２０に、全てのクエリ処理手段１００に対し、データベースの分割開始通知の送信を指示する手段と、
全てのクエリ処理手段１００からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを振り分けルールｂに従って、分割先のデータベースのうちの条件を満たす一部のデータベースにコピーする手段と、
コピー完了後、管理情報蓄積手段２００の振り分けルール蓄積手段２４０に蓄積されている振り分けルールｂを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールｃに変更させ、分割終了通知手段３４０に、全てのクエリ処理手段に第１のデータベース分割終了通知を送信させる手段と、
全てのクエリ処理手段１００から第１のデータベース分割終了通知に対する受領確認を受け取った後で、管理情報蓄積手段２００の振り分けルール蓄積手段２４０に蓄積されている振り分けルールｃを「分割先データベースのみにクエリを振り分ける」振り分けルールｄに変更させ、分割終了通知手段に全てのクエリ処理手段に対して第２のデータベース分割終了通知を送信させる手段と、
全てのクエリ処理手段１００から第２のデータベース分割終了通知に対する受領確認を受け取った後で、分割元のデータベースを切り離す手段と、を含む。
【００１６】
また、本発明（請求項７）は、請求項５におけるクエリ処理手段１００に、
起動時に管理情報蓄積手段２００からバージョン番号を取得して、第１の記憶手段に保持する、または、データコピー処理手段３００からデータベース分割開始通知を受け取ると、分割クエリ実行手段１３０による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段２００に蓄積されている最新のバージョン番号を取得して、該第１の記憶手段に保持しているバージョン番号を更新するバージョン番号更新手段と、
起動時に管理情報蓄積手段２００から振り分けルールを取得して、第２の記憶手段に保持する、または、データコピー処理手段３００からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に管理情報蓄積手段２００から振り分けルールを取得して、該第２の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
データコピー処理手段３００からデータベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段３００に送信する送受信手段と、
を更に有し、
クエリ解析手段１１０は、少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する手段を有し、
クエリ振り分け手段１２０は、第２の記憶手段に保持している振り分けルールに従って該クエリを振り分ける手段を有し、
分割クエリ実行手段１３０は、
クエリ振り分け手段１２０により振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリの実行結果をクライアントに返却する手段と、
データコピー処理手段３００から送受信手段を介して第１のデータベース分割終了通知を受け取るまでの間は、第２の記憶手段に保持している振り分けルールに従って、参照クエリ実行の場合は分割元のデータベース４００のみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース４００及び分割先のデータベース５００のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース５００中に存在すれば、分割元のデータベース４００及び分割先のデータベース５００のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベース４００だけにクエリを振り分けて実行し、該分割元のデータベース４００に対するクエリ実行の結果、変更（更新または削除）された全てのデータを分割先のデータベース５００にコピーする手段と、
データコピー処理手段３００から送受信手段を介して第１のデータベース分割終了通知を取得後に、該データコピー処理手段３００から振り分けルールを変更した旨の第２のデータベース分割終了通知を受け取るまでの間、第２の記憶手段に保持している振り分けルールに従って、参照クエリ実行の場合は分割先のデータベース５００のみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース４００及び分割先のデータベース５００のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース５００中に存在すれば、分割元のデータベース４００及び分割先のデータベース５００のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが分割先のデータベース５００中に存在しなければ、分割元のデータベー４００スだけにクエリを振り分けて実行し、該分割元のデータベース４００に対するクエリ実行の結果、変更（更新または削除）された全てのデータを分割先のデータベース５００にコピーする手段と、
送受信手段を介して、データコピー処理手段３００に第２のデータベース分割終了通知に対する受領確認を通知した後、第２の記憶手段に保持している振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行する手段と、を有する。
【００１７】
また、本発明（請求項８）は、請求項７の分割クエリ実行手段１３０に、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに、バージョン番号記録手段１５０により、第１の記憶手段に保持しているバージョン番号が付加されたデータをクエリの実行結果としてクライアントに返却し、削除クエリの場合は加えて削除フラグ設定手段１４０により該データベース中の削除対象データに削除フラグが設定されたデータをクエリの実行結果から除外してクライアントに返却する手段を含む。
【００１８】
また、本発明（請求項９）は、請求項５のデータコピー処理手段３００のデータコピー手段３３０に、
管理情報蓄積手段２００の振り分けルール蓄積手段２４０に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールａから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｂ'に変更させる手段と、
管理情報蓄積手段２００のバージョン番号蓄積手段２１０に蓄積されているバージョン番号をインクリメンタルな値に更新（増加）させる手段と、
分割通知開始手段３２０を介して、全てのクエリ処理手段１００にデータベースの分割開始通知を送信し、該全てのクエリ処理手段１００からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース４００中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベース５００にコピーする手段と、
コピー完了後、管理情報蓄積手段２００の振り分けルールｂ'を「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか１つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールｃ'に変更し、分割終了通知手段３４０を介して、全てのクエリ処理手段１００に第１のデータベースの分割終了通知を送信し、該全てのクエリ処理手段から第１のデータベースの分割終了通知に対する受領確認を受け取る手段と、を含む。
【００１９】
また、本発明（請求項１０）は、請求項５のクエリ処理手段１００が、
起動時に管理情報蓄積手段２００からバージョン番号を取得して、第１の記憶手段に保持する、または、データコピー処理手段３００からデータベース分割開始通知を受け取ると、分割クエリ実行手段１３０による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段２００に蓄積されている最新のバージョン番号を取得して、該第１の記憶手段に保持しているバージョン番号を更新するバージョン番号更新手段と、
起動時に管理情報蓄積手段２００から振り分けルールを取得して、第２の記憶手段に保持する、または、データコピー処理手段３００からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に管理情報蓄積手段２００から振り分けルールを取得して、該第２の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
データコピー処理手段３００からデータベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段３００に送信する送受信手段と、
を更に有し、
クエリ解析手段１１０は、少なくとも１つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する手段を有し、
クエリ振り分け手段は１２０、第２の記憶手段に保持している振り分けルールに従って該クエリを振り分ける手段を有し、
分割クエリ実行手段１３０は、
振り分けられたクエリを振り分け先のデータベース５００に対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに第１の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却する手段と、
送受信手段を介して、データコピー処理手段３００からデータベース分割開始通知を受け取り、振り分けルール更新手段による振り分けルールの更新が行われ、該データコピー処理手段３００に該送受信手段を介して該データベース分割開始通知に対する受領確認を通知した後に、データコピー処理手段３００から第１のデータベース分割終了通知を受け取るまでの間は、第２の記憶手段に保持されている振り分けルールに従って、参照クエリ実行の場合は分割元のデータベース４００のみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース４００及び全ての分割先のデータベース５００にクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース５００中に存在すれば、分割元のデータベース４００及び分割先のデータベース５００にクエリを振り分けて実行する手段と、
更新または削除対象のデータが分割先のデータベース５００中に存在しなければ、分割元のデータベース４００だけにクエリを振り分けて実行し、該分割元のデータベース４００に対するクエリ実行の結果、変更（更新または削除）された全てのデータを全ての分割先のデータベース５００にコピーする手段と、
データコピー処理手段３００に該データコピー処理手段３００から取得した第１のデータベース分割終了通知に対する受領確認を通知した後に、第２の記憶手段に保持している振り分けルールに従って、参照クエリ実行の場合は分割元のデータベース４００または分割先のデータベース５００のうちのいずれか１つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリ実行の場合は分割元のデータベース４００及び全ての分割先のデータベース５００にクエリを振り分けて実行する手段と、を有する。
【００２０】
また、本発明（請求項１１）は、請求項１０の分割クエリ実行手段１３０に、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに、バージョン番号記録手段１５０によりバージョン番号を付与し、削除クエリの場合は削除フラグ設定手段１４０により削除フラグが設定されたデータをクエリの実行結果から除外してクライアントに返却する手段を含む。
【００２１】
本発明（請求項１２）は、請求項５乃至１１の何れか１項記載のデータベーススケールアウト装置を構成する各手段としてコンピュータを機能させるためのデータベーススケールアウトプログラムである。
【発明の効果】
【００２２】
上述のように、本発明によれば、少なくとも１つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上に、クライアントからのクエリを受け付けてデータベースにおけるクエリ実行結果を当該クライアントに返却する少なくとも１つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベースへコピーするデータコピー処理手段とを配置し、管理情報蓄積手段がデータベース中のデータの世代管理に使用するバージョン番号とデータベース分割のための振り分けルールを蓄積し、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールａに従って分割元のデータベースにクエリを振り分け、クエリの種類が挿入クエリ、更新クエリ、または、削除クエリの場合にクエリ処理手段が管理情報蓄積手段から取得したバージョン番号「１」をクエリ実行によって挿入、更新、または、削除されたデータベース中のデータに付与しておき、分割元のデータベース中のデータに付加されているバージョン番号がデータコピー処理手段によるデータコピー開始時の最新のバージョン番号である「２」よりも小さいデータを振り分けルールｂに従って分割先のデータベースのうち条件を満たす一部のデータベースにコピーし、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールｂに従って分割元のデータベースと分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分け、データコピー処理手段がデータのコピー完了後、管理情報蓄積手段の振り分けルールを変更して全てのクエリ処理手段に分割終了を通知するステップを２回に分けて実行することで、挿入クエリ、更新クエリ、または、削除クエリのデータベースへの適用漏れによる異なるクライアントからのクエリ実行結果に差異が生じることを防ぎ（データベースの整合性を損なうことなく）、また、複数のクエリ処理手段が独立並行（自律的）に動作して、各クエリ処理手段がクエリを実行するのと並行してデータコピー処理手段が分割元のデータベースから分割先のデータベースへデータをコピーできるようになり、少なくとも１つ以上のクライアントから受け付けたクエリを実行しながらデータベースを停止することなくデータベースを分割し、クエリ実行の性能向上を実現することができる。
【００２３】
同様に、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールａに従って分割元のデータベースにクエリを振り分け、クエリの種類が挿入クエリ、更新クエリ、または、削除クエリの場合に、クエリ処理手段が管理情報蓄積手段から取得したバージョン番号「１」をクエリ実行によって挿入、更新、または、削除されたデータベース中のデータに付加しておき、分割元のデータベース中のデータに付加されているバージョン番号がデータコピー処理手段によるデータコピー開始時の最新のバージョン番号である「２」よりも小さいデータを振り分けルールｂ'に従って全ての分割先のデータベースにコピーし、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールｂ'に従って分割元のデータベースと全ての分割先のデータベースにクエリを振り分け、データコピー処理手段がデータのコピー完了後、管理情報蓄積手段の振り分けルールを変更して全てのクエリ処理手段に分割終了を通知することで、挿入クエリ、更新クエリ、または、削除クエリのデータベースへの適用漏れにより異なるクライアントからのクエリ実行結果に差異が生じることを防ぎ（データベースの整合性を損なうことなく）、また、複数のクエリ処理手段が独立並行（自律的）に動作して、各クエリ処理手段がクエリを実行するのと並行してデータコピー処理手段が分割元のデータベースから分割先のデータベースへデータをコピーできるようになり、少なくとも１つ以上のクライアントから受け付けたクエリを実行しながらデータベースを停止することなくデータベースを複製し、クエリ実行の性能向上を実現することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の原理を説明するための図である。
【図２】本発明の原理構成図である。
【図３】本発明の一実施の形態におけるデータベーススケールアウトシステムの構成図である。
【図４】本発明の一実施の形態におけるデータコピー処理部のフローチャートである。
【図５】本発明の一実施の形態におけるクエリ処理部のフローチャートである。
【図６】本発明の一実施の形態におけるデータベース分割時のシーケンスチャートである。
【図７】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０１（１））である。
【図８】本発明の一実施の形態におけるステップ３０１（１）の具体例である。
【図９】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０１（２））である。
【図１０】本発明の一実施の形態におけるステップ３０１（２）の具体例である。
【図１１】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０１（３））である。
【図１２】本発明の一実施の形態におけるステップ３０１（３）の具体例である。
【図１３】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０２，３０３）である。
【図１４】本発明の一実施の形態におけるステップ３０２，３０３の具体例である。
【図１５】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０４）である。
【図１６】本発明の一実施の形態におけるステップ３０４の具体例である。
【図１７】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０６）である。
【図１８】本発明の一実施の形態におけるステップ３０６の具体例である。
【図１９】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０７）である。
【図２０】本発明の一実施の形態におけるステップ３０７の具体例である。
【図２１】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０８）である。
【図２２】本発明の一実施の形態におけるステップ３０８の具体例である。
【図２３】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３０９）である。
【図２４】本発明の一実施の形態におけるステップ３０９の具体例である。
【図２５】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３１０）である。
【図２６】本発明の一実施の形態におけるステップ３１０の具体例である。
【図２７】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３１１）である。
【図２８】本発明の一実施の形態におけるステップ３１１の具体例である。
【図２９】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３１２）である。
【図３０】本発明の一実施の形態におけるステップ３１２の具体例である。
【図３１】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３１３）である。
【図３２】本発明の一実施の形態におけるステップ３１３の具体例である。
【図３３】本発明の一実施の形態におけるデータベース分割時の動作を示す図（ステップ３１４）である。
【図３４】本発明の一実施の形態におけるステップ３１４の具体例である。
【図３５】本発明の一実施の形態におけるデータベース複製時のシーケンスチャートである。
【図３６】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０１（１））である。
【図３７】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０１（３））である。
【図３８】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０１（４））である。
【図３９】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０３）である。
【図４０】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０４）である。
【図４１】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０６）である。
【図４２】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０７）である。
【図４３】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０８）である。
【図４４】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４０９）である。
【図４５】本発明の一実施の形態におけるデータベース複製時の動作を示す図（ステップ４１０）である。
【図４６】本発明の一実施の形態における分割の多段化とＮ分割の例である。
【図４７】本発明の一実施の形態における分割中に発生した障害の切り戻しの例である。
【図４８】本発明の一実施の形態におけるクエリ処理部のローカルなキャッシュを説明するための図である。
【発明を実施するための形態】
【００２５】
以下、図面と共に本発明の実施の形態を説明する。
【００２６】
図３は、本発明の一実施の形態におけるデータベーススケールアウトシステムの構成を示す。同図に示すデータベーススケールアウトシステムは、少なくとも１つ以上のクエリ処理部１００、管理情報蓄積部２００、データコピー処理部３００、分割元データベース４００、分割先データベース５００から構成される。
【００２７】
データベーススケールアウトシステムは、少なくとも１つ以上のクエリ処理部１００が独立並行に動作し、各クエリ処理部１００がクライアントからのクエリを受け付け、管理情報蓄積部２００の振り分けルールに従ってクエリを振り分け、振り分けられたデータベースでクエリを実行し、クエリ実行結果をクライアントに返却する。
【００２８】
本実施の形態では、クエリ処理部１００が３個の構成を示しているが、１個以上の任意の個数を配置することが可能である。また、１個の分割元データベース４００に対して、分割先データベース５００が２個の構成例を示しているが、１個の分割元データベース４００に対して、１個以上の任意個の分割先データベースを配置することが可能である。
【００２９】
＜クエリ処理部＞
クエリ処理部１００は、クエリ解析部１１０、クエリ振り分け部１２０、分割クエリ実行部１３０、削除フラグ設定部１４０、バージョン番号記録部１５０、バージョン番号、振り分けルールを格納するためのメモリ（図示せず）を有し、クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を当該クライアントに返却する。
【００３０】
クエリ解析部１１０は、クライアントから受け付けたクエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する。
【００３１】
クエリ振り分け部１２０は、管理情報蓄積部２００から取得した振り分けルールに基づいて、クエリを振り分ける。
【００３２】
分割クエリ実行部１３０は、振り分けられたデータベースに対してクエリを実行し、実行結果をクライアントに返却する。
【００３３】
削除フラグ設定部１４０は、クエリ実行によるデータ削除時（削除クエリの場合）にデータベース中の削除対象データを物理的に削除せずに、削除フラグを設定するのみとし、分割クエリ実行部１３０による参照クエリ及び更新クエリ実行時に削除フラグが設定されたデータをクエリ実行結果から除外させる。
【００３４】
バージョン番号記録部１５０は、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータにバージョン番号を付加する。
【００３５】
＜管理情報蓄積部＞
管理情報蓄積部２００は、バージョン番号蓄積部２１０、バージョン番号参照部２２０、バージョン番号更新（増加）部２３０、振り分けルール蓄積部２４０、振り分けルール参照部２５０、振り分けルール変更部２６０を有し、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する。
【００３６】
バージョン番号蓄積部２１０は、データベース中のデータの世代管理に使用するバージョン番号を蓄積する記録媒体である。
【００３７】
バージョン番号参照部２２０は、データコピー処理部３００からの問い合わせに対して、バージョン番号蓄積部２１０に蓄積しているバージョン番号を参照して返却する。
【００３８】
バージョン番号更新（増加）部２３０は、バージョン番号蓄積部２１０に蓄積しているバージョン番号を更新（増加）させる。
【００３９】
振り分けルール蓄積部２４０は、データベース分割のための振り分けルールを蓄積する記録媒体である。
【００４０】
振り分けルール参照部２５０は、データコピー処理部３００からの問い合わせに対して、振り分けルール蓄積部２４０に蓄積されている振り分けルールを参照して返却する。
【００４１】
振り分けルール変更部２５０は、振り分けルール蓄積部２４０に蓄積されている振り分けルールをデータコピー処理部３００からの要求に基づいて変更する。
【００４２】
＜データコピー処理部＞
データコピー処理部３００は、データベース作成部３１０、分割開始通知部３２０、データコピー部３３０、分割終了通知部３４０を有し、データベースの分割あるいは複製の時のみ動作する。データコピー処理部３００は、分割元のデータベース４００中のコピー対象となるデータを少なくとも１つ以上の分割先のデータベース５００へコピーする。
【００４３】
データベース作成部３１０は、分割先のデータベース５００を新たに作成する。
【００４４】
分割開始通知部３２０は、分散コンピューティング環境上に存在する全てのクエリ処理部１００にデータベースの分割開始を通知する。
【００４５】
データコピー部３３０は、分割元のデータベース４００のデータを分割先のデータベース５００にコピーする。
【００４６】
分割終了通知部３４０は、クエリ処理手段１００に対してデータベースの分割終了を通知する。
【００４７】
以下に上記の構成の動作を説明する。
【００４８】
最初に、データコピー処理部３００を動作手段として、分割元データベース４００中のデータを分割先データベース５００ａ，５００ｂに分割・複製する際の動作を説明する。
【００４９】
図４は、本発明の一実施の形態におけるデータコピー処理部のフローチャートであり、分割元のデータベース中のコピー対象となるデータを分割先のデータベースにコピーする動作を示している。
【００５０】
ステップ１０１）  データコピー処理部３００のデータベース作成部３１０は、分割先のデータベースとなる少なくとも１つ以上のデータベースを作成する。作成するデータベースの数はデータベーススケールアウトのために分割あるいは複製するデータベースの数に応じて作成する。
【００５１】
ステップ１０２）  データコピー部３３０は、管理情報蓄積部２００の振り分けルール変更部２６０に対して振り分けルール蓄積部２４０の振り分けルールをａからｂへの変更を要求する。これにより、振り分けルール変更部２６０は、当該ルールを変更する。
【００５２】
ステップ１０３）  データコピー部３３０は、管理情報蓄積部２００のバージョン番号更新（増加）部２３０に対してバージョン番号蓄積部２１０のバージョン番号を「１」から「２」への更新（増加）を要求する。これにより、バージョン番号更新（増加）部２３０は当該バージョン番号を変更する。
【００５３】
ステップ１０４）  分割開始通知部３２０は、全てのクエリ処理部１００にデータベースの分割開始を通知する。
【００５４】
ステップ１０５）  予め設定した制限時間内に全てのクエリ処理部１００からデータベースの分割開始通知に対する受領確認を受け取ったら、ステップ１０６に移行し、制限時間内に全てのクエリ処理部１００からデータベースの分割開始通知に対する受領確認を受け取れなかった場合はステップ１０４に戻る。
【００５５】
ステップ１０６）  データコピー部３３０は、分割元のデータベース４００のうち、データに付加されたバージョン番号が管理情報蓄積部２００のバージョン番号より小さいデータを分割先のデータベース５００ａまたは５００ｂにコピーする。
【００５６】
ステップ１０７）  データコピー部３３０は、管理情報蓄積部２００の振り分けルール変更部２６０に対して管理情報蓄積部２００に格納されている振り分けルールｂからｃへの変更を要求する。これにより、振り分けルール変更部２６０は当該振り分けルールの更新を行う。
【００５７】
ステップ１０８）  分割終了通知部３４０は、全てのクエリ処理部１００に第１の（１回目の）データベースの分割開始を通知する。
【００５８】
ステップ１０９）  分割終了通知部３４０は、予め設定した制限時間内に全てのクエリ処理部１００から第１のデータベースの分割終了通知に対する受領確認を受け取ったら、次のステップに進み、制限時間内に全てのクエリ処理部１００から第１のデータベースの分割終了通知に対する受領確認を受け取れなかった場合はステップ１０８に戻る。
【００５９】
ステップ１１０）  データベースの複製であれば処理を終了し、データベースの分割であれば、次のステップに移行する。
【００６０】
ステップ１１１）  データコピー部３３０は、管理情報蓄積部２００の振り分けルール変更部２６０に対して、管理情報蓄積部２００に格納されている振り分けルールｃからｄへの変更を要求する。これにより、振り分けルール変更部２６０は当該振り分けルールの更新を行う。
【００６１】
ステップ１１２）  分割終了通知部３４０は、全てのクエリ処理部１００に第２の（２回目の）データベースの分割開始を通知する。
【００６２】
ステップ１１３）  分割終了通知部３４０は、予め設定した制限時間内に全てのクエリ処理部１００から第２のデータベースの分割終了通知に対する受領確認を受け取ったら次のステップに移行し、制限時間内に全てのクエリ処理部１００から第２のデータベースの分割終了通知に対する受領確認を受け取れなかった場合はステップ１１２に戻る。
【００６３】
ステップ１１４）  分割元のデータベース４００を切り離して処理を終了する。
【００６４】
次に、クエリ処理部１００がクライアントからクエリを受け取り、クエリを実行して結果を返却する動作を説明する。
【００６５】
図５は、本発明の一実施の形態におけるクエリ処理部のフローチャートであり、クエリ処理部１００がクライアントからクエリを受け取り、クエリの種類を解析し、管理情報蓄積部２００から取得した振り分けルールに従ってクエリを振り分け、振り分けられたクエリを振り分け先のデータベースに対して実行し、クライアントにクエリの実行結果を返却する動作を示す。
【００６６】
ステップ２０１）  クエリ処理部１００は、管理情報蓄積部２００のバージョン番号参照部２２０により管理情報蓄積部２００からバージョン番号を取得し、ローカルなキャッシュとしてメモリ（図示せず）に自身がバージョン番号を保持する。
【００６７】
ステップ２０２）  クエリ処理部１００は、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得し、ローカルなキャッシュとしてメモリ（図示せず）に自身が振り分けルールを保持する。
【００６８】
ステップ２０３）  クエリ処理部１００は、クアイアントからクエリを受け付けていたらステップ２０４に移行し、受け付けていなかった場合は当該ステップを繰り返す。
【００６９】
ステップ２０４）  クエリ解析部１１０は、クライアントから受け付けたクエリの種類を解析する。
【００７０】
ステップ２０５）  クエリ振り分け部１２０は、メモリ（図示せず）に保持されている振り分けルールに従ってデータベースにクエリを振り分ける。
【００７１】
ステップ２０６）  分割クエリ実行部１３０は、振り分けられたクエリを振り分け先のデータベースに対して実行する。
【００７２】
ステップ２０７）  分割クエリ実行部１３０は、実行するクエリの種類が挿入クエリ、更新クエリ、または、削除クエリの何れかである場合はステップ２０８に移行し、クエリの種類が上記のいずれにも該当しない場合はステップ２１１に移行する。
【００７３】
ステップ２０８）  バージョン番号記録部１５０は、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに自身が保持するバージョン番号を付加する。
【００７４】
ステップ２０９）  さらに、クエリの種類が削除クエリの場合はステップ２１０に移行し、それ以外の場合はステップ２１１に移行する。
【００７５】
ステップ２１０）  削除フラグ設定部１４０は、データベース中の削除対象のデータに削除フラグを設定し、ステップ２１１に移行する。
【００７６】
ステップ２１１）  分割クエリ実行部１３０は、クライアントに実行結果を返却する。このとき、削除フラグが実行結果に付与されている場合には、当該実行結果から除外する。
【００７７】
ステップ２１２）  データコピー処理部３００からデータベースの分割開始通知を受け取った場合は、ステップ２１３に移行し、データベースの分割開始通知を受け取っていない場合はステップ２１６に移行する。
【００７８】
ステップ２１３）  管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得し、メモリ（図示せず）に格納されている振り分けルールを更新する。
【００７９】
ステップ２１４）  管理情報蓄積部２００のバージョン番号参照部２２０からバージョン番号を取得し、メモリ（図示せず）に格納されているバージョン番号を更新する。
【００８０】
ステップ２１５）  データコピー処理部３００にデータベースの分割開始通知に対する受領確認を通知し、ステップ２０３に戻る。
【００８１】
ステップ２１６）  データコピー処理部３００からデータベースの分割終了通知（第１のデータベースの分割終了通知または第２のデータベースの分割終了通知）を受け取った場合はステップ２１７に移行し、データベースの分割終了通知を受け取っていない場合はステップ２０３に戻る。
【００８２】
ステップ２１７）  管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得し、メモリ（図示せず）に格納されている振り分けルールを更新する。
【００８３】
ステップ２１８）  データコピー処理部３００にデータベースの分割終了通知に対する受領確認を通知し、ステップ２０３に戻る。
【００８４】
≪データベースの分割≫
次に、データベースを分割する際のクエリ処理部１００及び管理情報蓄積部２００及びデータコピー処理部３００の動作を説明する。以下の動作は、請求項１，２，６，７に対応する。
【００８５】
図６は、本発明の一実施の形態におけるデータベース分割時のシーケンスチャートである。なお、以下では、説明の簡単化のためにクエリ処理部１００を１つしか記載していないが、複数のクエリ処理部を配置する構成も可能である。また、以下では、データベースを２つに分割する例を示しているが、３つ以上に分割することも可能である。
【００８６】
ステップ３０１）
（１）  管理情報蓄積部２００のバージョン番号蓄積部２１０がバージョン番号（バージョン番号：１）を、振り分けルール蓄積部２４０が「参照クエリの場合はデータベース４００へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合もデータベース４００へクエリを振り分ける」振り分けルール（振り分けルールａ）を蓄積しており、分割元のデータベース４００のみが存在している。この例を図７に示す。同図は、データベース分割時の初期状態を示したものである。バージョン番号蓄積部２１０はバージョン番号＝１を、振り分けルール蓄積部２４０は振り分けルール（＝ａ）を蓄積している。より具体的な例を図８に示す。
【００８７】
（２）  クエリ処理部１００は、起動後に管理情報蓄積部２００のバージョン番号参照部２２０からバージョン番号を取得してローカルなキャッシュとしてメモリ（図示せず）に保持すると共に、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得して、ローカルなキャッシュとしてメモリ（図示せず）に保持する。クライアントからクエリを受け付けると、メモリ（図示せず）に格納されている振り分けルールに従って振り分け先のデータベース４００に対してクエリを実行し、バージョン番号記録部１５０がクエリ実行によって挿入、更新、または、削除されたデータベース４００中のデータにメモリ（図示せず）に格納されているバージョン番号（バージョン番号：１）を付加する。この例を図９に示す。同図は、クエリ処理部１００が起動し、管理情報蓄積部２００からバージョン番号（＝ａ）と振り分けルール（＝ａ）を取得し、データベース４００に対してクエリを実行している様子を示したものである。より具体的な例を図１０に示す。
【００８８】
（３）  データコピー処理部３００のデータベース作成部３１０は、分割先のデータベースとなるデータベース５００ａ，５００ｂを新規に作成する。この例を図１１に示す。同図は、データコピー処理部３００が起動し、分割先のデータベースとなるデータベース５００ａと５００ｂを新規に作成する様子を示したものである。より具体的な例を図１２に示す。
【００８９】
ステップ３０２）  管理情報蓄積部２００の振り分けルール変更部２６０が、振り分けルールを「参照クエリの場合はデータベース４００へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は条件Ａを満たせばデータベース４００、データベース５００ａへクエリを振り分け、条件Ｂを満たせばデータベース４００、データベース５００ｂへクエリを振り分ける」に変更（振り分けルール：ａ⇒ｂ）する。この例を図１３に示す。
【００９０】
ステップ３０３）  更に管理情報蓄積部２００のバージョン番号更新（増加）部２３０が、管理情報蓄積部２００のバージョン番号蓄積部２１０のバージョン番号を更新（バージョン番号：１⇒２）する。この例を図１３に示す。同図は、データコピー処理部３００が管理情報蓄積部２００に蓄積されたバージョン番号を１から２へ更新し、管理情報蓄積部２００に蓄積された振り分けルールをａからｂへ変更する様子を示したものである。この具体例を図１４に示す。
【００９１】
ステップ３０４）  データコピー処理部３００の分割開始通知部３２０は、全てのクエリ処理部１００にデータベースの分割開始を通知する。この例を図１５に示す。同図は、データコピー処理部３００が全てのクエリ処理部１００に分割開始を通知する様子を示したものである。また、具体的な例を図１６に示す。
【００９２】
ステップ３０５）  データコピー処理部３００が、全てのクエリ処理部１００から制限時間内に分割開始通知に対する受領確認を受け取った場合は、ステップ１０６に移行する。
【００９３】
ステップ３０６）  データコピー処理部３００から分割開始通知を受け取ったクエリ処理部１００は、管理情報蓄積部２００のバージョン番号参照部２２０からバージョン番号を取得して、メモリ（図示せず）に保持されているバージョン番号を更新（バージョン番号：１⇒２）すると共に、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得して、メモリ（図示せず）の振り分けルールを更新（振り分けルール：ａ⇒ｂ）し、データコピー処理部３００にデータベースの分割開始通知に対する受領確認を通知すると共に、更新後のバージョン番号（バージョン番号：２）及び更新後の振り分けルール（振り分けルール：ｂ）に従ってクエリを実行する。クエリの種類が更新または、削除の場合、更新または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベースと分割先のデータベースのうちの条件を満たす一部のデータベースで当該クエリをそれぞれ実行する。一方、更新または、削除対象のデータが分割先のデータベース中に存在しなければ、当該クエリを分割元データベース４００で実行してクエリ実行の結果、更新または、削除されたデータを分割先のデータベース５００のうちの条件を満たす一部のデータベース（データベース５００ａまたは５００ｂ）にコピーする。ここで「条件」とは、データベースに格納するデータの値（例えば、ユーザＩＤ）が整数値だとして、末尾が奇数か偶数かで振り分けたり、データの値が住所の場合、「東日本」か「西日本」か、により振り分けたり、その後、更に「東日本」の中の「北海道」か「東北」か「関東」か「甲信越」で振り分けることを指す。また、データの値を元に何らかのハッシュ関数を適用した結果に基づいてデータを振り分けることなども考えられる。
【００９４】
ステップ３０７の例を図１２に示す。同図は、分割開始の通知を受けたクエリ処理部１００が管理情報蓄積部２００からバージョン番号（＝２）と振り分けルール（＝ｂ）を取得し、データベース４００、データベース５００ａ，５００ｂに対してクエリを実行し、データコピー処理部３００に分割開始受領確認を通知する様子を示したものである。また、具体的な例を図１８に示す。
【００９５】
ステップ３０７）  データコピー処理部３００は、全てのクエリ処理部１００からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース４００中のデータのうち、データに付加されているバージョン番号が自身のメモリ（図示せず）に保持するバージョン番号（バージョン番号：２）よりも小さいデータを自身のメモリ（図示せず）に保持されている振り分けルール（振り分けルール：ｂ）に従って分割先のデータベースのうち条件を満たす一部のデータベースにコピー（条件Ａに適合したデータはデータベース５００ａ）にコピーし、条件Ｂに適合したデータはデータベース５００ｂにコピーする。この例を図１９に示す。同図は、クエリ処理部１００がデータベース４００、データベース５００ａ，５００ｂに対してクエリを実行するのと並行して、データコピー処理部３００が分割元のデータベース４００から分割先のデータベース５００ａ，５００ｂへデータをコピーする様子を示したものである。また、具体的な例を図２０に示す。
【００９６】
ステップ３０８）  データコピー処理部３００は、データのコピー完了後に管理情報蓄積部２００の振り分けルール変更部２６０から振り分けルール「参照クエリの場合は条件Ａを満たせばデータベース５００ａへクエリを振り分け、条件Ｂを満たせばデータベース５００ｂへクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は、条件Ａを満たせばデータベース４００とデータベース５００ａへクエリを振り分け、条件Ｂを満たせばデータベース４００とデータベース５００ｂへクエリを振り分ける」を取得し、メモリ（図示せず）内の振り分けルールを当該取得した振り分けルールに変更（振り分けルール：ｂ⇒ｃ）する。この例を図２１に示す。同図は、データのコピーが終了したデータコピー手段が管理情報蓄積部２００に蓄積された振り分けルールをｂからｃへ更新する様子を示したものである。また、図２２に具体例を示す。
【００９７】
ステップ３０９）  データコピー処理部３００は、第１の分割終了通知部３４０により全てのクエリ処理部１００に第１のデータベースの分割終了を通知する。この例を図２３に示す。同図は、データコピー処理部３００が全てのクエリ処理部１００に第１の分割終了を通知する様子を示したものである。また、その具体例を図２４に示す。
【００９８】
ステップ３１０）  データコピー処理部３００から第１のデータベースの分割終了通知を受け取ったクエリ処理部１００は、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得して、自身のメモリ（図示せず）に格納されている振り分けルールを更新（振り分けルール：ｂ⇒ｃ）し、データコピー処理部３００に第１の（１回目の）データベースの分割終了通知に対する受領確認を通知すると共に、自身のメモリ（図示せず）に保持するバージョン番号（バージョン番号：２）及び更新後の振り分けルール（振り分けルール：ｃ）に従ってクエリを実行する。この例を図２５に示す。同図は、第１の分割終了の通知を受けたクエリ処理部１００が管理情報蓄積部２００から振り分けルール（＝ｃ）を取得し、データベース４００、データベース５００ａ，５００ｂに対してクエリを実行し、データコピー処理部３００に第１の分割終了受領確認を通知する様子を示したものでる。また、その具体例を図２６に示す。
【００９９】
ステップ３１１）  データコピー処理部３００は、すべてのクエリ処理部１００から第１のデータベースの分割終了通知に対する受領確認を受け取った後で、管理情報蓄積部２００の振り分けルール変更部２６０の振り分けルールを「参照クエリの場合は条件Ａを満たせばデータベース５００ａへクエリを振り分け、条件Ｂを満たせばデータベース５００ｂへクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合も条件Ａを満たせばデータベース５００ａへクエリを振り分け、条件Ｂを満たせばデータベース５００ｂへクエリを振り分ける」に変更（振り分けルール：ｃ⇒ｄ）する。この例を図２７に示す。同図は、データコピー処理部３００が管理情報蓄積部２００に蓄積された振り分けルールをｃからｄへ更新する様子を示したものである。また、この具体例を図２８に示す。
【０１００】
ステップ３１２）  データコピー処理部３００が分割終了通知部３４０より全てのクエリ処理部１００に第２の（２回目の）データベースの分割終了を通知する。この例を図２９に示す。同図は、データコピー処理部３００が全てのクエリ処理部１００に第２のデーベースの分割終了を通知する様子を示したものである。また、疎の具体例を図３０に示す。
【０１０１】
ステップ３１３）  データコピー処理部３００から第２のデータベースの分割終了通知を受け取ったクエリ処理部１００は、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得して、自身のメモリ（図示せず）に保持されている振り分けルールを更新（振り分けルール：ｃ⇒ｄ）し、データコピー処理部３００に第２のデータベースの分割終了通知に対する受領確認を通知すると共に、自身のメモリ（図示せず）に保持されているバージョン番号（バージョン番号：２）及び更新後の振り分けルール（振り分けルール：ｄ）に従ってクエリを実行する。この例を図３１に示す。同図は、第２の分割終了の通知を受けたクエリ処理部１００が管理情報蓄積部２００から振り分けルール（＝ｄ）を取得し、データベース５００ａ，５００ｂに対してクエリを実行し、データコピー処理部３００に第２の分割終了受領確認を通知する様子を示したものである。また、その具体例を図３２に示す。
【０１０２】
ステップ３１４）  データコピー処理部３００は、全てのクエリ処理部１００から第２のデータベースの分割終了通知に対する受領確認を受け取った後で、分割元のデータベース４００を切り離し、処理を終了する。この例を図３３に示し、また、その具体例を図３４に示す。
【０１０３】
≪データベースの複製≫
次に、データベースを複製する際のデータコピー処理部３００及びクエリ処理部１００及び管理情報蓄積部２００の処理について説明する。
【０１０４】
以下の処理は請求項３，４，９，１０に対応する。
【０１０５】
図３５は、本発明の一実施の形態におけるデータベース複製時のシーケンスチャートである。図３６〜図４５は、データコピー処理部３００及びクエリ処理部１００及び管理情報蓄積部２００がデータベースを複製する際の動作の例を示す。
【０１０６】
以下の処理は、請求項１，４，５に対応する。
【０１０７】
なお、図３５では、説明の簡単化のためにクエリ処理部１００を１つしか記載していないが、複数のクエリ処理部を配置する構成も可能である。また、同図中では、２つのデータベースに複製する例を示しているが、３つ以上の複製を作成することも可能である。
【０１０８】
ステップ４０１）
（１）管理情報蓄積部２００がバージョン番号（バージョン番号：１）と、「参照クエリの場合はデータベース−Ａ（データベース４００）へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合もデータベース−Ａへクエリを振り分ける」振り分けルール（振り分けルール：ａ）を蓄積しており、分割元のデータベース４００のみが存在している。この例を図３６に示す。同図は、データベース複製時の初期状態を示したものである。管理情報蓄積部２００はバージョン番号（＝１）と振り分けルール（＝ａ）を蓄積している。
【０１０９】
（２）クエリ処理部１００は起動後に管理情報蓄積部２００のバージョン番号参照部２２０からバージョン番号を取得してローカルなキャッシュとして自身のメモリ（図示せず）に当該バージョン番号（バージョン番号：１）を保持すると共に、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルール（振り分けルール：ａ）を取得して、ローカルなキャッシュとして自身のメモリ（図示せず）に保持する。
【０１１０】
（３）分割クエリ実行部１３０は、クライアントからクエリを受け付けると、メモリ（図示せず）に格納されている振り分けルールに従って振り分け先のデータベース４００に対してクエリを実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータにバージョン番号記録部１５０によりメモリ（図示せず）に保持されているバージョン番号（バージョン番号：１）を付加する。この例を図３７に示す。クエリ処理部１００が起動し、管理情報蓄積部２００からバージョン番号（＝１）と振り分けルール（＝ａ）を取得し、データベース４００に対してクエリを実行している様子を示したものである。
【０１１１】
（４）データコピー処理部３００のデータベース作成部３１０は、分割先のデータベースとなるデータベース５００ａ、５００ｂを新規に作成する。この例を図３８に示す。同図は、データコピー処理部３００が起動し、分割先のデータベースとなるデータベース５００ａ，５００ｂを新規に作成する様子を示したものである。
【０１１２】
ステップ４０２）  データコピー処理部３００が管理情報蓄積部２００に対して振り分けルールを『参照クエリの場合はデータベース−Ａ（データベース４００）へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は全てのデータベース４００，５００ａ，５００ｂへクエリを振り分ける』に変更する要求を行う。これにより、振り分けルール変更部２６０は、振り分けルール蓄積部２４０の振り分けルールを変更（振り分けルール：ａ⇒ｂ'）する。
【０１１３】
ステップ４０３）  更に、データコピー処理部３００は管理情報蓄積部２００に対してバージョン番号のバージョン番号（バージョン番号：１⇒２）の更新を要求すると、更新（増加）部２３０は、管理情報蓄積部２００のバージョン番号を更新（バージョン番号：１⇒２）する。この例を図３９に示す。同図は、データコピー処理部３００からバージョン番号変更要求があると、管理情報蓄積部２００は、バージョン番号蓄積部２１０に蓄積されたバージョン番号を１から２へ更新し、振り分けルール蓄積部２４０に蓄積された振り分けルールをａからｂ'へ更新する様子を示したものである。
【０１１４】
ステップ４０４）  データコピー処理部３００の分割開始通知部３２０は、全てのクエリ処理部１００にデータベースの分割開始を通知する。この例を図４０に示す。同図は、データコピー処理部３００が全てのクエリ処理部１００に分割開始を通知する様子を示したものである。
【０１１５】
ステップ４０５）  データコピー処理部２００からデータベースの分割開始通知を受け取ったクエリ処理部１００は、管理情報蓄積部２００のバージョン番号参照部２２０からバージョン番号を取得して自身のメモリ（図示せず）に保持するバージョン番号を更新（バージョン番号：１⇒２）すると共に、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得して、メモリ（図示せず）に格納されている振り分けルールを更新（振り分けルール：ａ⇒ｂ'）し、データコピー処理部３００にデータベース分割開始通知に対する受領確認を通知する。
【０１１６】
ステップ４０６）  さらに、クエリ処理部１００は、更新後のバージョン番号（バージョン番号：２）及び更新後の振り分けルール（振り分けルール：ｂ'）に従ってクエリを実行する。クエリの種類が更新、または、削除の場合、更新、または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベースと全ての分割先のデータベースで当該クエリをぞれぞれ実行する。一方、更新、または、削除対象のデータが分割先のデータベース中に存在しなければ、当該クエリを分割元のデータベース４００で実行してクエリ実行の結果、更新または削除されたデータの全ての分割先のデータベース５００にコピーする。この例を図４１に示す。同図は、分割開始の通知を受けたクエリ処理部１００が管理情報蓄積部２００からバージョン番号（＝２）と振り分けルール（＝ｂ'）を取得し、データベース４００，５００ａ，５００ｂに対してクエリを実行し、データコピー処理部３００に分割開始受領確認を通知する様子を示したものである。
【０１１７】
ステップ４０７）  データコピー処理部３００は、全てのクエリ処理部１００からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース４００中のデータのうち、データに付加されているバージョン番号が自身のメモリ（図示せず）に格納されているバージョン番号（バージョン番号：２）よりも小さいデータを自身のメモリ（図示せず）に格納されている振り分けルール（振り分けルール：ｂ'）に従って全ての分割先のデータベース５００ａ，５００ｂにコピーする。この例を図４２に示す。同図は、クエリ処理部１００がデータベース４００，５００ａ，５００ｂに対してクエリを実行するのと並行して、データコピー処理部３００が分割元のデータベース４００から分割先のデータベース５００ａ，５００ｂへデータをコピーする様子を示したものである。
【０１１８】
ステップ４０８）  データコピー処理部３００は、データのコピー完了後に、管理情報蓄積部２００の振り分けルール変更部２６０に管理情報蓄積部２００の振り分けルールを「参照クエリの場合は何れか１つのデータベース（データベース４００，５００ａ，５００ｂのいずれか）へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は全てのデータベース４００，５００ａ，５００ｂへクエリを振り分ける」振り分けルールに変更（振り分けルール：ｂ'⇒ｃ'）する。この例を図４３に示す。同図は、データのコピーが終了したデータコピー手段が管理情報蓄積部２００に蓄積された振り分けルールをｂ'からｃ'へ更新する様子を示したものである。
【０１１９】
ステップ４０９）  データコピー処理部３００の分割終了通知部３４０は、全てのクエリ処理部１００に第１の（１回目の）データベースの分割終了を通知する。この例を図４４に示す。同図は、データコピー処理部３００が全てのクエリ処理部１００に第１データベースの分割終了を通知する様子を示したものである。
【０１２０】
ステップ４１０）  データコピー処理部３００から第１のベースの分割終了通知を受け取ったクエリ処理部１００は、管理情報蓄積部２００の振り分けルール参照部２５０から振り分けルールを取得して、自身が保持するメモリ（図示せず）に格納されている振り分けルールを更新（振り分けルール：ｂ'⇒ｃ'）し、データコピー処理部３００に第１のデータベースの分割終了通知に対する受領確認を通知する。
【０１２１】
ステップ４１１）  クエリ処理部１００は、自身がメモリ（図示せず）に保持するバージョン番号（バージョン番号：２）及び更新後の振り分けルール（振り分けルール：ｃ'）に従ってクエリを実行する。この例を図４５に示す。同図は、第１のデータベースの分割終了の通知を受けたクエリ処理部１００が管理情報蓄積部２００に対してクエリを実行し、データコピー処理部３００に第１の分割終了受領確認を通知し、データベースの複製が完了したことを示したものである。
【０１２２】
ステップ４１２）  データコピー処理部３００は、全てのクエリ処理部１００から第１のデータベースの分割終了通知に対する受領確認を受け取った後で処理を終了する。
【０１２３】
なお、上記の例に限定されることなく、図４６に示すように、バージョン番号と振り分けルールの設定により、データベースの分割の多段化やＮ分割も可能となる。同図の例では、管理情報蓄積部２００に格納されている振り分けルールにより、「東日本」のデータベース４００ｂから４つの分割先のデータベース５００ａ，５００ｂ，５００ｃ，５００ｄに分割されている。
【０１２４】
また、本発明では、図４７（ａ）に示すように、データをコピーした後に、分割元データベースを残すことにより、同図（ｂ）のように、分割中に片方のクエリが失敗した場合でも、分割元データベースだけを有効として運用を継続し、分割プロセスをやり直すことでリカバリが可能である。
【０１２５】
さらに、本発明では、図４８に示すように、各クエリ処理部１００がローカルなキャッシュとして、バージョン番号と振り分けルールをメモリ（図示せず）に保持しておき、それを使用することにより、管理情報蓄積部２００へのデータ参照がボトルネックとなって処理が遅延することを防いでいる。
【０１２６】
上記のクエリ処理部１００、管理情報蓄積部２００、データコピー処理部３００からなる装置の動作をプログラムとして構築し、データベーススケールアウト装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１２７】
また、構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【０１２８】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【０１２９】
１００  クエリ処理手段、クエリ処理部
１１０  クエリ解析手段、クエリ解析部
１２０  クエリ振り分け手段、クエリ振り分け部
１３０  分割クエリ実行手段、分割クエリ実行部
１４０  削除フラグ設定手段、削除フラグ設定部
１５０  バージョン番号記録手段、バージョン番号記録部
２００  管理情報蓄積手段、管理情報蓄積部
２１０  バージョン番号蓄積手段、バージョン番号蓄積部
２２０  バージョン番号参照手段、バージョン番号参照部
２３０  バージョン番号更新（増加）手段、バージョン番号更新（増加）部
２４０  振り分けルール蓄積手段、振り分けルール蓄積部
２５０  振り分けルール参照手段、振り分けルール参照部
２６０  振り分けルール変更手段、振り分けルール変更部
３００  データコピー処理手段、データコピー処理部
３１０  データベース作成手段、データベース作成部
３２０  分割開始通知手段、分割開始通知部
３３０  データコピー手段、データコピー部
３４０  分割終了通知手段、分割終了通知部
４００  分割元データベース
５００  分割先データベース
【図１】
2010250741.tif 000003
【図２】
2010250741.tif 000004
【図３】
2010250741.tif 000005
【図４】
2010250741.tif 000006
【図５】
2010250741.tif 000007
【図６】
2010250741.tif 000008
【図７】
2010250741.tif 000009
【図８】
2010250741.tif 000010
【図９】
2010250741.tif 000011
【図１０】
2010250741.tif 000012
【図１１】
2010250741.tif 000013
【図１２】
2010250741.tif 000014
【図１３】
2010250741.tif 000015
【図１４】
2010250741.tif 000016
【図１５】
2010250741.tif 000017
【図１６】
2010250741.tif 000018
【図１７】
2010250741.tif 000019
【図１８】
2010250741.tif 000020
【図１９】
2010250741.tif 000021
【図２０】
2010250741.tif 000022
【図２１】
2010250741.tif 000023
【図２２】
2010250741.tif 000024
【図２３】
2010250741.tif 000025
【図２４】
2010250741.tif 000026
【図２５】
2010250741.tif 000027
【図２６】
2010250741.tif 000028
【図２７】
2010250741.tif 000029
【図２８】
2010250741.tif 000030
【図２９】
2010250741.tif 000031
【図３０】
2010250741.tif 000032
【図３１】
2010250741.tif 000033
【図３２】
2010250741.tif 000034
【図３３】
2010250741.tif 000035
【図３４】
2010250741.tif 000036
【図３５】
2010250741.tif 000037
【図３６】
2010250741.tif 000038
【図３７】
2010250741.tif 000039
【図３８】
2010250741.tif 000040
【図３９】
2010250741.tif 000041
【図４０】
2010250741.tif 000042
【図４１】
2010250741.tif 000043
【図４２】
2010250741.tif 000044
【図４３】
2010250741.tif 000045
【図４４】
2010250741.tif 000046
【図４５】
2010250741.tif 000047
【図４６】
2010250741.tif 000048
【図４７】
2010250741.tif 000049
【図４８】
2010250741.tif 000050