(57)【要約】【課題】  変更追跡技法を使用し、トランザクションレプリケーション中に、ソースデータの宛先データとの整合性を維持する。【解決手段】  第１の機能上の特徴は、トランザクションデータベースレプリケーション技法であることである。第２の特徴は、本技法が、ソースシステムのトランザクション状態の増分追跡をサポートすることである。本技法の第３の特徴は、最初の２つの特徴を満たしながら、トリガを使用して変更を追跡することである。【選択図】  図６
2005301329.tif 000002
【特許請求の範囲】
【請求項１】
宛先データベース部で、トランザクション整合性のある一群のテーブルを維持する方法であって、
複数の変更をソースデータベースから取り込むステップと、
前記変更を少なくとも１つの整合性のある集合の形にグループ化するステップと、
少なくとも１つの整合性のある変更の集合を前記宛先データベースに適用するステップと
を備えることを特徴とする方法。
【請求項２】
前記複数の変更を取り込むステップは、複数のイベントのそれぞれについて、
データベースイベントを認識するステップと、
前記イベントに応答してトリガを発火するステップと、
前記イベントについて識別番号を生成するステップと、
前記イベントおよび前記識別番号に関するデータを、変更として変更追跡テーブルに格納するステップとを含む
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記変更をグループ化するステップは、
前記複数の整合性のある変更の集合を識別するステップと、
前記整合性のある集合を回復するための情報を整合性集合テーブルに格納するステップとを含む
ことを特徴とする請求項２に記載の方法。
【請求項４】
各整合性のある集合は、前記複数の変更の一部分を含み、前記一部分内の各変更について、同じトランザクション内でコミットされたソーステーブルに対する他の変更もまたすべて前記集合内にある
ことを特徴とする請求項１に記載の方法。
【請求項５】
前記変更ステートメントを前記宛先データベースに適用するステップは、
整合性のある集合内のメンバシップに基づいて、変更追跡テーブルから変更の集合を抽出するステップと、
前記変更の集合を１つのトランザクションで前記宛先データベースに適用するステップとを含む
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記取り込むステップ、前記グループ化するステップ、および前記適用するステップは同期している
ことを特徴とする請求項１に記載の方法。
【請求項７】
各変更はイベントに対応し、前記イベントは、ソースデータベース内のデータに対する挿入、更新、および削除のうちの１つである
ことを特徴とする請求項１に記載の方法。
【請求項８】
宛先データベース部で、トランザクション整合性のある一組の宛先テーブルを維持する方法を実行するためのコンピュータ実行可能命令を記憶しているコンピュータ可読媒体であって、
複数の変更をソースデータベースから取り込むステップと、
前記変更を少なくとも１つの整合性のある集合の形にグループ化するステップと、
少なくとも１つの整合性のある変更の集合を前記宛先データベースに適用するステップと
を備えることを特徴とするコンピュータ可読媒体。
【請求項９】
前記複数の変更を取り込むステップは、複数のイベントのそれぞれについて、
データベースイベントを認識するステップと、
前記イベントに応答してトリガを発火するステップと、
前記イベントについて識別番号を生成するステップと、
前記イベントおよび前記識別番号に関するデータを、変更として変更追跡テーブルに格納するステップとを含む
ことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記変更をグループ化するステップは、
前記複数の整合性のある変更の集合を識別するステップと、
前記整合性のある集合を回復するための情報を整合性集合テーブルに格納するステップとを含む
ことを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１１】
各整合性のある集合は、前記複数の変更の一部分を含み、前記一部分内の各変更について、同じトランザクション内でコミットされたソーステーブルに対する他の変更もまたすべて前記集合内にある
ことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１２】
前記変更ステートメントを前記宛先データベースに適用するステップは、
整合性のある集合内のメンバシップに基づいて、変更追跡テーブルから変更の集合を抽出するステップと、
前記変更の集合を１つのトランザクションで前記宛先データベースに適用するステップとを含む
ことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１３】
前記取り込むステップ、前記グループ化するステップ、および前記適用するステップは同期している
ことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１４】
各変更はイベントに対応し、前記イベントは、ソースデータベース内のデータに対する挿入、更新、および削除のうちの１つである
ことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１５】
ソースデータベース内のソーステーブル群と宛先データベース内の宛先テーブル群の間で、トランザクション整合性を維持するためのシステムであって、
各ソーステーブルが前記ソースデータベースに関連付けられ、イベントに応答して実行する関連トリガを有する少なくとも１つのソーステーブルと、
前記変更イベントに関するデータを記録するための少なくとも１つの変更追跡テーブルと、
前記少なくとも１つの変更追跡テーブルのエントリを、少なくとも１つの順序付けられた整合性のある集合の形にグループ化する整合性集合テーブルと
を備えたことを特徴とするシステム。
【請求項１６】
前記ソーステーブル群のそれぞれは、少なくとも１つの対応する変更追跡テーブルを有する
ことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記変更追跡テーブルに、前記トリガが実行したことに応答して、前記イベント、および前記イベントについての識別番号に関するデータが投入される
ことを特徴とする請求項１５に記載のシステム。
【請求項１８】
エントリが、整合性のある変更の集合の形にグループ化される
ことを特徴とする請求項１７に記載のシステム。
【請求項１９】
変更に対応する複数のイベントについて、各整合性のある集合は、前記複数の変更の一部分を含み、前記一部分内の各変更について、同じトランザクション内でコミットされたソーステーブルに対する他の変更もまたすべて前記一部分内にある
ことを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記変更追跡テーブルは、前記宛先データベースに適用すべき少なくとも１つの変更を含む
ことを特徴とする請求項１５に記載のシステム。
【請求項２１】
前記整合性集合テーブルを介して識別された整合性のある変更の集合内のメンバシップに基づいて、前記変更追跡テーブルからデータが抽出される
ことを特徴とする請求項１５に記載のシステム。
【請求項２２】
１組の抽出された変更が、１つのトランザクションで前記宛先データベースに適用される
ことを特徴とする請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムの分野に関する。より詳細には、本発明は、データベースシステム内でのレプリケーション（replication）に関する。
【背景技術】
【０００２】
データベースレプリケーションは、ある位置（ソース位置）でデータテーブル内に常駐するデータを他の位置（宛先位置）のユーザに対して使用可能にするプロセスである。具体的には、時間の経過につれてソーステーブルに対する変更が発生するため、諸テーブル内に常駐する宛先データを、ソーステーブル内に含まれるソースデータと同期された状態に保つプロセスである。
【０００３】
トランザクションデータベースは、トランザクションと呼ばれる論理的な仕事単位内のデータに対する変更をサポートするデータベースである。トランザクションでは、コミットと呼ばれる機構を介して変更を持続する。コミット前には、そのトランザクションデータベースの他のユーザにデータ変更が見えない。逆に、トランザクションでは、ロールバックと呼ばれる機構を介して、コミット前に加えられた継続中の変更を除去することができる。トランザクションデータベース上で見えるデータはすべて、その時点で存在する論理的にコミット済みのデータ状態を表す。
【０００４】
トランザクション内のデータ変更は複数のテーブルに影響を及ぼす可能性があり、テーブルのグループの間におけるこのトランザクション整合性は、トランザクションデータベースの重要な属性である。すなわち、ユーザから見て、すべてのテーブルが同時に更新されるように、トランザクションの使用を介して、複数のデータベーステーブルに跨る状態変化を調整することが可能である。データベースアプリケーションは、しばしば、アプリケーションがアクセスする、基礎となるデータベーステーブルのトランザクション整合性に依拠する。
【０００５】
トランザクションレプリケーションは、宛先データが常に明らかなソースデータのコミット済み状態を表すような、ソースシステムのトランザクション状態を保存しながら、ソースから宛先にデータ変更を移動するレプリケーションの一形態である。トランザクションレプリケーションは、宛先テーブルが引き続き、確実にレプリケーション済みソーステーブルのトランザクション整合性を反映するようにする。これは、宛先テーブルの状態がソーステーブルからのデータの特定のトランザクション状態に合致することを保証しない形で、ソースから宛先に変更を移動し、変更をコミットする非トランザクションレプリケーションと対比することができる。
【０００６】
レプリケーションを現実的に実施することには、ソーステーブルのデータ状態を宛先テーブルと同期するための効率的なアルゴリズムが必要とされる。トランザクションレプリケーションは、その最も単純な形態では、データベース間の状態が同期されるたびに、レプリケーション済みデータの集合全体をソースから宛先に移動するように実施することができる。効率的なトランザクションレプリケーションの実施はしばしば、この初期状態の完全同期で始まり、次に増分のソースデータベースのデータ変更を追跡し、その後の同期中に、増分の更新だけを宛先データベースに送達する。
【０００７】
データベースレプリケーションのためのデータ変更を追跡するために使用されるアルゴリズムは、ログをベースとするものと、トリガをベースとするものの２つの基本カテゴリに分かれる。ログをベースとするアルゴリズムは、ソースデータベース変更が発生したとき、ソースデータベースのトランザクションログを読み取ることによってそれらを追跡する。データベーストランザクションログは、データベースで発生した変更すべてを含み、その結果、コミット時間によってそれらを順序付けることができる。データベースログから読み取ることに基づくレプリケーション変更追跡（tacking）を実施するためのアルゴリズムは効率的であり、ソースデータベース上で状態変化を監視する自然な方法を提供する。
【０００８】
トリガをベースとするアルゴリズムは、データベースレプリケーション中にソースデータベースの状態変化を追跡する代替技法を提供する。データベーストリガは、データベース内で発生する特定のイベントに基づいて実行することができるソフトウェアコード群である。商用データベースはしばしば、テーブルデータに対する挿入、更新、削除のためのトリガ用イベントを提供する。変更追跡のために使用されるレプリケーショントリガは、レプリケーション済みテーブルのそれぞれに対する挿入、更新、または削除によりトリガコードが実行され、発生した変更についての情報が記憶されるように構築される。この記憶済み情報は、宛先テーブルの状態にソーステーブルの状態を反映させるために、宛先テーブルに適用しなければならない変更を判定するのに後で使用される。
【０００９】
トリガをベースとするアルゴリズムは、ログをベースとするアルゴリズムより効率が低いが、変更追跡でトリガを利用するための技術は、データベース製品全体にわたって、データベースログから変更を抽出する能力より広く入手可能である。さらに、トリガは、データベース製品全体にわたって、ログ読取り機能よりも一貫した形で実施される。レプリケーションのための変更を追跡するためにトリガを使用すると、複数のデータベースプラットフォーム全体にわたってレプリケーションが提供されるとき、実施されたものの間で整合性をもたらすことができる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
レプリケーション変更追跡のためにトリガを使用することの従来の欠点は、トリガをベースとする解決策では、トランザクションレプリケーションをサポートするのに必要なトランザクションの特性を維持するのが困難なことである。
【００１１】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、従来技術の制限および欠点を克服し、トランザクションレプリケーションのソリューションを実施するときに変更を追跡するためのトリガをベースとする方法およびシステムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明は、トランザクションレプリケーション中に、ソースデータの宛先データとの整合性を維持するために使用される変更追跡システムおよび方法を対象とする。
【００１３】
本発明による機能上の特徴は、トランザクションデータベースレプリケーション技法であることである。他の特徴は、本技法が、ソースシステムのトランザクション状態の増分追跡をサポートすることである。本技法の他の特徴は、前述の特徴を満たしながら、トリガを使用して変更を追跡することである。
【００１４】
本発明の追加の特徴および利点は、添付の図面を参照しながら進める以下の例示的な実施形態の詳細な説明から明らかになるであろう。
【００１５】
前述の概要、ならびに以下の好適実施形態の詳細な説明は、添付の図面と併せ読めば、よりよく理解できよう。本発明について例示をする目的で、図面内に本発明の例示的な実施形態が示されているが、本発明は、開示されている特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
概要 
本発明は、ソースデータベース上で発生する変更を追跡し、得られた変更ステートメントをトランザクション整合性のある形で１組の宛先テーブルに適用するための効率的なトリガベースの機構を提供する。後続の実施形態をよりよく説明するために、以下の定義をする。
【００１７】
定義 
１群のデータベーステーブルに関連付けられた１組の変更は、その組内の任意の変更について、これらのテーブルに関連付けられ所与の変更と同じトランザクション内でコミットされた、他の変更すべてもまたその組の中にある場合、これらのテーブルに関して「トランザクション整合性のある」という。
【００１８】
「変更追跡トリガ」は、挿入、更新、または削除動作がソーステーブルに適用されたとき発火する、ソーステーブルに適用されたトリガである。トリガは、変更を宛先テーブルに適用するために必要とされる変更についての情報を取り込む責任を負う。
【００１９】
「変更追跡テーブル」は、変更追跡トリガが発火したとき収集された変更済みデータを抽象的に表現したものを格納するために使用されるテーブルである。
【００２０】
「整合性集合テーブル」は、変更追跡テーブル内の変更を、トランザクション整合性のある集合群の形にグループ化するために使用されるテーブルである。
【００２１】
「変更ステートメント」は、ソースデータベース変更を宛先データベースに適用するために宛先データベースに対して実行することができるデータベース修正ステートメント、好ましくは、構造化照会言語（ＳＱＬ）である。
【００２２】
例示的なコンピューティング環境 
図１は、本発明を実施することができる好適なコンピューティングシステム環境１００の一例を示す。コンピューティングシステム環境１００は、好適なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についてどんな制限も示唆しないものとする。コンピューティングシステム環境１００は、例示的な動作環境であるコンピューティングシステム環境１００に示されている構成要素のいずれか１つまたは組合せに関してどんな依存性も要件も有すると解釈すべきでない。
【００２３】
本発明は、他の多数の汎用または専用コンピューティングシステム環境または構成と共に動作可能である。本発明と共に使用するのに適している可能性のある周知のコンピューティングシステム、環境、および／または構成の例には、それだけには限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとするシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ（personal computer）、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００２４】
本発明について、コンピュータによって実行される、プログラムモジュールなどコンピュータ実行可能命令の一般的な状況で述べることができる。一般に、プログラムモジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークまたは他のデータ伝送媒体を介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境内で実施することができる。分散コンピューティング環境では、プログラムモジュールや他のデータは、メモリ記憶デバイスを含むローカルとリモート双方のコンピュータ記憶媒体内に位置する可能性がある。
【００２５】
図１を参照すると、本発明を実施するための例示的なシステムが、コンピュータ１１０の形態で汎用コンピューティングデバイスを含む。コンピュータ１１０の構成要素には、それだけには限らないが、プロセッサ１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素をプロセッサ１２０に結合するシステムバス１２１が含まれる。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺機器バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例を挙げると、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、および（メザニンバスとしても知られる）ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００２６】
コンピュータ１１０は、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性媒体と不揮発性媒体、リムーバブルとノンリムーバブルの媒体を共に含む。限定ではなく例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含む。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性と不揮発性、リムーバブルとノンリムーバブルの媒体が共に含まれる。コンピュータ記憶媒体には、それだけには限らないが、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み取り専用メモリ）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、フラッシュメモリもしくは他のメモリ技術、ＣＤ（compact disc）−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用することができ、コンピュータ１１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の移送機構など変調データ信号に統合し、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するようにその特性の１つまたは複数が設定された、または変化した信号を意味する。限定ではなく例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続など有線媒体と、音響、ＲＦ（radio frequency）、赤外線および他の無線媒体など無線媒体とを含む。上記のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００２７】
システムメモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２など揮発性および／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（Basic Input/Output System）１３３は、一般にＲＯＭ１３１内に記憶されている。一般にＲＡＭ１３２は、プロセッサ１２０によって直ちにアクセス可能な、かつ／または現在動作されているデータおよび／またはプログラムモジュールを含む。限定ではなく例を挙げると、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、プログラムデータ１３７を示す。
【００２８】
コンピュータ１１０はまた、他のリムーバブル／ノンリムーバブル、揮発性／不揮発性コンピュータ記憶媒体を含むことができる。例にすぎないが、図１は、ノンリムーバブルの不揮発性磁気媒体との間で読出しまたは書込みをするハードディスクドライブ１４０、リムーバブルの不揮発性磁気ディスク１５２との間で読出しまたは書込みをする磁気ディスクドライブ１５１、ＣＤ−ＲＯＭまたは他の光媒体などリムーバブルの不揮発性光ディスク１５６との間で読出しまたは書込みをする光ディスクドライブ１５５を示す。例示的な動作環境内で使用することができる他のリムーバブル／ノンリムーバブルの、揮発性／不揮発性コンピュータ記憶媒体には、それだけには限らないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。一般にハードディスクドライブ１４１は、インタフェース１４０などノンリムーバブルメモリインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、一般に、インタフェース１５０などリムーバブルメモリインタフェースによってシステムバス１２１に接続される。
【００２９】
上記で論じ、図１に示されたドライブとその関連コンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータを記憶する。たとえば、図１では、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、プログラムデータ１４７を記憶して示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、プログラムデータ１３７と同じとすることも異なるものとすることもできることに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、プログラムデータ１４７は、最低でも異なるコピーであることを示すために異なる番号が与えられている。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１など、入力デバイスを介してコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含むことができる。これらの、また他の入力デバイスは、システムバスに結合されるユーザ入力インタフェース１６０を介してプロセッサ１２０に接続されることがしばしばであるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、他のインタフェースおよびバス構造によって接続することができる。モニタ１９１または他のタイプのディスプレイデバイスもまた、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータはまた、スピーカ１９７やプリンタ１９６など他の周辺出力デバイスを含むことができ、これらは、出力周辺機器インタフェース１９５を介して接続することができる。
【００３０】
コンピュータ１１０は、リモートコンピュータ１８０など、１つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク環境内で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードとすることができ、図１には、メモリ記憶デバイス１８１だけが示されているが、一般に、コンピュータ１１０に関して上述した要素の多数または全部を含む。図の論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１と広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。そのようなネットワーク環境は、オフィス、全社コンピュータネットワーク、イントラネット、インターネットで普通である。
【００３１】
コンピュータ１１０は、ＬＡＮネットワーク環境内で使用されるとき、ネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。コンピュータ１１０は、ＷＡＮネットワーク環境内で使用されるとき一般に、インターネットなどＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。モデム１７２は、内部にあっても外部にあってもよく、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して図示されたプログラムモジュール、またはその一部分を、リモートメモリ記憶デバイス内に記憶することができる。限定ではなく例を挙げると、図１は、メモリデバイス１８１に常駐するリモートアプリケーションプログラム１８５を示す。図のネットワーク接続は例であり、コンピュータ間で通信リンクを確立する他の手段を使用することができることは理解されよう。
【００３２】
例示的な分散コンピューティングフレームワークまたはアーキテクチャ 
パーソナルコンピューティングとインターネットを集中させるという点から、様々な分散コンピューティングフレームワークが開発されており、また開発されつつある。個人も法人ユーザも平等に、アプリケーションとコンピューティングデバイス用にシームレスに相互動作可能な、ウェブによって使用可能にされるインタフェースを備え、コンピューティング活動をますますウェブブラウザ指向またはネットワーク指向にしている。
【００３３】
たとえば、ＭＩＣＲＯＳＯＦＴ（登録商標）の．ＮＥＴプラットフォームは、サーバと、ウェブをベースとするデータストレージおよびダウンロード可能なデバイスソフトウェアのような、ビルディングブロックサービスとを含む。一般的に言うと、．ＮＥＴプラットフォームは、（１）全範囲のコンピューティングデバイスを一緒に動作させ、また、それらすべてに対してユーザ情報を自動的に更新および同期させる能力、（２）ＨＴＭＬ（Hyper Text Markup Language）ではなくＸＭＬ（Extensible Markup Language）をより多用することによって可能にされる、ウェブサイトのための対話性の高められた機能、（３）たとえば電子メールなど様々なアプリケーションを、またはＯｆｆｉｃｅ．ＮＥＴ（商標）などソフトウェアを管理するための中央起点から、ユーザへの製品およびサービスのカスタマイズされたアクセスおよび送達を特徴とするオンラインサービス、（４）情報へのアクセスの効率および手軽さ、ならびにユーザ／デバイスの間での情報の同期性を高める集中データストレージ、（５）電子メール、ファックス、電話など様々な通信媒体を一体化する能力、（６）開発者のために、再使用可能なモジュールを作成し、それによって生産性を高め、プログラミングの誤りの数を低減する能力、（７）さらに多数の他のプラットフォーム間統合機能を提供する。
【００３４】
本明細書では、コンピューティングデバイスに常駐するソフトウェアと共に例示的な実施形態が述べられているが、本発明の１つまたは複数の部分はまた、．ＮＥＴの言語およびサービスすべてによって、また他の分散コンピューティングフレームワーク内で、サービスを実行し、．ＮＥＴの言語およびサービスすべてにおいて、また他の分散コンピューティングフレームワーク内で、サービスをサポートし、．ＮＥＴの言語およびサービスすべてを介して、また他の分散コンピューティングフレームワーク内で、サービスにアクセスすることができるように、オペレーティングシステム、アプリケーションプログラミングインタフェース（ＡＰＩ）、または、コプロセッサと要求元オブジェクトの間の「仲介者」オブジェクトを介して実施することができる。
【００３５】
例示的な実施形態 
本発明に関して、変更追跡プロセスは、対象のソーステーブル内のデータに対する変更を監視し、これらの変更について情報を取り込み、取り込まれた変更データを、その後で宛先テーブルを更新するために使用される整合性集合の形にグループ化する。本発明の例示的な追跡機構は、宛先部でトランザクション整合性のあるコピーを効率的に維持する。
【００３６】
図２は、図３〜５のプロセスの例示的な流れを示す流れ図である。これらのプロセスのそれぞれは、他のプロセスに対して同期して動作することが望ましいが、特定のイベントについて、図３のプロセスの後に、図４および５のプロセスが順に続くものとする。
【００３７】
図６は、本発明に従って使用されることが望ましい様々な例示的なテーブルを示す図である。図６は、２つのソーステーブル３００、３５０、２つの変更追跡テーブル４００、４５０、整合性のある変更のグループを識別するための整合性集合テーブル５００、および宛先テーブル６００、６５０を示す。本発明によれば、任意の数のソーステーブル、変更追跡テーブル、整合性集合テーブル、宛先テーブルを使用することができるものとする。
【００３８】
図３は、本発明による変更取込みの例示的なプロセスの流れ図である。セットアップ中に、トランザクション整合性のある形でレプリケーションすべきソーステーブルが識別され、各ソーステーブルについて１つの変更追跡テーブルが作成される。変更追跡テーブルは、その関連付けられたソーステーブルの行で発生するイベント活動（たとえば、挿入、更新、削除活動）に関する詳細を記録するために使用される。変更追跡トリガを使用し、変更検出プロセスを実施する。トリガコードは、各ソーステーブルに関連付けられており、ソーステーブル内の行で、挿入、更新、または削除動作などイベントが発生したとき実行する。
【００３９】
図６では、追跡トリガ３０２および３５２がソーステーブル３００、３５０に適用される。これらのトリガを使用し、変更データをテーブル（図中符号４０２、４５２）内に取り込み、そのデータを４００、４５０で表されている適切な追跡テーブル内に格納する。公表されたテーブルごとに１つの追跡テーブルがあることが好ましい。変更追跡テーブルは、その関連付けられたソーステーブルに対して発生する変更だけ反映することが望ましいことに留意されたい。したがって、トリガ３０２、３５２は、望ましくは各公表済みテーブル３００、３５０に配置され、変更データ４０２、４５２を変更追跡テーブル４００、４５０に書き込むために使用される。
【００４０】
図３のステップ２１０で、データが変更される（たとえば、挿入、更新、または削除がソーステーブルに適用される）イベントが発生し、それにより、ステップ２２０で、ソーステーブルの関連付けられた変更追跡トリガ（たとえば、図６のトリガ３０２または３５２）を実行させる。ステップ２３０で順次識別子が生成され、順次識別子は、後の処理で、この変更を他の変更に対して順序付けることを可能にする。生成された識別子は、厳密に単調増加する数であることが好ましい。順次識別子とイベントデータ（たとえば、４０２）は、ステップ２４０で、そのソーステーブル（たとえば、３００）に関連付けられた変更追跡テーブル（たとえば、４００）に格納される。具体的には、変更追跡トリガによって変更追跡テーブル内に格納されるイベントデータ４０２、４５２の各行は、関連付けられた順次識別子（たとえば、順次識別子４０４）を有する。
【００４１】
トリガによって取り込まれたイベントデータは、宛先データベースに適用されたとき宛先テーブルをソーステーブルと同じ状態にするデータベースステートメントを構築するために必要とされるデータを含む。挿入動作の場合、新しい列値が、その動作タイプ（挿入）および順次識別子と共に変更追跡テーブル内に入力されることが好ましい。削除動作の場合、古い列値が、その動作タイプ（削除）および順次識別子と共に変更追跡テーブル内に入力されることが好ましい。更新動作の場合、古い列値と新しい列値が共に、その動作タイプ（更新）および順次識別子と共に変更追跡テーブル内に入力されることが好ましい。
【００４２】
図４は、本発明による、変更を整合性集合の形にグループ化する例示的なプロセスの流れ図である。セットアップ中に、整合性集合テーブルが作成される。整合性集合テーブル５００は、変更追跡テーブル４００、４５０内のエントリを、ソースデータベース上のトランザクション時点に関連する変更の特定の整合性集合に関係付けるために使用される。整合性集合は、一緒にグループ化され単一のトランザクションとして宛先データベースに適用されることになる変更追跡テーブル群内の諸変更を規定する。ステップ３１０で、集合群が宛先テーブルに適用されるときそれらを順序付けるために使用される順次識別子が、その集合について得られる。ステップ３２０で、変更追跡テーブル内のエントリがグループ化され、この集合識別子に関連付けるために変更の整合性集合を得る。ステップ３３０で、特定の変更をこの整合性集合に属するものとして識別する情報が、整合性集合テーブルに保存される。
【００４３】
整合性集合を識別するとき、前もって集合に割り当てられていないコミット済み追跡テーブルエントリすべてについて、行ごとに識別子が得られる。行識別子は、集合識別子と共に整合性集合テーブル５００に保存される。
【００４４】
図５は、本発明による、整合性集合に関連付けられた変更を宛先テーブルに適用する例示的なプロセスの流れ図である。例示的なプロセスは、変更を変更追跡テーブルから抽出し、それを使用して、宛先データベースの状態を変更するとき使用すべき変更ステートメントを作成する。同じ集合識別子に関連付けられた変更ステートメントは、宛先部で単一のトランザクションとしてコミットされ、トランザクション整合性を維持することを可能にすることが好ましい。
【００４５】
図５のステップ４１０を参照すると、処理する次の集合識別子を判定するために、整合性集合テーブルが照会される。ステップ４２０で、この集合識別子を有する整合性集合テーブルに関連する変更を取り出すために、各ソーステーブルの関連付けられた変更追跡テーブルが照会される。ステップ４３０で、変更追跡テーブル内の選択された各エントリについて、適切な変更ステートメントが生成され、関連付けられた宛先テーブル（図６の６００および６５０）に適用される。次いで、宛先テーブルに加えられたエントリすべてがコミットされることが望ましい。このプロセス中に、符号３０２および３５２の項目によって表されている図６のトリガは、後続の集合群のメンバとして後で処理されるデータを変更追跡テーブル４００、４５０内に引き続き格納する。
【００４６】
図５のステップ４３０で、整合性集合に関連付けられた変更ステートメントは、諸変更を順序付けるために図６の項目（４００および４５０）の変更追跡テーブル内のエントリから順次識別子を使用して、宛先テーブルに適用される。後続の整合性集合は、集合識別子（図６、５０２）によって順序付けられた宛先に適用される。所与の集合について変更が抽出されつつある間に新しいエントリが変更追跡テーブル内に現れた場合、この新しいエントリは、現在の集合識別子で整合性集合テーブル５００内に現れず、したがって、現在の集合の一部として抽出されない。
【００４７】
要するに、単一のトランザクション内で宛先部にて適用される変更の整合性集合の形に変更をグループ化することにより、ソースデータベースのある時点に関連するトランザクション整合性が、宛先データベース部で維持される。
【００４８】
上述のように、本発明の例示的な実施形態について、様々なコンピューティングデバイスおよびアーキテクチャに関連して述べたが、基礎となる概念は、レプリケーションすることが望ましいどのコンピューティングデバイスまたはシステムに適用することもできる。したがって、本発明によるレプリケーションのための技法は、様々なアプリケーションおよびデバイスに適用することができる。本明細書では、様々な選択を表すものとして例示的なプログラミング言語、名称、および諸例が選択されているが、これらの言語、名称、および諸例は、制限するものではないものとする。
【００４９】
本明細書に述べられている様々な技法は、ハードウェアまたはソフトウェア、あるいは適切な場合、両者の組合せと共に実施することができる。したがって、本発明の方法および装置、またはそのある種の態様もしくは一部分は、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意の機械可読記憶媒体など、有形の媒体内で実施されたプログラムコード（すなわち、命令）の形態を取ることができ、そのプログラムコードが、コンピュータなどの機械内にロードされ、機械によって実行されたとき、その機械は、本発明を実施するための装置となる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、そのコンピューティングデバイスは、一般にプロセッサと、プロセッサによって可読の（揮発性／不揮発性メモリおよび／または記憶要素を含む）記憶媒体と、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスを含むことになる。さらに、本発明と共に使用されるどの記憶技法も、常にハードウェアとソフトウェアの組合せとすることができる。
【００５０】
本発明について、様々な図の好適実施形態に関連して述べたが、本発明の同じ機能を実行するために、そこから逸脱することなしに他の同様な実施形態を使用し、または、修正および追加を上述の実施形態に加えることができることを理解されたい。さらに、特に無線ネットワーク化されたデバイスが増え続けているため、ハンドヘルドデバイス用オペレーティングシステムや他の応用分野特有のオペレーティングシステムを含めて、様々なコンピュータプラットフォームが企図されていることを強調しておくべきである。さらに、本発明は、複数の処理用チップまたはデバイス内で、またはそれらに跨って実施することができ、同様に、記憶は複数のデバイスに跨って実施することができる。したがって、本発明は、どの単一の実施形態にも制限すべきでなく、添付の特許請求の範囲による広さと範囲内で解釈すべきである。
【図面の簡単な説明】
【００５１】
【図１】本発明を適用できる実施形態の例示的なコンピューティング環境を示すブロック図である。
【図２】本発明を適用できる実施形態の図３〜５のプロセスの例示的な流れを示す流れ図である。
【図３】本発明を適用できる実施形態の変更検出の例示的なプロセスの流れ図である。
【図４】本発明を適用できる実施形態の、検出された変更を整合性集合の形にグループ化する例示的なプロセスの流れ図である。
【図５】本発明を適用できる実施形態の、整合性集合に関連付けられた変更を宛先データベースに適用する例示的なプロセスの流れ図である。
【図６】本発明を適用できる実施形態の、使用されることが望ましい様々な例示的なテーブルを示す図である。
【符号の説明】
【００５２】
３００、３５０、ソーステーブル
３０２、３５２  追跡トリガ
４００、４５０  変更追跡テーブル
４０２、４５２  変更情報
４０４  順次識別子
５００  整合性集合テーブル
５０２  集合識別子
６００、６５０  宛先テーブル
【図１】
2005301329.tif 000003
【図２】
2005301329.tif 000004
【図３】
2005301329.tif 000005
【図４】
2005301329.tif 000006
【図５】
2005301329.tif 000007
【図６】
2005301329.tif 000008
【外国語明細書】
2005301329000001.pdf