(58)【調査した分野】(Int.Cl.,DB名)
分散データベース環境においてオペレーショナル・プライマリ・ノードからバックアップ・ノードにデータベース・イメージをレプリケーションするためのプログラムであって、請求項9から16のいずれか一項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【背景技術】
【0002】
ホット・スタンバイ(HSB:hot-standby)データベースでは、トランザクションが2つのフェーズでコミットされ、それによって、トランザクションが適切にコミットされたと見なされる前に、プライマリ・ノードおよびバックアップ・ノードの双方が変化の確認応答に成功しなくてはならない。これは双方のノード内のデータベースが常に同じ状態を有することを確保する2フェーズ・コミット(2PC:two-phase commit)プロトコルである。2PCは、アトミック・コミットメント・プロトコル(ACP:atomic commitment protocol)であり、トランザクションをコミットするかまたはアボート(ロールバック(roll back))するかに関して分散アトミック・トランザクションに関与する全てのプロセスを協調させるための特殊なタイプのコンセンサス・プロトコルである。いくつかのHSBデータベースは、より緩和されたトランザクションを提供することによって、ユーザが一貫性と引き換えに性能を手に入れるためのオプションを提供する。そのようなトランザクションは、バックアップ・ノードがコミット中のトランザクションの全てのログ・レコードを受信したことを確認応答するとすぐに、プライマリ・ノードがコミットする、トゥー・セーフ・レシーブド(2SR:two-safe received)プロトコルにおいて規定されている。
【0003】
プライマリ・ノードは、マスター・ノードとして知られている場合があり、バックアップ・ノードは、セカンダリ・ノード、スタンバイ・ノードまたはスレーブ・ノードとして知られている場合がある。通常、プライマリ・ノードは全てのトランザクションを受け入れる一方、バックアップ・ノードは読み出し専用トランザクションしか受け入れない。
【0004】
バックアップ・ノードをプライマリ・ノードと同期させておく様々な方法が存在するが、この出願公開では、ログ・レプリケーション(ログ・シッピング・レプリケーションとしても知られる)が検討される。ログ・レプリケーションでは、プライマリ・ノードは各書き込みトランザクションを自身のデータベースおよびログ・レコードに記憶し、それによってログ・レコードはバックアップ・ノードに更にコピーされる。バックアップ・ノードは、ログ・レコードを受信すると、受信したログ・レコードごとにREDOトランザクションを実行する。REDOトランザクションは、参照されたトランザクションを繰り返す。
【0005】
実施形態では、HSBデータベースは、高速データ・アクセスのためにメイン・メモリに記憶される。なぜなら、永続ストレージからの間接的なアクセスおよびより低速なアクセス速度と対照的に、メイン・メモリは、コンピュータ処理装置(CPU)によって直接アドレス指定されるためである。高速メモリ・アクセスは、特にHSBデータベースの特性であるわけではなく、ホット・スタンバイ機能をサポートすることができるインメモリ・データベースに適用される。ログ・レコードは通常、永続ストレージに記憶される。インメモリ・データベースは、データベースのチェックポイント・イメージ(スナップショットとしても知られる)を永続ストレージに定期的に(または要求に応じて)書き込むことによって、データに対する永続的な変更を保証する。チェックポイント・イメージ書き込みはチェックポイント・プロセスである。チェックポイント・イメージにおいて、データはデータベース・ページとして編成される。データベース・ページはストレージ内の連続データ・エリアであり、通常、サイズが単一または複数の記憶論理ブロックと等しい。単純にするために、データベース・ページのサイズがディスク・ブロックに等しいと仮定される。
【0006】
インメモリ・データベースは、自身のアクティブ・データを揮発性メモリ内に維持する。インメモリ・データベースは、メモリのための内蔵管理部を備えることが一般的であり、この内蔵管理部は、オペレーティング・システムからのメモリの大部分を配分し、次に、これをインメモリ・データベースの使用に最も適した形で編成する。データが様々なサイズのメモリ・セグメントに記憶されることが仮定されるが、各メモリ・セグメントは、チェックポイント・イメージの作成のためのメモリ・ページ・サイズにデータを編成することを可能にする情報を含む。代替的に、データベースはメモリ内のメモリ・ページ・サイズに編成され得る。
【0007】
HSBデータベースには、1つのプライマリ・ノードと、通常、1つのバックアップ・ノードとが存在するが、いくつかの変形形態は複数のバックアップ・ノードを有する。より複雑なシステムでは、パーティション(または「シャード(shards)」)において重複したデータベースを有することが可能であり、それによって、1つのパーティションはマスターと見なされ、他のパーティションはバックアップと見なされる。実施形態は、このパーティション化されたモデルにも適用される。ノードは、物理的に別個のコンピュータ装置、ラック内のカード、または単一のホスト・コンピュータ内の仮想マシンにおけるプロセスを意味し得る。時々、HSBデータベース、またはHSBデータベースを実行するコンピュータ・ノードはクラッシュする。そのようなクラッシュは、ノードのうちの1つのチェックポイント・イメージを乱し、乱されたノードに記憶されているデータベースをもはやリカバリーする(recover)ことができなくなる。クラッシュ中、別のノードが動作状態に留まっている場合、そのノードはプライマリ(既にプライマリでない場合)に切り替わることができ、トランザクションの実行を続ける。
【0008】
プライマリ・ノードの故障後、或る時間が経つと、別のノードがバックアップ・ノードとして始動される。始動されたノードは、故障(およびリカバリー)したノードであってもよく、またはHSBデータベースにおいてバックアップ・ノードとして動作することが可能なスペア・ノードであってもよい。プライマリ・ノードが故障した場合、存在しないチェックポイント・イメージからバックアップ・ノードを始動する方法はない。プライマリ・ノードが起動し実行中であるときのみデータベース・コピーが可能である。始動されたバックアップ・ノードがディスク上に記憶されたデータベースを有しない場合、リストアすることができず、REDOトランザクション内に記憶されたトランザクションを処理することができない。したがって、始動されたバックアップ・ノードのためにデータのコピーが提供される必要があり、その後、チェックポイント・イメージが作成された時点の後にプライマリ・ノードのデータベースにおいて行われた全ての変更を含むログ・レコードが作成される。
【0009】
故障の後にバックアップ・ノードが再起動されると、このバックアップ・ノードは破損したチェックポイント・イメージを有するかまたはチェックポイント・イメージを全く有しない場合がある。したがって、プライマリ・ノードをオフラインにすることなく、プライマリ・ノードからバックアップ・ノードに完全なチェックポイント・イメージをコピーする必要がある。バックアップ・ノードは、メタデータと、システム・テーブルと、最も近時のチェックポイント・イメージと、チェックポイント・イメージ作成が始動された時点から、プライマリ・データベースおよびバックアップ・データベースの双方の整合がとれた時点までに実行された書き込みトランザクションのREDOトランザクションとを必要とする。
【0010】
バックアップ・ノードのデータベースを、プライマリ・ノードからのデータと同期させること(synchronizing)は、2つのフェーズ、すなわちコピー・フェーズおよびキャッチアップ・フェーズを含む。コピー・フェーズは、プライマリ・ノードにおけるデータベースをバックアップ・ノードにコピーすることを含む。キャッチアップ・フェーズはバックアップ・ノードにおいて、プライマリ・ノードにおいて既に実行され、コミットされたトランザクションに関するログ・レコードを実行することを含む。ノードのうちの1つが故障しているかまたはリカバリー中であるとき、この故障に起因してHSBデータベースの故障耐性が減少しているので、システムは脆弱フェーズにある。
【0011】
既知のHSB同期解決策は、チェックポイント・イメージの反復バージョンを含む1つまたは複数のチェックポイント・イメージと、それに続く、最も近時のトランザクションによって作成されたログ・レコードとの完全なコピーを行う。
【0012】
例えば、既知のHSB同期プロセスは、プライマリ・ノードにおけるプライマリ同期プロセス、すなわち、チェックポイント・イメージ(メタデータおよび実際のデータを含む)をプライマリ・ノードからバックアップ・ノードに送信することと、チェックポイント・イメージの作成中にアクティブであったREDOトランザクションを送信することと、同期中にプライマリ・ノードで実行されたREDOトランザクションを送信することとに分割することができる。対応するバックアップ同期プロセスは、対応するステップ、すなわち、チェックポイント・イメージ(メタデータおよび実際のデータを含む)を受信することと、チェックポイント・イメージの作成中にアクティブであったREDOトランザクションを受信することと、同期中にプライマリ・ノードで実行されたREDOトランザクションを受信することとに分割することができる。
【0013】
コモディティー・ハードウェア上で実行されるインメモリ・データベースは、毎秒数十万個の別個の書き込みトランザクションを実行することができる。通常の状況下で、読み出し専用トランザクションは、プライマリ・ノードおよびバックアップ・ノードの双方で実行することができ、それによって負荷がプライマリ・ノードから部分的に分散される。他のノードが故障すると、残りのノードは自身の役割をプライマリに切り替えなくてはならない場合がある(既にプライマリでない場合)。プライマリ・ノードは即座に、全ての書き込みトランザクションおよび読み出し専用トランザクションの責任を負い、これによって実際には、プライマリ・ノードのアクティブなクライアント接続数が2倍になる場合がある。結果として、プライマリ・ノードのメモリ消費が著しく増大し、負荷のタイプおよび実施の詳細に依拠して、同時に実行されているトランザクション数の増大に起因して性能が低下する場合がある。
【0014】
バックアップ・ノードがリカバリーを開始すると、プライマリ・ノードは、データベースの現在の状態のフレッシュなチェックポイント・イメージを作成する責任を負う。これはデータベース・シードにバックアップするためにコピーされる。チェックポイント・イメージの作成中にコミットされなかった全てのトランザクションは、プライマリ・ノードにおけるREDOトランザクションとして記録され、バックアップ・ノードに送信され、実行されなくてはならない。これがキャッチアップ・フェーズである。
【0015】
プライマリ・ノードからバックアップ・ノードへチェックポイント・イメージをコピーし、バックアップ・ノードをプライマリ・ノードにキャッチアップさせることは、プライマリ・ノード・メモリが使い果たされる前に行われなくてはならない。プライマリ・ノード・メモリが使い果たされると、HSB同期プロセスが失敗するか、または代替的に、プライマリ・ノードのREDOトランザクションが、メモリ消費を減らすためにストレージに記憶されなくてはならない。永続ストレージREDOトランザクションは、永続ストレージ・ディスクから読み出される必要があり、これはデータを高速メモリから読み出すよりもはるかに低速である。
【0016】
永続ストレージからREDOトランザクションにアクセスすることによって、キャッチアップ・フェーズが低速になる。低速なキャッチアップによって、結果としての故障のリスクが増大し、バックアップ・ノードが時間内にプライマリ・ノードにキャッチアップする全体能力が低下する。脆弱時間中の更なる故障は、HSBデータベースの観点から致命的となり得る。最初の故障後に、バックアップ・ノードがプライマリ・ノードにキャッチアップすることができない場合、将来的な致命的エラーのリスクが増大する。
【発明の概要】
【発明が解決しようとする課題】
【0017】
したがって、キャッチアップ・フェーズは、更新頻度が高い場合、HSBデータベースの利用可能性に対する重大な脅威となり、このリスクを最小限にするためにHSB同期プロセスを可能な限り高速にすることが重要である。
【課題を解決するための手段】
【0018】
本発明の第1の態様では、分散データベース環境においてオペレーショナル・プライマリ・ノードからデータベース・イメージをレプリケーションするためのレプリケータが提供される。このレプリケータは、データベース構造および複数のデータベース・ページを含むプライマリ・ノードのチェックポイント・イメージを規定するためのイメージ・エンジンと、バックアップ・ノードを初期化し、規定されたデータベース構造を初期化されたバックアップ・ノードに保存することによって、バックアップ・ノードにレプリカ・データベースを作成するためのコントローラと、チェックポイント・イメージの各データベース・ページを保存のためにバックアップ・ノードに送信するための伝送メカニズムと、チェックポイント・イメージの作成を開始した後に、プライマリ・ノードにおける全ての後続のトランザクションを保存し、それによって、バックアップ・ノードに送信するための対応するREDOトランザクションを作成するためのロガーと、各後続のトランザクションによって操作される各データ・ページを識別するためのページ識別子と、データベース・ページの送信と並列に、各作成されたREDOトランザクションを、対応するトランザクションが生じた順序でバックアップ・ノードに送信する並列伝送メカニズムであって、バックアップ・ノードが正しい順序でトランザクションをレプリケーションすることができるようにする、並列伝送メカニズムと、各識別されたデータベース・ページを、対応するREDOトランザクションよりも前にまたは実質的に同時にバックアップ・ノードに到達するように優先順位付けするためのページ・コントローラであって、それによって、対応するREDOトランザクションは、残りのデータベース・ページがバックアップ・ノードに保存されるのを待つことなく、識別されたデータベース・ページに対し動作することができる、ページ・コントローラと、を備える。
【0019】
本発明の第2の態様によれば、分散データベース環境においてオペレーショナル・プライマリ・ノードからバックアップ・ノードにデータベース・イメージをレプリケーションするための方法が提供される。この方法は、データベース構造および複数のデータベース・ページを含むプライマリ・ノードのチェックポイント・イメージを規定することと、バックアップ・ノードを初期化し、規定されたデータベース構造を初期化されたバックアップ・ノードに保存することによって、バックアップ・ノードへのレプリカ・データベースの作成を開始することと、チェックポイント・イメージの各データベース・ページを保存のためにバックアップ・ノードに送信することと、チェックポイント・イメージの作成を開始した後に、プライマリ・ノードにおける全ての後続のトランザクションを保存し、バックアップ・ノードに送信するための対応するREDOトランザクションを作成することと、各REDOトランザクションによって操作される各データ・ページを識別することと、データベース・ページの送信と並列に、各作成されたREDOトランザクションを、対応するトランザクションが生じた順序でバックアップ・ノードに送信して、バックアップ・ノードが正しい順序でトランザクションをレプリケーションすることができるようにすることと、各識別されたデータベース・ページを、対応するREDOトランザクションよりも前にまたは実質的に同時にバックアップ・ノードに到達するように優先順位付けし、それによって、対応するREDOトランザクションが、全てのデータベース・ページがバックアップ・ノードに保存されるのを待つことなく、識別されたデータベース・ページに対して動作するようにすることと、を含む。
【0020】
データベース構造が規定され、プライマリ・ノードから抽出されて、新たに作成されたバックアップ・ノードに、このバックアップ・ノードにおいて動作するREDOトランザクションの送信と並列に送信されることが提案される。新たに作成されたバックアップ・ノードは、データベース構造が到着すると、このデータベース構造をレプリケーションする。レプリケーション(同期としても知られる)は、空のデータベース構造(メタデータ、テーブルおよびインデックス)を作成することを含む。メタデータ構造のレプリケーションの直後に、バックアップ・ノードは、データベース・クライアントとの接続の確立を開始し、これらのデータベース・クライアントへのサービス提供を開始することができる。残りのデータ・ページはREDOトランザクションの実行と並列に送信される。データベース・ページとREDOトランザクションとのインターリーブは、バックアップ・ノードが、最も必要とされるデータを最初に受信するので有利である。
【0021】
主要な利点は、プライマリ・ノードが中断なしでトランザクションを実行することができることであり、更に、バックアップ・ノードがメタデータを受信し処理すると、プライマリ・ノードがバックアップ・ノードへのREDOトランザクションの送信を開始することができることである。それに加えて、実施形態は、REDOトランザクションの送信と並列に、メイン・メモリからバックアップ・ノードへデータ・ページを送信することを可能にする。
【0022】
実施形態は、シード・データベースがプライマリ・ノードからバックアップ・ノードにコピーされるのと同時にプライマリ・ノードからバックアップ・ノードにREDOトランザクションをレプリケーションすることが可能であることを認識している。換言すれば、HSB同期プロセスは、従来から、プライマリ・ノードのストレージからバックアップ・ノードへのフレッシュなチェックポイント・イメージの転送、それに続くキャッチアップ・フェーズを含む。キャッチアップ・フェーズの後になって初めてプライマリ・ノードからバックアップ・ノードへのログ・トランザクションを開始することが可能になる。
【0023】
実施形態は、永続ディスク・ストレージを低速にする入/出力アクセスなしで、プライマリ・ノード・メイン・メモリからバックアップ・ノードへ直接チェックポイント・イメージをコピーすることを可能にする。実施形態は、HSB同期プロセス中にプライマリ・ノードからバックアップ・ノードへのアクティブなREDOトランザクションのレプリケーションを開始することも可能にする。結果として、永続ストレージ動作が存在しないので、チェックポイント・イメージ転送が高速になる。更に、チェックポイント・イメージ転送全体(すなわち、全てのデータ)について全てのアクティブなトランザクションがプライマリ・ノードにバッファリングされなくてはならない場合よりも、プライマリ・ノードにおけるメモリ消費がはるかに小さくなる。
【0024】
結果として、データベース同期プロセスの持続時間は、ディスクまたはシステム性能ではなく、ネットワーク転送能力によって制限される。ネットワーク転送能力は、例えば、TCP/IPの代わりに専用ネットワーク・プロトコルを用いることによって増大させることができるので、ストレージ入/出力のボトルネックが取り除かれ、それによって、HSB同期プロセスが短縮化し、HSBデータベースの全体利用可能性が増大する。
【0025】
トゥー・セーフ・レシーブド(2SR)プロトコル・トランザクションの観点で好ましい実施形態が説明されるが、他の実施形態は、ワン・セーフ・レシーブド(1SR:one-safe received)プロトコル・トランザクションを含む他のタイプのトランザクションを用い得る。1SRプロトコル・トランザクションでは、コミット要求がプライマリ・ノードからバックアップ・ノードに送信されとすぐにトランザクションがコミットする。
【0026】
有利には、変更されたデータベース・ページは変更されていないデータベース・ページよりも優先される。必要とされる頻度がより低いページが共有リソースに対し競合しないように、最も要求されている(popular)データ(変更されたページまたはダーティページ)を可能な限り早く送信することが有利である。
【0027】
より有利には、メイン・メモリ内のデータベース・ページは、永続ストレージにおいてデータベース・ページよりも優先される。メイン・メモリは、データがより高速にアクセスされ、転送時間が永続ストレージよりも短いので、優先される。メイン・メモリは通常、容量がより小さいがより高速なアクセス時間の揮発性メモリである。永続ストレージは通常、容量がより大きいがアクセス時間がより低速な永続ディスク・ドライブである。
【0028】
更により有利には、本方法は、REDOトランザクションによって操作される2つ以上のデータ・ページを識別することと、作成されたREDOトランザクションの送信と並列に2つ以上のデータ・ページを送信することとを更に含む。
【0029】
また更に有利には、プライマリ・ノードは全てのデータベース・ページが送信されたことをバックアップ・ノードに通知する。
【0030】
好ましくは、バックアップ・ノードは、全てのデータベース・ページが受信されたことをプライマリ・ノードに通知する。
【0031】
更に好ましくは、REDOトランザクションおよびデータベース・ページは、バックアップ・ノードに送信する前に送信バッファ内でインターリーブされる。
【0032】
更により好ましくは、トランザクションは、プライマリ・ノードに対し連続負荷を課す。
【0033】
実施形態は、クラスタ・データベース環境の外側で実行されるトランザクション・プロセスに対し、ノード故障中のデータベースの性能が、トランザクション・プロセスにとって実質的に下降ではなく実質的に一定にみえるような影響を有する。そのような影響は、実行中のコンピュータのマシンおよびシステム・レベルにおいて、ならびに任意の重複するアプリケーション・レベルよりも下において作用する。実施形態は、ノード故障中のコンピュータの速度の増加を実証する。
【0034】
本発明の第3の態様では、クラスタ・データベース環境においてオペレーショナル・プライマリ・データベースをレプリケーションするためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、コンピュータ可読プログラム・コードが具現化されたコンピュータ可読ストレージ媒体を備え、コンピュータ可読プログラム・コードは本方法の全てのステップを実行するように構成される。
【0035】
コンピュータ・プログラム製品は、コンピュータ可読媒体、例えば、光ディスク、磁気ディスク、固体ドライブ等の有形媒体に固定されるか、またはモデムもしくは他のインターフェースデバイスを用いて、限定ではないが光通信線もしくはアナログ通信線を含む有形媒体を介して、もしくは限定ではないがマイクロ波、赤外線もしくは他の伝送技法を含む無線技法を非有形に用いてコンピュータ・システムに伝送可能な、一連のコンピュータ可読命令を含む。一連のコンピュータ可読命令は、本明細書において上記で説明した機能のうちの全てまたは一部を実現する。
【0036】
当業者であれば、そのようなコンピュータ可読命令は、多くのコンピュータ・アーキテクチャまたはオペレーティング・システムと共に用いるために複数のプログラミング言語で書くことができることを認識するであろう。更に、そのような命令は、限定ではないが半導体、磁気、もしくは光を含む現在もしくは未来の任意のメモリ技術を用いて記憶することができるか、または、限定ではないが光、赤外線もしくはマイクロ波を含む現在もしくは未来の任意の通信技術を用いて送信することができる。そのようなコンピュータ・プログラム製品は、添付の印刷された文書もしくは、例えばシステムROMもしくは固定ディスク上でコンピュータ・システムに予めロードされた、電子文書を有するリムーバブル媒体、例えば市販ソフトウェアとして配信することができるか、またはネットワーク、例えばインターネットもしくはワールド・ワイド・ウェブを介してサーバまたは電子掲示板から配信することができることが予期される。
【0037】
本発明の第4の態様では、コンピュータ可読媒体上に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムが提供される。このプログラムは、このプログラムがコンピュータ上で実行されると方法請求項の全てのステップを実行するためのソフトウェア・コード部分を備える。
【0038】
本発明の第5の態様では、コンピュータ・システムにロードされ、コンピュータ・システムによって操作されると、このコンピュータ・システムが方法請求項の全てのステップを実行することを可能にする機能コンピュータ・データ構造を含む、好ましい実施形態のデータ・キャリアの態様が提供される。適切なデータ・キャリアは、固体メモリ、磁気ドライブまたは光ディスクとすることができる。データ伝送チャネルも同様に、全ての記載のストレージ媒体、および有線または無線の信号搬送媒体等の信号搬送媒体を含むことができる。
【0039】
ここで、以下の図面を参照して、本発明の好ましい実施形態を例としてのみ説明する。
【発明を実施するための形態】
【0041】
図1を参照すると、ホット・スタンバイ・データベース・システム10における好ましい実施形態の展開が説明されている。ホット・スタンバイ・データベース・システム10は、多数の他の汎用または専用コンピューティング・システム環境または構成と共に動作可能である。ホット・スタンバイ・データベース・システム10と共に用いるのに適し得る既知のコンピューティング処理システム、環境または構成あるいはそれらの組合せの例は、限定ではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な消費者電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのうちの任意のものを含む分散型クラウド・コンピューティング環境を含む。
【0042】
ホット・スタンバイ・データベース・システム10は、コンピュータ・プロセッサによって実行されるプログラム・モジュール等のコンピュータ・システム実行可能な命令の一般的な文脈で説明され得る。通常、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジックおよびデータ構造を含むことができる。ホット・スタンバイ・データベース・システム10は、分散型クラウド・コンピューティング環境において具現化することができ、分散型クラウド・コンピューティング環境では、タスクは通信ネットワークを通じてリンクされたリモート処理デバイスによって行われる。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート双方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【0043】
ホット・スタンバイ・データベース・システム10は、汎用コンピュータ・サーバプライマリ・ノード12と、プライマリ・ノード12に直接取り付けられた1つまたは複数の入力デバイス14および出力デバイス16と、コンピュータ・サーバ・バックアップ・ノード12’と、少なくとも1つのスペア・ノード13とを備える。
【0044】
ホット・スタンバイ・データベース・システム10はネットワーク20に接続される。ホット・スタンバイ・データベース・システム10は、入力デバイス14および出力デバイス16を用いてユーザ18と通信する。入力デバイス14は、キーボード、スキャナ、マウス、トラックボールまたは別のポインティング・デバイスのうちの1つまたは複数を含む。出力デバイス16は、ディスプレイまたはプリンタのうちの1つまたは複数を含む。ホット・スタンバイ・データベース・システム10は、ネットワーク20を介してネットワーク・デバイス(図示せず)と通信する。ネットワーク20は、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)またはインターネットとすることができる。
【0045】
コンピュータ・サーバ・プライマリ・ノード12は、中央処理装置(CPU)22と、ネットワーク・アダプタ24と、デバイス・アダプタ26と、バス28と、メモリ30とを備える。
【0046】
CPU22は、メモリ30からマシン命令をロードし、命令に応答してマシン動作を実行する。そのようなマシン動作は、レジスタ(図示せず)内の値をインクリメントまたはデクリメントすることと、メモリ30からレジスタにまたはその逆に値を転送することと、条件が真または偽である場合にメモリ内の異なるロケーションに分岐することと(条件付き分岐命令としても知られる)、2つの異なるレジスタ内の値を加算または減算することと、結果を別のレジスタ内にロードすることとを含む。通常のCPUは、多くの異なるマシン動作を実行することができる。マシン命令の組は、マシン・コード・プログラムと呼ばれる。マシン命令は、システムにおいて可能な抽象度の最も低い言語レベルであるマシン・コード言語で書かれる。高水準言語で書かれたコンピュータ・プログラムは、コンパイルされてマシン・コード・プログラムにされる必要があり、その後実行され得る。代替的に、仮想マシンまたはインタープリタ等のマシン・コード・プログラムは、マシン動作の観点で高水準言語を解釈実行することができる。
【0047】
ネットワーク・アダプタ24は、プライマリ・ノード12と、バックアップ・ノードを含むネットワーク・デバイスとの間の通信を可能にするためにバス28およびネットワーク20に接続される。
【0048】
デバイス・アダプタ26は、コンピュータ・サーバ12と、入力デバイス14および出力デバイス16との間の通信を可能にするためにバス28ならびに入力デバイス14および出力デバイス16に接続される。
【0049】
バス28は、メイン・システム・コンポーネントを、メモリ30を含めて合わせてCPU22に結合する。バス28は、メモリ・バスまたはメモリ・コントローラと、周辺バスと、アクセラレイティッド・グラフィックス・ポートと、多岐にわたるバス・アーキテクチャのうちの任意のものを用いるプロセッサまたはローカル・バスとを含む、任意のいくつかのタイプのバス構造のうちの1つまたは複数を表す。例として、限定ではないが、そのようなアーキテクチャは、産業規格アーキテクチャ(ISA)バス、マイクロチャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バス、および周辺コンポーネント相互接続(PCI)バスを含む。
【0050】
メモリ30は、揮発性メモリ32および不揮発性メモリまたは永続メモリ34の形態のコンピュータ・システム可読媒体を備える。揮発性メモリ32の例は、ランダム・アクセス・メモリ(RAM)36およびキャッシュ・メモリ38である。通常、揮発性メモリは、より高速であることに起因して用いられ、通常、不揮発性メモリは、データをより長く保持することに起因して用いられる。ホット・スタンバイ・データベース・システム10は、他の取外し可能または取外し不能あるいはその両方の、揮発性または不揮発性あるいはその両方のコンピュータ・システム・ストレージ媒体を更に備えることができる。単なる例として、永続メモリ34は、取外し不能な不揮発性の磁気媒体(図示しないが、通常、磁気ハードディスクまたはソリッドステート・ドライブである)に対し読み書きを行うために提供され得る。図示しないが、取外し可能な不揮発性ソリッドステート・メモリのための外部ポートと、コンパクト・ディスク(CD)、デジタル・ビデオ・ディスク(DVD)またはブルーレイ等の取外し可能な不揮発性光ディスクに対し読み書きを行うための光ディスク・ドライブとを含む更なるストレージ媒体が提供され得る。そのような例では、それぞれが1つまたは複数のデータ媒体インターフェースによってバス28に接続され得る。以下で更に示し説明するように、メモリ30は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールの組(例えば、プログラム・モジュールのうちの少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0051】
好ましい実施形態の機能を実行するように構成されるプログラム・モジュールの組は、データベース100Aおよびレプリケータ200Aを備える。バックアップ・ノード12’は、データベース100Bおよびレプリケータ200Bを備える。図示されないが、好ましい実施形態をサポートする更なるプログラム・モジュールは、ファームウェア、ブート・ストラップ・プログラム、オペレーティング・システムおよびサポート・アプリケーションを含む。オペレーティング・システム、サポート・アプリケーション、他のプログラム・モジュールおよびプログラム・データまたはそれらの何らかの組合せのそれぞれが、ネットワーキング環境の実装を含むことができる。
【0052】
ホット・スタンバイ・データベース・システム10は、ネットワーク・アダプタ24を介して少なくとも1つのネットワーク20(ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)、またはインターネットのような公衆ネットワークあるいはそれらの組合せ等)と通信する。ネットワーク・アダプタ24は、バス28を介してコンピュータ・サーバ12の他のコンポーネントと通信する。図示されていないが、ホット・スタンバイ・データベース・システム10と合わせて他のハードウェアまたはソフトウェアコンポーネントあるいはその両方が用いられ得ることを理解するべきである。限定ではないが、例は、マイクロコード、デバイス・ドライバ、冗長処理装置、外部ディスク・ドライブ・アレイ、独立ディスクの冗長アレイ(RAID)、テープ・ドライブおよびデータ・アーカイブ・ストレージ・システムを含む。
【0053】
図2を参照すると、レプリケータ200(一般的なクラスのレプリケータ200Aおよび200B)は、以下のコンポーネント、すなわち、copyidインデックス202と、dirtyidインデックス204と、送信キュー206と、プライマリ方法300と、バックアップ・ノード方法500とを含む。
【0054】
copyidインデックス202は、特定のチェックポイント・イメージについて既にバックアップ・ノードに送信されたデータベース・ページの参照を記憶するためのデータ構造である。
【0055】
dirtyidインデックス204は、チェックポイント・イメージが定義されてから変更されたデータベース・ページの参照を記憶するためのデータ構造である。代替的に、チェックポイント・イメージの全てのデータベース・ページが、ディスクから変更されていないデータベース・ページを読み出すのではなく、メモリから読み出される場合、dirtyidインデックス204は、全てのデータベース・ページの識別子を含む。前者の場合、変更されていないデータベース・ページが変更されるときはいつでも、その識別子がdirtyidインデックス204に追加される。dirtyidインデックス204は、チェックポイント・イメージ作成が完了すると空にされる。後者の場合、dirtyidインデックス204は、データベースの全てのデータベース・ページ識別子を含む。
【0056】
送信キュー206は、バックアップ・ノードに送信する前にデータベース・ページおよびREDOトランザクションを記憶するためのキューである。
【0057】
プライマリ方法300は、プライマリ・ノードをレプリケーションするための方法であり、以下で
図3および
図4〜
図7を参照して詳細に説明される。
【0058】
バックアップ・ノード方法500は、プライマリ・ノードをレプリケーションするための対応するバックアップ・ノード・プロセスであり、
図8を参照して以下で詳細に説明される。
【0059】
図3を参照すると、プライマリ方法300は論理プロセス・ステップ301〜307を含む。
【0060】
開始状況において、プライマリ方法300は、新たなバックアップ・ノードになる予定の別のノードが始動されると、トランザクションを実行する。新たなバックアップ・ノードは、破損したかまたは完全に欠落していることに起因して独自のデータベース・イメージを有しない。新たなバックアップ・ノードは、プライマリ・ノードと共通のデータベースを共有する必要がある。プライマリ方法300は、チェックポイント・イメージまたはスナップショットと呼ばれる、自身のデータベースの自己充足型の整合性のあるバージョンを作成する。インメモリ・データベースにおいて、メモリ内にチェックポイントが作成され、このメモリから、バックアップ・ノードに転送するためにチェックポイントがコピーされる。ディスクおよびメイン・メモリから、ページを並列に読み出すことができる。ダーティ・ページがメイン・メモリ内に存在する。なぜならこれらは最近変更されたためである。このため、これらのダーティ・ページは、ディスク上のページよりも早く再び変更される可能性がより高い。
【0061】
プライマリ・ノードのcopyidインデックス202において発見されるデータベース・ページは、以下の状態、すなわち、BUFFERED(既に送信バッファに加えられており、既に発見され、バックアップ・ノードに送信されることが決定されているとき)、およびSENT(ページの実際の送信が行われたとき)のうちの1つを有する。
【0062】
ステップ301は、新たなチェックポイント・イメージおよび新たなチェックポイント識別子を作成するためのものである。チェックポイント・カウンタがインクリメントされる。トランザクションによって生じる更新は、チェックポイント・イメージ作成中、データを失わない。更新トランザクションは、チェックポイント・イメージ作成中にコミットを行うことができる。以前のチェックポイント・イメージ・バージョンは、それらが永続ストレージに記憶されるまで維持される。
【0063】
ステップ302は、データベースから、メタデータおよびシステム・テーブルを含む必要なデータベース構造を抽出し、これらをバックアップ・ノード12’に送信するためのものである。
【0064】
ステップ303は、応答を待機するためのものである。メタデータの処理に成功し、バックアップ・ノード12’がデータおよびREDOトランザクションを受信する準備ができていることを通知する確認応答がバックアップ・ノード12’から到着する。
【0065】
ステップ304は、REDOトランザクションおよびデータベース・ページの並列処理のためのものであり、
図4〜
図7の並列プロセス方法304’を参照して以下でより詳細に説明される。
【0066】
ステップ305は、全てのデータベース・ページがバックアップ・ノードに送信された時を検出し、これ以上ページが送信されないことをバックアップ・ノードに通知するためのものである。
【0067】
ステップ306は、全てのデータベース・ページがバックアップ・ノードによって受信され、リカバリーされたことを確認応答するためのものである。
【0068】
ステップ307は、通常の手順に戻り、ローカル・コミット・プロトコルから分散コミット・プロトコルに切り替えるためのものである。
【0069】
図4を参照すると、並列プロセス方法304’は、論理プロセス・ステップ304A1、304A2、304A3、304A4、304Fおよび方法304Bを含む。
【0070】
ステップ304A1は、プロセスを、並列に実行される2つの別個のプロセス、すなわち、ステップ304A2において開始する、バックアップ・ノードにデータベース・ページを送信するための第1のプロセスと、方法304BにおいてREDOトランザクションを扱うための第2のプロセスとに分割するためのものである。
【0071】
ステップ304A2は、チェックポイント・イメージ作成以降、データベース・ページがクリーンであるかまたはダーティであるか(変更されていないかまたは変更されているか)を判断するためのものである。dirtyidインデックス204が調べられる。データベース・ページがdirtyidインデックス204内にリストされていない場合、ページはクリーンであり、ステップ304A3に進む。そうでない場合、ページはダーティであり、ステップ304A4に進む。データベース・ページは、変更されたことに起因してdirtyidインデックス204内にリストされている場合、ダーティである。
【0072】
ステップ304A3は、メイン・メモリまたはストレージからデータベース・ページを読み出すためのものである。双方のページが対応するので、整合性の観点からこれは問題でない。一方、好ましい実施形態では、データベース・ページは、アクセス時間がより高速であるので、オペレーショナル・メモリから読み出される。アクセスされるデータベース・ページは、バックアップ・ノードに転送するために送信キュー206に送信される。次に、ステップ304Fに進む。
【0073】
ステップ304A4は、メイン・メモリからデータベース・ページを読み出すためのものである。これは単に、ページの最も新しいコピーが存在するのがメイン・メモリであることに起因する。次に、ステップ304Fに進む。
【0074】
方法304Bは、バックアップ・ノードにREDOトランザクションを送信するためのものであり、
図5に関して以下でより詳細に説明される。次に、ステップ304Fに進む。
【0075】
ステップ304Fは、処理するべきデータベース・ページまたはREDOトランザクションがまだ存在するか否かを判断し、存在する場合、ステップ304A1に戻るためのものである。そうでない場合、ステップ305に進む。
【0076】
図5を参照すると、方法304B(REDOトランザクションをバックアップ・ノードに送信する)は、論理プロセス・ステップ304B1〜304B9、方法304Cおよび方法304Dを含む。
【0077】
ステップ304B1は、全てのREDOトランザクションについてループを定義し、それぞれのREDOトランザクションからデータベース・ページ識別子を抽出するためのものである。
【0078】
ステップ304B2は、全てのページに対する全てのチェックを実行することによって、2つ以上のデータベース・ページでのREDOトランザクションを処理するためのものである。
【0079】
ステップ304B3は、抽出されたページ識別子またはページ識別子を求めてcopyidインデックス202を探索して、データベース・ページがバックアップ・ノードに既に送信されたか否かを判断するためのものである。
【0080】
ステップ304B4は、抽出されたページIDがcopyidインデックス202内になく、したがってまだバックアップ・ノードに送信されていない場合に、ステップ304B5に分岐するためのものである。そうではなく、抽出されたページIDがcopyidインデックス202内にある場合、ステップ304B9に進む。
【0081】
ステップ304B5は、dirtyidインデックス204内の抽出されたページIDを探索して、チェックポイント後に変更されたか否かを知るためのものである。
【0082】
ステップ304B6は、dirtyidインデックス204が抽出されたページIDを含む場合、ステップ304B7に分岐するためのものである。そうでない場合、プロセスは方法304Cに分岐する。
【0083】
方法304Cは、copyidインデックス202内にも、dirtyidインデックス内にも発見されないページIDを処理し、終了時にステップ304Fに進むためのものである。方法304Cは、
図6を参照して以下でより詳細に説明される。
【0084】
ステップ304B7は、メイン・メモリからページを読み出すためのものである。
【0085】
ステップ304B8は、読み出しページを、バックアップ・ノードに送信するために送信キュー206に追加するためのものである。
【0086】
304Fは、更なるページまたはREDOトランザクションが存在する場合にステップ304A1にループ・バックすることとして上記で説明された。
【0087】
ステップ304B9は、記録の状態を読み出して、方法304Dに進むためのものである。
【0088】
方法304Dは、copyidインデックス202において発見されたデータベース・ページIDを処理し、終了時にステップ304Fに進むためのものである。方法304Dは、
図7を参照して以下でより詳細に説明される。
【0089】
図6を参照すると、方法304Cは、論理プロセス・ステップ304C1〜304C3、304E1および304E2を含む。
【0090】
ステップ304C1は、抽出されたデータベース・ページがクリーンであり、最新のチェックポイント・イメージよりも前に作成されている場合、ステップ304C2に分岐するためのものである。そうでない場合、ステップ304C3に進む。
【0091】
ステップ304C2は、オペレーショナル・メモリまたはストレージ・メモリからデータベース・ページを読み出すためのものである。次に、ステップ304E1に進む。
【0092】
ステップ304E1は、REDOトランザクションを送信キュー206に追加するためのものである。次に、ステップ304E2に進む。
【0093】
ステップ304E2は、copyidインデックス202にデータベース・ページ識別子を追加し、次にステップ304Fに進むためのものである。
【0094】
ステップ304C3は、REDOトランザクションのみを送信キュー206に追加し、その後ステップ304Fに進むためのものである。
【0095】
図7を参照すると、方法304Dは、論理プロセス・ステップ304D1〜304D3を含む。
【0096】
ステップ304D1は、ページ状態が「キュー状態」である場合、ステップ304D2に分岐するためのものである。そうではなく、ページ状態が「送信済み」である場合、分岐はステップ304D3に進む。
【0097】
ステップ304D2は、送信キュー206内のページのロケーションを探索して、REDOトランザクションを、送信キュー206内においてページのロケーションの後に挿入するためのものである。次に、ステップ304Fに進む。
【0098】
ステップ304D3は、REDOトランザクションを、通常はキューに追加することなく、可能な限り早くバックアップ・ノードに送信するためのものである。
【0099】
図8を参照すると、バックアップ・ノード方法500は、論理プロセス・ステップ501〜506(サブステップ503.1、503.2、503.3、504A1、504A2、504B1および504B2を含む)を含む。バックアップ・ノード方法500はプライマリ方法300を補うものである。
【0100】
ステップ501は、プライマリ・ノードからメタデータを受信するためのものである。メタデータは、例えば、データベース構造と、データベース・スキーマを作成するのに必要な情報とを含み、バックアップ・ノードがデータベースを開くことを可能にする。
【0101】
ステップ502は、メタデータを処理し、確認応答をプライマリ・ノードに返送するためのものであり、プライマリ・ノードは、プライマリ・ノード・チェックポイント・イメージと、プライマリ・ノードにおいて実行されるトランザクションに対応するREDOトランザクションとを受信する準備ができている。
【0102】
ステップ503は、ページ・タイプがチェックポイント・イメージからのものである場合、ステップ503.1に分岐するためのものである。そうではなく、文書タイプがREDOトランザクションタイプである場合、ステップはステップ503.2に進む。バックアップ・ノードは、ページを受信すると、例えば、行、必要な情報、テーブルIDおよびトランザクションIDを抽出し、行を自身のローカル・データベースに挿入することによって、ページをリストアする。バックアップ・ノードはリストアした全てのページを、これらをインデックスに挿入することによって追跡する。
【0103】
ステップ503.1は、テーブルID、トランザクションIDを抽出し、行およびインデックスを挿入してバックアップ・データベースを構築するためのものである。次に、ステップ505に進む。
【0104】
ステップ503.2は、テーブルIDおよびトランザクションIDを抽出するためのものであり、次に、ステップ503.3に進む。
【0105】
ステップ503.3は、ページがリストアされた場合に504B1に分岐し、ページがリストアされていない場合にステップ504A1に分岐するためのものである。
【0106】
ステップ503A1は、ロックを用いてページがリストアされ得る場合にステップ503A2に分岐し、そうでない場合にステップ504B1に分岐するためのものである。
【0107】
ステップ503A2は、全てのロックを取得し、それらが全て取得されるとステップ504B1に分岐するためのものである。ページがリストアされていない場合、実行は必要なロックが取得されるところまでしか進むことができない。実行は、対応するページがリストアされるまで待機する。リストアの実装形態がロックを用いる場合、REDOトランザクション動作は、ページのリストアが完了するまで、ロックを用いずに待機しなくてはならない。そうではなく、ページがリストアされた場合、REDOトランザクションは通常通り実行することができる。通常のHSB動作においてREDOトランザクションを並列に実行することが可能である場合、これは同期中にも可能である。
【0108】
ステップ504B1は、REDOトランザクションの並列実行のためのものである。バックアップ・ノードは、REDOトランザクションを受信すると、そこから必要な情報(例えば、テーブルIDおよびトランザクションID)を抽出し、対応するページがリストアされているか否かをチェックする。
【0109】
ステップ504B2は、プライマリ・ノードがバックアップ・ノードに、チェックポイントが完了したことを通知する場合、ステップ503に分岐するためのものである。そうではなく、通知がない場合、ステップ505に進む。
【0110】
ステップ505は、ページIDを抽出し、確認応答するためのものである。バックアップ・ノードは、チェックポイントがプライマリによって完全に送信されたという通知を受信すると、この通知からページIDを抽出する。ページが完全にリストアされると、バックアップ・ノードは、プライマリ・ノードに、チェックポイント・イメージが受信されたことを確認応答する。
【0111】
ステップ506は、ローカル・コミット・プロトコルから分散コミット・プロトコルに切り替えることによって通常の手順に戻るためのものである。
【0112】
次に、本発明の更なる実施形態を説明する。
【0113】
好ましい実施形態の論理プロセス・ステップの全てまたは一部が、代替的に、本方法の論理プロセス・ステップを実行するように構成された論理要素を含む1つまたは複数の論理装置において具現化され得ること、および、そのような論理要素が、ハードウェア・コンポーネント、ファームウェア・コンポーネントまたはそれらの組合せを含むことができることが当業者には明らかであろう。
【0114】
好ましい実施形態の論理コンポーネントの全てまたは一部が、代替的に、本方法のステップを実行するための論理要素を含む論理装置において具現化され得ること、および、そのような論理要素が、例えば、プログラマブル論理アレイまたは特定用途向け集積回路における論理ゲート等のコンポーネントを含むことができることも当業者には等しく明らかであろう。そのような論理構成は、そのようなアレイまたは回路において、例えば、固定搬送媒体または伝送可能な搬送媒体を用いて記憶または伝送され得る仮想ハードウェア記述子言語を用いて、論理構造を一時的にまたは永続的に確立するための要素を可能にする際に更に具現化され得る。
【0115】
更なる代替の実施形態では、本発明は、コンピュータ・インフラストラクチャに展開され、そこで実行されると、コンピュータ・システムに本方法の全てのステップを実行させるように動作可能なコンピュータ・プログラム・コードを展開するステップを含む、サービスを展開するコンピュータ実施方法の形態で実現することができる。
【0116】
本方法および好ましい実施形態のコンポーネントは、代替的に、並列ソフトウェアを実行するための2つ以上のプロセッサを含む並列コンピューティング・システムにおいて完全にまたは部分的に具現化され得ることが理解されよう。
【0117】
図9を参照すると、データベースを並列に処理するためのホット・スタンバイ・データベース・システムの並列な組を含む例示的な並列コンピューティングの実施形態10Pが説明されている。好ましい実施形態は、分散データベース環境における単一のプロセッサ・サーバにおける展開であるが、別の実施形態は、分散データベース環境における並列なプロセッサ・サーバにおいて実施され得る。並列なホット・スタンバイ・データベース・システム10Pは、並列プログラム・モジュール等の並列なコンピュータ・システム実行可能命令が並列コンピューティング・システム10Pによって実行される一般的な文脈において説明される。通常、並列プログラム・モジュールは、特定のタスクを実行するか、特定の抽象データ・タイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造を含むことができる。並列ホット・スタンバイ・データベース・システム10Pは、並列コンピュータ・サーバ12Aおよび12Bを備える。直接接続またはネットワークが、並列コンピュータ・サーバ12Aおよび12B間のアクセスを提供する。
【0118】
並列コンピュータ・サーバ12Aは、CPU22AA、CPU22ABと、ネットワーク・アダプタ24Aと、バス28Aおよびメモリ30Aとを備える。同様に、並列コンピュータ・サーバ12Bは、CPU22BA、CPU22BBと、ネットワーク・アダプタ24Bと、バス28Bおよびメモリ30Bとを備える。
【0119】
バス28Aおよびバス28Bは、メモリ・バスまたはメモリ・コントローラと、周辺バスと、アクセラレイテッド・グラフィックス・ポートと、多岐にわたるバス・アーキテクチャのうちの任意のものを用いるプロセッサまたはローカル・バスとを含む、任意のいくつかのタイプのバス構造のうちの1つまたは複数を表す。
【0120】
メモリ30Aおよび30Bは、揮発性メモリ32Aおよび32B(ランダム・アクセス・メモリおよびキャッシュ・メモリ(図示せず)等)の形態、ならびに不揮発性メモリまたは永続メモリ34Aおよび34Bの形態のコンピュータ・システム可読媒体を含む。
【0121】
永続メモリ34Aは、少なくとも2つのデータベース100AAおよび100ABと、レプリケータ・モジュール200Aとを備える。実行中、レプリケータ・オブジェクト200AAおよび200ABと、対応するデータベース100AA’および100AB’は、揮発性メモリ32A内のそれぞれのメモリ空間33AAおよび33AB内でインスタンス化される。
【0122】
同様に、永続メモリ34Bは、少なくとも2つのデータベース100BAおよび100BBと、レプリケータ・モジュール200Bとを備える。実行中、レプリケータ・オブジェクト200BAおよび200BBと、対応するデータベース100BA’および100BB’は、揮発性メモリ32B内のそれぞれのメモリ空間33BAおよび33BB内でインスタンス化される。
【0123】
永続メモリ34Aおよび34Bはまた、対応するオペレーティング・システムと、1つまたは複数のアプリケーション・プログラムと、データベース管理システムと、他のプログラム・モジュールとを記憶する。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データのそれぞれまたはそれらの何らかの組合せは、ネットワーキング環境の実施を含むことができる。レプリケータ・モジュール200Aおよび200Bは、並列環境において、実施形態の機能または方法あるいはその両方を実行するように提供される。
【0124】
データベースおよびレプリケータ・モジュールは、並列な実施形態の自律的部分である。動作時に、これらの2つのタイプのモジュールが永続メモリ34Aおよび34Bから抽出され、揮発性メモリ32Aおよび34Bにロードされ、それによって、それらを別個に実行することができ、したがってそれぞれのCPU(CPU22AA、22AB、22BA、22BB)によって並列に実行することができる。
【0125】
この例において、サーバあたり2つのCPUが示されているが、任意の数のCPUを用いて代替的な並列な実施形態を構築することができる。この例において、2つの別個のCPUが用いられるが、複数のコアを有する単一の処理装置を用いて代替的な実施形態を構築することができる。
【0126】
この並列な実施形態では、CPUは物理的なCPUであるが、代替的な実施形態では、仮想的なCPUをシミュレートすることができる。仮想並列コンピューティングの実施形態では、コンピュータ・サーバは、仮想コンピューティング環境を備え、仮想並列処理装置を用いて仮想並列コンピューティングの実施形態を構築することができる。コンピュータ・サーバは、複数の仮想コアを備えた仮想処理装置を有する仮想コンピューティング環境を備える。
【0127】
更なる実施形態は、実際の処理装置と、実際の処理装置コアと、仮想処理装置と、仮想並列処理コアとの任意の組合せを含むことができる。
【0128】
当業者であれば、本発明の範囲から逸脱することなく、上記の例示的な実施形態に対し多くの改善および変更を行うことができることが明らかとなるであろう。