当業者は、添付図面を参照して好ましい実施形態に関する以下の詳細な説明を読むと、本発明の範囲を認識し、その付加的な態様を理解するであろう。
本発明は、構成データのようなデータを、主データベースから1以上の副データベースに選択的にレプリケートすることに関する。レプリケーションタスクは、主サーバと関連した主データベースの更新を備え、主サーバは、副サーバと関連した1以上の副データベース上でレプリケートされる必要がある。副サーバは、主データベースの主テーブルが第1更新コマンドで修正されたことを確認する。第1更新コマンドは、1以上のデータベース修正命令文を含むことができる。副サーバは、第1更新コマンドに基づく第2更新コマンドを確認する。副サーバは、主サーバの主テーブルに連結された副サーバにおいて副連合テーブルを生成する。副連合テーブルは、構造化問い合わせ言語(Structured Query Language:SQL)命令文のような従来のデータベースコマンドを使用して、主テーブルからのデータを副サーバ上にアクセスさせる。副サーバは、副連合テーブルを使用して第2更新コマンドを副テーブルに適用し、これにより主データベースからの更新を副データベースにレプリケートする。
本発明の一の実施形態によれば、主サーバは、第1更新コマンドに基づき第2更新コマンドを生成し、第2更新コマンドを主データベースの更新コマンドテーブルに記憶する。主サーバは、第1更新コマンドがトリガ又はアラートを介して主テーブルに適用されていたとき、副サーバに通知する。主サーバからの通知を受けると、副サーバは、主データベースの更新コマンドテーブルにアクセスし、第2更新コマンドを検索する。副サーバは、主テーブルに連結された副連合テーブルを生成し、副連合テーブルを介して副テーブルを更新する。主テーブル、副テーブル、及び副連合テーブルはすべて、同じテーブル定義を有する。
本発明の他の実施形態によれば、各レプリケーションタスクは、関連した固有のタスク識別子と、固有のシグネチャとを有する。各レプリケーションタスクと関連したタスク識別子及びシグネチャは、レプリケーションタスクが主データベース上で実行されるとき、主データベースに記憶され、レプリケーションタスクと関連した同じ固有のタスク識別子及び固有のシグネチャは、レプリケーションタスクが副データベース上で実行された後、副データベースに記憶される。副サーバが、主データベースの主テーブルに更新が発生したことを通知されるとき、副サーバは、レプリケーションタスクと関連したタスク識別子及びシグネチャを主データベースから取得して、当該シグネチャと副データベースに予め記憶されたシグネチャと比較する。主データベースからのシグネチャが副データベースからのシグネチャに合致しない場合には、副サーバは、副データベース上でレプリケーションタスクを実行し、次いで、レプリケーションタスクが再び実行されないように、主データベースからのシグネチャを副データベースに記憶する。
本発明の他の実施形態によれば、第2更新コマンドは、副データベースのデータに基づいた基準で副テーブルの更新を調整する。たとえば、主サーバにインストールされたアプリケーションはレプリケーションタスクを開始し、レプリケーションタスクは、アプリケーションと関連した構成データが維持される主データベースに新たな構成テーブルを設定する。副サーバは、レプリケーションタスクが主データベース上で実行されたことを通知される。副サーバは、レプリケーションタスクと関連したタスク識別子及びシグネチャを主データベースから取得して、レプリケーションタスクが副データベース上で実行されなかったことを確認する。副サーバは、新たな構成テーブルを作成するのに使用された第1更新コマンドに基づき、第2更新コマンドを取得する。しかしながら、第2更新コマンドは、副データベースの副構成テーブルの存在に関して、副データベースの副構成テーブルの修正を調整する。アプリケーションが未だ副サーバにインストールされていなかったので、副構成テーブルは副データベースに未だ存在せず、主データベースの新たな構成テーブルから副データベースにレプリケートされるデータはない。将来の時点で、アプリケーションが副サーバにインストールされ、副構成テーブルが副データベースに作成されるとき、副サーバは、レプリケーションのプロセスを開始するように指示されることができる。副サーバは、レプリケーションタスクと関連したタスク識別子及びシグネチャを主データベースから再び取得し、主データベースからのシグネチャが副データベースからのシグネチャに合致しないことを確認し、副データベース上でレプリケーションタスクを実行する。
本発明のさらに他の実施形態によれば、第2更新コマンドは、副データベースのデータに基づいた基準で副テーブル内の或る行の更新を調整する。たとえば、主サーバ上のアプリケーションは、特定の基準に基づき主テーブル内の或る行を修正するレプリケーションタスクを開始する。副サーバは、レプリケーションタスクが主データベース上で実行されたことを通知される。副サーバは、レプリケーションタスクと関連したタスク識別子及びシグネチャを主データベースから取得し、レプリケーションタスクが副データベース上で実行されなかったことを確認する。副サーバは、新たな構成テーブルを作成するのに使用された第1更新コマンドに基づき、第2更新コマンドを取得する。副サーバは、レプリケーションタスクを実行し、副テーブルのある行のみが、特定の基準に基づいて更新される。
本発明のさらに他の実施形態によれば、新たな副サーバが、既存の副サーバのクラスタに加えられる。新たな副サーバは、起動して主データベースにアクセスし、主サーバ上でレプリケーションタスクと関連した固有のタスク識別子及びシグネチャを取得する。次いで、各レプリケーションタスクは、新たな副サーバと関連した副データベース上で実行される。従って、新たな副データベースは、無駄な手動構成無しに、主データベース又は任意の他の副データベースを破損させずに、主データベースから選択的にレプリケートされる。
本明細書中に組み込まれ、本明細書の一部を形成する添付図面は、本発明の原理を説明するのに役立つ記載とともに、本発明の幾つかの態様を説明する。
以下に記載される実施形態は、当業者が本発明を実施し、本発明を実施する最良の形態を説明することを可能にするのに必要な情報を表す。添付図面に照らして以下の説明を読むと、当業者は、本発明の概念を理解し、ここで特に扱われていないこれらの概念の応用を認識するであろう。これらの概念及び応用は、開示及び添付の特許請求の範囲の範囲内に属することを理解すべきである。
本発明は、主サーバと関連した主データベースが、クラスタ内で動作する複数の副サーバと関連した複数の副データベースに選択的にレプリケートされるのを可能にする。本発明は、通常のデータベース修正命令文を使用してレプリケーションを実行し、通常のデータベースのレプリケーションと関連した複雑さを解消し、通常のデータベースのレプリケーションよりも著しく大きなフレキシビリティを提供する。本発明は、複数のクラスタ状のデータベースが、処理オーバーヘッドがほとんどなく又はネットワーク帯域をほとんど利用せずに互いに実質的に同時に選択的にレプリケートされるのを可能にする。本発明はまた、人間の介在又は複雑なデータベースコマンドの知識なしに、データベースの自動的な復元を可能にする。レプリケーションタスクを実行する通常のデータベース命令文の使用を通して、本発明は、マルチベンダー環境における選択的データベースのレプリケーションを提供する。
図1は、本発明の一の実施形態によるデータベースを選択的にレプリケートするためのシステムのブロック図である。主サーバ10が、ネットワーク14を介して複数の副サーバ12に連結されている。主サーバ10及び副サーバ12は、好ましくは、クラスタ内で動作し、1以上のサービスをネットワーク14を介して他の装置(図示せず)に提供する。主サーバ10は、主データベース16に通信可能に連結され、主データベース16と関連しており、各副サーバ12は、副データベース18に通信可能に連結され、副データベース18と関連している。主サーバ10及び副サーバ12は、時として、本明細書ではクラスタ内のノードと呼ばれてもよい。クラスタ内の特定のノードについての主ノード又は副ノードとしての指定は、設備次第としてもよい。しかしながら、主サーバ10のような、主サーバとして表示されたノードは、副サーバ12のような、すべての他のノードが、クラスタ内の各ノードと共通する構成情報のようなある情報を受信するように通信するのが好ましいノードである。主サーバ又は副サーバとしての役割以外に、主サーバ10と副サーバ12との間には物理的な相違が殆どなくともよい。主サーバ10及び副サーバ12は、本明細書ではサーバ10、12として一括して呼ばれてもよく、その場合には、当該説明は、主サーバ10と副サーバ12に等しく関する。
サーバ10、12は、本明細書に記載された機能を組み込むのに適した任意のデータ処理装置を含むことができる。サーバ10、12は、通常の又は固有のオペレーティングシステムを作動させる一般的な目的のコンピュータサーバでもよく、これらのサーバは、サーバ10、12上で遂行する1以上のアプリケーションを通して通常の又は特別な機能を組み込んでいる。或いは、サーバ10、12は、限定された機能を提供する特別な目的の装置でもよい。本発明の一の実施形態によれば、サーバ10、12は、音声、ビデオ、オーディオ、及び他のサービスの提供のような種々の通信サービスを、電話、コンピュータなどのような複数のエンドユーザ装置(図示せず)に提供できるメディアアプリケーションサーバを含む。
ネットワーク14は、サーバ10、12間の通信を有線又は無線でできる、任意の適当な通信技術を含むことができ、トランスミッションコントロール・プロトコル/インターネット・プロトコル(Transmission Control Protocol/Internet Protocol:TCP/IP)、リアルタイムトランスポート・プロトコル(Real−Time Transport Protocol:RTP)、メディアリソースコントロール・プロトコル(Media Resource Control Protocol:MRCP)などのような、任意の通常のメッセージ・プロトコルを使用してもよく、或いは固有のメッセージ・プロトコルを使用してもよい。主データベース16及び副データベース18は、通常のリレーショナル又は階層型DBMSのような、任意の適当なデータベース管理システム(DBMS)を含んでもよい。特に、主データベース16及び副データベース18は、データベースが構造化問い合わせ言語(SQL)命令文のような同じ通常のデータベース命令文と同じ方法で応答する限り、同じベンダーによって又は異なるベンダーによって提供されてもよい。主データベース16及び副データベース18は、本明細書ではデータベース16、18としてひとまとめに呼ばれてもよく、その場合には、当該説明は、主データベース16と副データベース18の両方に等しく関係する。
データベース16、18がサーバ10,12と別個の記憶装置と関連しているものとしてそれぞれ示されているが、DBMSが、記憶装置に記憶されてもよいテーブル、データセット、及びデータを収容するインデックスのようなデータ構造体のみならず、関連したサーバ10、12上で又は特化したデータベースプロセッサ上で遂行し、かつ、アプリケーションプログラムがデータベース16、18を作成し更新しアクセスし問い合わせするのを可能にする比較的複雑な組のデータベースアクセスアルゴリズムを備えることを、当業者は認識するであろう。主データベース16に対して主サーバ10「上に」又は主サーバ10「と関連した」ということは、ネットワーク14上で又は別のネットワーク又は通信路上で主データベース16が物理的に主サーバ10上にあり又は主サーバ10と一体であり又は単に主サーバ10によってアクセス可能であろうとなかろうと、主データベース16と主サーバ10との関連付けのことを意味する。同様に、副データベース18に対してそれぞれの副サーバ12「上に」又はそれぞれの副サーバ12「と関連した」ということは、ネットワーク14上で又は別のネットワーク又は通信路上で副データベース18が物理的に副サーバ12上にあり又は副サーバ12と一体であり又は単に副サーバ12によるアクセス可能/不可に拘わらず、副データベース18とそれぞれの副サーバ12との関連付けのことを意味する。ここでデータベース情報をサーバ10、12から取得するということは、それぞれのサーバ10、12がそれぞれのデータベース16、18からのデータを提供することに実際に関与しているいないに拘わらず、ケース・バイ・ケースで、それぞれのサーバ10、12と関連したそれぞれのデータベース16、18から情報を得ることを意味する。
サーバ10、12の所望の機能を提供するアプリケーションは、種々の目的のために、それぞれのアプリケーションの動作に関する情報を備えたデータを記憶するため、データベース16、18を使用してもよい。たとえば、データベース16、18は、例えば関連したサーバ10、12のホストネーム又はインターネット・プロトコル(IP)アドレスのような、データベース16、18が関連した特定のサーバ10、12のみに関するノーダル・データを備えてもよい。データベース16、18はまた、シンプルネットワークマネジメント・プロトコル(SNMP)がサーバ10、12を管理するのに使用されるかどうかのような、クラスタ内におけるすべてのノードに関するクラスタデータを備えてもよい。本発明の一の実施形態により選択的にレプリケートされてもよいデータの種類は、SIPドメイン、SIPプロキシアトリビュート、SIPトラステッドノード、オペレーショナル・メジャーメント構成情報がアーカイブされるか否かのような、オペレーショナル・メジャーメント構成情報、コーデックがイネーブルにされることを識別するメディアコーデック情報、コーデックと関連した優先順位付け、最大中央処理ユニット限度のようなエンジニアリングパラメータ、タイムシンクロナイゼーション・サーバのアドレス、ライセンス・キーなどを備えた、セッションイニシエーション・プロトコル(Session Initiation Protocol:SIP)構成情報を備えてもよいが、これらに限定されなくてもよい。本発明によれば、主データベース16上で修正されるクラスタデータは、たとえば2又は3秒以内の実質的に同時のタイムフレームで副データベース18上で自動的にレプリケートされてもよいが、主データベース16上で修正されたノーダル・データは、副データベース18にレプリケートされない。
図2は、図1に説明された主サーバ10及び関連した主データベース16と副サーバ12及び関連した副データベース18のより詳細なブロック図であり、本発明の一の実施形態による選択的レプリケーションを実行するのに使用されてもよいテーブル定義を備える。主サーバ10は、主サーバ10の特定の機能を提供するアプリケーションを備える。副サーバ12は、テーブル・シンクロナイザ22を備え、テーブル・シンクロナイザ22はここでは、1以上の副サーバ12上で実行される本発明の態様を記載し、データを主データベース16から副データベース18に選択的にレプリケートするのに使用される。図2は、図3に関連して論じられており、図3は、本発明の一の実施形態による主データベース16中の主テーブル24を更新するためのプロセスを説明するフローチャートである。図2はまた、図4に関連して論じられており、図4は、本発明の一の実施形態によるデータを主テーブル24から副データベース18中の副テーブル26にレプリケートするためのプロセスを説明するフローチャートである。図2から図4はまた、図5に関連して論じられており、図5は、本発明の一の実施形態によるデータベースの選択的なレプリケーションを実行するのに使用されてもよい、あるテーブルのテーブル定義を説明するブロック図である。
次に図2及び図3を参照すると、アプリケーションが、1以上の構成パラメータを含むデータの新たな行28を主テーブル24に挿入することによって主テーブル24を修正し(ステップ100)、この修正が副データベース18にレプリケートされるべきレプリケーションタスクであるものと仮定する。本発明は、説明のため、テーブル、挿入、結合などのような、SQL DBMS及びリレーショナル・データベースの術語を使用して記載されているが、当業者は、ここに記載されている概念が、階層型DBMSを備えた多数の異なるタイプのDBMSに適用でき、本発明がリレーショナルDBMSの使用に限定されないことを認識するであろう。新たな行28を主テーブル24に挿入した後、アプリケーション20は、主テーブル24への更新と関連したデータの新たな行をTASK_CFGテーブル30に挿入する。データの新たな行は、SYNCTASKIDフィールド32を備えてもよく、SYNCTASKIDフィールド32は、レプリケーションタスクを識別する固有のタスク識別子を収容する。当業者は、固有の識別子が、要求時に固有の識別子を提供するベンダーが提供するオペレーティングシステム機能又はDBMS機能を呼び出すことを備えた、多くの異なる方法で取得されてもよいことを認識するであろう。TASK_CFGテーブル30における新たな行はまた、SYNCMODEフィールド34を備えてもよく、SYNCMODEフィールド34は、副データベース18上でレプリケーションを実行するのに使用されるデータベース命令文に関する情報を収容する。SYNCMODEフィールド34は、レプリケーションタスクが、SYNCSQLSTMTSフィールド38から取得されることができる単一のデータベース命令文又は多数のデータベース命令文で実行され、或いは副サーバ12が、多数のデータベース命令文を生成して、主テーブル24のスキーマ定義に基づきレプリケーションタスクを実行することを示すことができる。新たな行はまた、SYNCFIGフィールド36を備えてもよく、SYNCFIGフィールド36は、レプリケーションタスクが副テーブル26にレプリケートされるべきか否かを示す指標を収容する。新たな行はまた、SYNCSQLSTMTSフィールド38を備えてもよく、SYNCSQLSTMTSフィールド38は、SYNCMODEフィールド34に基づきレプリケーションタスクを副テーブル26上で実行する(ステップ102)ため、副サーバ12によって使用される実際のデータベース命令文を収容してもよい。特に、ここでより詳細に記載されるように、SYNCSQLSTMTSフィールド38に収容されるデータベース命令文は、新たな行28を主テーブル24に挿入するため、アプリケーション20によって使用される同じデータベース命令文でなくともよい。これは、SYNCSQLSTMTSフィールド38におけるデータベース命令文が、データを主テーブル24から副テーブル26にレプリケートするため、副サーバ12で遂行されるデータベース命令文であるからである。
次に、アプリケーション20は、新たな行をTASK_FED_ASSOCテーブル40に挿入する。TASK_FED_ASSOCテーブル40における新たな行は、上述(ステップ104)と同じSYNCTASKIDを収容するSYNCTASKIDフィールド42を備えてもよい。TASK_FED_ASSOCテーブル40における新たな行はまた、主テーブル24を識別する識別子を収容するSYNCTABLEIDフィールド44を備えてもよい。SYNCTABLEIDフィールド44からのSYNCTABLEIDを使用して、主データベース16の各テーブルの行を備えるFED_TABLE_CFGテーブル46をクロスリファレンスしてもよい。FED_TABLE_CFGテーブル46の各行は、主データベース16の特定のテーブルと関連した固有の識別子であるSYNCTABLEIDフィールド48、主データベース16における実際のテーブル名称を収容するSYNCTABLENAMEフィールド50、及び主データベース16の実際の名称を収容するSYNCDBNAMEフィールド52を備えてもよい。FED_TABLE_CFGテーブル46は、特定のSYNCTABLEIDを主データベース16における特定の主テーブルとクロスレファレンスするのに使用される。
次に、アプリケーション20は、新たな行をTASK_LAST_UPDATEテーブル54に挿入する。TASK_LAST_UPDATEテーブル54における新たな行は、TASK_FED_ASSOCテーブル40及びTASK_CFGテーブル30を参照して上述したSYNCTASKIDを収容するSYNCTASKIDフィールド56と、それぞれのSYNCTASKIDと関連した固有のシグネチャを備えたLASTSIGフィールド58とを備えることができる(ステップ106)。新たな行はまた、SYNCORDERフィールド60を備えてもよく、SYNCORDERフィールド60は、効率性のため又はデータ保全の目的のために特定の順番でレプリケーションが行われることを確保するため、副サーバ12によって使用されることができるデータを備える。TASK_CFGテーブル30、TASK_FED_ASSOCテーブル40、FED_TABLE_CFGテーブル46、及びTASK_LAST_UPDATEテーブル54は、ここでは主データベース16におけるテーブルとして全て記載されているが、当業者は、このようなテーブルが主データベース16とは別個のデータベース中にあるものでもよいことを認識するであろう。
次に、アプリケーション20は、レプリケーションタスクが主データベース16上で実行されたことを、副サーバ12で実行するテーブル・シンクロナイザ22に通知する(ステップ108)。アプリケーション20は、第1サーバ上で実行するタスクが、第1サーバ上でのイベントの発生を第2サーバ上で実行するタスクに通知するのを可能にする任意の通常のメカニズムを使用して、レプリケーションタスクについて副サーバ12に通知することができる。本発明の一の実施形態によれば、アプリケーション20は、レプリケーションタスクがSQLトリガを介して主データベース16上で実行されたことを、テーブル・シンクロナイザ22に通知する。トリガは、新たな行をTASK_LAST_UPDATEテーブル54に挿入するとき作動されてもよい。トリガは、レプリケーションタスクが主データベース16上で実行されたことをテーブル・シンクロナイザ22に通知して、テーブル・シンクロナイザ22が発生するのを待機しているイベントを生じさせてもよい。
次に図2及び図4を参照すると、テーブル・シンクロナイザ22は、更新が主テーブル24に適用されたことを確認する(ステップ200)。テーブル・シンクロナイザ22は、主データベース16のTASK_LAST_UPDATEテーブル54から各行を取得する(ステップ202)。テーブル・シンクロナイザ22は、副データベース18上で予め実行された各レプリケーションタスクと関連した行を備える副データベース18のTASK_LAST_SYNCテーブル62にアクセスする。TASK_LAST_SYNCテーブル62の各行は、それぞれのレプリケーションタスクと関連した主データベース16からSYNCTASKIDを収容するSYNCTASKIDフィールド64と、それぞれのSYNCTASKIDと関連したLASTSIGを備えるLASTSIGフィールド66とを備える。テーブル・シンクロナイザ22は、TASK_LAST_UPDATEテーブル54の各行からのLASTSIGをTASK_LAST_SYNC テーブル62の各行からのLASTSIGと比較して、TASK_LAST_UPDATEテーブル54の各行に対するLASTSIGがTASK_LAST_SYNCテーブル62の行におけるLASTSIGに合致するか否かを確認する(ステップ204)。TASK_LAST_SYNCテーブル62の行からのLASTSIGが、TASK_LAST_UPDATEテーブル54における任意の行のLASTSIGに合致しない場合には、当該SYNCTASKIDと関連したレプリケーションタスクは、副データベース18上で実行されなければならない。アプリケーション20が新たな行28を具える主テーブル24の更新を伴う新たなレプリケーションタスクを実行したので、TASK_LAST_UPDATEテーブル54における新たな行からのLASTSIGは、TASK_LAST_SYNCテーブル62における任意の行からのLASTSIGに合致しないであろう。
次いで、テーブル・シンクロナイザ22は、主データベース16のTASK_FED_ASSOCテーブル40にアクセスし、TASK_LAST_UPDATEテーブル54の新たな行からSYNCTASKIDを使用してTASK_FED_ASSOCテーブル40にアクセスし、それぞれのSYNCTASKIDに対してSYNCTABLEIDを取得する(ステップ206)。次いで、テーブル・シンクロナイザ22は、TASK_FED_ASSOCテーブル40からSYNCTABLEIDを使用して主データベース16のFED_TABLE_CFGテーブル46にアクセスし、テーブルのSYNCTABLENAME、及びそれぞれのシンクロナイゼーション・タスクで使用されたデータベースのSYNCDBNAMEを取得する(ステップ208)。次いで、テーブル・シンクロナイザ22は、FED_TABLE_CFGテーブル46のSYNCTABLENAMEフィールド50によって識別される特定の主テーブル24に指示し又は連結される副連合テーブル68を設定する(ステップ210)。当業者によって理解されるように、連合テーブルは、リモートサーバ上のデータベースのテーブルが、当該データベースのテーブルがローカルサーバ上にマウントされたか或いはローカルサーバ上に存在するかのように表示されるのを可能にする。「連合テーブル」という語句が、あるDBMSで使用される際、連合テーブルの容量及び概念が多くの異なるDBMSにおいて存在し、ここでの語句「連合テーブル」の使用が、任意の特別なDBMSにおいてこのような特徴を記載するのに使用される特定の術語に関係なく、ローカルデータベースのテーブルに適用されるデータベース命令文がデータをリモートデータベースからアクセスさせるように、リモートデータベースからローカルデータベース上のテーブルを表示する能力を包含することが認識されるであろう。本発明の副連合テーブル68は好ましくは、副連合テーブル68が連結される主テーブル24と副テーブル26の両方について同じテーブル定義を有する。
テーブル・シンクロナイザ22は、それぞれのSYNCTASKIDを使用して主データベース16のTASK_CFGテーブル30にアクセスし、TASK_CFGテーブル30のそれぞれの行のSYNCSQLSTMTSフィールド38から更新コマンドを取得する(ステップ212)。データベースの更新コマンドは、それぞれのDBMSと関連した1以上のデータベース命令文を含む。データベースの更新コマンドが単一のデータベース命令文を含む場合には、SYNCMODEフィールド34は、「0」の値を有してよい。データベースの更新コマンドが多数のデータベース命令文を含む場合には、SYNCMODEフィールド34は、「1」の値を有してよい。次いで、テーブル・シンクロナイザ22は、副連合テーブル68を使用してデータベース命令文を副テーブル26に適用し、主データベース16において主テーブル24の新たな行28からデータをレプリケートする新たな行70を作成する。次いで、テーブル・シンクロナイザ22は、引き続きレプリケーションタスクを繰り返さないようにSYNCTASKIDとTASK_LAST_UPDATEテーブル54から取得されたそれぞれのレプリケーションタスクと関連したLASTSIGとを備えたTASK_LAST_SYNCテーブル62に新たな行を挿入する(ステップ214)。次いで、テーブル・シンクロナイザ22は、一定の期間の後、副連合テーブル68を取り除いてもよい。
他の実施形態では、SYNCMODEフィールド34は「2」の値を有し、これは、テーブル・シンクロナイザ22が主テーブル24のテーブルスキーマに基づき第2のコマンドを生成することの表示である。このような実施形態では、テーブル・シンクロナイザ22は、主データベース16のスキーマを問い合わせし、主テーブル24及び副テーブル26を定めるテーブルスキーマを確認する。テーブル・シンクロナイザ22は、挿入、更新、及び削除のSQL命令文を生成し、これらの命令文は、副連合テーブル68に対して各フィールド上で結合を実行する。挿入のSQL命令文は、副テーブル26中には事前にはなかった新たな行を、主テーブル24から副テーブル26に加える。更新のSQL命令文は、主テーブル24からの同じ行のデータに基づき副テーブル26の任意の行を更新する。削除のSQL命令文は、主テーブル24中に存在しない行を副テーブル26から取り除く。
図5は、本発明の他の実施形態によるアプリケーション20によって実行される典型的なレプリケーションタスクの典型的なデータを説明するブロック図である。TASK_FED_ASSOCテーブル40、TASK_CFGテーブル30、FED_TABLE_CFGテーブル46、TASK_LAST_UPDATEテーブル54、及びTASK_LAST_SYNCテーブル62は、図2を参照して論じられたものと同一のフィールドを収容する。しかしながら、図5には、説明のため、実際の見本データが示されている。それぞれのテーブルの各行には、それぞれのテーブルの後にアルファベット文字を付したのと同じ参照符号が記載されている。たとえば、TASK_FED_ASSOCテーブル40は、3つの行40A,40B,40Cを収容する。TASK_FED_ASSOCテーブル40の各行は、ここで論じられているように、特定の値を収容するSYNCTASKIDフィールド42と、特定の値を収容するSYNCTASKIDフィールド44とを備える。フィールド内のデータは、ここでは、それぞれのフィールドの名称で呼ばれる。アプリケーション20が、SYNCTASKIDが「101」に等しいレプリケーションタスクでちょうど終了したものと仮定する。アプリケーション20は、行30AをTASK_CFGテーブル30に記憶し、そこでは、SYNCTASKIDは「101」に等しく、SYNCMODEは「0」に等しく、SYNCFIGは「1」に等しく、SYNCSQLSTMTSは、テーブル・シンクロナイザ22が副テーブル26に適用してレプリケーションタスクを実行するSQL命令文を収容する。アプリケーション20はまた、同じSYNCTASKIDを収容し、主テーブルが「8282」に等しいSYNCTABLEIDを参照するTASK_FED_ASSOCテーブル40に、行40Aを挿入した。アプリケーション20は、同じSYNCTASKID及び「62」に等しいLASTSIGを収容するTASK_LAST_UPDATEテーブル54に、行54Aを挿入した。行54Aは、「0」に等しいSYNCORDERを収容し、これは、このレプリケーションタスクの順序が他のレプリケーションタスクの順序と無関係であることを表示する。アプリケーション20がレプリケーションタスクの終了時点でテーブル・シンクロナイザ22に通知するものと仮定する。テーブル・シンクロナイザ22は、主データベース16のTASK_LAST_UPDATEテーブル54から行54A、54Bを読み込む。テーブル・シンクロナイザ22は、行54A、54Bの各々からのLASTSIGを、副データベース18のTASK_LAST_SYNCテーブル62の行62A、62BからのLASTSIGと比較する。テーブル・シンクロナイザ22は、行62AのLASTSIGが行54AのLASTSIGと合致しないことを確認する。テーブル・シンクロナイザ22は、「101」のSYNCTASKID値を使用して、TASK_FED_ASSOCテーブル40を読み込み、同一のSYNCTASKID値「101」を収容する行40Aを取得する。テーブル・シンクロナイザ22は、行40AのSYNCTABLEIDが「8282」に等しいことを確認する。テーブル・シンクロナイザ22は、行46CからのSYNCTABLEIDを使用して、FED_TABLE_CFGテーブル46から行46Cを取得する。行46Cは、SYNCTABLENAMEフィールド50に収容されるテーブル名称が「OM_CFG」であり、SYNCDBNAMEフィールド52のデータベース名称が「EMPLATCORE」に等しいことを表示する。テーブル・シンクロナイザ22は、「OM_CFG_FED」と名付けられた副連合テーブル68を副データベース18上に生成する。テーブル・シンクロナイザ22が、レプリケーションタスクにおいて更新され、サフィックス「_FED」が付された主テーブル24の名称に基づき、連合データベーステーブルを生成したことに留意されたい。副データベース18に適用してそれぞれのレプリケーションタスクを実行するTASK_CFGテーブル30のSYNCSQLSTMTSフィールド38に記憶された更新コマンドに対するものと同じ名称規則を主サーバ10が使用する限り、副連合テーブル68を生成するのに、任意の適当な名称規則を使用することができる。
副連合テーブル68は、主データベース16の主テーブル24に連結される。副連合テーブル68は、副連合テーブル68を参照する副データベース18に適用されるSQL命令文が、主テーブル24全体を副データベース18にコピーせずに、副連合テーブル68と主テーブル24との連合した連結によって主テーブル24にアクセスするという点で、主テーブル24の副データベース18から主サーバ10上に、仮想的なビューを実質的に提供する。テーブル・シンクロナイザ22は、TASK_CFGテーブル30にアクセスし、「101」に等しいSYNCTASKID値を使用して、TASK_CFGテーブル30から行30Aを取得する。SYNCMODEフィールド34における「0」の値は、更新コマンドが単一のデータベース命令文であることを表示する。SYNCFIGフィールド36における「1」の値は、このタスクが副サーバ12上でレプリケートされるべきであることを表示する。テーブル・シンクロナイザ22は、図5に示されるように「更新」SQL命令文である特定のデータベース命令文をSYNCSQLSTMTSフィールド38から得て、そこで、OM_CFG副テーブル26の「IND」フィールドが主テーブル24の「IND」フィールドに等しい場合には、「OM_CFG」副テーブル26の「CFG」フィールドは、主テーブル24からの「CFG」フィールドの値に設定される。SYNCSQLSTMTSフィールド38に収容された「更新」命令文が副連合テーブル68を参照することに留意されたい。副連合テーブル68の使用は、通常のSQL命令文が副サーバ12上でレプリケーションタスクを実行するのに使用されることを可能にする。図5に説明されたテーブルの各々が、SYNCTASKIDの値が「653」に等しい第2レプリケーションタスクが主データベース16上と副データベース18上の両方で事前に実行されたこと、及びこのようなレプリケーションタスクが多数の主テーブル24と多数のSQL命令文を伴うことを反映していることにも留意されたい。
図6は、本発明の一の実施形態による副サーバ12のブロック図である。副サーバ12は、ここに記載されるようなテーブル・シンクロナイザ22の機能を実施するのに適したソフトウェア84が記憶されたメモリ82を収容する制御システム80を備える。副サーバ12は、適宜、ネットワーク14又は副データベース18とインターフェース接続するための通信インターフェース86を備える。ここでは図示されていないが、主サーバ10のブロック図は、副サーバ12のブロック図と同様のものでもよく、そこでは、メモリの関連したソフトウェアは、アプリケーション20に関して記載された機能を実施するのに適しているであろう。
当業者は、本発明の好ましい実施形態に対する改良及び修正を認識するであろう。このような改良及び修正はすべて、本明細書に開示された概念及び以下の特許請求の範囲の範囲内であるとみなされる。