JP5191434B2 - データベーススケールアウト方法及び装置及びプログラム - Google Patents

データベーススケールアウト方法及び装置及びプログラム Download PDF

Info

Publication number
JP5191434B2
JP5191434B2 JP2009102049A JP2009102049A JP5191434B2 JP 5191434 B2 JP5191434 B2 JP 5191434B2 JP 2009102049 A JP2009102049 A JP 2009102049A JP 2009102049 A JP2009102049 A JP 2009102049A JP 5191434 B2 JP5191434 B2 JP 5191434B2
Authority
JP
Japan
Prior art keywords
query
database
data
division
distribution rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009102049A
Other languages
English (en)
Other versions
JP2010250741A (ja
Inventor
知洋 長谷川
一兵衛 内藤
崇 毛受
浩樹 赤間
雅司 山室
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2009102049A priority Critical patent/JP5191434B2/ja
Publication of JP2010250741A publication Critical patent/JP2010250741A/ja
Application granted granted Critical
Publication of JP5191434B2 publication Critical patent/JP5191434B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベーススケールアウト方法及び装置及びプログラムに係り、特に、大量のセンサデータや各種情報システムのログ情報、Webやブログなどのコンシューマによって生成されるコンテンツ情報、映像や音声などの各種ストリームデータなど、多種多様なデータが日々大量に追記型(Write Once)で生成される分散ネットワーク上で、これらのデータを収集・蓄積・管理するためのデータベーススケールアウト方法及び装置及びプログラムに関する。
データベースに対するクエリ実行時の性能向上(スケールアウト)を目的とした方式として、パラレルクエリでは、処理の対象となるテーブルを複数のデータベースサーバに分割して格納し、分割した各テーブルに対して並行に検索を実行させる。分割された各テーブルは元のテーブルより小さくなるので、全体の処理時間は分割前のテーブルを単独のサーバで処理するよりも性能が向上することが期待できる。そのための仕組みとして、並列処理の対象となるテーブル情報を格納した「システムデータベース」を用意しておき、クライアントと分割されたデータベース(データベースノード)の間にクライアントから並列性を抽出してクエリの書き換えを行う「並列抽出部」と、各データベースノードに対してクエリを実行して各データベースノードが返却したクエリの実行結果を統合する「並列実行エンジン」を配置し、この順に動作させることでパラレルクエリによるデータベーススケールアウトを実現している(例えば、非特許文献1参照)。
また、クライアントとデータベースの間に「仮想モジュール」「グローバル・システム・カタログ」を配置し、仮想化モジュールではクライアントからのクエリを解析してクエリを各データベースサーバに振り分けて実行し、各データベースサーバからの実行結果をとりまとめた結果をクライアントに返却する。グローバル・システム・カタログでは、分割しているテーブルの情報や分割先のデータベースサーバへの接続情報など、データベース全体に共通するメタ情報を一元管理しておき、1つのテーブルを複数のテーブル(パーティション)に分割して複数のデータベースに分散配置することで検索処理時間を短縮し、パーティショニング機能によるデータベーススケールアウトを実現するPostgresForest(登録商標)がある(例えば、非特許文献2参照)。
「PostgreSQLウォッチ」第28回パラレルクエリを実現したpgpool-II、石井達夫、P2「負荷分散とパラレルクエリ」およびP3「pgpool-IIのアーキテクチャ」、[2008年12月25日検索]、インターネット<URL:htp://itpro.nikkeibp.co.jp/article/CLUMN/20060626/241783/?ST=1in-server&P=1> 「特選フリーソフト」PostgreSQLの可用性と拡張性を向上PostgresForest、藤塚勤也、P2「PostgresForestの主な機能」、P3『(3)パーティショニング』およびP4「PostgresForestの構造」、[2008年12月25日検索]、インターネット<URL:http://itpro.nikkeibp.co.jp/article/COOLUMN/20080117/29126/?ST=lin-server&P=1>
しかし、データベースに対するクエリ実行のスケールアウトを実現しようとすると、上記の非特許文献1の技術では並列処理の対象となるテーブル情報を格納した「システムデータベース」がデータベースの動的な分割に対応していないためクエリ実行中にデータベースを分割することができないという問題がある。
また、上記の非特許文献2のグローバル・システム・カタログは、分割しているテーブルの情報や分割先のデータベースサーバへの接続情報など、データベース全体に共通するメタ情報を一元管理しているが、データベースの動的な分割に対応していないため、これらの方式ではパラレルクエリやパーティショニング機能を利用する前にクライアントからのクエリ受付を一旦停止した状態で(データベースの一貫性を保った状態で)予めデータベースを分割しておく必要があり、分散ネットワーク上で多種多様なデータが時々刻々と大量に追記型(Write Once)で生成される環境では、データベース中に大量に蓄積されたデータを複数のデータベースに分割し終わるまでに長い時間を要することが予想され、その間、クライアントからのクエリを受け付けることができなくなるという問題がある。
本発明は、上記の点に鑑みなされたもので、分散ネットワーク上で多種多様なデータが時々刻々と大量に追記型(Write Once)で生成される環境において、少なくとも1つ以上のクライアントからのクエリを実行しながらデータベースを停止することなく、データベースを分割あるいは複製し、クエリ実行の性能向上(スケールアウト)を実現することが可能なデータベーススケールアウト方法及び装置及びプログラムを提供することを目的とする。
図1は、本発明の原理を説明するための図である。
本発明(請求項1)は、少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベースを1つ以上の分割先に分割する際に、
データコピー手段は、
分割先のデータベースとなる少なくとも1つ以上のデータベースを作成し(ステップ1)、管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールbに変更させ(ステップ2)、
管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させ(ステップ3)、
全てのクエリ処理手段にデータベースの分割開始通知を送信し(ステップ4)、
全てのクエリ処理手段からデータベースの分割開始通知に対する受領確認を受け取った後で(ステップ5)、分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを振り分けルールbに従って、分割先のデータベースのうちの条件を満たす一部のデータベースにコピーし(ステップ6)、
コピー完了後、管理情報蓄積手段に蓄積されている振り分けルールbを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールcに変更させ(ステップ7)、
全てのクエリ処理手段に第1のデータベース分割終了通知を送信し(ステップ8)、
全てのクエリ処理手段から第1のデータベース分割終了通知に対する受領確認を受け取った後で(ステップ9)、管理情報蓄積手段に蓄積されている振り分けルールcを「分割先データベースのみにクエリを振り分ける」振り分けルールdに変更し(ステップ10)、
全てのクエリ処理手段に第2のデータベース分割終了通知を送信し(ステップ11)、
全てのクエリ処理手段から第2のデータベース分割終了通知に対する受領確認を受け取った後で(ステップ12)、分割元のデータベースを切り離す(ステップ13)。
本発明(請求項2)は、少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベースを1つ以上の分割先に分割する際に、
クエリ処理手段は、
起動時に管理情報蓄積手段からバージョン番号を取得して、第1の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第2の記憶手段に保持し、
少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリまたは、削除クエリのいずれであるかを解析し、第2の記憶手段に保持している振り分けルールに従って該クエリを振り分け、
振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、第1の記憶手段に保持しているバージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第2の記憶手段に保持している振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
以後、データコピー手段からデータベースの分割が終了した旨の第1のデータベース分割終了通知を受け取るまでの間は、第2の記憶手段に保持している振り分けルールに従って、
参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新または削除)された全てのデータを分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段から第1のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第2の記憶手段に保持している振り分けルールを更新し、
データコピー手段に第1のデータベース分割終了通知に対する受領確認を通知し、
データコピー手段から、当該データコピー手段が第1のデータベース分割終了通知を取得後に振り分けルールを変更した旨の第2のデータベース分割終了通知を受け取るまでの間、第2の記憶手段に保持している振り分けルールに従って、
参照クエリの場合は分割先のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新または削除)された全てのデータを分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段から第2のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第2の記憶手段に保持している振り分けルールを更新し、
データコピー手段に第2のデータベース分割終了通知に対する受領確認を通知し、
以後、第2の記憶手段に保持している振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、該クエリの実行結果をクライアントに返却する。
本発明(請求項3)は、少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベース中のコピー対象となるデータを1つ以上の分割先のデータベースにコピーする際に、
データコピー手段は、
分割先のデータベースとなる少なくとも1つ以上のデータベースを作成し、管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールb'に変更させ、
管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させ、
全てのクエリ処理手段にデータベースの分割開始通知を送信し、
全てのクエリ処理手段からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベースにコピーし、
コピー完了後、管理情報蓄積手段の振り分けルールb'を「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか1つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールc'に変更し、全てのクエリ処理手段に第1のデータベースの分割終了通知を送信し、
全てのクエリ処理手段から第1のデータベースの分割終了通知に対する受領確認を受け取る。
本発明(請求項4)は、少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
分割元のデータベース中のコピー対象となるデータを1つ以上の分割先のデータベースにコピーする際に、
クエリ処理手段は、
起動時に管理情報蓄積手段からバージョン番号を取得して、第1の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第2の記憶手段に保持し、
少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析し、第2の記憶手段に保持している振り分けルールに従って該クエリを振り分け、
振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、第1の記憶手段に保持しているバージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第2の記憶手段に保持している振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
以後、データコピー手段からデータベースの分割が終了した旨の第1のデータベース分割終了通知を受け取るまでの間は、第2の記憶手段に保持している振り分けルールに従って、
参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び全ての分割先のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースにクエリを振り分けて実行し、
更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新または削除)された全てのデータを全ての分割先のデータベースにコピーし、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却し、
データコピー手段から第1のデータベース分割終了通知を受け取ると、
仕掛かり中のクエリ実行処理完了後、管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して第2の記憶手段に保持している振り分けルールを更新し、
データコピー手段に第1のデータベース分割終了通知に対する受領確認を通知し、
以後、第2の記憶手段に保持している振り分けルールに従って、参照クエリは分割元のデータベースまたは分割先のデータベースのうちのいずれか1つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分けて実行し、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持するバージョン番号を付加し、削除クエリの場合は加えて削除フラグを該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却する。
図2は、本発明の原理構成図である。
本発明(請求項5)は、少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト装置であって、
クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段100と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段200と、分割元のデータベース400中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベース500a,500bにコピーするデータコピー処理手段300と、を有し、
管理情報蓄積手段200は、
データベース中のデータの世代管理に使用するバージョン番号を蓄積するバージョン番号蓄積手段210と、
バージョン番号蓄積手段210に蓄積しているバージョン番号を返却するバージョン番号参照手段220と、
バージョン番号蓄積手段210に蓄積しているバージョン番号を更新する(増加)するバージョン番号更新(増加)手段230と、
データベース分割のための振り分けルールを蓄積する振り分けルール蓄積手段240と、
振り分けルール蓄積手段250に蓄積している前記振り分けルールを参照して要求元に返却する振り分けルール参照手段250と、
振り分けルール蓄積手段240に蓄積している振り分けルールを更新する振り分けルール変更手段260と、
を有し、
クエリ処理手段100は、
クライアントから受け付けクエリを解析するクエリ解析手段110と、
振り分けルールに従ってクエリを振り分けるクエリ振り分け手段120と、
振り分けられたデータベース500に対してクエリを実行する分割クエリ実行手段130と、
分割クエリ実行手段130により削除クエリが実行された場合に、データベース中の削除対象データを物理的に削除せずに削除フラグを設定する削除フラグ設定手段140と、
分割クエリ実行手段130により挿入または更新または削除されたデータベース中のデータにバージョン番号を付与するバージョン番号記録手段150と、
を有し、
データコピー処理手段300は、
少なくとも1つ以上の分割先のデータベースを新たに作成するデータベース作成手段310と、
分散コンピューティング環境上に存在する全てのクエリ処理手段100にデータベースの分割開始を通知する分割開始通知手段320と、
分割元のデータベース400のデータを分割先のデータベース500へコピーするデータコピー手段330と、
クエリ処理手段100にデータベースの分割終了を通知する分割終了通知手段340と、
を有する。
本発明(請求項6)は、請求項5のデータコピー処理手段300のデータコピー手段330は、
管理情報蓄積手段200の振り分けルール蓄積手段240に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールbに変更させる手段と、
管理情報蓄積手段200のバージョン番号蓄積手段210に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させ、分割開始通知手段320に、全てのクエリ処理手段100に対し、データベースの分割開始通知の送信を指示する手段と、
全てのクエリ処理手段100からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを振り分けルールbに従って、分割先のデータベースのうちの条件を満たす一部のデータベースにコピーする手段と、
コピー完了後、管理情報蓄積手段200の振り分けルール蓄積手段240に蓄積されている振り分けルールbを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールcに変更させ、分割終了通知手段340に、全てのクエリ処理手段に第1のデータベース分割終了通知を送信させる手段と、
全てのクエリ処理手段100から第1のデータベース分割終了通知に対する受領確認を受け取った後で、管理情報蓄積手段200の振り分けルール蓄積手段240に蓄積されている振り分けルールcを「分割先データベースのみにクエリを振り分ける」振り分けルールdに変更させ、分割終了通知手段に全てのクエリ処理手段に対して第2のデータベース分割終了通知を送信させる手段と、
全てのクエリ処理手段100から第2のデータベース分割終了通知に対する受領確認を受け取った後で、分割元のデータベースを切り離す手段と、を含む。
また、本発明(請求項7)は、請求項5におけるクエリ処理手段100に、
起動時に管理情報蓄積手段200からバージョン番号を取得して、第1の記憶手段に保持する、または、データコピー処理手段300からデータベース分割開始通知を受け取ると、分割クエリ実行手段130による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段200に蓄積されている最新のバージョン番号を取得して、該第1の記憶手段に保持しているバージョン番号を更新するバージョン番号更新手段と、
起動時に管理情報蓄積手段200から振り分けルールを取得して、第2の記憶手段に保持する、または、データコピー処理手段300からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に管理情報蓄積手段200から振り分けルールを取得して、該第2の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
データコピー処理手段300からデータベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段300に送信する送受信手段と、
を更に有し、
クエリ解析手段110は、少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する手段を有し、
クエリ振り分け手段120は、第2の記憶手段に保持している振り分けルールに従って該クエリを振り分ける手段を有し、
分割クエリ実行手段130は、
クエリ振り分け手段120により振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリの実行結果をクライアントに返却する手段と、
データコピー処理手段300から送受信手段を介して第1のデータベース分割終了通知を受け取るまでの間は、第2の記憶手段に保持している振り分けルールに従って、参照クエリ実行の場合は分割元のデータベース400のみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース400及び分割先のデータベース500のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース500中に存在すれば、分割元のデータベース400及び分割先のデータベース500のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが分割先のデータベース中に存在しなければ、分割元のデータベース400だけにクエリを振り分けて実行し、該分割元のデータベース400に対するクエリ実行の結果、変更(更新または削除)された全てのデータを分割先のデータベース500にコピーする手段と、
データコピー処理手段300から送受信手段を介して第1のデータベース分割終了通知を取得後に、該データコピー処理手段300から振り分けルールを変更した旨の第2のデータベース分割終了通知を受け取るまでの間、第2の記憶手段に保持している振り分けルールに従って、参照クエリ実行の場合は分割先のデータベース500のみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース400及び分割先のデータベース500のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース500中に存在すれば、分割元のデータベース400及び分割先のデータベース500のうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが分割先のデータベース500中に存在しなければ、分割元のデータベー400スだけにクエリを振り分けて実行し、該分割元のデータベース400に対するクエリ実行の結果、変更(更新または削除)された全てのデータを分割先のデータベース500にコピーする手段と、
送受信手段を介して、データコピー処理手段300に第2のデータベース分割終了通知に対する受領確認を通知した後、第2の記憶手段に保持している振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行する手段と、を有する。
また、本発明(請求項8)は、請求項7の分割クエリ実行手段130に、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに、バージョン番号記録手段150により、第1の記憶手段に保持しているバージョン番号が付加されたデータをクエリの実行結果としてクライアントに返却し、削除クエリの場合は加えて削除フラグ設定手段140により該データベース中の削除対象データに削除フラグが設定されたデータをクエリの実行結果から除外してクライアントに返却する手段を含む。
また、本発明(請求項9)は、請求項5のデータコピー処理手段300のデータコピー手段330に、
管理情報蓄積手段200の振り分けルール蓄積手段240に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールb'に変更させる手段と、
管理情報蓄積手段200のバージョン番号蓄積手段210に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させる手段と、
分割通知開始手段320を介して、全てのクエリ処理手段100にデータベースの分割開始通知を送信し、該全てのクエリ処理手段100からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース400中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベース500にコピーする手段と、
コピー完了後、管理情報蓄積手段200の振り分けルールb'を「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか1つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールc'に変更し、分割終了通知手段340を介して、全てのクエリ処理手段100に第1のデータベースの分割終了通知を送信し、該全てのクエリ処理手段から第1のデータベースの分割終了通知に対する受領確認を受け取る手段と、を含む。
また、本発明(請求項10)は、請求項5のクエリ処理手段100が、
起動時に管理情報蓄積手段200からバージョン番号を取得して、第1の記憶手段に保持する、または、データコピー処理手段300からデータベース分割開始通知を受け取ると、分割クエリ実行手段130による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段200に蓄積されている最新のバージョン番号を取得して、該第1の記憶手段に保持しているバージョン番号を更新するバージョン番号更新手段と、
起動時に管理情報蓄積手段200から振り分けルールを取得して、第2の記憶手段に保持する、または、データコピー処理手段300からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に管理情報蓄積手段200から振り分けルールを取得して、該第2の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
データコピー処理手段300からデータベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段300に送信する送受信手段と、
を更に有し、
クエリ解析手段110は、少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する手段を有し、
クエリ振り分け手段は120、第2の記憶手段に保持している振り分けルールに従って該クエリを振り分ける手段を有し、
分割クエリ実行手段130は、
振り分けられたクエリを振り分け先のデータベース500に対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果をクライアントに返却する手段と、
送受信手段を介して、データコピー処理手段300からデータベース分割開始通知を受け取り、振り分けルール更新手段による振り分けルールの更新が行われ、該データコピー処理手段300に該送受信手段を介して該データベース分割開始通知に対する受領確認を通知した後に、データコピー処理手段300から第1のデータベース分割終了通知を受け取るまでの間は、第2の記憶手段に保持されている振り分けルールに従って、参照クエリ実行の場合は分割元のデータベース400のみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース400及び全ての分割先のデータベース500にクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース500中に存在すれば、分割元のデータベース400及び分割先のデータベース500にクエリを振り分けて実行する手段と、
更新または削除対象のデータが分割先のデータベース500中に存在しなければ、分割元のデータベース400だけにクエリを振り分けて実行し、該分割元のデータベース400に対するクエリ実行の結果、変更(更新または削除)された全てのデータを全ての分割先のデータベース500にコピーする手段と、
データコピー処理手段300に該データコピー処理手段300から取得した第1のデータベース分割終了通知に対する受領確認を通知した後に、第2の記憶手段に保持している振り分けルールに従って、参照クエリ実行の場合は分割元のデータベース400または分割先のデータベース500のうちのいずれか1つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリ実行の場合は分割元のデータベース400及び全ての分割先のデータベース500にクエリを振り分けて実行する手段と、を有する。
また、本発明(請求項11)は、請求項10の分割クエリ実行手段130に、
挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに、バージョン番号記録手段150によりバージョン番号を付与し、削除クエリの場合は削除フラグ設定手段140により削除フラグが設定されたデータをクエリの実行結果から除外してクライアントに返却する手段を含む。
本発明(請求項12)は、請求項5乃至11の何れか1項記載のデータベーススケールアウト装置を構成する各手段としてコンピュータを機能させるためのデータベーススケールアウトプログラムである。
上述のように、本発明によれば、少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上に、クライアントからのクエリを受け付けてデータベースにおけるクエリ実行結果を当該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースへコピーするデータコピー処理手段とを配置し、管理情報蓄積手段がデータベース中のデータの世代管理に使用するバージョン番号とデータベース分割のための振り分けルールを蓄積し、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールaに従って分割元のデータベースにクエリを振り分け、クエリの種類が挿入クエリ、更新クエリ、または、削除クエリの場合にクエリ処理手段が管理情報蓄積手段から取得したバージョン番号「1」をクエリ実行によって挿入、更新、または、削除されたデータベース中のデータに付与しておき、分割元のデータベース中のデータに付加されているバージョン番号がデータコピー処理手段によるデータコピー開始時の最新のバージョン番号である「2」よりも小さいデータを振り分けルールbに従って分割先のデータベースのうち条件を満たす一部のデータベースにコピーし、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールbに従って分割元のデータベースと分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分け、データコピー処理手段がデータのコピー完了後、管理情報蓄積手段の振り分けルールを変更して全てのクエリ処理手段に分割終了を通知するステップを2回に分けて実行することで、挿入クエリ、更新クエリ、または、削除クエリのデータベースへの適用漏れによる異なるクライアントからのクエリ実行結果に差異が生じることを防ぎ(データベースの整合性を損なうことなく)、また、複数のクエリ処理手段が独立並行(自律的)に動作して、各クエリ処理手段がクエリを実行するのと並行してデータコピー処理手段が分割元のデータベースから分割先のデータベースへデータをコピーできるようになり、少なくとも1つ以上のクライアントから受け付けたクエリを実行しながらデータベースを停止することなくデータベースを分割し、クエリ実行の性能向上を実現することができる。
同様に、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールaに従って分割元のデータベースにクエリを振り分け、クエリの種類が挿入クエリ、更新クエリ、または、削除クエリの場合に、クエリ処理手段が管理情報蓄積手段から取得したバージョン番号「1」をクエリ実行によって挿入、更新、または、削除されたデータベース中のデータに付加しておき、分割元のデータベース中のデータに付加されているバージョン番号がデータコピー処理手段によるデータコピー開始時の最新のバージョン番号である「2」よりも小さいデータを振り分けルールb'に従って全ての分割先のデータベースにコピーし、クエリ処理手段が管理情報蓄積手段から取得した振り分けルールb'に従って分割元のデータベースと全ての分割先のデータベースにクエリを振り分け、データコピー処理手段がデータのコピー完了後、管理情報蓄積手段の振り分けルールを変更して全てのクエリ処理手段に分割終了を通知することで、挿入クエリ、更新クエリ、または、削除クエリのデータベースへの適用漏れにより異なるクライアントからのクエリ実行結果に差異が生じることを防ぎ(データベースの整合性を損なうことなく)、また、複数のクエリ処理手段が独立並行(自律的)に動作して、各クエリ処理手段がクエリを実行するのと並行してデータコピー処理手段が分割元のデータベースから分割先のデータベースへデータをコピーできるようになり、少なくとも1つ以上のクライアントから受け付けたクエリを実行しながらデータベースを停止することなくデータベースを複製し、クエリ実行の性能向上を実現することができる。
本発明の原理を説明するための図である。 本発明の原理構成図である。 本発明の一実施の形態におけるデータベーススケールアウトシステムの構成図である。 本発明の一実施の形態におけるデータコピー処理部のフローチャートである。 本発明の一実施の形態におけるクエリ処理部のフローチャートである。 本発明の一実施の形態におけるデータベース分割時のシーケンスチャートである。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ301(1))である。 本発明の一実施の形態におけるステップ301(1)の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ301(2))である。 本発明の一実施の形態におけるステップ301(2)の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ301(3))である。 本発明の一実施の形態におけるステップ301(3)の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ302,303)である。 本発明の一実施の形態におけるステップ302,303の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ304)である。 本発明の一実施の形態におけるステップ304の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ306)である。 本発明の一実施の形態におけるステップ306の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ307)である。 本発明の一実施の形態におけるステップ307の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ308)である。 本発明の一実施の形態におけるステップ308の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ309)である。 本発明の一実施の形態におけるステップ309の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ310)である。 本発明の一実施の形態におけるステップ310の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ311)である。 本発明の一実施の形態におけるステップ311の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ312)である。 本発明の一実施の形態におけるステップ312の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ313)である。 本発明の一実施の形態におけるステップ313の具体例である。 本発明の一実施の形態におけるデータベース分割時の動作を示す図(ステップ314)である。 本発明の一実施の形態におけるステップ314の具体例である。 本発明の一実施の形態におけるデータベース複製時のシーケンスチャートである。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ401(1))である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ401(3))である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ401(4))である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ403)である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ404)である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ406)である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ407)である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ408)である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ409)である。 本発明の一実施の形態におけるデータベース複製時の動作を示す図(ステップ410)である。 本発明の一実施の形態における分割の多段化とN分割の例である。 本発明の一実施の形態における分割中に発生した障害の切り戻しの例である。 本発明の一実施の形態におけるクエリ処理部のローカルなキャッシュを説明するための図である。
以下、図面と共に本発明の実施の形態を説明する。
図3は、本発明の一実施の形態におけるデータベーススケールアウトシステムの構成を示す。同図に示すデータベーススケールアウトシステムは、少なくとも1つ以上のクエリ処理部100、管理情報蓄積部200、データコピー処理部300、分割元データベース400、分割先データベース500から構成される。
データベーススケールアウトシステムは、少なくとも1つ以上のクエリ処理部100が独立並行に動作し、各クエリ処理部100がクライアントからのクエリを受け付け、管理情報蓄積部200の振り分けルールに従ってクエリを振り分け、振り分けられたデータベースでクエリを実行し、クエリ実行結果をクライアントに返却する。
本実施の形態では、クエリ処理部100が3個の構成を示しているが、1個以上の任意の個数を配置することが可能である。また、1個の分割元データベース400に対して、分割先データベース500が2個の構成例を示しているが、1個の分割元データベース400に対して、1個以上の任意個の分割先データベースを配置することが可能である。
<クエリ処理部>
クエリ処理部100は、クエリ解析部110、クエリ振り分け部120、分割クエリ実行部130、削除フラグ設定部140、バージョン番号記録部150、バージョン番号、振り分けルールを格納するためのメモリ(図示せず)を有し、クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を当該クライアントに返却する。
クエリ解析部110は、クライアントから受け付けたクエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する。
クエリ振り分け部120は、管理情報蓄積部200から取得した振り分けルールに基づいて、クエリを振り分ける。
分割クエリ実行部130は、振り分けられたデータベースに対してクエリを実行し、実行結果をクライアントに返却する。
削除フラグ設定部140は、クエリ実行によるデータ削除時(削除クエリの場合)にデータベース中の削除対象データを物理的に削除せずに、削除フラグを設定するのみとし、分割クエリ実行部130による参照クエリ及び更新クエリ実行時に削除フラグが設定されたデータをクエリ実行結果から除外させる。
バージョン番号記録部150は、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータにバージョン番号を付加する。
<管理情報蓄積部>
管理情報蓄積部200は、バージョン番号蓄積部210、バージョン番号参照部220、バージョン番号更新(増加)部230、振り分けルール蓄積部240、振り分けルール参照部250、振り分けルール変更部260を有し、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する。
バージョン番号蓄積部210は、データベース中のデータの世代管理に使用するバージョン番号を蓄積する記録媒体である。
バージョン番号参照部220は、データコピー処理部300からの問い合わせに対して、バージョン番号蓄積部210に蓄積しているバージョン番号を参照して返却する。
バージョン番号更新(増加)部230は、バージョン番号蓄積部210に蓄積しているバージョン番号を更新(増加)させる。
振り分けルール蓄積部240は、データベース分割のための振り分けルールを蓄積する記録媒体である。
振り分けルール参照部250は、データコピー処理部300からの問い合わせに対して、振り分けルール蓄積部240に蓄積されている振り分けルールを参照して返却する。
振り分けルール変更部250は、振り分けルール蓄積部240に蓄積されている振り分けルールをデータコピー処理部300からの要求に基づいて変更する。
<データコピー処理部>
データコピー処理部300は、データベース作成部310、分割開始通知部320、データコピー部330、分割終了通知部340を有し、データベースの分割あるいは複製の時のみ動作する。データコピー処理部300は、分割元のデータベース400中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベース500へコピーする。
データベース作成部310は、分割先のデータベース500を新たに作成する。
分割開始通知部320は、分散コンピューティング環境上に存在する全てのクエリ処理部100にデータベースの分割開始を通知する。
データコピー部330は、分割元のデータベース400のデータを分割先のデータベース500にコピーする。
分割終了通知部340は、クエリ処理手段100に対してデータベースの分割終了を通知する。
以下に上記の構成の動作を説明する。
最初に、データコピー処理部300を動作手段として、分割元データベース400中のデータを分割先データベース500a,500bに分割・複製する際の動作を説明する。
図4は、本発明の一実施の形態におけるデータコピー処理部のフローチャートであり、分割元のデータベース中のコピー対象となるデータを分割先のデータベースにコピーする動作を示している。
ステップ101) データコピー処理部300のデータベース作成部310は、分割先のデータベースとなる少なくとも1つ以上のデータベースを作成する。作成するデータベースの数はデータベーススケールアウトのために分割あるいは複製するデータベースの数に応じて作成する。
ステップ102) データコピー部330は、管理情報蓄積部200の振り分けルール変更部260に対して振り分けルール蓄積部240の振り分けルールをaからbへの変更を要求する。これにより、振り分けルール変更部260は、当該ルールを変更する。
ステップ103) データコピー部330は、管理情報蓄積部200のバージョン番号更新(増加)部230に対してバージョン番号蓄積部210のバージョン番号を「1」から「2」への更新(増加)を要求する。これにより、バージョン番号更新(増加)部230は当該バージョン番号を変更する。
ステップ104) 分割開始通知部320は、全てのクエリ処理部100にデータベースの分割開始を通知する。
ステップ105) 予め設定した制限時間内に全てのクエリ処理部100からデータベースの分割開始通知に対する受領確認を受け取ったら、ステップ106に移行し、制限時間内に全てのクエリ処理部100からデータベースの分割開始通知に対する受領確認を受け取れなかった場合はステップ104に戻る。
ステップ106) データコピー部330は、分割元のデータベース400のうち、データに付加されたバージョン番号が管理情報蓄積部200のバージョン番号より小さいデータを分割先のデータベース500aまたは500bにコピーする。
ステップ107) データコピー部330は、管理情報蓄積部200の振り分けルール変更部260に対して管理情報蓄積部200に格納されている振り分けルールbからcへの変更を要求する。これにより、振り分けルール変更部260は当該振り分けルールの更新を行う。
ステップ108) 分割終了通知部340は、全てのクエリ処理部100に第1の(1回目の)データベースの分割開始を通知する。
ステップ109) 分割終了通知部340は、予め設定した制限時間内に全てのクエリ処理部100から第1のデータベースの分割終了通知に対する受領確認を受け取ったら、次のステップに進み、制限時間内に全てのクエリ処理部100から第1のデータベースの分割終了通知に対する受領確認を受け取れなかった場合はステップ108に戻る。
ステップ110) データベースの複製であれば処理を終了し、データベースの分割であれば、次のステップに移行する。
ステップ111) データコピー部330は、管理情報蓄積部200の振り分けルール変更部260に対して、管理情報蓄積部200に格納されている振り分けルールcからdへの変更を要求する。これにより、振り分けルール変更部260は当該振り分けルールの更新を行う。
ステップ112) 分割終了通知部340は、全てのクエリ処理部100に第2の(2回目の)データベースの分割開始を通知する。
ステップ113) 分割終了通知部340は、予め設定した制限時間内に全てのクエリ処理部100から第2のデータベースの分割終了通知に対する受領確認を受け取ったら次のステップに移行し、制限時間内に全てのクエリ処理部100から第2のデータベースの分割終了通知に対する受領確認を受け取れなかった場合はステップ112に戻る。
ステップ114) 分割元のデータベース400を切り離して処理を終了する。
次に、クエリ処理部100がクライアントからクエリを受け取り、クエリを実行して結果を返却する動作を説明する。
図5は、本発明の一実施の形態におけるクエリ処理部のフローチャートであり、クエリ処理部100がクライアントからクエリを受け取り、クエリの種類を解析し、管理情報蓄積部200から取得した振り分けルールに従ってクエリを振り分け、振り分けられたクエリを振り分け先のデータベースに対して実行し、クライアントにクエリの実行結果を返却する動作を示す。
ステップ201) クエリ処理部100は、管理情報蓄積部200のバージョン番号参照部220により管理情報蓄積部200からバージョン番号を取得し、ローカルなキャッシュとしてメモリ(図示せず)に自身がバージョン番号を保持する。
ステップ202) クエリ処理部100は、管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得し、ローカルなキャッシュとしてメモリ(図示せず)に自身が振り分けルールを保持する。
ステップ203) クエリ処理部100は、クアイアントからクエリを受け付けていたらステップ204に移行し、受け付けていなかった場合は当該ステップを繰り返す。
ステップ204) クエリ解析部110は、クライアントから受け付けたクエリの種類を解析する。
ステップ205) クエリ振り分け部120は、メモリ(図示せず)に保持されている振り分けルールに従ってデータベースにクエリを振り分ける。
ステップ206) 分割クエリ実行部130は、振り分けられたクエリを振り分け先のデータベースに対して実行する。
ステップ207) 分割クエリ実行部130は、実行するクエリの種類が挿入クエリ、更新クエリ、または、削除クエリの何れかである場合はステップ208に移行し、クエリの種類が上記のいずれにも該当しない場合はステップ211に移行する。
ステップ208) バージョン番号記録部150は、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに自身が保持するバージョン番号を付加する。
ステップ209) さらに、クエリの種類が削除クエリの場合はステップ210に移行し、それ以外の場合はステップ211に移行する。
ステップ210) 削除フラグ設定部140は、データベース中の削除対象のデータに削除フラグを設定し、ステップ211に移行する。
ステップ211) 分割クエリ実行部130は、クライアントに実行結果を返却する。このとき、削除フラグが実行結果に付与されている場合には、当該実行結果から除外する。
ステップ212) データコピー処理部300からデータベースの分割開始通知を受け取った場合は、ステップ213に移行し、データベースの分割開始通知を受け取っていない場合はステップ216に移行する。
ステップ213) 管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得し、メモリ(図示せず)に格納されている振り分けルールを更新する。
ステップ214) 管理情報蓄積部200のバージョン番号参照部220からバージョン番号を取得し、メモリ(図示せず)に格納されているバージョン番号を更新する。
ステップ215) データコピー処理部300にデータベースの分割開始通知に対する受領確認を通知し、ステップ203に戻る。
ステップ216) データコピー処理部300からデータベースの分割終了通知(第1のデータベースの分割終了通知または第2のデータベースの分割終了通知)を受け取った場合はステップ217に移行し、データベースの分割終了通知を受け取っていない場合はステップ203に戻る。
ステップ217) 管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得し、メモリ(図示せず)に格納されている振り分けルールを更新する。
ステップ218) データコピー処理部300にデータベースの分割終了通知に対する受領確認を通知し、ステップ203に戻る。
≪データベースの分割≫
次に、データベースを分割する際のクエリ処理部100及び管理情報蓄積部200及びデータコピー処理部300の動作を説明する。以下の動作は、請求項1,2,6,7に対応する。
図6は、本発明の一実施の形態におけるデータベース分割時のシーケンスチャートである。なお、以下では、説明の簡単化のためにクエリ処理部100を1つしか記載していないが、複数のクエリ処理部を配置する構成も可能である。また、以下では、データベースを2つに分割する例を示しているが、3つ以上に分割することも可能である。
ステップ301)
(1) 管理情報蓄積部200のバージョン番号蓄積部210がバージョン番号(バージョン番号:1)を、振り分けルール蓄積部240が「参照クエリの場合はデータベース400へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合もデータベース400へクエリを振り分ける」振り分けルール(振り分けルールa)を蓄積しており、分割元のデータベース400のみが存在している。この例を図7に示す。同図は、データベース分割時の初期状態を示したものである。バージョン番号蓄積部210はバージョン番号=1を、振り分けルール蓄積部240は振り分けルール(=a)を蓄積している。より具体的な例を図8に示す。
(2) クエリ処理部100は、起動後に管理情報蓄積部200のバージョン番号参照部220からバージョン番号を取得してローカルなキャッシュとしてメモリ(図示せず)に保持すると共に、管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得して、ローカルなキャッシュとしてメモリ(図示せず)に保持する。クライアントからクエリを受け付けると、メモリ(図示せず)に格納されている振り分けルールに従って振り分け先のデータベース400に対してクエリを実行し、バージョン番号記録部150がクエリ実行によって挿入、更新、または、削除されたデータベース400中のデータにメモリ(図示せず)に格納されているバージョン番号(バージョン番号:1)を付加する。この例を図9に示す。同図は、クエリ処理部100が起動し、管理情報蓄積部200からバージョン番号(=a)と振り分けルール(=a)を取得し、データベース400に対してクエリを実行している様子を示したものである。より具体的な例を図10に示す。
(3) データコピー処理部300のデータベース作成部310は、分割先のデータベースとなるデータベース500a,500bを新規に作成する。この例を図11に示す。同図は、データコピー処理部300が起動し、分割先のデータベースとなるデータベース500aと500bを新規に作成する様子を示したものである。より具体的な例を図12に示す。
ステップ302) 管理情報蓄積部200の振り分けルール変更部260が、振り分けルールを「参照クエリの場合はデータベース400へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は条件Aを満たせばデータベース400、データベース500aへクエリを振り分け、条件Bを満たせばデータベース400、データベース500bへクエリを振り分ける」に変更(振り分けルール:a⇒b)する。この例を図13に示す。
ステップ303) 更に管理情報蓄積部200のバージョン番号更新(増加)部230が、管理情報蓄積部200のバージョン番号蓄積部210のバージョン番号を更新(バージョン番号:1⇒2)する。この例を図13に示す。同図は、データコピー処理部300が管理情報蓄積部200に蓄積されたバージョン番号を1から2へ更新し、管理情報蓄積部200に蓄積された振り分けルールをaからbへ変更する様子を示したものである。この具体例を図14に示す。
ステップ304) データコピー処理部300の分割開始通知部320は、全てのクエリ処理部100にデータベースの分割開始を通知する。この例を図15に示す。同図は、データコピー処理部300が全てのクエリ処理部100に分割開始を通知する様子を示したものである。また、具体的な例を図16に示す。
ステップ305) データコピー処理部300が、全てのクエリ処理部100から制限時間内に分割開始通知に対する受領確認を受け取った場合は、ステップ106に移行する。
ステップ306) データコピー処理部300から分割開始通知を受け取ったクエリ処理部100は、管理情報蓄積部200のバージョン番号参照部220からバージョン番号を取得して、メモリ(図示せず)に保持されているバージョン番号を更新(バージョン番号:1⇒2)すると共に、管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得して、メモリ(図示せず)の振り分けルールを更新(振り分けルール:a⇒b)し、データコピー処理部300にデータベースの分割開始通知に対する受領確認を通知すると共に、更新後のバージョン番号(バージョン番号:2)及び更新後の振り分けルール(振り分けルール:b)に従ってクエリを実行する。クエリの種類が更新または、削除の場合、更新または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベースと分割先のデータベースのうちの条件を満たす一部のデータベースで当該クエリをそれぞれ実行する。一方、更新または、削除対象のデータが分割先のデータベース中に存在しなければ、当該クエリを分割元データベース400で実行してクエリ実行の結果、更新または、削除されたデータを分割先のデータベース500のうちの条件を満たす一部のデータベース(データベース500aまたは500b)にコピーする。ここで「条件」とは、データベースに格納するデータの値(例えば、ユーザID)が整数値だとして、末尾が奇数か偶数かで振り分けたり、データの値が住所の場合、「東日本」か「西日本」か、により振り分けたり、その後、更に「東日本」の中の「北海道」か「東北」か「関東」か「甲信越」で振り分けることを指す。また、データの値を元に何らかのハッシュ関数を適用した結果に基づいてデータを振り分けることなども考えられる。
ステップ307の例を図12に示す。同図は、分割開始の通知を受けたクエリ処理部100が管理情報蓄積部200からバージョン番号(=2)と振り分けルール(=b)を取得し、データベース400、データベース500a,500bに対してクエリを実行し、データコピー処理部300に分割開始受領確認を通知する様子を示したものである。また、具体的な例を図18に示す。
ステップ307) データコピー処理部300は、全てのクエリ処理部100からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース400中のデータのうち、データに付加されているバージョン番号が自身のメモリ(図示せず)に保持するバージョン番号(バージョン番号:2)よりも小さいデータを自身のメモリ(図示せず)に保持されている振り分けルール(振り分けルール:b)に従って分割先のデータベースのうち条件を満たす一部のデータベースにコピー(条件Aに適合したデータはデータベース500a)にコピーし、条件Bに適合したデータはデータベース500bにコピーする。この例を図19に示す。同図は、クエリ処理部100がデータベース400、データベース500a,500bに対してクエリを実行するのと並行して、データコピー処理部300が分割元のデータベース400から分割先のデータベース500a,500bへデータをコピーする様子を示したものである。また、具体的な例を図20に示す。
ステップ308) データコピー処理部300は、データのコピー完了後に管理情報蓄積部200の振り分けルール変更部260から振り分けルール「参照クエリの場合は条件Aを満たせばデータベース500aへクエリを振り分け、条件Bを満たせばデータベース500bへクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は、条件Aを満たせばデータベース400とデータベース500aへクエリを振り分け、条件Bを満たせばデータベース400とデータベース500bへクエリを振り分ける」を取得し、メモリ(図示せず)内の振り分けルールを当該取得した振り分けルールに変更(振り分けルール:b⇒c)する。この例を図21に示す。同図は、データのコピーが終了したデータコピー手段が管理情報蓄積部200に蓄積された振り分けルールをbからcへ更新する様子を示したものである。また、図22に具体例を示す。
ステップ309) データコピー処理部300は、第1の分割終了通知部340により全てのクエリ処理部100に第1のデータベースの分割終了を通知する。この例を図23に示す。同図は、データコピー処理部300が全てのクエリ処理部100に第1の分割終了を通知する様子を示したものである。また、その具体例を図24に示す。
ステップ310) データコピー処理部300から第1のデータベースの分割終了通知を受け取ったクエリ処理部100は、管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得して、自身のメモリ(図示せず)に格納されている振り分けルールを更新(振り分けルール:b⇒c)し、データコピー処理部300に第1の(1回目の)データベースの分割終了通知に対する受領確認を通知すると共に、自身のメモリ(図示せず)に保持するバージョン番号(バージョン番号:2)及び更新後の振り分けルール(振り分けルール:c)に従ってクエリを実行する。この例を図25に示す。同図は、第1の分割終了の通知を受けたクエリ処理部100が管理情報蓄積部200から振り分けルール(=c)を取得し、データベース400、データベース500a,500bに対してクエリを実行し、データコピー処理部300に第1の分割終了受領確認を通知する様子を示したものでる。また、その具体例を図26に示す。
ステップ311) データコピー処理部300は、すべてのクエリ処理部100から第1のデータベースの分割終了通知に対する受領確認を受け取った後で、管理情報蓄積部200の振り分けルール変更部260の振り分けルールを「参照クエリの場合は条件Aを満たせばデータベース500aへクエリを振り分け、条件Bを満たせばデータベース500bへクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合も条件Aを満たせばデータベース500aへクエリを振り分け、条件Bを満たせばデータベース500bへクエリを振り分ける」に変更(振り分けルール:c⇒d)する。この例を図27に示す。同図は、データコピー処理部300が管理情報蓄積部200に蓄積された振り分けルールをcからdへ更新する様子を示したものである。また、この具体例を図28に示す。
ステップ312) データコピー処理部300が分割終了通知部340より全てのクエリ処理部100に第2の(2回目の)データベースの分割終了を通知する。この例を図29に示す。同図は、データコピー処理部300が全てのクエリ処理部100に第2のデーベースの分割終了を通知する様子を示したものである。また、疎の具体例を図30に示す。
ステップ313) データコピー処理部300から第2のデータベースの分割終了通知を受け取ったクエリ処理部100は、管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得して、自身のメモリ(図示せず)に保持されている振り分けルールを更新(振り分けルール:c⇒d)し、データコピー処理部300に第2のデータベースの分割終了通知に対する受領確認を通知すると共に、自身のメモリ(図示せず)に保持されているバージョン番号(バージョン番号:2)及び更新後の振り分けルール(振り分けルール:d)に従ってクエリを実行する。この例を図31に示す。同図は、第2の分割終了の通知を受けたクエリ処理部100が管理情報蓄積部200から振り分けルール(=d)を取得し、データベース500a,500bに対してクエリを実行し、データコピー処理部300に第2の分割終了受領確認を通知する様子を示したものである。また、その具体例を図32に示す。
ステップ314) データコピー処理部300は、全てのクエリ処理部100から第2のデータベースの分割終了通知に対する受領確認を受け取った後で、分割元のデータベース400を切り離し、処理を終了する。この例を図33に示し、また、その具体例を図34に示す。
≪データベースの複製≫
次に、データベースを複製する際のデータコピー処理部300及びクエリ処理部100及び管理情報蓄積部200の処理について説明する。
以下の処理は請求項3,4,9,10に対応する。
図35は、本発明の一実施の形態におけるデータベース複製時のシーケンスチャートである。図36〜図45は、データコピー処理部300及びクエリ処理部100及び管理情報蓄積部200がデータベースを複製する際の動作の例を示す。
以下の処理は、請求項1,4,5に対応する。
なお、図35では、説明の簡単化のためにクエリ処理部100を1つしか記載していないが、複数のクエリ処理部を配置する構成も可能である。また、同図中では、2つのデータベースに複製する例を示しているが、3つ以上の複製を作成することも可能である。
ステップ401)
(1)管理情報蓄積部200がバージョン番号(バージョン番号:1)と、「参照クエリの場合はデータベース−A(データベース400)へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合もデータベース−Aへクエリを振り分ける」振り分けルール(振り分けルール:a)を蓄積しており、分割元のデータベース400のみが存在している。この例を図36に示す。同図は、データベース複製時の初期状態を示したものである。管理情報蓄積部200はバージョン番号(=1)と振り分けルール(=a)を蓄積している。
(2)クエリ処理部100は起動後に管理情報蓄積部200のバージョン番号参照部220からバージョン番号を取得してローカルなキャッシュとして自身のメモリ(図示せず)に当該バージョン番号(バージョン番号:1)を保持すると共に、管理情報蓄積部200の振り分けルール参照部250から振り分けルール(振り分けルール:a)を取得して、ローカルなキャッシュとして自身のメモリ(図示せず)に保持する。
(3)分割クエリ実行部130は、クライアントからクエリを受け付けると、メモリ(図示せず)に格納されている振り分けルールに従って振り分け先のデータベース400に対してクエリを実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータにバージョン番号記録部150によりメモリ(図示せず)に保持されているバージョン番号(バージョン番号:1)を付加する。この例を図37に示す。クエリ処理部100が起動し、管理情報蓄積部200からバージョン番号(=1)と振り分けルール(=a)を取得し、データベース400に対してクエリを実行している様子を示したものである。
(4)データコピー処理部300のデータベース作成部310は、分割先のデータベースとなるデータベース500a、500bを新規に作成する。この例を図38に示す。同図は、データコピー処理部300が起動し、分割先のデータベースとなるデータベース500a,500bを新規に作成する様子を示したものである。
ステップ402) データコピー処理部300が管理情報蓄積部200に対して振り分けルールを『参照クエリの場合はデータベース−A(データベース400)へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は全てのデータベース400,500a,500bへクエリを振り分ける』に変更する要求を行う。これにより、振り分けルール変更部260は、振り分けルール蓄積部240の振り分けルールを変更(振り分けルール:a⇒b')する。
ステップ403) 更に、データコピー処理部300は管理情報蓄積部200に対してバージョン番号のバージョン番号(バージョン番号:1⇒2)の更新を要求すると、更新(増加)部230は、管理情報蓄積部200のバージョン番号を更新(バージョン番号:1⇒2)する。この例を図39に示す。同図は、データコピー処理部300からバージョン番号変更要求があると、管理情報蓄積部200は、バージョン番号蓄積部210に蓄積されたバージョン番号を1から2へ更新し、振り分けルール蓄積部240に蓄積された振り分けルールをaからb'へ更新する様子を示したものである。
ステップ404) データコピー処理部300の分割開始通知部320は、全てのクエリ処理部100にデータベースの分割開始を通知する。この例を図40に示す。同図は、データコピー処理部300が全てのクエリ処理部100に分割開始を通知する様子を示したものである。
ステップ405) データコピー処理部200からデータベースの分割開始通知を受け取ったクエリ処理部100は、管理情報蓄積部200のバージョン番号参照部220からバージョン番号を取得して自身のメモリ(図示せず)に保持するバージョン番号を更新(バージョン番号:1⇒2)すると共に、管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得して、メモリ(図示せず)に格納されている振り分けルールを更新(振り分けルール:a⇒b')し、データコピー処理部300にデータベース分割開始通知に対する受領確認を通知する。
ステップ406) さらに、クエリ処理部100は、更新後のバージョン番号(バージョン番号:2)及び更新後の振り分けルール(振り分けルール:b')に従ってクエリを実行する。クエリの種類が更新、または、削除の場合、更新、または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベースと全ての分割先のデータベースで当該クエリをぞれぞれ実行する。一方、更新、または、削除対象のデータが分割先のデータベース中に存在しなければ、当該クエリを分割元のデータベース400で実行してクエリ実行の結果、更新または削除されたデータの全ての分割先のデータベース500にコピーする。この例を図41に示す。同図は、分割開始の通知を受けたクエリ処理部100が管理情報蓄積部200からバージョン番号(=2)と振り分けルール(=b')を取得し、データベース400,500a,500bに対してクエリを実行し、データコピー処理部300に分割開始受領確認を通知する様子を示したものである。
ステップ407) データコピー処理部300は、全てのクエリ処理部100からデータベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース400中のデータのうち、データに付加されているバージョン番号が自身のメモリ(図示せず)に格納されているバージョン番号(バージョン番号:2)よりも小さいデータを自身のメモリ(図示せず)に格納されている振り分けルール(振り分けルール:b')に従って全ての分割先のデータベース500a,500bにコピーする。この例を図42に示す。同図は、クエリ処理部100がデータベース400,500a,500bに対してクエリを実行するのと並行して、データコピー処理部300が分割元のデータベース400から分割先のデータベース500a,500bへデータをコピーする様子を示したものである。
ステップ408) データコピー処理部300は、データのコピー完了後に、管理情報蓄積部200の振り分けルール変更部260に管理情報蓄積部200の振り分けルールを「参照クエリの場合は何れか1つのデータベース(データベース400,500a,500bのいずれか)へクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は全てのデータベース400,500a,500bへクエリを振り分ける」振り分けルールに変更(振り分けルール:b'⇒c')する。この例を図43に示す。同図は、データのコピーが終了したデータコピー手段が管理情報蓄積部200に蓄積された振り分けルールをb'からc'へ更新する様子を示したものである。
ステップ409) データコピー処理部300の分割終了通知部340は、全てのクエリ処理部100に第1の(1回目の)データベースの分割終了を通知する。この例を図44に示す。同図は、データコピー処理部300が全てのクエリ処理部100に第1データベースの分割終了を通知する様子を示したものである。
ステップ410) データコピー処理部300から第1のベースの分割終了通知を受け取ったクエリ処理部100は、管理情報蓄積部200の振り分けルール参照部250から振り分けルールを取得して、自身が保持するメモリ(図示せず)に格納されている振り分けルールを更新(振り分けルール:b'⇒c')し、データコピー処理部300に第1のデータベースの分割終了通知に対する受領確認を通知する。
ステップ411) クエリ処理部100は、自身がメモリ(図示せず)に保持するバージョン番号(バージョン番号:2)及び更新後の振り分けルール(振り分けルール:c')に従ってクエリを実行する。この例を図45に示す。同図は、第1のデータベースの分割終了の通知を受けたクエリ処理部100が管理情報蓄積部200に対してクエリを実行し、データコピー処理部300に第1の分割終了受領確認を通知し、データベースの複製が完了したことを示したものである。
ステップ412) データコピー処理部300は、全てのクエリ処理部100から第1のデータベースの分割終了通知に対する受領確認を受け取った後で処理を終了する。
なお、上記の例に限定されることなく、図46に示すように、バージョン番号と振り分けルールの設定により、データベースの分割の多段化やN分割も可能となる。同図の例では、管理情報蓄積部200に格納されている振り分けルールにより、「東日本」のデータベース400bから4つの分割先のデータベース500a,500b,500c,500dに分割されている。
また、本発明では、図47(a)に示すように、データをコピーした後に、分割元データベースを残すことにより、同図(b)のように、分割中に片方のクエリが失敗した場合でも、分割元データベースだけを有効として運用を継続し、分割プロセスをやり直すことでリカバリが可能である。
さらに、本発明では、図48に示すように、各クエリ処理部100がローカルなキャッシュとして、バージョン番号と振り分けルールをメモリ(図示せず)に保持しておき、それを使用することにより、管理情報蓄積部200へのデータ参照がボトルネックとなって処理が遅延することを防いでいる。
上記のクエリ処理部100、管理情報蓄積部200、データコピー処理部300からなる装置の動作をプログラムとして構築し、データベーススケールアウト装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
また、構築されたプログラムをハードディスクや、フレキシブルディスク・CD−ROM等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
100 クエリ処理手段、クエリ処理部
110 クエリ解析手段、クエリ解析部
120 クエリ振り分け手段、クエリ振り分け部
130 分割クエリ実行手段、分割クエリ実行部
140 削除フラグ設定手段、削除フラグ設定部
150 バージョン番号記録手段、バージョン番号記録部
200 管理情報蓄積手段、管理情報蓄積部
210 バージョン番号蓄積手段、バージョン番号蓄積部
220 バージョン番号参照手段、バージョン番号参照部
230 バージョン番号更新(増加)手段、バージョン番号更新(増加)部
240 振り分けルール蓄積手段、振り分けルール蓄積部
250 振り分けルール参照手段、振り分けルール参照部
260 振り分けルール変更手段、振り分けルール変更部
300 データコピー処理手段、データコピー処理部
310 データベース作成手段、データベース作成部
320 分割開始通知手段、分割開始通知部
330 データコピー手段、データコピー部
340 分割終了通知手段、分割終了通知部
400 分割元データベース
500 分割先データベース

Claims (12)

  1. 少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
    クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
    分割元のデータベースを1つ以上の分割先に分割する際に、
    前記データコピー手段は、
    分割先のデータベースとなる少なくとも1つ以上のデータベースを作成し、前記管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールbに変更し、
    前記管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させ、
    全てのクエリ処理手段にデータベースの分割開始通知を送信し、
    前記全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、前記分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを前記振り分けルールbに従って、前記分割先のデータベースのうちの条件を満たす一部のデータベースにコピーし、
    コピー完了後、前記管理情報蓄積手段に蓄積されている前記振り分けルールbを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールcに変更させ、
    前記全てのクエリ処理手段に第1のデータベース分割終了通知を送信し、
    前記全てのクエリ処理手段から前記第1のデータベース分割終了通知に対する受領確認を受け取った後で、前記管理情報蓄積手段に蓄積されている前記振り分けルールcを「分割先データベースのみにクエリを振り分ける」振り分けルールdに変更させ、
    前記全てのクエリ処理手段に第2のデータベース分割終了通知を送信し、
    前記全てのクエリ処理手段から前記第2のデータベース分割終了通知に対する受領確認を受け取った後で、前記分割元のデータベースを切り離す
    ことを特徴とするデータベーススケールアウト方法。
  2. 少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
    クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
    分割元のデータベースを1つ以上の分割先に分割する際に、
    前記クエリ処理手段は、
    起動時に前記管理情報蓄積手段からバージョン番号を取得して、第1の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第2の記憶手段に保持し、
    少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析し、前記第2の記憶手段に保持している前記振り分けルールに従って該クエリを振り分け、
    振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
    前記データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、前記第1の記憶手段に保持している前記バージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第2の記憶手段に保持している前記振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
    以後、前記データコピー手段からデータベースの分割が終了した旨の第1のデータベース分割終了通知を受け取るまでの間は、前記第2の記憶手段に保持している前記振り分けルールに従って、
    参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新、または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
    前記更新、または、削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新、または、削除)された全てのデータを分割先のデータベースにコピーし、
    挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
    前記データコピー手段から前記第1のデータベース分割終了通知を受け取ると、
    仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第2の記憶手段に保持している振り分けルールを更新し、
    前記データコピー手段に前記第1のデータベース分割終了通知に対する受領確認を通知し、
    前記データコピー手段が前記第1のデータベース分割終了通知を取得後に振り分けルールを変更した旨の第2のデータベース分割終了通知を受け取るまでの間、前記第2の記憶手段に保持している振り分けルールに従って、
    参照クエリの場合は分割先のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新、または、削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、
    前記更新、または、削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新、または、削除)された全てのデータを分割先のデータベースにコピーし、
    挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
    前記データコピー手段から前記第2のデータベース分割終了通知を受け取ると、
    仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第2の記憶手段に保持している振り分けルールを更新し、
    前記データコピー手段に前記第2のデータベース分割終了通知に対する受領確認を通知し、
    以後、前記第2の記憶手段に保持している前記振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持しているバージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、該クエリの実行結果を前記クライアントに返却する
    ことを特徴とするデータベーススケールアウト方法。
  3. 少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
    クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
    分割元のデータベース中のコピー対象となるデータを1つ以上の分割先のデータベースにコピーする際に、
    前記データコピー手段は、
    分割先のデータベースとなる少なくとも1つ以上のデータベースを作成し、前記管理情報蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールb'に変更し、
    前記管理情報蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させ、
    全てのクエリ処理手段にデータベースの分割開始通知を送信し、
    前記全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベースにコピーし、
    コピー完了後、前記管理情報蓄積手段の前記振り分けルールb'を「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか1つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールc'に変更し、前記全てのクエリ処理手段に第1のデータベースの分割終了通知を送信し、
    前記全てのクエリ処理手段から前記第1のデータベースの分割終了通知に対する受領確認を受け取る
    ことを特徴とするデータベーススケールアウト方法。
  4. 少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト方法であって、
    クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー手段とからなるシステムにおいて、
    分割元のデータベース中のコピー対象となるデータを1つ以上の分割先のデータベースにコピーする際に、
    前記クエリ処理手段は、
    起動時に前記管理情報蓄積手段からバージョン番号を取得して、第1の記憶手段に保持すると共に、該管理情報蓄積手段から振り分けルールを取得して、第2の記憶手段に保持し、
    少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析し、前記第2の記憶手段に保持している前記振り分けルールに従って該クエリを振り分け、
    振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
    前記データコピー手段からデータベース分割開始通知を受け取ると、仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、前記第1の記憶手段に保持している前記バージョン番号を更新すると共に、該管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第2の記憶手段に保持している前記振り分けルールを更新し、該データコピー手段に該データベース分割開始通知に対する受領確認を通知し、
    以後、前記データコピー手段からデータベースの分割が終了した旨の第1のデータベース分割終了通知を受け取るまでの間は、前記第2の記憶手段に保持している前記振り分けルールに従って、
    参照クエリの場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリは分割元のデーベース及び全ての分割先のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリの場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースにクエリを振り分けて実行し、
    前記更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新または削除)された全てのデータを全ての分割先のデータベースにコピーし、
    挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却し、
    前記データコピー手段から前記第1のデータベース分割終了通知を受け取ると、
    仕掛かり中のクエリ実行処理完了後、前記管理情報蓄積手段に蓄積されている最新の振り分けルールを取得して前記第2の記憶手段に保持している振り分けルールを更新し、
    前記データコピー手段に前記第1のデータベース分割終了通知に対する受領確認を通知し、
    以後、前記第2の記憶手段に保持している前記振り分けルールに従って、参照クエリは分割元のデータベースまたは分割先のデータベースのうちのいずれか1つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分けて実行し、
    挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持する前記バージョン番号を付加し、削除クエリの場合は加えて削除フラグを該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却する
    ことを特徴とするデータベーススケールアウト方法。
  5. 少なくとも1つ以上のクライアントとデータベースとが存在する分散コンピューティング環境上におけるデータベーススケールアウト装置であって、
    クライアントからのクエリを受け付けてデータベースに対するクエリ実行結果を該クライアントに返却する少なくとも1つ以上のクエリ処理手段と、データベースの分割及びクエリの振り分けに必要な管理情報を蓄積する管理情報蓄積手段と、分割元のデータベース中のコピー対象となるデータを少なくとも1つ以上の分割先のデータベースにコピーするデータコピー処理手段と、を有し、
    前記管理情報蓄積手段は、
    データベース中のデータの世代管理に使用するバージョン番号を蓄積するバージョン番号蓄積手段と、
    前記バージョン番号蓄積手段に蓄積している前記バージョン番号を返却するバージョン番号参照手段と、
    前記バージョン番号蓄積手段に蓄積している前記バージョン番号を更新する(増加)するバージョン番号更新(増加)手段と、
    データベース分割のための振り分けルールを蓄積する振り分けルール蓄積手段と、
    前記振り分けルール蓄積手段に蓄積している前記振り分けルールを参照して要求元に返却する振り分けルール参照手段と、
    前記振り分けルール蓄積手段に蓄積している前記振り分けルールを更新する振り分けルール変更手段と、
    を有し、
    前記クエリ処理手段は、
    クライアントから受け付けクエリを解析するクエリ解析手段と、
    前記振り分けルールに従ってクエリを振り分けるクエリ振り分け手段と、
    振り分けられたデータベースに対してクエリを実行する分割クエリ実行手段と、
    前記分割クエリ実行手段により削除クエリが実行された場合に、前記データベース中の削除対象データを物理的に削除せずに削除フラグを設定する削除フラグ設定手段と、
    前記分割クエリ実行手段により挿入または更新または削除されたデータベース中のデータにバージョン番号を付与するバージョン番号記録手段と、
    を有し、
    前記データコピー処理手段は、
    少なくとも1つ以上の分割先のデータベースを新たに作成するデータベース作成手段と、
    前記分散コンピューティング環境上に存在する全てのクエリ処理手段にデータベースの分割開始を通知する分割開始通知手段と、
    分割元のデータベースのデータを分割先のデータベースへコピーするデータコピー手段と、
    前記クエリ処理手段にデータベースの分割終了を通知する分割終了通知手段と、
    を有する
    ことを特徴とするデータベーススケールアウト装置。
  6. 前記データコピー処理手段の前記データコピー手段は、
    前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールbに変更させる手段と、
    前記管理情報蓄積手段の前記バージョン番号蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させ、前記分割開始通知手段に、全てのクエリ処理手段に対し、データベースの分割開始通知の送信を指示する手段と、
    前記全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、前記分割元のデータベースのうち、データに付加されているバージョン番号が、更新されたバージョン番号よりも小さいデータを前記振り分けルールbに従って、前記分割先のデータベースのうちの条件を満たす一部のデータベースにコピーする手段と、
    コピー完了後、前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている前記振り分けルールbを、「参照クエリの場合は分割先のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分ける」振り分けルールcに変更させ、前記分割終了通知手段に、前記全てのクエリ処理手段に第1のデータベース分割終了通知を送信させる手段と、
    前記全てのクエリ処理手段から前記第1のデータベース分割終了通知に対する受領確認を受け取った後で、前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている前記振り分けルールcを「分割先データベースのみにクエリを振り分ける」振り分けルールdに変更させ、前記分割終了通知手段に前記全てのクエリ処理手段に対して第2のデータベース分割終了通知を送信させる手段と、
    前記全てのクエリ処理手段から前記第2のデータベース分割終了通知に対する受領確認を受け取った後で、前記分割元のデータベースを切り離す手段と、
    を含む請求項5記載のデータベーススケールアウト装置。
  7. 前記クエリ処理手段は、
    起動時に前記管理情報蓄積手段から前記バージョン番号を取得して、第1の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を受け取ると、前記分割クエリ実行手段による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、該第1の記憶手段に保持している前記バージョン番号を更新するバージョン番号更新手段と、
    起動時に前記管理情報蓄積手段から前記振り分けルールを取得して、第2の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に前記管理情報蓄積手段から前記振り分けルールを取得して、該第2の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
    前記データコピー処理手段から前記データベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段に送信する送受信手段と、
    を更に有し、
    前記クエリ解析手段は、少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリまたは、削除クエリのいずれであるかを解析する手段を有し、
    前記クエリ振り分け手段は、前記第2の記憶手段に保持している前記振り分けルールに従って該クエリを振り分ける手段を有し、
    前記分割クエリ実行手段は、
    前記クエリ振り分け手段により振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリの実行結果を前記クライアントに返却する手段と、
    前記データコピー処理手段から前記送受信手段を介して第1のデータベース分割終了通知を受け取るまでの間は、前記第2の記憶手段に保持している前記振り分けルールに従って、参照クエリ実行の場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新または削除)された全てのデータを分割先のデータベースにコピーする手段と、
    前記データコピー処理手段から前記送受信手段を介して前記第1のデータベース分割終了通知を取得後に、該データコピー処理手段から振り分けルールを変更した旨の第2のデータベース分割終了通知を受け取るまでの間、前記第2の記憶手段に保持している前記振り分けルールに従って、参照クエリ実行の場合は分割先のデータベースのみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースのうちの条件を満たす一部のデータベースにクエリを振り分けて実行し、該更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新または削除)された全てのデータを分割先のデータベースにコピーする手段と、
    前記送受信手段を介して、前記前記データコピー処理手段に前記第2のデータベース分割終了通知に対する受領確認を通知した後、前記第2の記憶手段に保持している前記振り分けルールに従って、全てのクエリを分割先のデータベースのみに振り分けて実行する手段と、を有する
    請求項5記載のデータベーススケールアウト装置。
  8. 前記分割クエリ実行手段は、
    前記クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに、前記バージョン番号記録手段により、前記第1の記憶手段に保持している前記バージョン番号が付加されたデータをクエリの実行結果としてクライアントに返却し、削除クエリの場合は加えて削除フラグ設定手段により該データベース中の削除対象データに削除フラグが設定されたデータをクエリの実行結果から除外して前記クライアントに返却する手段を含む、
    請求項7記載のデータベーススケールアウト装置。
  9. 前記データコピー処理手段の前記データコピー手段は、
    前記管理情報蓄積手段の前記振り分けルール蓄積手段に蓄積されている「分割元のデータベースのみにクエリを振り分ける」振り分けルールaから「参照クエリの場合は分割元のデータベースのみにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールb'に変更させる手段と、
    前記管理情報蓄積手段の前記バージョン番号蓄積手段に蓄積されているバージョン番号をインクリメンタルな値に更新(増加)させる手段と、
    前記分割通知開始手段を介して、全てのクエリ処理手段にデータベースの分割開始通知を送信し、該全てのクエリ処理手段から前記データベースの分割開始通知に対する受領確認を受け取った後で、分割元のデータベース中のデータのうち、データに付加されているバージョン番号が更新したバージョン番号よりも小さいデータを全ての分割先のデータベースにコピーする手段と、
    コピー完了後、前記管理情報蓄積手段の前記振り分けルールbを「参照クエリの場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか1つのデータベースにクエリを振り分け、挿入クエリ、更新クエリ、または、削除クエリの場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分ける」振り分けルールc'に変更し、前記分割終了通知手段を介して、前記全てのクエリ処理手段に第1のデータベースの分割終了通知を送信し、該全てのクエリ処理手段から前記第1のデータベースの分割終了通知に対する受領確認を受け取る手段と、
    を有する請求項5記載のデータベーススケールアウト装置。
  10. 前記クエリ処理手段は、
    起動時に前記管理情報蓄積手段から前記バージョン番号を取得して、第1の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を受け取ると、前記分割クエリ実行手段による仕掛かり中のクエリ実行処理完了後、該管理情報蓄積手段に蓄積されている最新のバージョン番号を取得して、該第1の記憶手段に保持している前記バージョン番号を更新するバージョン番号更新手段と、
    起動時に前記管理情報蓄積手段から前記振り分けルールを取得して、第2の記憶手段に保持する、または、前記データコピー処理手段からデータベース分割開始通知を取得し、仕掛かり中のクエリ実行処理完了後に前記管理情報蓄積手段から前記振り分けルールを取得して、該第2の記憶手段に保持している振り分けルールを更新する振り分けルール更新手段と、
    前記データコピー処理手段から前記データベース分割終了通知を受信し、該データベース分割開始通知に対する受領確認の通知を該データコピー処理手段に送信する送受信手段と、
    を更に有し、
    前記クエリ解析手段は、少なくとも1つ以上のクライアントからクエリを受け付けると、該クエリの種類が参照クエリ、更新クエリ、または、削除クエリのいずれであるかを解析する手段を有し、
    前記クエリ振り分け手段は、前記第2の記憶手段に保持している前記振り分けルールに従って該クエリを振り分ける手段を有し、
    前記分割クエリ実行手段は、
    振り分けられたクエリを振り分け先のデータベースに対して実行し、クエリ実行によって挿入、更新、または、削除されたデータベース中のデータに前記第1の記憶手段に保持している前記バージョン番号を付加し、削除クエリの場合は加えて該データベース中の削除対象データに削除フラグを設定し、クエリの実行結果を前記クライアントに返却する手段と、
    前記送受信手段を介して、前記データコピー処理手段からデータベース分割開始通知を受け取り、前記振り分けルール更新手段による振り分けルールを更新が行われ、該データコピー処理手段に該送受信手段を介して該データベース分割開始通知に対する受領確認を通知した後に、前記データコピー処理手段から第1のデータベース分割終了通知を受け取るまでの間は、前記第2の記憶手段に保持されている前記振り分けルールに従って、参照クエリ実行の場合は分割元のデータベースのみにクエリを振り分けて実行し、挿入クエリ実行の場合は分割元のデーベース及び全ての分割先のデータベースにクエリを振り分けて実行し、更新クエリ及び削除クエリ実行の場合は、更新または削除対象のデータが分割先のデータベース中に存在すれば、分割元のデータベース及び分割先のデータベースにクエリを振り分けて実行する手段と、
    前記更新または削除対象のデータが前記分割先のデータベース中に存在しなければ、分割元のデータベースだけにクエリを振り分けて実行し、該分割元のデータベースに対するクエリ実行の結果、変更(更新または削除)された全てのデータを全ての分割先のデータベースにコピーする手段と、
    前記データコピー処理手段に該データコピー処理手段から取得した前記第1のデータベース分割終了通知に対する受領確認を通知した後に、前記第2の記憶手段に保持している前記振り分けルールに従って、参照クエリ実行の場合は分割元のデータベースまたは分割先のデータベースのうちのいずれか1つのデータベースにクエリを振り分けて実行し、挿入クエリ、更新クエリ、または、削除クエリ実行の場合は分割元のデータベース及び全ての分割先のデータベースにクエリを振り分けて実行する手段と、
    を有する請求項5記載のデータベーススケールアウト装置。
  11. 前記分割クエリ実行手段は、
    前記挿入クエリ、更新クエリ、または、削除クエリの実行により挿入、更新、または、削除されたデータベース中のデータに、前記バージョン番号記録手段により前記バージョン番号が付与されたデータをクエリの実行結果としてクライアントに返却し、削除クエリの場合は削除フラグ設定手段により削除フラグが設定されたデータをクエリの実行結果から除外して前記クライアントに返却する手段を含む、
    請求項10記載のデータベーススケールアウト装置。
  12. 請求項5乃至11の何れか1項記載のデータベーススケールアウト装置を構成する各手段としてコンピュータを機能させるためのデータベーススケールアウトプログラム。
JP2009102049A 2009-04-20 2009-04-20 データベーススケールアウト方法及び装置及びプログラム Expired - Fee Related JP5191434B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009102049A JP5191434B2 (ja) 2009-04-20 2009-04-20 データベーススケールアウト方法及び装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009102049A JP5191434B2 (ja) 2009-04-20 2009-04-20 データベーススケールアウト方法及び装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2010250741A JP2010250741A (ja) 2010-11-04
JP5191434B2 true JP5191434B2 (ja) 2013-05-08

Family

ID=43312965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009102049A Expired - Fee Related JP5191434B2 (ja) 2009-04-20 2009-04-20 データベーススケールアウト方法及び装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5191434B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6426634B2 (ja) * 2016-01-27 2018-11-21 日本電信電話株式会社 データ操作方法とデータ操作方法プログラム

Also Published As

Publication number Publication date
JP2010250741A (ja) 2010-11-04

Similar Documents

Publication Publication Date Title
JP5433074B2 (ja) ストレージクラスタを指定可能な複製されたコンテンツのための非同期的分散オブジェクトアップロード
US10942812B2 (en) System and method for building a point-in-time snapshot of an eventually-consistent data store
JP5671615B2 (ja) マップリデュース即時分散ファイルシステム
US10831720B2 (en) Cloud storage distributed file system
JP7171757B2 (ja) ブロックストレージシステムのための分散されたレプリカ
US20190370362A1 (en) Multi-protocol cloud storage for big data and analytics
US10817498B2 (en) Distributed transactions in cloud storage with hierarchical namespace
KR101453425B1 (ko) 메타데이터 서버 및 메타데이터 관리 방법
US9374395B2 (en) Parallel upload and download of large files using bittorrent
WO2018154698A1 (ja) ファイルストレージ、オブジェクトストレージ、およびストレージシステム
US9330107B1 (en) System and method for storing metadata for a file in a distributed storage system
Dwivedi et al. Analytical review on Hadoop Distributed file system
KR20100048130A (ko) 메타데이터 클러스터 기반의 분산형 스토리지 시스템 및 그동작 방법
JP6196389B2 (ja) 分散型ディザスタリカバリファイル同期サーバシステム
US11461201B2 (en) Cloud architecture for replicated data services
CN114490509A (zh) 跟踪改变数据捕获日志历史
US10521449B1 (en) Cross-region replication architecture
JP5191434B2 (ja) データベーススケールアウト方法及び装置及びプログラム
KR101748913B1 (ko) 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템
Dobos et al. A comparative evaluation of NoSQL database systems
Kumari et al. Enhancing replica synchronization in hadoop distributed file system
CN111562936B (zh) 基于Openstack-Swift的对象历史版本管理方法和装置
Johnson et al. Big data processing using Hadoop MapReduce programming model
JP5432959B2 (ja) データ保持システム、データ保持装置及びデータ保持方法
Koschel et al. Architecture of Large-Scale Systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130129

R150 Certificate of patent or registration of utility model

Ref document number: 5191434

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160208

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees