JP5425448B2 - データベース・システム、サーバ、更新方法およびプログラム - Google Patents

データベース・システム、サーバ、更新方法およびプログラム Download PDF

Info

Publication number
JP5425448B2
JP5425448B2 JP2008302250A JP2008302250A JP5425448B2 JP 5425448 B2 JP5425448 B2 JP 5425448B2 JP 2008302250 A JP2008302250 A JP 2008302250A JP 2008302250 A JP2008302250 A JP 2008302250A JP 5425448 B2 JP5425448 B2 JP 5425448B2
Authority
JP
Japan
Prior art keywords
update
server
partition
database
log
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
JP2008302250A
Other languages
English (en)
Other versions
JP2010128752A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008302250A priority Critical patent/JP5425448B2/ja
Publication of JP2010128752A publication Critical patent/JP2010128752A/ja
Application granted granted Critical
Publication of JP5425448B2 publication Critical patent/JP5425448B2/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

本発明は、データベース技術に関し、より詳細には、データベースに対する複数の更新要求を効率的に実行するためのデータベース・システム、サーバ、更新方法およびプログラムに関する。
近年、データベース・システムの大規模化に伴い、膨大な量のトランザクションを効率的かつ高速に処理し、高い信頼性、可用性および耐障害性にてデータ管理することに対する要望が高まっている。
トランザクションの効率化に関連して、データベースに対する更新時に、要求された更新の内容を一旦保存し、複数の更新をまとめて一度にデータベースに送信することで、スループットを改善する手法が知られている。これは、バッチ更新として参照され、ネットワーク・トラフィックを軽減し、類似の更新要求の処理の効率化、およびデータベースにおけるディスクの書き込みの最適化を図ることができる。
上記バッチ更新は、通常は、トランザクション内のリクエストをまとめて送信する際に利用される。複数の更新要求をまとめて送信することによって、ボトルネックとなるデータベース処理速度を改善し、トランザクション全体のスループットを向上させることができる。しかしながら、バッチ更新では、一定数の更新要求をコミットできる状態となるまでの待機時間が生じ、レスポンスタイムが低下する。
同様にトランザクションの効率化に関連して、メインメモリ上にレプリカを生成する技術が知られている。例えば、非特許文献1は、送信側のローカルディスクおよびレプリケーション先のリモートマシンのメインメモリにトランザクション・ログを書き込む技術を開示している。非特許文献1では、同期的なディスク書き込みを回避して、リモートマシンへの同期的なネットワーク・データ転送により置き換え、上記ローカルディスクおよびリモートマシンのメインメモリ上にログの複製を保持する。これにより、非同期に実施される実際のデータベースの磁気ディスクへの書き込みまでのデータの信頼性を保証している。非特許文献1では、メインメモリ上でのレプリケーションによって、実測で100倍近くトランザクションのスループットを向上できることが報告されている。同様の技術として、非特許文献2でも、100倍以上の性能向上が得られることが報告されている。
その他、非特許文献3は、ライトスルーが可能なシステム・エリア・ネットワーク(SAN)で接続されたサーバからなるクラスタを用いたプライマリ・バックアップ構成において、データをレプリケーションすることによって、性能、信頼性および可用性を向上させたシステムを開示している。
S. Ioannidis, E. P. Markatos, J. Sevaslidou, "On Using Network Memory to Improve the Performance of Transaction Based System", Proceedings of International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'98), (July 1998). D. E. Lowell, P. M. Chen, "Free Transactions with Rio Vista", 16th ACM Symposium on Operating Systems Principles, Pages 92 - 101, (October 1997). C. Amza, A. L. Cox, W. Zwaenepoel, "Data replication strategies for fault tolerance and availability on commodity clusters "In Proceedings of the International Conference on Dependable Systems and Networks, pp. 459-467, (2000).
3層アーキテクチャのデータベースにおいて、データベースの大規模化により、スケールアップによる対応が困難である場合、例えばインスタンスに閉じた処理の実行であれば、アプリケーション・サーバ上にパーティショニングしたキャッシュ(またはオブジェクト・ストア)を導入して、スケールアウトする手法が採用される。このようなパーティショニングされたシステムにおいては、パーティション毎に要求される更新を集積して、トランザクションとは非同期にバッチ更新することが効率的であると考えられる。しかしながら、各パーティション毎に入力負荷が異なる場合に、以下説明するバッチサイズ・アンバランスによる問題が発生してしまう。
システムにおける最長のバッチ更新の間隔、LUI(Longest Update Interval;最長更新インターバル)は、障害状態(プライマリと全レプリカとが利用不可能となった状態)までのMTTF(Mean Time to Failure;平均連続稼働時間)よりも短くなければならない。またバッチ更新は、実行のオーバヘッドが大きいため、バッチサイズが充分に大きくなければ、逆にスループットの低下を招く可能性がある。
図12は、バッチサイズ・アンバランスを概略的に示す図である。従来では、バッチサイズを固定したバッチ更新において、各パーティション毎に入力負荷が異なる場合、図12(A)に示すように、LUIが負荷の小さいパーティションによって決定され、ゆえに短いMTTFに対応することができなくなる。
一方、バッチサイズではなく更新インターバルを固定したバッチ更新の場合、図12(B)に示すように、高い負荷のパーティションと低いものとでバッチサイズが相違してしまい、多くが理想的なバッチサイズでバッチ更新されなくなってしまう。特に、負荷の小さな方のパーティションがほとんど更新を含んでいないにも関わらず、バッチ更新が実施されてしまう場合など、上述したオーバヘッドのため、最悪の場合、スループットの最高値がパーティションの個数に反比例してしまう。
上記パーティショニングは、パーティション間の負荷バランスを考慮して実施される、しかしながら、それにも限界があり、何らかの要因によって、パーティション間の更新要求の負荷バランスが崩れてしまった場合、設定された更新インターバルでのログの集積量にバラツキが生じてしまう可能性があった。あるいは、固定されたバッチサイズでは、負荷の小さなパーティションによるLUIがMTTFを越えてしまう可能性があった。さらに、このようなシステムにレプリケーションを適用した場合、レプリケーションによる負荷も、更新負荷量に比例するためバラツキが生じてしまう。すなわち、パーティショニングされた分散システムにおいて、バッチ更新によるスループット向上の恩恵を最大化するためには、パーティション間のバッチサイズ・アンバランスの問題を解消する必要があった。
本発明は、上記問題点に鑑みてなされたものであり、本発明は、パーティショニングされた分散システムにおいて、パーティション間のバッチサイズ・アンバランスによる問題を解消して、もってバッチ更新によるスループット向上を最大化することが可能なデータベース・システム、サーバ、更新方法およびプログラムを提供することを目的とする。
本発明者らは、鋭意検討の結果、複数のサーバによるトランザクション・ログの相互レプリケーションをバッチ更新処理に適用することによって、従来問題となっていたパーティション間のバッチサイズ・アンバランスによる問題を回避することができ、もってバッチ更新によるスループット向上を最大化することができることを見出し、本発明に至ったのである。
本発明では、上記課題を解決するために、データベースと複数のサーバとを含むデータベース・システムにおいて、それぞれのサーバ上に、データベースの分割された少なくとも一部分のデータを格納しておき、アプリケーションからの更新要求に備える。そして、アプリケーションから上記データに関連する更新要求を受領して、その更新ログを格納するとともに、該更新ログを複製してシステム内の他のサーバに送信する。一方、他のサーバから受信した複製による更新ログのレプリカを、バッチ更新および多重化のために格納しておく。そして、上記更新ログおよび上記レプリカの合計に対応して、これら格納された更新ログおよび受信したレプリカを含ませたバッチ更新をまとめてデータベースに対し実行する。
上記構成では、更新要求をデータベースに対し実行する前に、障害に対して独立な1以上のサーバ上に更新ログが多重化され、高い永続性が担保される。多重化の成功をもってコミットとされ、データベースに対する実際の更新要求の実行は、上記バッチ更新として、トランザクションとは非同期に実施される。さらに上記バッチ更新は、他のサーバから受信した更新ログのレプリカも含み、すなわち複数のサーバ間で集約されたものであるため、バッチ更新のサイズは、複数のサーバでの合計となり、理想的なバッチサイズが容易に実現され得る。そして、相互に複製し合うもののうち、より高い更新負荷のものの更新負荷量に依存して最長更新インターバル(LUI)が決まり、もって平均連続稼働時間(MTTF)以下のLUIが達成し易くなる。
本発明では、さらに、複数のサーバから通知される更新負荷量に対応して、バッチ更新の実行主体を割り当てて通知するコーディネート・サーバをシステムに含めることができる。上記サーバは、複数のサーバ間でバッチ更新の実行主体を割り当てるために、受信した更新要求による更新負荷量を計量して通知することができ、サーバは、この割り当てに対応して、バッチ更新の実行主体となることができる。上記構成では、各サーバの更新負荷量に対応して、効率的に実行可能な主体(例えば、低い更新負荷のもの)にバッチ更新を実行させることが可能となる。
本発明では、上記サーバは、それぞれ上記データベースの分割されたデータに対応する1以上のパーティションを備えることができる。さらに本発明では、上記分割されたデータを格納するデータ格納部、上記更新ログを格納するログ格納部、上記レプリカを送信する送信部、上記レプリカを格納するレプリカ格納部および上記バッチ更新を実行する実行部を上記パーティション毎に構成することができる。本発明では、上記コーディネート・サーバは、パーティション更新負荷量のグループ内合計のグループ間での差異を最小化する組み合わせを求めて、更新ログを相互に複製し合うパーティションからなる相互複製グループ(レプリケーション・グループ)を編成することができる。
上記構成では、相互複製グループ内の総更新負荷量がグループ間で均一化されるように制御されるため、総更新負荷量が最も小さなグループによりLUIが決定され、もって、パーティション毎の入力負荷の均一化が困難な場合であっても、より容易なグループの総入力負荷の調整によってLUIを制御することが可能となる。また、バッチ更新のスループットは、グループへの総入力負荷が均一にバランスされ、入力負荷が充分あれる場合に、最大のスループットが期待できる。つまり、上記構成によれば、LUIの容易な制御に加え、スループットのチューニングも可能となる。
また本発明では、上記コーディネート・サーバは、実行主体のパーティションの障害に応答して、相互複製グループ内の障害のないパーティションの中から直近で最も低負荷なものを実行主体として割り当てて通知することができる。上記構成では、例え実行主体として割り当てられていたパーティションが動作するサーバが障害に陥ったとしても、更新ログがグループ内で相互複製されているため、他のパーティションに実行主体を切り替えて、バッチ更新を直ちに実施することが可能となる。したがって、耐障害性が向上される。
また本発明では、相互複製グループに属する他のパーティションの障害に応答して、または更新インターバルの経過に応答して、上記合計によらずバッチ更新を実行することができる。上記構成では、LUIがMTTF以下となることを担保することができ、また、障害により永続性レベルが低下した状態から、データの安全性を迅速に確保することが可能となる。
また本発明では、バッチ更新の実行権限は、上記相互複製グループ内での該実行権限の貸し出しを管理するリースサーバから、または相互複製グループのすべてのパーティションによる相互合意によって取得されるよう構成することができる。また、相互複製グループ内のすべてのパーティションからのレプリカの受信確認の受領に対応して、更新要求に応答して前記アプリケーションへ処理を戻すことができる。さらに本発明では、上記データ格納部、上記ログ格納部および上記レプリカ格納部は、サーバのメインメモリにより提供することができる。
以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。
以下の実施形態では、データベースと、該データベースにアクセスするアプリケーションが動作する複数のアプリケーション・サーバからなるクラスタとを含んで構成される3層クライアント・サーバ構成のデータベース・システム10を例として説明する。
図1は、本発明の実施形態におけるデータベース・システム10の概略図を示す。図1に示すデータベース・システム10は、ネットワーク12に接続するデータベース・サーバ14を含んで構成される。ネットワーク12は、例えば、ギガビット・イーサネット(登録商標)を含んで構成される。データベース・サーバ14は、概ねパーソナル・コンピュータ、ワークステーション、ミッドレンジまたはメインフレームなどの汎用コンピュータ装置として構成されている。
データベース・サーバ12は、より具体的には、シングルコア・プロセッサまたはマルチコア・プロセッサなどの中央処理装置(CPU)、キャッシュ・メモリ、RAM、ネットワーク・インタフェース・カード(NIC)などを備える。データベース・サーバ12は、さらにSAS(Serial Attached SCSI)、PATA(Parallel ATA)、SATA(Serial ATA)、ファイバ・チャネルなどのストレージ・インタフェースを介してディスク・ストレージ装置に接続されている。これによりデータベースの記憶領域が提供される。
本実施形態のデータベース・サーバ14は、WINDOWS(登録商標)200X、UNIX(登録商標)、LINUX(登録商標)、z/OS(登録商標)などのオペレーティング・システム(以下、OSとして参照する。)により制御され、例えばDB2(登録商標)、Oracle(登録商標)Database、Microsoft(登録商標)SQL Server(登録商標)などのリレーショナル・データベースを管理するデータベース管理システム(RDBMS;Relational Database Management System)を実装している。データベースのデータモデルは、特に限定されるものではない。他の実施形態では、データベース・サーバ14は、オブジェクト・リレーショナル・データベース、オブジェクト・データベース、階層型データベース、ネットワーク型データベース、XML(eXtensible Markup Language)データベースなど、他のデータモデルのデータベースを管理するDBMSを実装することもできる。
図1に示すデータベース・システム10は、ネットワーク12を介してデータベース・サーバ14にアクセスするアプリケーション・サーバ(以下、APサーバとして参照する。」)20をさらに含んで構成される。APサーバ20も、データベース・サーバ14と同様のハードウェア構成を備える汎用コンピュータ装置として構成することができる。APサーバ20は、Java(登録商標)EE(Java(登録商標)Platform, Enterprise Edition)などにより、ビジネスロジックなどを実装したアプリケーションを実装し、ネットワーク12を介して受信する図示しないクライアントからの要求を処理している。例えば、APサーバ20は、WebSphere(登録商標)Application Server、JBoss(登録商標)、Oracle(登録商標)Application Server、BEA WebLogic Server(登録商標)などにより構成することができる。
複数のAPサーバ20a〜cは、APサーバ・クラスタ22(以下、単位クラスタとして参照する。)を形成する。APサーバ20a〜cは、それぞれ、データベース・サーバ14が管理するデータベースがパーティショニングされて配置されたデータ格納部(Data Store)を保持し、クライアントからの要求を負荷分散しつつ処理している。データ格納部は、APサーバ20の物理メインメモリの記憶空間により提供され、データベース・サーバ14が管理するデータベースのキャッシュとして動作し、トランザクションの高速化を実現している。
APサーバ20a〜cは、アプリケーション動作に対応して発生する、挿入(Insert)、変更(Update)、削除(Delete)などのデータベース更新要求に対し、データ格納部内のデータを読み出して、更新要求に対応し、更新ログを生成するとともに、応答する。また、更新要求による更新ログを蓄積し、まとまった更新ログをデータベース・サーバ14へ一括送信(フラッシュ)して、トランザクションとは非同期的にデータベースに更新を反映する処理、所謂、バッチ更新を実施する。
さらに本実施形態のAPサーバ20a〜cは、相互に更新ログを同期的にレプリケーションすることにより、バッチ更新が実施されるまでの間の永続性を担保し、レプリケーションによる更新ログの多重化の成功をもってコミットとし、レスポンスタイムを向上させている。また、上記バッチ更新の際には、相互に交換した更新ログのレプリカも対象とする。
図1に示すデータベース・システム10は、さらに、ネットワーク12に接続されるコーディネート・サーバ16およびリースサーバ18を含んで構成される。コーディネート・サーバ16およびリースサーバ18も同様に、APサーバ20と同様のハードウェアおよびソフトウェア構成を備える汎用コンピュータ装置として構成することができる。コーディネート・サーバ16およびリースサーバ18の機能については、詳細を後述する。
図2は、本発明の実施形態によるデータベース・システム10において、各サーバ上に実現される機能ブロック図を示す。図2に示すデータベース・システム10に含まれる機能部(詳細は後述する。)は、それぞれ、対応するサーバにおいて、コンピュータ可読な記録媒体からプログラムを読み出し、メモリ上にプログラムを展開し、プログラムを実行することより各ハードウェア資源を動作制御することによって実現される。各サーバに配置される機能部は、例えばEJB(Enterprise Java(登録商標)Beans)のような分散オブジェクト技術のフレームワークにより相互に通信している。
各APサーバ20上には、1以上のアプリケーション・モジュール(以下、単にモジュールとして参照する。)30が動作している。また各APサーバ20上には、それぞれデータ格納部50を含む1以上のパーティション40が動作している。
データ格納部50は、データベース・サーバ14が管理するデータベース90をアプリケーション側の規則によってパーティショニングして配置されるデータをキャッシュし、保持するデータを用いてモジュール30からの要求に応えている。データ格納部50は、それぞれのAPサーバ20の物理メインメモリ上に割り当てられた記憶空間により提供され、データベース90のテーブルからパーティニングされた子テーブルの全体または一部分のデータを保持されている。データ格納部50は、いわゆる実体化ビューを保持することができる。データ格納部50は、好適には、インメモリ型のリレーショナル・データベースとして構成することができる。
パーティション40は、それぞれ、データ格納部50に加え、さらにバッチ処理部60と、レプリカ処理部80とを含んで構成される。バッチ処理部60は、モジュール30からのデータベース90に対する更新要求による更新ログを一時的に格納している。レプリカ処理部80は、上記データベース90に対する更新要求による更新ログのレプリカを、後述する同一グループに所属する他のAPサーバ上で動作するパーティションのレプリカ処理部に送信する。送信先の他のすべてのパーティションのレプリカ処理部からレプリカの受領確認を受信して、更新ログの多重化の成功とされる。またレプリカ処理部80は、同一グループに所属する他のパーティションのレプリカ処理部から更新ログのレプリカを受信して一時的に格納し、その受領確認を応答する。
バッチ処理部60による更新ログの格納、およびレプリカ処理部80のレプリカ送信による更新ログの多重化の成功をもってコミットとし、モジュール30に対し更新要求の応答がなされる。上記更新ログおよびレプリカは、データ格納部50と同様に、APサーバ20の物理メインメモリの記憶空間により提供される。更新ログのレプリカは、プライマリ障害時に取り出せる形式にて保持していれば良いため、ディスクIOを回避することで、データベースへのアクセスと比較してレスポンスタイムを向上させることができる。
一方、上記バッチ処理部60は、自身が一時的に格納する更新ログ、およびレプリカ処理部80が格納する受信した更新ログのレプリカの合計量に対応して、これらの更新ログを読み出す。そして、バッチ処理部60は、これら蓄積された更新内容をデータベース90に反映させるべくバッチ更新を実施する。バッチ更新を受信したデータベース・サーバ14は、バッチ更新に対応する更新処理を効率化してデータベース90に反映させ、更新内容を永続化させる。なお、上記更新ログは、データベースを更新する前と更新した後のデータ、操作の内容などを保持するトランザクション・ログとして構成することができ、APサーバ20側で蓄積する更新内容をデータベース90に反映し永続化するための履歴情報である。
本実施形態のデータベース・システム10においては、互いに独立したAPサーバ上で動作するパーティションから構成され、更新ログを相互にレプリケーションし合うものとして予め定められたグループ(以下、レプリケーション・グループとして参照する。)が構成される。上記バッチ更新は、すべてのパーティションがそれぞれに実施するのではなく、レプリケーション・グループに属するパーティションの内、いずれか1つのパーティションが実行主体として割り当てられて、実行される。負荷を分散させる観点から、好ましくは、上記レプリケーション・グループ内で直近の更新負荷量が最も小さいパーティションが実行主体として割り当てられる。
コーディネート・サーバ16上には、グループ調整部92が動作している。グループ調整部92は、上記レプリケーション・グループを編成し、管理している。図3(A)は、本発明の実施形態においてコーディネート・サーバ16が保持するパーティション管理テーブル120のデータ構造を示す。図3(A)に示すパーティション管理テーブル120は、パーティションを識別するパーティションIDが入力されるフィールド120aと、そのパーティションが動作するサーバを識別するサーバIDが入力されるフィールド120bと、そのパーティションが現在所属しているレプリケーション・グループを識別するグループIDが入力されるフィールド120cとを含んで構成される。
パーティション管理テーブル120は、さらにパーティションの直近の更新負荷量を示す値を保持するフィールド120dを含んで構成される。グループ調整部92は、定期的に各パーティション40から更新負荷量の報告を受けて、フィールド120dの値を更新する。更新負荷量を示す値としては、特に限定されるものではないが、例えば単位時間あたりの更新数を採用することができ、図3に示す例では、1時間あたりの更新数が入力されている。
さらにグループ調整部92は、フィールド120dの内容を定期的に参照し、グループ内で直近の更新負荷量が最小であるパーティションを実行主体(以下、実行パーティションとして参照する。)として割り当てて、通知する。パーティション管理テーブル120は、さらに、実行パーティションであるか否かを示す値が入力されるフィールド120eを含んで構成される。グループ調整部92は、上記実行主体の割り当てに応じて、対応するフィールド120eの値を書き換える。また、グループ調整部92は、実行主体に変更がある場合には、実行パーティションの割り当てから外れたパーティションに対してその旨を通知する。
さらに、パーティション管理テーブル120は、稼働状況を示す値が入力されるフィールド120fを含む。グループ調整部92は、各APサーバ20からのハートビートが途絶えたことに応答して、その障害を検知し、稼働状況に対応させてフィールド120fの値を更新する。なお、障害の検出方法は、例えば、ハートビートに限定されるものではなく、他の実施形態では、グループ調整部92がポーリングを行って、応答の有無によりサーバの障害を検知することもできる。
実行パーティションが動作するAPサーバ20の障害を検知した場合には、グループ調整部92は、該実行パーティションがレプリケーション・グループから外れたものとして、実行パーティションの変更を実施する。ここで、実行主体ではないパーティションは、非実行パーティションとする。グループ調整部92は、一方、障害が検知されたAPサーバ20上の非実行パーティションが属するグループの実行パーティションに対しては、バッチ更新の即時実行を指示する。
さらにグループ調整部92は、データベース・システム10のスタートアップ時、またはメンテナンス時などにオペレータからの指示を受けて、クラスタ22上で動作する各パーティション毎の直近の更新負荷量から、各グループ内の更新負荷量の総和がグループ間で均一化するようにパーティションをグループ分けする。これにより、グループ調整部92は、レプリケーション・グループを編成することができる。レプリケーション・グループが決定されると、グループ調整部92は、パーティション管理テーブル120のフィールド120cの値を書き換える。
図4は、本発明の実施形態によるコーディネート・サーバが実行するレプリケーション・グループの編成処理のフローチャートを示す。図4に示す処理は、データベース・システム10のスタートアップや、オペレータからの指示を受けてステップS100から開始される。ステップS101では、グループ調整部92は、パーティション管理テーブル120にアクセスして、フィールド120b,120dから、各パーティションが動作するサーバのサーバIDと、各パーティションの更新負荷量の最新情報とを取得する。
ステップS102では、グループ調整部92は、各パーティションのグループ分けの可能な組合せを生成する。このとき、対応するサーバIDが重複して同一グループに含まれる組合せが排除される。また、1つのパーティションのみからなるグループを含むグループ分けの組合せも排除される。
ステップS103では、生成されたグループ分けの可能な組合せから、各グループ内の更新負荷量の総和のグループ間での差異を最小化するグループ分けの組合せを求め、レプリケーション・グループを編成する。例えば、グループ間の総更新負荷量の差の絶対値の総和が最小化される組合せを求める。
ステップS104では、編成されたレプリケーション・グループの各パーティションに対して、その所属グループ、および同一グループに所属する他パーティションを通知し、ステップS105で処理を終了させる。なお、ステップS104では、各レプリケーション・グループにつき、グループ内で最小の更新負荷量のパーティションに対し、実行パーティションに割り当てられた旨の通知を同時に実施することもできる。
また、レプリケーション・グループを編成する方法は、上述の例に限定されるものではない。例えば、他の実施形態では、各パーティションにつき、報告された更新負荷の時系列を記録しておき、各グループ内の一定期間の平均更新負荷の総和のグループ間での差異を最小化するグループ分けの組合せを求めて、レプリケーション・グループを編成することもできる。図4に示すようなレプリケーション・グループの編成処理により、各パーティションの更新負荷量が相違する場合であっても、後述するように、バッチ更新のバッチサイズをグループ間で均一化することが可能となる。
再び図2を参照すると、リースサーバ18上には、リース管理部94が動作している。実際のバッチ更新の際には、実行パーティションのバッチ処理部60は、リース管理部94に問い合わせて、バッチ更新の実行権限を確認する。リース管理部94は、各レプリケーション・グループ内の実行パーティションのバッチ処理部60から、バッチ更新の実行権限の問い合わせを受けて、期限付きで実行権限をリースする。リース管理部94は、グループ内で唯一のパーティション40のバッチ処理部60に排他的にバッチ更新の実行権限を与えている。
例えば実行パーティションのAPサーバ20がネットワーク障害等により、クラスタ22から切り離された場合、APサーバの20障害を検知したグループ調整部92が実行パーティションを変更することで、同一グループ内に複数の実行パーティションが存在する可能性がある。このような場合、クラスタ22から切り離されたAPサーバ20上の実行パーティションが、他のネットワークを介してデータベース90にバッチ更新してしまう蓋然性がある。しかしながら、上記の実行権限の管理により、ある時点で唯一の実行パーティションにバッチ更新の実行権限が与えられているため、少なくとも同時にバッチ更新してしまうことを回避することができる。
図3(B)は、本発明の実施形態においてリースサーバ18が保持するリース管理テーブル130のデータ構造を示す。図3(B)に示すリース管理テーブル130は、グループIDが入力されるフィールド130aと、そのグループの現在のバッチ更新の実行権限の割り当て状態を示す値が入力されるフィールド130bと、実行権限のリース期限が入力されるフィールド130cと、実行権限を付与したパーティションのIDが入力されるフィールド130dとを含んで構成される。
リース管理部94は、各パーティションからバッチ更新の実行権限の問い合わせを受けて、そのグループの対応するフィールド130bの値を読み取る。その値が「lock」であり、かつ問い合わせのパーティションが権限を付与しているパーティションと相違すれば、リース管理部94は、権限の取得失敗を通知する。リース管理部94は、問い合わせを受けて、そのグループの対応するフィールド130bの値が「lock」であり、かつ問い合わせのパーティションが権限を付与しているパーティションであれば、更新期限を延長し、フィールド130cを書き換え、問い合わせ元に延長された期限を通知する。リース管理部94は、問い合わせを受けて、フィールド130bの値が「unlock」であれば、「lock」に書き換えて、問い合わせ元に権限の取得成功を通知し、フィールド130c,dの値を書き換える。さらにリース管理部94は、リース期限が切れた場合、フィールド130bの値を「unlock」に書き換える。
なお、本実施形態では、リースサーバ18を別途設けてバッチ更新の実行権限を管理しているが、他の実施形態では、同一グループに属するパーティションのバッチ処理部60間でのメッセージ交換による相互合意よって、実行パーティションに期限付きで実行権限を認める構成としてもよい。その場合には、処理効率の観点から好適には、上記レプリカ処理部80間の更新ログのレプリカの送受信の際にピギーバックさせることができる。
以下、図5〜図12を参照して、本発明の実施形態による更新ログのレプリケーション処理およびバッチ更新処理の詳細について説明する。図5は、本発明の実施形態による、更新ログのレプリケーションおよびバッチ更新に関連するデータフロー図である。図5に示す図は、バッチ処理部60およびレプリカ処理部80について、より詳細な機能ブロックを示している。
バッチ処理部60は、ログ格納部62、更新実行部64、更新タイマ66、閾値比較部68、更新カウンタ70、および実行権限取得部72を含んで構成される。レプリカ処理部80は、レプリカ格納部82、更新カウンタ84、レプリカ受信部86、およびレプリカ送信部88を含んで構成される。
データ格納部50は、モジュール30からのデータベース90に対する更新要求を受領して、この更新要求をバッチ処理部60に渡す。バッチ処理部60は、データ格納部50から更新要求を受領して、その更新ログ100をログ格納部62に一時的に格納し、更新カウンタ70をインクリメントし、データ格納部50に処理を戻す。
データ格納部50は、さらに更新要求をレプリカ処理部80に渡す。レプリカ処理部80は、データ格納部50から更新要求を受領して、レプリカ送信部88を呼び出し、その更新要求による更新ログのレプリカを、同一グループに所属する他のAPサーバ上で動作するパーティション41のレプリカ処理部81のレプリカ受信部(図示せず。)に送信する。レプリカ処理部80は、レプリカ送信部88が送信先のすべてのパーティションからの受領確認を受信したことに応答して、データ格納部50へ処理を戻す。データ格納部50は、ログ格納部62による更新ログの格納、およびレプリカ送信部88のレプリカ送信に対する受信確認の応答をもってコミットとし、モジュール30に対し更新要求の応答する。
またレプリカ処理部80のレプリカ受信部86は、同一グループに所属する他のパーティションのレプリカ処理部81のレプリカ送信部から更新ログのレプリカを受信して、更新ログのレプリカ(以下、更新ログ・レプリカとして参照する。)一時的にレプリカ格納部82に格納し、更新カウンタ84をインクリメントする。さらにレプリカ受信部86は、更新ログ・レプリカの格納の後、その成功を受領確認として、送信元のレプリカ処理部81のレプリカ送信部へ送信する。
実行パーティション40の閾値比較部68は、バッチ処理部60の更新カウンタ70およびレプリカ処理部80の更新カウンタ84の値をモニタし、その合計値とバッチサイズとして予め設定した閾値とを比較している。つまり、レプリケーション・グループ全体が受領した更新数が計数され、閾値と比較されることとなる。実行パーティション40の閾値比較部68により上記の合計値が閾値を超えたと判定される場合には、更新実行部64が呼び出される。更新実行部64は、呼び出されて、バッチ更新の実行権限を有する場合には、ログ格納部62から更新ログ100を読み出し、レプリカ格納部82から更新ログ・レプリカ110を読み出して、例えばSQL文を作成し、データベース90に対しバッチ更新を実行する。バッチ更新の実行権限が無い場合には、実行権限取得部72が呼び出され、バッチ更新の実行権限を取得した後にバッチ更新を実行する。
更新実行部64は、更新カウンタ70および更新カウンタ84の合計値によらず、バッチ更新を実施することができる。バッチ処理部60の更新タイマ66は、所属するグループにおける最後のバッチ更新からの経過時間を計時する。更新タイマ66の所与の時間が経過したことに応答して、更新実行部64が呼び出される。この所与の時間は、データベース・システム10のMTTF以下の値とすることが好ましい。更新実行部64は、更新タイマ66の満了に応答して、実行権限の取得を適宜行い、更新ログ100および更新ログ・レプリカ110を読み出して、データベース90に対しバッチ更新を実行する。
コーディネート・サーバ16のグループ調整部92は、APサーバ20の障害を検知して、そのAPサーバ20上で動作する非実行パーティションのグループ内の実行パーティションのバッチ処理部60にバッチ更新の即時実行を指示する。バッチ処理部60は、バッチ更新の即時実行の指示を受けて、実行権限の取得を適宜行い、更新実行部64を呼び出して、データベース90に対しバッチ更新を実行させる。
更新実行部64は、バッチ更新が成功した場合、その対応する更新ログおよび更新ログ・レプリカを更新実行済みであるとして、ログ格納部62およびレプリカ格納部82から破棄するか、あるいは更新実行済みを示すフラグを立てる。そして更新実行部64は、実行済みの更新要求を他の非実行パーティションに報告するために、更新実行済みの更新要求を報告する報告リストとしてリストアップして備える。レプリカ送信部88は、次のレプリカ送信の際に報告リストをピギーバックして、グループ内の他のパーティションに報告する。
レプリカ受信部86は、他のパーティションから報告リストを取得して、更新実行済みの更新ログ100または更新ログ・レプリカ110をログ格納部62およびレプリカ格納部82から破棄するか、あるいは更新実行済みを示すフラグを立てる。フラグの立てられた更新要求は、後に、適宜破棄されることとなる。
更新カウンタ70は、コーディネート・サーバ16のグループ調整部92に、自身の単位時間あたりの更新数を定期的に報告している。バッチ処理部60は、実行パーティションとして割り当てられて、実行権限取得部72を呼び出す。実行権限取得部72は、実行パーティションである間、定期的にリースサーバ18上のリース管理部94に問い合わせて、実行権限を取得し、また維持する。
図6は、本発明の実施形態によるAPサーバ20が実行するアプリケーション側からの更新要求に対する処理動作のフローチャートを示す。図6に示す処理は、アプリケーション側からのデータベースに対する更新要求に対応して、ステップS200から開始される。ステップS201では、データ格納部50は、モジュール30からデータベースに対する更新要求を受領し、この更新要求をバッチ処理部60へ渡す。ステップS202では、バッチ処理部60は、更新要求による更新ログをログ格納部62に格納し、ステップS203で、更新カウンタ70をインクリメントし、データ格納部50へ処理を戻す。
ステップS204では、更新要求がデータ格納部50からレプリカ処理部80へ渡され、レプリカ処理部80は、更新要求による更新ログのレプリカを複製する。ステップS205では、報告リストにリストアップされた未報告の更新実行済みの更新要求があるか否かを判定する。ステップS205で、未報告の更新実行済みの更新要求が有ると判定された場合(YES)には、ステップS206へ処理を進める。ステップS206では、レプリカ処理部80は、更新実行済みの更新要求を含む報告リストを、ステップS204で複製したレプリカに添付し、ステップS207へ処理を進める。
一方、ステップS205で、未報告の更新実行済みの更新要求が無いと判定された場合(NO)には、ステップS207へ直接処理を進める。ステップS207では、レプリカ処理部80は、レプリカ送信部88を呼び出し、同一グループに所属する他のすべてのパーティション40のレプリカ受信部86に対し、適宜報告リストをピギーバックさせて、レプリカを送信させる。ステップS208では、同一グループに所属する他のすべてのパーティション40から受領確認を受信するまでの間(NOの間)、ステップS208をループさせ、待ち受ける。
ステップS208で、他のすべてのパーティションから受領確認を受信したと判定された場合(YES)には、レプリカ処理部80は、処理をデータ格納部50へ戻し、ステップS209へ処理を進める。ステップS209では、データ格納部50は、更新ログの多重化をもって当該更新要求をコミットとし、モジュール30へ更新要求に対する応答をし、モジュール30に処理を戻して、ステップS210で本処理動作を終了させる。
なお、ステップS208の待ち受けの際に、もし何らかの原因で所定の時間内にすべてのパーティションからの受領確認を受信できなかった場合などには、適宜エラー・ハンドリングを行うことができる。ここでのエラー・ハンドリングは、特に限定されるものではないが、例えば、データベース・システム10の運用ポリシーに応じて、1以上のレプリカの多重化の成功をもってコミットとし、後にレプリカの受領確認を受け取っていないパーティションにレプリカを再送するように構成することができる。
図7は、本発明の実施形態によるAPサーバ20が実行する他サーバから送信されたレプリカの受信時の処理動作のフローチャートを示す。図7に示す処理は、他サーバのレプリカ送信部88からのレプリカ送信に対応して、ステップS300から開始される。ステップS301では、レプリカ受信部86は、他サーバ上の同一グループのレプリカ送信部88から更新ログ・レプリカを受信する。レプリカ処理部80は、ステップS302で受信した更新ログ・レプリカをレプリカ格納部82に格納し、ステップS303で更新カウンタ84をインクリメントし、ステップS304で送信元のレプリカ送信部88へ受領確認を応答する。
ステップS305では、受信したレプリカに報告リストが添付されているか否か、つまり、更新実行済み更新要求が報告されたか否かを判定する。ステップS305で、更新実行済み更新要求が報告されていると判定された場合(YES)には、ステップS306へ処理を進める。ステップS306では、報告リスト中の更新実行済みの更新要求に対応する更新ログおよび更新ログ・レプリカを、それぞれ、ログ格納部62およびレプリカ格納部82から破棄、あるいは更新実行済みを示すフラグを立てて、ステップS307で本処理動作を終了させる。一方、ステップS305で、更新実行済み更新要求が報告されていないと判定された場合(NO)には、ステップS307へ直接進めて、本処理動作を終了させる。
図8は、本発明の実施形態によるAPサーバ20が実行するバッチ更新処理動作のフローチャートを示す。図8に示す処理は、実行パーティションとして割り当てられた旨の通知に対応してステップS400から開始される。ステップS401では、バッチ処理部60は、グループ調整部92からの実行パーティションとして割り当てられた旨の通知メッセージを受信する。ステップS402では、バッチ処理部60は、実行権限取得部72を呼び出して、リースサーバ18のリース管理部94に対し、バッチ更新の実行権限を問い合わせる。
ステップS403では、バッチ処理部60は、現在まだ実行パーティションであるか否かを判定する。ステップS403で、例えば、実行権限の問い合わせ中、問い合わせの再試行中、またはバッチ更新の契機となるイベントの待ち受け中に実行パーティションが変更された場合など、既に実行パーティションではないと判定された場合(NO)には、ステップS417へ処理を進め、本処理動作を終了させる。一方、ステップS403で、現在まだ実行パーティションであると判定された場合(YES)には、ステップS404へ処理を進める。
ステップS404では、バッチ処理部60は、ステップS402での問い合わせの結果実行権限を取得し、また実行権限のリース期限前の有効な権限を有しているか否かを判定する。ステップS404で、権限の取得に失敗したり、またはバッチ更新の契機となるイベントの待ち受け中にリース期限を超過したりしており、有効な権限を有さないと判定された場合(NO)には、ステップS405へ処理を進める。ステップS405では、一定時間待機し、再びステップS402へループさせ、実行権限の問い合わせを再試行する。
ステップS404で、有効な権限を有していると判定された場合(YES)には、ステップS406へ処理を進める。ステップS406では、バッチ処理部60は、グループ調整部92から非実行パーティション障害時におけるバッチ更新の即時実行が指示されているか否かを判定する。ステップS406で、バッチ更新の即時実行が指示されていないと判定された場合(NO)には、ステップS407へ処理を進める。ステップS407では、バッチ処理部60は、更新タイマ66が満了しているか否かを判定する。ステップS407で、更新タイマ66が未だ満了していないと判定された場合(NO)には、ステップS408へ処理を進める。
バッチ処理部60は、ステップS408では、閾値比較部68を呼び出し、バッチ処理部60の更新カウンタ70およびレプリカ処理部80の更新カウンタ84の合計値を取得させ、ステップS409で、合計値が所定の閾値を越えているか否かを判定させる。ステップS409で、合計値が閾値を超えていないと判定された場合(NO)には、再びステップS403へ処理をループさせ、少なくとも実行パーティションである間、障害時の即時実行が指示されるか、更新タイマが満了するか、更新カウンタ70および更新カウンタ84の合計値が閾値を超えるまで、ステップS402〜S409の処理を繰り返させ、バッチ更新の契機となるイベントの発生を待ち受ける。
上記ステップS406で即時実行が指示されていると判定された場合(S406:YES)、上記ステップS407で更新タイマ66が満了していると判定された場合(S407:YES)、またはステップS409で更新カウンタ70および更新カウンタ84の合計値が閾値を越えていると判定された場合(S409:YES)には、ステップS410へ処理を分岐させる。
ステップS410では、バッチ処理部60は、更新実行部64を呼び出し、ログ格納部62およびレプリカ格納部82に格納されている更新未実行の更新ログおよび更新ログ・レプリカを取得させる。ステップS411では、更新実行部64は、データベース90に問い合わせて、後述のバッチ更新時に付されるタイムスタンプなどの更新の版管理を可能とするバージョンIDの有効性を確認する。ステップS411で、バージョンIDが有効であると判定された場合(YES)には、ステップS412へ処理を進める。
ステップS412では、更新実行部64は、データベース90に対しバッチ更新による永続化を要求するためのSQL文を作成し、バッチ更新を実行する。このとき、更新実行部64は、後にバージョンの有効性を判定するために、同一トランザクション内でデータベース90上のマスタに付したタイムスタンプなどのバージョンIDの更新も要求する。バッチ更新を受信したデータベース90では、バッチ更新が含む複数の更新要求が最適化されて処理され、更新内容が永続化されることとなる。
ステップS413では、ステップS412のバッチ更新が成功裡に完了したか否かを判定する。ステップS413で、データベース90からバッチ更新の完了応答を受信して、バッチ更新が成功したと判定される場合(YES)には、ステップS414へ処理を進める。ステップS414では、更新実行部64は、当該バッチ更新の実行により更新実行済みとなった更新要求を上記報告リストに追加する。なお、障害時の即時実行が指示される場合などには、次のレプリカ送信を待たずに、報告リストを直ちに送信することもできる。
報告リストには、バッチ更新の実行時刻のタイムスタンプなどをバージョンIDとして含めることができる。ステップS411のバージョンIDの有効性の判定処理では、通知リストに含められた前回のバッチ更新の実行時刻を示すバージョンIDと、データベース90から取得したバージョンIDとを比較し、データベース90から取得したバージョンIDが前回のバッチ更新のものと一致することをもって有効とし、前後関係からバージョンIDの有効性を判定することができる。
ステップS415では、バッチ処理部60は、更新タイマ66、更新カウンタ70および更新カウンタ84をリセットして、ステップS403へ処理をループさせ、次のバッチ更新に備える。一方、ステップS411で、バージョンが有効ではないと判定された場合(S411:NO)またはステップS413で、バッチ更新が成功裡に完了しなかったと判定された場合(S413:NO)には、ステップS416へ処理を分岐させる。
ステップS416では、エラー処理を実行し、ステップS403へ処理をループさせ、次のバッチ更新に備える。ステップS416のエラー処理では、例えば、エラー警告などを管理者に通知するためにエラー出力して、パーティショニング・コーディネータに失敗を通知するなどのエラー・ハンドリングを行うことができる。この場合、例えば、グループ調整部92は、別のパーティションを実行パーティションとして割り当てるなどをして対応することとなる。
また、バージョンIDの無効エラーは、当該実行パーティション以外のパーティションにより既にバッチ更新が実施されている場合に発生することが想定される。より具体的には、バージョンIDの無効エラーは、実行パーティションが動作するAPサーバ20のハートビートが何らかの理由でコーディネート・サーバに伝達されず、グループ調整部92が他のパーティションを実行パーティションとして割り当てた場合であって、(i)その新しい実行パーティションが先にバッチ更新を実施してしまった場合、あるいは、(ii)新しい実行パーティションが割り当てられた後に、障害が検知された古い実行パーティションによって先にバッチ更新が実施されてしまった場合が想定される。ステップS416の処理では、バージョンIDの無効エラーの場合に、データベース90に問い合わせて該データベース90との整合性を維持するように、バッチ更新済みの更新要求を削除あるいは更新済みを示すフラグを立て、対応する更新数を更新カウンタ70,84をデクリメントするなどのエラー・ハンドリングを行うこともできる。
図9は、本発明の実施形態による実行パーティションの障害時のデータベース・システム10の処理動作を示すシーケンス図を示す。図9では、第1パーティション40−1が実行パーティションであり、第4パーティション40−4が同一グループの非実行パーティションである場合を例として説明する。
第1パーティション40−1および第4パーティション40−4は、ステップS500およびステップS501で示すように、それぞれ、パートビートとして定期的に稼働通知をグループ調整部92に対して行っている。例えば、グループ調整部92が、ステップS502で第4パーティション40−4から稼働通知を受信するも、実行パーティションである第1パーティション40−1からの稼働通知を一定時間受信しない場合、ステップS503で、第1パーティション40−1の障害を検知する。
ステップS504では、グループ調整部92は、障害を検知した第1パーティション40−1と同一グループに所属する第4パーティション40−4を新たな実行パーティションとして割り当て、その旨を通知する。実行パーティションとして新たに割り当てられた第4パーティション40−4は、ステップS505で、直ちにバッチ更新の実行権限をリース管理部94に問い合わせる。リース管理部94は、ステップS506で第1パーティション40−1に与えていた実行権限のリース期限の途過を待ち、満了を確認する。リース管理部94は、ステップS507で、第4パーティション40−4に実行権限を与える。
この場合、更新ログまたは1以上のレプリカのいずれかが1以上のAPサーバ20上に存在する一方で、更新ログの多重化による永続性レベルが低下している状態となる。そのため、ステップS508では、新たな実行パーティションである第4パーティション40−4は、データベース90に対し速やかにバッチ更新を実行し、データベース90上に永続化する。バッチ更新が成功裡に完了したことに応答して、ステップS509で、第4パーティション40−4は、他の同一グループの第1パーティション40−1に対し、直ちにバッチ更新実行済み更新要求の報告を試みることができる。
なお、障害後、バッチ更新を成功裡に完了させた後は、データベース・システム10における運用上のポリシーに従った動作を行うことができ、特に限定されるものではない。例えば、障害サーバの復帰を待たずに低い永続性レベルにてサービスを再開してもよい。その他、障害サーバが復帰するのを待って所期の家属性レベルにてサービスを再開してもよい。あるいは、予備のAPサーバにパーティションを再配分して、所期の永続性レベルにてサービスを再開してもよい。低い永続性レベルでのサービス継続をしない運用では、ステップS504で、実行パーティションを割り当て直した際に、全てのパーティションに対しサービス停止を指示することができる。この場合、そのグループ内の各パーティション40は、モジュール30からの新たな更新要求を受領せず、全ての更新がデータベース90に反映され、永続性レベルの回復を待って、再びサービスが再開されることとなる。
図10は、本発明の実施形態による非実行パーティションの障害時のデータベース・システム10の処理動作を示すシーケンス図を示す。図10では、図9と同様に、第1パーティション40−1が初期の実行パーティションであり、第4パーティション40−4が初期の同一グループの非実行パーティションである場合を例として説明する。
第1パーティション40−1および第4パーティション40−4は、ステップS600およびステップS601で示すように、それぞれ、パートビートとして定期的に稼働通知をグループ調整部92に対して行っている。例えば、グループ調整部92が、ステップS602で、実行パーティションである第1パーティション40−1から稼働通知を受信するも、第4パーティション40−4からの稼働通知を一定時間受信しない場合、ステップS603で、非実行パーティションである第4パーティション40−4の障害を検知する。
ステップS604では、グループ調整部92は、障害を検知した第4パーティション40−4と同一グループに所属する実行パーティションである第1パーティション40−1に、バッチ更新の即時実行を指示する。実行パーティションである第1パーティション40−1は、ステップS605で、データベース90に対し速やかにバッチ更新を実行し、データベース90上に永続化する。バッチ更新が成功裡に完了したことに応答して、ステップS606で、第1パーティション40−1は、他の同一グループの第4パーティション40−4に対し、直ちにバッチ更新実行済み更新要求の報告を試みることができる。ステップS605の際に実行権限を有さなければ、実行権限をリース管理部94に問い合わせる。
なお、障害後、バッチ更新を成功裡に完了させた後は、データベース・システム10における運用上のポリシーに従った動作を行うことができ、実行パーティションについて上述したように、特に限定されるものではない。
図11は、本発明の実施形態による実行パーティションでのバッチ更新のバッチサイズと、LUI(最長更新インターバル)との関係を示す。上述したように、従来技術では、何らかの要因によって、パーティション間の更新要求の負荷バランスが崩れてしまった場合、固定された更新インターバルでのログの集積量がバラツキが生じてしまうか、あるいは固定されたバッチサイズでは、負荷の小さなパーティションによるLUIが、MTTFを越えてしまう可能性があった。
一方、本発明の実施形態によるバッチ更新では、各パーティションが受領した更新要求による更新ログが、所属のレプリケーション・グループ内で共有され、集積される。そして、好適には、グループ内の直近負荷の最も小さなパーティションがバッチ更新の実行主体として割り当てられ、上記集積した更新要求が一括してデータベース90に送信および反映される。
更新要求の蓄積量は、個々のパーティションの更新負荷量によらず、編成されたグループ内の更新負荷の総量によって増大してゆく。したがって、バッチサイズ固定では、グループ内のLUIは、最悪の場合でもグループ内の最大の更新負荷を有するパーティションに依存して定まる。そして、全体のLUIは、最小の更新負荷の総量のレプリケーション・グループによって定まる。
したがって、本発明の実施形態によるバッチ更新では、パーティション間の更新の入力負荷のバランスが困難であっても、より容易なレプリケーション・グループ編成による総入力負荷の制御によって、MTTF以下の所望の値にLUIを制御することが可能となる。さらに、レプリケーション・グループを各パーティションの更新負荷量に対応させて再構成することもできるので、グループ間の総更新負荷の均一化を図ることができる。
また、従来技術では、入力負荷のバラツキが大きいとき、MTTFに従ってLUIを制限すると、図12(B)に示すように、入力負荷の小さなパーティションでは、殆ど更新要求を含まないバッチ更新が実施されてしまうことがあった。バッチ更新は、効率化に大きく寄与する一方、実行のオーバヘッド自体は大きいため、この従来のバッチ更新では、バッチサイズ・アンバランスに起因して、レプリケーション・グループのメンバがn台の場合、最悪時には、最大スループットが最高時の約1/nに見積もられる。
一方、本発明の実施形態では、上述したようにレプリケーション・グループ全体の更新要求を一括でバッチ更新するため、堪えずLUI内で最も集約した状態でバッチ更新を実施することができ、バッチサイズを増大させることが可能となる。特にレプリケーション・グループ間の入力負荷が均一に分散され、入力負荷が充分に大きいとき、最高のスループットを得ることが可能となる。
以上説明したように、本発明の実施形態によれば、パーティショニングされた分散システムにおいて、パーティション間のバッチサイズ・アンバランスによる問題を解消して、もってバッチ更新によるスループット向上を最大化することが可能なデータベース・システム、サーバ、更新方法およびプログラムを提供することができる。
なお、本発明につき、発明の理解を容易にするために各機能部および各機能部の処理を記述したが、本発明は、上述した特定の機能部が特定の処理を実行する外、処理効率や実装上のプログラミングなどの効率を考慮して、いかなる機能部に、上述した処理を実行するための機能を割当てることができる。
本発明の上記機能は、C++、Java(登録商標)、Java(登録商標)Beans、Java(登録商標)Applet、Java(登録商標)Script、Perl、Rubyなどのオブジェクト指向プログラミング言語、SQLなどのデータベース言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布または伝送して頒布することができる。
これまで本発明を、特定の実施形態をもって説明してきたが、本発明は、実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
本発明の実施形態におけるデータベース・システムの概略図。 本発明の実施形態によるデータベース・システムにおいて、各サーバ上に実現される機能ブロック図。 本発明の実施形態において(A)コーディネート・サーバが保持するパーティション管理テーブル、(B)リースサーバが保持するリース管理テーブルのデータ構造を示す図。 本発明の実施形態によるコーディネート・サーバが実行するレプリケーション・グループの編成処理のフローチャート。 本発明の実施形態による、更新ログのレプリケーションおよびバッチ更新に関連するデータフロー図。 本発明の実施形態によるAPサーバが実行するアプリケーション側からの更新要求に対する処理動作のフローチャート。 本発明の実施形態によるAPサーバが実行する他サーバから送信されたレプリカの受信時の処理動作のフローチャート。 本発明の実施形態によるAPサーバが実行するバッチ更新処理動作のフローチャート。 本発明の実施形態による実行パーティションの障害時のデータベース・システム10の処理動作を示すシーケンス図。 本発明の実施形態による非実行パーティションの障害時のデータベース・システムの処理動作を示すシーケンス図 本発明の実施形態による実行パーティションでのバッチ更新のバッチサイズとLUIとの関係を示す図。 従来技術によるバッチサイズ・アンバランスを概略的に示す図。
符号の説明
10…データベース・システム、12…ネットワーク、14…データベース・サーバ、16…コーディネート・サーバ、18…リースサーバ、20…APサーバ、22…クラスタ、30…モジュール、40,41…パーティション、50…データ格納部、60…バッチ処理部、62…ログ格納部、64…更新実行部、66…更新タイマ、68…閾値比較部、70…更新カウンタ、72…実行権限取得部、80,81…レプリカ処理部、82…レプリカ格納部、84…更新カウンタ、86…レプリカ受信部、88…レプリカ送信部、90…データベース、92…グループ調整部、94…リース管理部、100…更新ログ、110…更新ログ・レプリカ、120…パーティション管理テーブル、130…リース管理テーブル

Claims (20)

  1. データベースと複数のサーバとを含むデータベース・システムであって、前記サーバ各々は、
    前記データベースの分割された、当該サーバ上で動作するパーティションのデータを格納するデータ格納部と、
    アプリケーションから受領した、前記パーティションに関連する更新要求に応答して、該更新要求による更新ログを格納するログ格納部と、
    前記更新要求に応答して、前記更新ログの複製を、当該サーバ上で動作するパーティションと同一のグループに属する他のパーティションが動作する他のサーバに送信する送信部と、
    前記同一のグループに属する他のパーティションが動作する他のサーバから受信した複製による更新ログのレプリカを格納するレプリカ格納部と、
    前記同一のグループに属する複数のパーティションの中から実行主体として割り当てられた場合に、前記ログ格納部に格納された前記更新ログおよび前記レプリカ格納部に格納された前記更新ログのレプリカの合計に基づいて、前記データベースに対しバッチ更新を実行する実行部と
    を含む、データベース・システム。
  2. 複数のサーバから通知されるパーティションの更新負荷量に対応して、前記同一のグループの複数のパーティションの中から前記バッチ更新の実行主体を割り当てて、前記実行部に通知するコーディネート・サーバをさらに含む、請求項1に記載のデータベース・システム。
  3. 前記サーバは、それぞれ前記データベースの分割された1以上のパーティションを備え、前記データ格納部、前記ログ格納部、前記送信部、前記レプリカ格納部および前記実行部は、前記パーティション毎に構成される、請求項2に記載のデータベース・システム。
  4. 前記コーディネート・サーバは、パーティションの更新負荷量のグループ内合計のグループ間での差異を最小化する組み合わせを求めて、前記複数のサーバのうちの互いに独立したサーバ上で動作するパーティションから構成され、前記更新ログを相互に複製し合うものとして定められるグループを編成する、請求項3に記載のデータベース・システム。
  5. 前記実行部は、前記バッチ更新の実行権限を、前記グループ内での該実行権限の貸し出しを管理するリースサーバから、または前記同一のグループに属するすべてのパーティションによる相互合意によって、取得する、請求項4に記載のデータベース・システム。
  6. 前記コーディネート・サーバは、実行主体のパーティションの障害に応答して、前記グループ内の障害の無いパーティションの中から直近で最も低負荷なものを実行主体として割り当てて通知する、請求項5に記載のデータベース・システム。
  7. 前記実行部は、前記同一のグループに属する他のパーティションの障害に応答して、または更新インターバルの経過に応答して、前記合計によらず前記バッチ更新を実行する、請求項6に記載のデータベース・システム。
  8. 前記同一のグループ内のすべてのパーティションからのレプリカの受信確認の受領に対応して、前記更新要求に応答して前記アプリケーションへ処理が戻される、請求項7に記載のデータベース・システム。
  9. データベースと、それぞれ該データベースの分割された他のパーティションが動作する1以上の他のサーバとに接続するサーバであって、前記サーバは、
    前記データベースの分割された、当該サーバ上で動作するパーティションのデータを格納するデータ格納部と、
    アプリケーションから受領した当該サーバ上で動作するパーティションに関連する更新要求に応答して、該更新要求による更新ログを格納するログ格納部と、
    前記更新要求に応答して、前記更新ログの複製を、当該サーバ上で動作するパーティションと同一のグループに属する他のパーティションが動作する他のサーバに送信する送信部と、
    前記同一のグループに属する他のパーティションが動作する他のサーバから受信した複製による更新ログのレプリカを格納するレプリカ格納部と、
    前記同一のグループに属する複数のパーティションの中から実行主体として割り当てられた場合に、前記ログ格納部に格納された前記更新ログおよび前記レプリカ格納部に格納された前記更新ログのレプリカの合計に基づいて、前記データベースに対しバッチ更新を実行する実行部と
    を含む、サーバ。
  10. 前記サーバは、前記同一のグループの複数のパーティションの中から前記バッチ更新の実行主体を割り当てるために、受信した前記更新要求によるパーティションの更新負荷量を計量する負荷計量部をさらに含み、前記実行部は、前記パーティションの更新負荷量に基づいた割り当てに対応して、前記バッチ更新の実行主体となる、請求項9に記載のサーバ。
  11. 前記サーバは、それぞれ前記データベースの分割された、前記更新ログを相互に複製し合ういずれかのグループに属する1以上のパーティションを備え、前記データ格納部、前記ログ格納部、前記送信部、前記レプリカ格納部および前記実行部は、前記パーティション毎に構成される、請求項9または10に記載のサーバ。
  12. 前記実行部は、前記同一のグループに属する他のパーティションの障害に応答して、または更新インターバルの経過に応答して、前記合計によらず前記バッチ更新を実行する、請求項11に記載のサーバ。
  13. データベースを更新する方法であって、前記方法は、該データベースと、それぞれ該データベースの分割された他のパーティションが動作する1以上の他のサーバとに接続するサーバが、
    アプリケーションから、前記データベースの分割された、当該サーバ上で動作するパーティションに関連する更新要求を受領するステップと、
    前記更新要求に応答して、受領した前記更新要求による更新ログを格納するとともに、前記更新ログの複製を、当該サーバ上で動作するパーティションと同一のグループに属する他のパーティションが動作する他のサーバに送信するステップと、
    送信先の前記他のサーバからのレプリカの受信確認を受領して、前記アプリケーションに前記更新要求に対応して応答するステップと
    を実行し、さらに前記方法は、前記サーバが、
    前記同一のグループに属する他のパーティションが動作する他のサーバから複製による更新ログのレプリカを受信して格納するステップと、
    前記同一のグループに属する複数のパーティションの中から実行主体として割り当てられた場合に、格納された前記更新ログおよび前記更新ログのレプリカの合計に基づいて、前記データベースに対しバッチ更新を実行するステップと
    を実行する、更新方法。
  14. 前記サーバが、さらに、前記同一のグループの複数のパーティションの中から前記バッチ更新の実行主体を割り当てるために、受領した前記更新要求によるパーティションの更新負荷量を計量するステップと、前記パーティションの更新負荷量に基づいた割り当てに対応して、前記バッチ更新の実行主体となるステップとを実行する、請求項13に記載の更新方法。
  15. 前記サーバが、それぞれ、前記データベースの分割された、更新ログを相互に複製し合ういずれかのグループに属する1以上のパーティションを実現するステップをさらに実行する、請求項13または14に記載の更新方法。
  16. 前記サーバが、前記同一のグループに属する他のパーティションの障害の通知に応答して、または、更新インターバルの経過に応答して、前記合計によらず前記バッチ更新を実行するステップをさらに実行する、請求項15に記載の更新方法。
  17. コンピュータを、データベースと、それぞれ該データベースの分割された他のパーティションが動作する1以上の他のサーバとに接続するサーバとして機能させるためのコンピュータ実行可能なプログラムであって、前記プログラムは、前記コンピュータを
    前記データベースの分割された、当該サーバ上で動作するパーティションのデータを格納するデータ格納部、
    アプリケーションから受領した、当該サーバ上で動作するパーティションに関連する更新要求に応答して、該更新要求による更新ログを格納するログ格納部、
    前記更新要求に応答して、前記更新ログの複製を、当該サーバ上で動作するパーティションと同一のグループに属する他のパーティションが動作する他のサーバに送信する送信部、
    前記同一のグループに属する他のパーティションが動作する他のサーバから受信した複製による更新ログのレプリカを格納するレプリカ格納部、および
    前記同一のグループに属する複数のパーティションの中から実行主体として割り当てられた場合に、前記ログ格納部に格納された前記更新ログおよび前記レプリカ格納部に格納された前記更新ログのレプリカの合計に基づいて、前記データベースに対しバッチ更新を実行する実行部
    として機能させる、コンピュータ実行可能なプログラム。
  18. 前記サーバを、さらに、前記同一のグループの複数のパーティションの中から前記バッチ更新の実行主体を割り当てるために、受信した前記更新要求によるパーティションの更新負荷量を計量する負荷計量部として機能させ、前記実行部は、前記パーティションの更新負荷量に基づき割り当てに対応して、前記バッチ更新の実行主体として機能させる、請求項17に記載のプログラム。
  19. 前記サーバに前記データベースの分割された、更新ログを相互に複製し合ういずれかのグループに属する1以上のパーティションを生成させ、前記データ格納部、前記ログ格納部、前記送信部、前記レプリカ格納部および前記実行部は、前記パーティション毎に構成される、請求項18に記載のプログラム。
  20. データベースと、コーディネート・サーバと、複数のサーバとを含むデータベース・システムであって、前記サーバ各々は、
    前記データベースの分割された、当該サーバ上で動作するパーティションのデータを格納するデータ格納部と、
    アプリケーションから受領した、前記パーティションに関連する更新要求に応答して、該更新要求による更新ログを格納するログ格納部と、
    前記更新要求に応答して、前記更新ログの複製を、当該サーバ上で動作するパーティションと同一のグループに属する他のパーティションが動作する他のサーバに送信する送信部と、
    前記同一のグループに属するパーティションが動作する他のサーバから受信した複製による更新ログのレプリカを格納するレプリカ格納部と、
    前記同一のグループに属する複数のパーティションの中から実行主体として割り当てられた場合に、前記ログ格納部に格納された前記更新ログおよび前記レプリカ格納部に格納された前記更新ログのレプリカの合計に基づいて、前記データベースに対しバッチ更新を実行する実行部と
    を含み、
    前記コーディネート・サーバは、複数のサーバから通知されるパーティションの更新負荷量に対応して、バッチ更新の実行主体を割り当てて、実行部に通知し、
    前記サーバは、それぞれ前記データベースの分割された1以上のパーティションを備え、前記データ格納部、前記ログ格納部、前記送信部、前記レプリカ格納部および前記実行部は、前記パーティション毎に構成され、
    前記コーディネート・サーバは、前記パーティションの更新負荷量のグループ内合計のグループ間での差異を最小化する組み合わせを求めて、更新ログを相互に複製し合うパーティションからなるグループを編成し、
    前記実行部は、前記バッチ更新の実行権限を、前記グループ内での該実行権限の貸し出しを管理するリースサーバから、または前記同一のグループに属するすべてのパーティションによる相互合意によって、取得し、
    前記コーディネート・サーバは、実行主体のパーティションの障害に応答して、前記グループ内の障害の無いパーティションの中から直近で最も低負荷なものを実行主体として割り当てて通知し、
    前記実行部は、前記同一のグループに属する他のパーティションの障害に応答して、または更新インターバルの経過に応答して、前記合計によらず前記バッチ更新を実行し、
    前記同一のグループ内のすべてのパーティションからのレプリカの受信確認の受領に対応して、前記更新要求に応答して前記アプリケーションへ処理が戻される、
    データベース・システム。
JP2008302250A 2008-11-27 2008-11-27 データベース・システム、サーバ、更新方法およびプログラム Expired - Fee Related JP5425448B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008302250A JP5425448B2 (ja) 2008-11-27 2008-11-27 データベース・システム、サーバ、更新方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008302250A JP5425448B2 (ja) 2008-11-27 2008-11-27 データベース・システム、サーバ、更新方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2010128752A JP2010128752A (ja) 2010-06-10
JP5425448B2 true JP5425448B2 (ja) 2014-02-26

Family

ID=42329107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008302250A Expired - Fee Related JP5425448B2 (ja) 2008-11-27 2008-11-27 データベース・システム、サーバ、更新方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5425448B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6044539B2 (ja) * 2011-08-02 2016-12-14 日本電気株式会社 分散ストレージシステムおよび方法
US10706021B2 (en) * 2012-01-17 2020-07-07 Oracle International Corporation System and method for supporting persistence partition discovery in a distributed data grid
JP6414875B2 (ja) * 2014-07-16 2018-10-31 Necプラットフォームズ株式会社 データ管理システム、データ管理装置、プログラム及びデータ管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006277158A (ja) * 2005-03-29 2006-10-12 Nec Corp データ更新システム、サーバ及びプログラム
JP4708084B2 (ja) * 2005-05-10 2011-06-22 富士通株式会社 レプリケーションプログラム及びデータベースシステム
US20080052327A1 (en) * 2006-08-28 2008-02-28 International Business Machines Corporation Secondary Backup Replication Technique for Clusters

Also Published As

Publication number Publication date
JP2010128752A (ja) 2010-06-10

Similar Documents

Publication Publication Date Title
US11153380B2 (en) Continuous backup of data in a distributed data store
US10997163B2 (en) Data ingestion using file queues
US20210081383A1 (en) Lifecycle support for storage objects
KR102307371B1 (ko) 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
US10642654B2 (en) Storage lifecycle pipeline architecture
US10061830B2 (en) Reorganization of data under continuous workload
US10664495B2 (en) System and method for supporting data grid snapshot and federation
US9355060B1 (en) Storage service lifecycle policy transition management
US8392482B1 (en) Versioning of database partition maps
US7546486B2 (en) Scalable distributed object management in a distributed fixed content storage system
US8386540B1 (en) Scalable relational database service
US11442961B2 (en) Active transaction list synchronization method and apparatus
JP6190389B2 (ja) 分散型計算環境において計算を実行する方法およびシステム
Xue et al. Seraph: an efficient, low-cost system for concurrent graph processing
CN109669929A (zh) 基于分布式并行数据库的实时数据存储方法和***
US11550820B2 (en) System and method for partition-scoped snapshot creation in a distributed data computing environment
KR20080068687A (ko) 대용량 데이터베이스와 인터페이스하기 위한 다 계층소프트웨어 시스템에서 캐쉬 콘텐츠의 일관성을 유지하는시스템 및 방법
US9984139B1 (en) Publish session framework for datastore operation records
US10909143B1 (en) Shared pages for database copies
CN112199427A (zh) 一种数据处理方法和***
JP2023541298A (ja) トランザクション処理方法、システム、装置、機器、及びプログラム
JP5425448B2 (ja) データベース・システム、サーバ、更新方法およびプログラム
EP4081888A1 (en) Dynamic adaptive partition splitting
JP5480046B2 (ja) 分散トランザクション処理システム、装置、方法およびプログラム
WO2007028249A1 (en) Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131016

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: 20131105

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20131105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131127

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5425448

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees