(57)【要約】同期式変更データキャプチャシステムおよび方法が説明されており、トランザクションの各ステートメントに対して、各トランザクションを独自に識別するトランザクション識別子（２３３、２４１）が、変更データ（２３１）と共に記録される。トランザクションが完遂されると、完遂に対するシステム変更番号（２４３）およびトランザクション識別子（２３３、２４１）がトランザクションテーブル（２５０）に記録される。変更データ内の各ステートメントのための完遂システム変更番号を識別するために、変更データ内のトランザクション識別子（２３３、２４１）が用いられて、トランザクションテーブル（２５０）から完遂システム変更番号（２４３）がフェッチされる。
2004532480.tif 000002
【特許請求の範囲】
【請求項１】
同期式変更データキャプチャのための方法であって、
トランザクションを独自に識別するトランザクション識別子（２３３、２４１）を生成するステップ（３０３）と、
トランザクション内の各動作に対して（３０５）、動作（２３７）に対する変更データ（２３１）および前記トランザクション識別子（２３３）を第１のデータベースオブジェクト（２２３）に記録するステップ（３０９）と、
トランザクションの完遂中、前記トランザクション識別子（２３３）およびシステム変更番号を第２のデータベースオブジェクト（２５０）に記録するステップ（３１５）とを含む、方法。
【請求項２】
識別子を記録してトランザクション内の各動作の相対的な順序付けを識別する（２３５）ステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記トランザクションの前記完遂中に、
同時実行ロックを得るステップ（３１１）と、
前記同時実行ロックを得た後、システム変更番号（２４３）を生成し（３１３）、前記トランザクション識別子（２３３）および前記システム変更番号（２４３）を第２のデータベーステーブルに記録する前記ステップ（３１５）を実行し、さらには前記完遂を終了させるステップ（３１７）と、
前記トランザクション識別子（２３３）および前記システム変更番号（２４３）を前記第２のデータベーステーブル（２５０）に記録する前記ステップ（３１５）の後、前記同時実行ロックを解除するステップ（３１９）とを含む、請求項１に記載の方法。
【請求項４】
前記第１のデータベースオブジェクト（２２３）は変更テーブルを含み、前記第２のデータベースオブジェクト（２５０）はトランザクションテーブルを含む、請求項１に記載の方法。
【請求項５】
前記トランザクション識別子（２３３、２４１）に基づいて、前記第１のデータベースオブジェクト（２２３）内の前記変更データ（２３１）を前記第２のデータベースオブジェクト（２５０）内のシステム変更番号（２４３）に関連付けるステップをさらに含む、請求項１に記載の方法。
【請求項６】
同期式変更データキャプチャのための命令を有するコンピュータ読出可能な媒体であって、前記命令は、実行時に、１つ以上のプロセッサに請求項１に記載の方法のステップを実行させるように構成される、コンピュータ読出可能な媒体。
【請求項７】
同期的にキャプチャされる変更データを処理するための方法であって、
トランザクション内で実行される動作に対する変更データ（２３１）およびトランザクションを独自に識別するトランザクション識別子（２３３）を含む第１のデータベースオブジェクト（２２３）にアクセスするステップと、
トランザクション識別子（２３３、２４１）およびシステム変更番号（２４３）を含む第２のデータベースオブジェクト（２５０）にアクセスするステップと、
前記トランザクション識別子（２３３、２４１）に基づいて、前記第１のデータベースオブジェクト（２２３）内の変更データ（２２３）を前記第２のデータベースオブジェクト（２５０）内の前記システム変更番号（２４３）に関連付けるステップとを含む、方法。
【請求項８】
関連付ける前記ステップは、前記第１のデータベースオブジェクト（２２３）および前
記第２のデータベースオブジェクト（２５０）上でデータベース結合動作を実行するステップを含む、請求項７に記載の方法。
【請求項９】
同期式変更データキャプチャのための命令を有するコンピュータ読出可能な媒体であって、前記命令は、実行時に、１つ以上のプロセッサに請求項７に記載の方法のステップを実行させるように構成される、コンピュータ読出可能な媒体。
【請求項１０】
同期式変更データキャプチャのための方法であって、
トランザクションを独自に識別するトランザクション識別子（２３３、２４１）を生成するステップ（３０３）と、
トランザクション内の各動作に対して（３０３）、動作（２３７）に対する変更データ（２３１）およびトランザクション識別子（２３３）を変更テーブル（２２３）に記録するステップ（３０９）と、
トランザクションの完遂中に、以下のステップを実行するステップとを含み、前記以下のステップは、
同時実行ロックを得るステップ（３１１）と、
前記同時実行ロックを得た（３１１）後、システム変更番号（２４３）を生成し（３１３）、前記トランザクション識別子（２３３、２４１）および前記システム変更番号（２４３）を第２のデータベーステーブル（２５０）に記録するステップ（３１５）と、
前記トランザクション識別子（２３３、２４１）および前記システム変更番号（２４３）を前記第２のデータベーステーブル（２５０）に記録する前記ステップ（３１５）の後、前記同時実行ロックを解除するステップ（３１９）とを含む、方法。
【請求項１１】
同期式変更データキャプチャのための命令を有するコンピュータ読出可能な媒体であって、前記命令は、実行時に、１つ以上のプロセッサに請求項１０に記載の方法のステップを実行させるように構成される、コンピュータ読出可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データベースシステムに関し、より具体的には、データベースシステム内での同期式変更データキャプチャのための方法および装置に関する。
【背景技術】
【０００２】
多くの企業および他の大きな組織は、今日、オンライントランザクション処理（ＯＬＴＰ）システムとして公知のリレーショナルデータベース管理システムを用いて、ビジネストランザクションを実行し、追跡している。たとえば、インターネット上で製品またはサービスを販売する企業は、ＯＬＴＰシステムを用いて、各製品についての価格付け情報、各購入者に対する請求および発送情報、および購入者によってなされた各注文についての販売情報を記録し得る。ＯＬＴＰシステムを用いる他の企業の例は、航空会社、銀行、通信販売会社、スーパーマーケット、および製造業者を含む。
【０００３】
ＯＬＴＰシステム内で生成および記録されるデータは、大部分の企業にとって貴重である。なぜならば、企業は、データを集約および分析して、ある特定の月における製品の販売を把握し、変化する製品の人気傾向を予測し、収益性の高いまたは収益性の高くない製品ラインを識別し、または業務を他の様態で評価することができるためである。しかしながら、このデータを集約および分析することは、計算的に負担がかかり、ＯＬＴＰシステム自体の上で実行されると、ＯＬＴＰシステムの性能を低下させるであろう。したがって、ＯＬＴＰデータベース内に含まれる情報を集め、集約し、および分析するために、一般に「データウェアハウス」として知られている別個のコンピュータシステムをＯＬＴＰシステムを用いる企業が確立することが一般的になった。データウェアハウスは、ギガバイトから何テラバイト（何兆バイト）ものデータに及ぶほど、非常に大きくなり得る。データをＯＬＴＰシステム内のその元のソースからデータウェアハウスに移す作業は、通例、データ抽出、移送（transport）、およびロード（ＥＴＬ）と呼ばれる。
【０００４】
同期式変更データキャプチャは、データ抽出、移送、およびロードのための１つの手法であって、変更は、ＯＬＴＰシステム上のテーブルを更新しているまさしくその同じトランザクション内でキャプチャされる。したがって、新しいデータがデータウェアハウスに到着するとき、ＯＬＴＰシステム上の１つの以上のテーブルに対してなされた変更は、ＯＬＴＰシステム上で更新されるあらゆるテーブルに対して、これらの変更を含んだ対応の変更テーブルが存在するように、同期的にキャプチャされ、データウェアハウス内の対応の変更テーブルに記憶される。
【０００５】
リレーショナルデータベース管理システム内の各トランザクションに対して、リレーショナルデータベース管理システム内のテーブルに対してなされる各修正に関連した独自のシステム変更番号（ＳＣＮ）が存在する。通例、各修正は、ＳＱＬ言語内のＩＮＳＥＲＴ、ＵＰＤＡＴＥ、またはＤＥＬＥＴＥステートメント等の個別のデータベース操作言語（ＤＭＬ）ステートメントによって特徴付けられる。システム変更番号は、単調に増加する通し番号であって、各新しいＤＭＬステートメントには、予め割当てられたいずれかのシステム変更番号よりも大きな新しいシステム変更番号が割当てられる。トランザクションは、複数のＤＭＬステートメントを含み得、各々が、対応するシステム変更番号を有している。さらに、トランザクションが完遂すると、全体としてのトランザクションに当てはまる、ここで「完遂システム変更番号」（ＣＳＣＮ）と呼ばれる、最終的なシステム変更番号が存在する。リレーショナルデータベース管理システムでは、データベースの内容に対する変更は、実際には完遂時に適用され、したがって、ＣＳＣＮは、そのトランザクション内で起こったすべてのＤＭＬ動作を表す。さらに、変更テーブルが、各変更のための
ＣＳＣＮを記録するのであれば、リレーショナルデータベース管理システム上で変更が起こった正確な順序を決定することが可能であろう。その場合、アプリケーションは、変更テーブルを用いて、ある特定のトランザクション内で起こった変更を分離し、さらには、それがリレーショナルデータベース管理システム内で完遂した順序で各変更を見ることができる。
【０００６】
従来のシステムは、ＣＲＥＡＴＥ  ＴＲＩＧＧＥＲステートメントを用いることによって、または、同等の機能を備えた内部メカニズムを用いることによって、同期式変更データキャプチャのためにトリガを用いた。トリガとは、ある特定のイベントが起こるときに自動的に実行されるべき一連のアクションを特定するオブジェクトであり、業界規格によると、トリガを活性化させる（または「ファイヤさせる(fired)」）イベントが、ＤＭＬステートメントである。同期式変更データキャプチャでは、トリガは、データベーステーブルの行が更新、挿入、または削除されるときにファイヤするように設計されてきた。これらの修正の各々は、トリガによって記録されるそれ自体のシステム変更番号（ＳＣＮ）に関連する。トランザクションのための真の完遂システム変更番号（ＣＳＣＮ）は、このときは記録され得ない。なぜならば、完遂は、まだ起こっていないためである。したがって、既存のトリガベースのメカニズムは、ＣＳＣＮをキャプチャせず、これは、それらの有用性を大きく制限する重大な技術的欠点である。各記録のためのＣＳＣＮがない状態では、ある特定のトランザクション内で起こった変更を識別することができず、また、変更がリレーショナルデータベース管理システムに対して完遂された正確な順序で、順に各トランザクションの効果を考察することもできない。
【０００７】
たとえば、ＯＬＴＰシステム上に複数のユーザが存在し、ＯＬＴＰシステムは、ユーザが実行する各ステートメントに対してシステム変更番号を割当てると仮定する。さらに、ユーザＸが、ＳＣＮ１においてトランザクションＸを開始させ、ＳＣＮ２０においてトランザクションＸを完遂すると仮定する。しかし、トランザクションＹが、別のユーザによってＳＣＮ１６において開始され、１８のＣＳＣＮで完遂すると仮定する。この例は、システム変更番号の割当が、すべてのトランザクション中で共有されていることを示す。したがって、所与のトランザクションＸは、他のいずれのトランザクションにも割当てられていない、排他的で、破られていない範囲のシステム変更番号を有することを保証されておらず、実際には、逆である。トランザクションＸが最初に開始したが、実際には、トランザクションＹが最初に完遂した。リレーショナルデータベース管理システムのデータの完全性に関する限り、具体的には、変更テーブルに関して、トランザクションＸの第１のステートメントがトランザクションＹの第１のステートメントよりも早いシステム変更番号を有していたという事実にもかかわらず、トランザクションＹがトランザクションＸの前に完遂したため、トランザクションＹは、トランザクションＸに先立って起こったと考えられる。
【０００８】
したがって、以前の同期式変更キャプチャの試みは、ＣＳＣＮを記録することにおけるそれらの失敗のために、トランザクションに関して矛盾があった。これらの試みは、最高の状態でも、個々のステートメントのシステム変更番号に基づいて、変更の部分的な順序付けを実現することしかできず、それらが起こったおおよその順序で変更を考察することしかできなかった。変更データを用いるためには、費用のかかる後処理段階が、多くの場合に存在したが、これは、部分的な順序付けが変更に適用され得るように変更テーブルの各およびあらゆる行が更新されることを必要とする。この後処理の要件は、部分的なトランザクション順序付けを適用するために各行が更新されなければならない限り、変更テーブルの実際的なサイズを大きく制限する。
【０００９】
したがって、費用のかかる後処理段階がなくてもトランザクションに関して矛盾のない同期式変更データキャプチャシステムが必要とされる。
【発明の開示】
【課題を解決するための手段】
【００１０】
これらおよび他の必要性は、変更データ内の各ステートメントに対して、各トランザクションを独自に識別するトランザクション識別子を記録することによって、この発明により対処される。トランザクションが完遂されると、完遂に対するシステム変更番号およびトランザクション識別子が、トランザクションテーブルに記録される。変更データ内の各ステートメントのための完遂システム変更番号を識別するために、変更データ内のトランザクション識別子を用いて、トランザクションテーブルから完遂システム変更番号をフェッチする。
【００１１】
したがって、この発明の１つの局面は、トランザクションを独自に識別するトランザクション識別子が生成される、同期式変更データキャプチャのための方法を含む。トランザクション内の各動作に対して、動作に対する変更データおよびトランザクション識別子が、第１のデータベースオブジェクト（たとえば、変更テーブル）に記録される。トランザクションの完遂中、トランザクション識別子およびシステム変更番号が、第２のデータベーステーブル（たとえば、トランザクションテーブル）に記録される。トランザクション内の各動作の相対的な順序を識別する識別子も、第１のデータベースオブジェクトに記録され得る。
【００１２】
一実現例では、完遂中に記録されるシステム変更番号は、他のプロセスが新しいシステム変更番号を生成することを妨げる同時実行ロックが得られた後に、生成される。トランザクション識別子およびシステム変更番号を第２のデータベースオブジェクトに記録した後、同時実行ロックが解除される。
【００１３】
この発明の別の局面は、同期的にキャプチャされる変更データを処理するための方法およびソフトウェアに関する。この局面では、トランザクションを独自に識別するトランザクション識別子およびトランザクション内で実行される動作に対する変更データを含む第１のデータベースオブジェクトがアクセスされる。トランザクション識別子およびシステム変更番号を含む第２のデータベースオブジェクトもアクセスされる。第１のデータベースオブジェクト内の変更データは、たとえば、データベース結合動作によって、トランザクション識別子に基づいて第２のデータベースオブジェクト内のシステム変更番号に関連付けられる。
【００１４】
この発明のさらに他の局面、特徴、および利点は、いくつかの特定の実施例および実現例を例示するだけで、この発明を実施するために企図される最善の態様を含む以下の詳細な説明から容易に明らかとなる。この発明には、他の、および異なる実施例も可能であり、そのいくつかの詳細は、さまざまな明白な点で変形可能であり、すべては、この発明の思想および範囲から逸脱することはない。したがって、図および説明は、限定的ではなく、本質的に例示的であると見なされるべきである。
【００１５】
この発明は、同じ参照番号が同様の要素を指す添付の図において、限定としてではなく、例として示される。
【発明を実施するための最良の形態】
【００１６】
同期式変更データキャプチャのためのシステム、方法、およびソフトウェアが、説明される。以下の説明では、説明の目的のために、多くの具体的な詳細が示されて、この発明の完全な理解が提供される。しかしながら、これらの具体的な詳細がなくても、または、同等の構成を用いることによっても、この発明を実施できることは、当業者には明らかである。他の例では、この発明を不必要に曖昧にしないために、周知の構造および装置は、
ブロック図の形で示される。
【００１７】
データベース管理システムでは、データは、１つ以上のデータコンテナに記憶され、各コンテナは、記録を含み、各記録内のデータは、１つ以上のフィールドに編成される。リレーショナルデータベースシステムでは、データコンテナは、テーブルと呼ばれ、記録は、行と呼ばれ、フィールドは、列と呼ばれる。オブジェクト指向データベースでは、データコンテナは、オブジェクトクラスと呼ばれ、記録は、オブジェクトと呼ばれ、フィールドは、属性と呼ばれる。他のデータベースアーキテクチャは、他の用語を用い得る。
【００１８】
この発明を実現するシステムは、いずれかの特定の種類のデータコンテナまたはデータベースアーキテクチャに限定されているわけではない。しかしながら、説明の目的のために、ここで用いられる用語および例は、リレーショナルデータベースに典型的に関連するものであり得る。したがって、用語「テーブル」、「行」、および「列」は、ここでは、それぞれ、データコンテナ、記録、およびフィールドを指すために用いられ得る。
【００１９】
図１は、ソースシステム１１０およびステージングシステム１２０を含む、この発明の一実施例のアーキテクチャを示す。ソースシステム１１０は、通例、ビジネスのためのトランザクションを実行および追跡するためのオンライントランザクション処理（ＯＬＴＰ）である。たとえば、ソースシステム１１０は、従業員またはビジネス顧客との対話を担当するビジネスアプリケーション１１１をホストする。ビジネスアプリケーション１１１のユーザからのコマンドおよびクエリに応答して、ビジネスアプリケーション１１１は、ＯＬＴＰデータベース１１３と対話してデータを記憶し、取出す。
【００２０】
この例ではデータウェアハウスとして機能しながら、ステージングシステム１２０は、１つ以上のサブスクライバアプリケーション１２１および１２３をホストする。一般性を失わないように、２つのサブスクライバアプリケーション１２１および１２３が示されているが、この発明の実施例の実施中に、いくつが作成されてもよい。サブスクライバアプリケーション１２１および１２３は、ＯＬＴＰデータベース１１３から抽出され、ステージングシステム１２０に移され、さらには分析データベース１２５にロードされた変更データを集約および分析することを担う。
【００２１】
トリガ１１５が用いられて、同期式変更データキャプチャメカニズムが実現される。トリガは、たとえば、ＳＱＬステートメント“CREATE TRIGGER TR1 AFTER INSERT OR UPDATE OR DELETE ON ST1”を用いて作成され得るが、これは、テーブルＳＴ１上でいずれかのＳＱＬ  ＩＮＳＥＲＴ、ＵＰＤＡＴＥ、またはＤＥＬＥＴＥステートメントが実行されるたびにトリガが「ファイヤされる」か、またはアクティブになって、アクションルーチンを呼出すことを意味する。トリガがファイヤすると、アクションルーチンは、挿入、更新、または削除された行を受取る。代替的には、ＣＲＥＡＴＥ  ＴＲＩＧＧＥＲステートメントと機能面では同様であるが、より効率的であり、アクションルーチンにより多くの情報を提供する内部トリガメカニズムが用いられ得る。内部トリガメカニズムの一実現例は、１９９９年７月２０日にリップ  ブーン  ドウ（Lip Boon Doo）他に対して発行された「インライントリガ」（“In-Line Triggers”）と題された同一出願人に譲渡される米国特許第５，９２６，８１９号に詳細に記載されており、この内容は、ここで引用により援用される。
【００２２】
したがって、トリガ１５５は、変更がなされるとき、同期的にＯＬＴＰデータベース１１３に対する各変更をキャプチャし、変更をステージングシステム１２０に移す。ステージングシステム１２０では、これらの変更は、パブリッシャプロセス１２７によって統合され、分析データベース１２５の変更テーブル（図示せず）にロードされる。同期式抽出メカニズムが、以下でより詳細に説明される。
【００２３】
非同期式抽出メカニズムが用いられてもよく、ログシッパ(shipper)１１９が、通常の動作中にＯＬＴＰデータベース１１３によって生成される回復ログ１１７を定期的にコピーする。回復ログ１１７は、ＯＬＴＰデータベース１１３に適用されたすべての変更を含み、ＯＬＴＰデータベース１１３内のデータをバックアップし、さらにはシステムクラッシュ時にデータを復元するために用いられる。ログシッパ１１９は、オペレーティングシステムディレクトリとして実現され得る変更ソース１３１と呼ばれるステージングシステム１２０の領域に回復ログ１１７をコピーする。パブリッシャ１２７は、回復ログの内部インプリメンテーション詳細事項を認識する必要なしに、ログビューアプロセス１２９と対話して変更ソース１２９内にある移された回復ログから変更データを得る。パブリッシャ１２７は、次に、ログビューアプロセス１２９を介して得られる変更データを分析データベース１２５内の変更テーブルにロードする。
【００２４】
この発明の１つの局面に従うと、ＯＬＴＰデータベース１１３から抽出される変更データは、データベース管理システム、たとえば、分析データベース１２３の制御下の「変更テーブル」および「トランザクションテーブル」とここで呼ばれる１つ以上のデータベースオブジェクト内で維持される。図２を参照して、例として、変更データキャプチャの影響を受ける、ＯＬＴＰデータベース１１３上の各ソーステーブルまたはデータベースオブジェクトは、分析データベース１２３内の対応の変更テーブル２１１、２１３、２２１、２２３に関連付けられる。トランザクションの一貫性のために、同じ変更セット内の変更テーブル（たとえば、変更セット２１０の変更テーブル２１１および２１３）に追加されるすべての新しい変更データが同時に追加されること、たとえば、これらの変更テーブルに対する修正が、同じトランザクション内で実行され、完遂されることが、パブリッシャ１２５によって確実にされるように、変更テーブル２１１、２１３、２２１、２２３は、１つ以上のセット、「変更セット」２１０および２２０にグループ分けされる。図２に示される例では、２つの変更セット、変更セット２１０および変更セット２２０が存在する。変更セット２１０は、変更テーブル２１１および変更テーブル２１３を含み、これらは、ＯＬＴＰデータベース１１３上のそれぞれのテーブル（図示せず）に対応する。同様に、変更セット２２０は、変更テーブル２２１および変更テーブル２２３を含み、これらも、ＯＬＴＰデータベース１１３上のそれぞれのテーブル（図示せず）に対応する。変更テーブル２１１、２１３、２２１、２２３、および変更セット２１０および２２０の構造を定義する情報は、システムメタデータ２３０内で維持される。
【００２５】
ソーステーブル列であって、それらの値がＯＬＴＰデータベース１１３内の対応のソーステーブル列から抽出され、移送され、さらにはロードされたソーステーブル列に加えて、各変更テーブルは、いくつかの制御列を用いる。図２の例では、変更テーブル２２３は、１組のソーステーブル列  ２３１、制御列ＸＩＤ  ２３３、ＴＩＭＥ  ２３５、ＯＰ  ２３７、およびＲＯＷ  ２３９を有するとして示される。ソーステーブル列２３１は、対応するソーステーブル内の列のすべてまたはサブセットを含み得る。さまざまな実現例では、制御列は、ソーステーブル列を含む同じデータベースオブジェクトの一部または（たとえば、行識別子またはプライマリキーによって）ソーステーブル列と合わせられ得る平行な、関連のデータベースオブジェクトの一部であり得る。
【００２６】
制御列ＸＩＤ  ２３３、ＴＩＭＥ  ２３５、ＯＰ  ２３７、およびＲＯＷ  ２３９は、好ましくは、顧客が自身の列のために使用することが許可されていない名前、たとえば、ドル記号（＄）等の予約文字を備えた名前を予約した。予約された名前は、当然のことながら、いずれの有効なストリングであってもよく、この例では、ニーモニック的な理由から、ＸＩＤ  ２３３、ＴＩＭＥ  ２３５、ＯＰ  ２３７、およびＲＯＷ  ２３９と名付けられる。ＸＩＤ２３３列は、変更データを生じさせたＯＬＴＰデータベース１１３上の各トランザクションを独自に識別する、単調に増加する番号であり得るトランザクション識
別子を保持する。
【００２７】
一実施例では、たとえば、トランザクション識別子２３３は、以下の特性を有する。（ａ）各トランザクション識別子は、すべての先行するトランザクション識別子よりも大きく、（ｂ）同じトランザクションに属するすべてのＤＭＬ動作（挿入、更新、削除等）は、トランザクション識別子に関して同じ値を有し、（ｃ）トランザクションを締めくくるために用いられるＳＱＬ「完遂」ステートメントにも、同じトランザクション識別子値が割当てられ、（ｄ）トランザクションの一部ではないＳＱＬステートメントは、トランザクション識別子に関して同じ値を有さない。
【００２８】
ＴＩＭＥ２３５列は、変更データを生じさせたトランザクションの完遂時間を含む。この列は、特定の期間に起こる変更データをサブスクライバアプリケーション１２１が選択するか、または見る助けとなる。
【００２９】
ＯＰ２３７列は、結果として変更データが得られた動作タイプを示すコードを含む。たとえば、ＯＰ２３７列が記号「Ｉ」を含む場合、動作は挿入動作であり、ソーステーブル列２３１内の変更データは、挿入されたデータを含む。ＯＰ２３７列が記号「Ｄ」を含む場合、動作は削除動作であり、ソーステーブル列２３１内の変更データは、削除されたデータを含む（これによって、サマリーがサブスクライバアプリケーション１２１によって適切に再調整されることが可能となる）。ＯＰ２３７列が記号「ＵＯ」を含む場合、動作は更新動作であり、ソーステーブル列２３１内の変更データは、修正された古いデータを含む。同様に、ＯＰ２３７列が記号「ＵＮ」を含む場合、動作は更新動作であり、ソーステーブル列２３１内の変更データは、修正された新しいデータを含む。したがって、ソーステーブル上の更新動作によって、結果として、変更テーブル内で２つのエントリが得られ、一方は、古いデータに関し、他方は、新しいデータに関しており、サブスクライバアプリケーション１２１は、ＯＬＴＰデータのそれらのサマリーを再調整するのに十分な情報を有する。特定の状況下では、ソーステーブルは、グラフィックスおよび画像等の「ラージオブジェクト」（ＬＯＢ）を含み得る。このＬＯＢは、通例、要約されないため、メモリを節約するために、新しいＬＯＢのみが（ＯＰ２３７列内の記号「ＵＬ」によって）変更テーブルに記録される。ＯＰ２３７列内のこれらの記号（「Ｉ」、「Ｄ」、「ＵＯ」、「ＵＮ」、「ＵＬ」）は、ニーモニック的な理由から選ばれており、この発明の範囲から逸脱することなく、他の記号にいずれかの独自の値（たとえば、数）が恣意的に割当てられてもよい。
【００３０】
ＲＯＷ２３９列は、変更テーブル内の変更に対する独自の行シーケンス番号を含む。特に、同じトランザクションの一部である各ＳＱＬステートメントまたは動作は、同じトランザクション内のいずれの先行する動作よりも大きな行シーケンス番号の値を有する。この列は、同じトランザクション内で完遂された動作をサブスクライバアプリケーション１２１が順序よく並べる助けをする。なぜならば、リレーショナルデータベース管理システムは、いずれの順序でも動作を記憶できるためである。また、同じ動作の、古い更新された値の記録（「ＵＯ」を備えたＯＰ２３７列）と新しい更新された値の記録（「ＵＮ」を備えたＯＰ２３７列）との両方は、同じ行シーケンス番号を有する。なぜならば、これらの２つの記録は、ＯＬＴＰデータベース１１３上の同じ変更動作（更新動作）に関するためである。
【００３１】
図２には示されていないが、追加的な制御列が提供されて、この発明の実施例の実現が容易にされ得る。たとえば、更新された列のビットマスクを用いて、どの列が変更されたのかを迅速に識別することができる。別の例として、動作を生じさせるユーザの名前が、制御列に記録され得る。ソーステーブル内の、影響を受けた行の行識別子も、制御列に含まれ得る。
【００３２】
加えて、別個のトランザクションテーブル２４０が提供されて、完遂されたトランザクションのトランザクション識別子２４１およびトランザクション完遂に関連したシステム変更番号２４３が記録される。セッション識別子２４５も提供されて、現在のデータベースセッションが識別され、関係データベース管理システムの現在のすべてのユーザが区別され得る。トランザクションテーブル２４０は、すべてのユーザに適用可能な広域テーブルとなるように構成され得る。
【００３３】
図３は、この発明の一実施例の動作を例示するフローチャートである。ステップ３０１では、１つ以上の動作（たとえば、ＳＱＬまたはＤＭＬステートメント）が実行されるトランザクションをユーザが開始する。ステップ３０３では、独自のトランザクション識別子が生成されて、同じトランザクションに属する変更テーブル２３３内の動作が識別される。
【００３４】
（ステップ３０５で制御される）トランザクション内の各動作に対して、関連のシーケンス識別子が、生成され（ステップ３０７）、トランザクション識別子、動作の種類（たとえば、更新、挿入、削除）の標識、動作に対する変更データとともに、変更テーブル２３３に記録される。変更データは、たとえば、更新動作の場合には更新されたいずれかの列の新しい値と古い値との両方を含む、ソーステーブル内で変更されたすべての列の値を含み得る。この実施例では、動作のためのシステム変更番号は、変更テーブル自体の中で指示されていなくてもよい。
【００３５】
トランザクション内のすべての動作が実行された後、システムは、トランザクションを完遂する準備ができており、実行は、ステップ３０５からステップ３１１まで分岐する。ステップ３０５、３０７、３０９は、図３ではループとして示されているが、トランザクション内のすべての動作が、展開され、または単に連続した順序で並べられた、簡素な順序付けを含む他の制御構造が用いられ得ることが理解されるべきである。
【００３６】
ステップ３１１、３１３、３１５、３１７、３１９は、相互排除が実施されることが望ましい、トランザクションの完遂ステートメントの処理の一部を含む重要なセクションを構成する。キャプチャされるようにセットアップされていないトランザクションのための時間を節約するために、トランザクション特性がチェックされて、変更が第一にキャプチャされるべきかが判断され得る。変更がキャプチャされなくてもよい場合、ステップ３１１、３１３、３１５、３１９は、省略される。
【００３７】
ステップ３１１では、好ましくは、完遂処理においてできるだけ遅く、たとえば、最後のＤＭＬ動作後、同時実行ロックが得られて、相互排除セクションが保護され、他のユーザプロセスがステップ３１１、３１３、３１５、３１７、３１９を同時に処理することが防止される。さまざまな形の並行処理が実現されてもよく、この発明は、セマフォの使用等のいずれか１つの特定の実現例に限定されているわけではない。
【００３８】
ステップ３１３では、現在のステートメントのためのシステム変更番号は、近似の完遂システム変更番号ＡＣＳＣＮとして用いられるように割当てられる。近似の完遂システム変更番号は、後に完遂中に、それを利用するのには遅すぎる時点で生成されようとしている真の完遂ＳＣＮよりも小さい。近似の完遂システム変更番号（ＡＣＳＣＮ）は、同時実行ロック下で得られるため、同時実行ロックが保持されている限り、他のいずれかのトランザクション内の変更データキャプチャ動作が、システム変更番号を割当てることは許可されない。したがって、近似の完遂システム変更番号は、真の完遂ＳＣＮに対して信頼性のあるプロキシを構成する。
【００３９】
ステップ３１５では、以下の列、（ａ）トランザクション識別子２４１、（ｂ）近似の完遂システム変更番号２４３、および（ｃ）現在のセッションのセッション識別子２４５を含むトランザクションテーブルに行が挿入される。あらゆる変更テーブルのあらゆる行は、そのトランザクションのためのトランザクション識別子２３３も記録し、したがって、トランザクション識別子は、２つの場所、トランザクション識別子２３３として変更テーブル自体の中に、およびトランザクション識別子２４１としてトランザクションテーブル内に、記録される。
【００４０】
完遂動作の残りが、ステップ３１７で処理され、真の完遂システム変更番号が生成され、ステートメントが完遂する。トランザクションテーブルへの追加的な行の挿入も、このときに完遂される。最後に、ステップ３１９で、同時実行ロックが解除され、相互排除セクションを終了し、他のプロセスがシステム変更番号を生成することを許可する。
【００４１】
したがって、トランザクションテーブル２４０は、同期的にキャプチャされた（トランザクション識別子２４１によって識別された）各トランザクションのための行を維持し、トランザクションテーブルは、（近似の完遂システム変更番号２４３によって決定されるような）全トランザクションが完遂された真の順序の記録を維持する。性能に関しては、トランザクションテーブル２４０内で完遂システム変更番号をキャプチャするときの、最悪の事例でのオーバーヘッドは、そうしない場合とは対照的に、オーバーヘッドの１％の約３／４（０．００７５）であり、典型的な事例では、オーバーヘッドは、１％の１／４（０．００２５）よりも少ないことが確認された。したがって、すべての実際的な目的において、この方法を適用するときのオーバーヘッドは、無視できるほどである。しかしながら、これを行なうことの利点は、大きく、先行技術では見つけられない真のトランザクション順序の能力を提供する。
【００４２】
上述のこの発明の実施例では、キャプチャされた各およびあらゆるトランザクションのための変更データと完遂ＳＣＮとの両方が、それぞれ、変更テーブル２１１、２１３、２２１、２２３、およびトランザクションテーブル２４０に記録された。動作が元来起こった順序で変更テーブル２２３の内容を得るために、変更テーブル２２３とトランザクション２４０との間でのデータベース結合動作が用いられ得る。たとえば、この発明の一実現例は、以下のＳＱＬ結合動作を用い得、変更テーブル２２３は、Ｃ１、Ｃ２、およびＣ３と称されるソーステーブル列２３１を有する。
SELECT TT.CSCN CSCN, CT1.RSID, CT1.C1 C1, CT1.C2 C2, CT1.C3 C3
FROM TT, CT1
WHERE TT.XID=CT1.XID
ORDER BY CSCN
このステートメントは、所与のトランザクション内のすべてのＳＱＬステートメントがトランザクション識別子に関して同じ値を有し、この値が、完遂システム変更番号２４３と同じ行内でトランザクションテーブル２４０に記憶されたという事実に依存している。したがって、２つのテーブルにおける結合は、ある特定のトランザクションに属するすべてのＳＱＬステートメントをそれらの関連の完遂システム変更番号２４３と一致させる。さらに、ＳＱＬ  ＯＲＤＥＲ  ＢＹ句は、それらの完遂システム変更番号に従って、増大するソート順序で、つまり、トランザクションが完遂した元々の順序で、変更行を戻す。
【００４３】
さらに、エンドユーザまたはサブスクライバアプリケーション１２１は、（完遂システム変更番号を含まない）変更テーブルと（完遂システム変更番号と他をわずかに含む）トランザクションテーブルとの間に結合があるという事実を認識しなくてもよい。特徴は、変更データの各ユーザに代わって生成されるサブスクライバビュー２５１を提供することによって、達成され得る。上の例では、ＣＶ１と称される対応のサブスクライバビュー２５１は、以下の構成で作成され得る。
CREATE VIEW CV1 (CSCN, RSID, A, B, C) AS
SELECT TT.CSCN CSCN, CT1.RSID, CT1.C1 C1, CT1.C2 C2, CT1.C3 C3
FROM TT,CT1
WHERE TT.XID=CT1.XID
このサブスクライバビュー２５１を用いると、サブスクライバアプリケーションは、以下の簡潔なＳＱＬクエリを実行するだけでよい。
SELECT * FROM CV1 ORDER BY CSCN
この選択クエリは、トランザクションがリレーショナルデータベース管理システムに対して完遂された正確かつ正しい順序で、トランザクションのためのすべての変更行を戻す。さらに、変更のみが完遂順序に従って構成されるのではなく、トランザクション内のさまざまな動作が以下のクエリ内でのように下位順序付け(sub-ordered)され得るように、追加的な順序レベルも可能である。
SELECT * FROM CV1 ORDER BY CSCN, RSID
さらに、同期変更テーブルおよびトランザクションテーブルの両方の内容は、それらが無制限に増大しないように、パージされ得る。なぜならば、結合を用いることによって、パージされる必要のあり得る変更テーブルのすべての行が識別され、この後、トランザクションテーブル自体からの対応の行がパージされ得るためである。
【００４４】
図４は、この発明による実施例が実現され得るコンピュータシステム４００を例示する。コンピュータシステム４００は、情報を伝達するためのバス４０１または他の通信メカニズムと、情報を処理するための、バス４０１に結合されるプロセッサ４０３とを含む。コンピュータシステム４００は、バス４０１に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置等のメインメモリ４０５も含んで、プロセッサ４０３によって実行されるべき情報および命令を記憶する。メインメモリ４０５は、プロセッサ４０３によって実行されるべき命令の実行中に、一時変数または他の中間情報を記憶するためにも用いられ得る。コンピュータシステム４００は、プロセッサ４０３のための命令および静的情報を記憶するための、バス４０１に結合されるリードオンリメモリ（ＲＯＭ）４０７または他の静的記憶装置をさらに含む。磁気ディスクまたは光ディスク等の記憶装置４０９が、バス４０１に追加的に結合されて、情報および命令を記憶する。
【００４５】
コンピュータシステム４００は、情報をコンピュータユーザに対して表示するための陰極線管（ＣＲＴ）、液晶ディスプレイ、アクティブマトリクスディスプレイ、またはプラズマディスプレイ等のディスプレイ４１１にバス４０１を介して結合され得る。英数字および他のキーを含むキーボード等の入力装置４１３が、バス４０１に結合されて、情報およびコマンド選択をプロセッサ４０３に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ４０３に伝達するための、および、ディスプレイ４１１上でのカーソルの動きを制御するためのマウス、トラックボール、またはカーソル方向キー等のカーソル制御部４１５である。
【００４６】
この発明の一実施例によると、同期式変更データキャプチャは、プロセッサ４０３がメインメモリ４０５に含まれる命令構成を実行したことに応答して、コンピュータシステム４００によって提供される。このような命令は、記憶装置４０９等の別のコンピュータ読出可能な媒体からメインメモリ４０５上に読出され得る。メインメモリ４０５内に含まれる命令構成の実行によって、プロセッサ４０３がここで説明されるプロセスステップを実行させられる。多重処理構成における１つ以上のプロセッサを用いて、メインメモリ４０５内に含まれる命令を実行することもできる。代替的な実施例では、ソフトウェア命令の代わりに、またはそれと組合せて、ハードワイヤード回路が用いられて、この発明の実施例が実現され得る。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアのいずれかの特定の組合せに限定されない。
【００４７】
コンピュータシステム４００は、バス４０１に結合される通信インターフェイス４１７も含む。通信インターフェイス４１７は、ローカルネットワーク４２１に接続されるネットワークリンク４１９に結合する双方向データ通信を提供する。たとえば、通信インターフェイス４１７は、デジタル加入者線（ＤＳＬ）カードまたはモデム、統合サービスデジタル網（ＩＳＤＮ）カード、ケーブルモデム、または電話モデムであって、データ通信接続を対応する種類の電話線に提供し得る。別の例として、通信インターフェイス４１７は、（たとえば、イーサネット（Ｒ）（商標）または非同期転送モデル(Asynchronous Transfer Model)（ＡＴＭ）ネットワークのための）ローカルエリアネットワーク（ＬＡＮ）カードであって、データ通信接続を互換性のあるＬＡＮに提供し得る。ワイヤレスリンクも実現され得る。このようないずれかの実現例では、通信インターフェイス４１７は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。さらに、通信インターフェイス４１７は、ユニバーサルシリアルバス（ＵＳＢ）インターフェイス、ＰＣＭＣＩＡ（パーソナルコンピュータメモリカード国際団体）インターフェイス等の周辺インターフェイス装置を含み得る。
【００４８】
ネットワークリンク４１９は、通例、１つ以上のネットワークを通して、他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク４１９は、ネットワーク４２５（たとえば、現在一般に「インターネット」と呼ばれるグローバルパケットデータ通信ネットワークまたはワイドエリアネットワーク（ＷＡＮ））またはサービスプロバイダによって稼働されるデータ装置に対する接続性を有するホストコンピュータ４２３への、ローカルネットワーク４２１を通しての接続を提供し得る。ローカルネットワーク４２１およびネットワーク４２５は、両方とも、電気信号、電磁信号、または光信号を用いて、情報および命令を伝達する。デジタルデータをコンピュータシステム４００と通信する、ネットワークリンク４１９上にあり、さらには通信インターフェイス４１７を通る信号およびさまざまなネットワークを通る信号は、情報および命令を有する搬送波の例示的な形である。
【００４９】
コンピュータシステム４００は、ネットワーク、ネットワークリンク４１９、および通信インターフェイス４１７を通して、プログラムコードを含むメッセージを送信し、プログラムコードを含むデータを受信し得る。インターネットの例では、サーバ（図示せず）は、この発明の実施例を実現するためのアプリケーションプログラムに属する、要求されたコードをネットワーク４２５、ローカルネットワーク４２１、および通信インターフェイス４１７を通して送信し得る。プロセッサ４０４は、送信されるコードを、受信中に実行し得る、および／または、後の実行のためにコードを記憶装置４９または他の不揮発性記憶装置に記憶し得る。この様態で、コンピュータシステム４００は、搬送波の形のアプリケーションコードを得ることができる。
【００５０】
ここで用いられるような用語「コンピュータ読出可能な媒体」は、実行のために命令をプロセッサ４０４に提供することに関係するいずれかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体、および送信媒体を含むが、これらに限定されているわけではない多くの形をとり得る。不揮発性媒体は、たとえば、記憶装置４０９等の光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ４０５等のダイナミックメモリを含む。送信媒体は、バス４０１を含むワイヤを含んだ、同軸ケーブル、銅線、および光ファイバを含む。送信媒体は、無線周波数（ＲＦ）および赤外線（ＩＲ）データ通信中に生成されるような音波、光波、または電磁波の形もとり得る。一般的な形のコンピュータ読出可能な媒体は、たとえば、フロッピー（Ｒ）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、ＣＤＲＷ、ＤＶＤ、他のいずれかの光媒体、パンチカード、紙テープ、光学式マークシート、孔パターンまたは他の光学的に認識可能な印を備えた他のいずれかの物理的な媒体、ＲＡＭ、ＰＲＯＭ、およびＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のいずれかのメモリチップまたはカートリ
ッジ、搬送波、またはコンピュータがそこから読出すことのできる他のいずれかの媒体を含む。
【００５１】
さまざまな形のコンピュータ読出可能な媒体は、実行のために命令をプロセッサに提供することに関与し得る。たとえば、この発明の少なくとも一部を実行するための命令は、最初は、リモートコンピュータの磁気ディスク上にあり得る。このようなシナリオでは、リモートコンピュータが、命令をメインメモリにロードし、命令をモデムを用いて電話線を介して送信する。ローカルコンピュータシステムのモデムは、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し、赤外線信号を携帯用情報端末（ＰＤＡ）およびラップトップ等の携帯可能な計算装置に送信する。携帯可能な計算装置上の赤外線検出器が、赤外線信号によって搬送される情報および命令を受信し、データをバス上に置く。バスは、データをメインメモリに運び、ここから、プロセッサが命令を取出し、実行する。メインメモリが受信する命令は、プロセッサによる実行の前または後に、任意で記憶装置に記憶され得る。
【００５２】
したがって、以前の解決策が達成できなかった厳密かつ正確なトランザクション順序付けを維持することに関する問題に対処する同期式変更データキャプチャの実施例が説明される。さらに、以前の解決策はまた、おおよその行順序付けを変更テーブル自体に記録するために、データが最初にキャプチャされた後に変更テーブルの多くの行に対して後処理または更新を行うことを、以前の解決策では非常に費用がかかり、さらにはＮのオーダで増加させられる動作を、必要とした。ここで、Ｎとは、変更テーブル内の行の数である。
【００５３】
変更テーブルの主な有用性は、それが１つ残らずすべての変更をキャプチャできること、および、それがすべての動作が実行された順序を記録できることである。先行技術が解決策を欠いていたのは、第２の部分、動作の順序であるが、これは、この発明の実施例によって解決される。
【００５４】
この発明は、いくつかの実施例および実現例に関して説明されてきたが、この発明は、これらに限定されているわけではなく、添付の請求項の範囲内に入るさまざまな明らかな変形例および同等の構成を包含する。
【図面の簡単な説明】
【００５５】
【図１】この発明の一実施例のハイレベルアーキテクチャ図である。
【図２】この発明の一実施例に従った変更オブジェクトを示す概略図である。
【図３】この発明の実施例の同期式変更データキャプチャを例示するフローチャートの図である。
【図４】この発明の実施例を実現するために用いられ得るコンピュータシステムを示す図である。
【図１】
2004532480.tif 000003
【図２】
2004532480.tif 000004
【図３】
2004532480.tif 000005
【図４】
2004532480.tif 000006
【国際公開パンフレット】
2004532480.tif 000007
2004532480.tif 000008
2004532480.tif 000009
2004532480.tif 000010
2004532480.tif 000011
2004532480.tif 000012
2004532480.tif 000013
2004532480.tif 000014
2004532480.tif 000015
2004532480.tif 000016
2004532480.tif 000017
2004532480.tif 000018
2004532480.tif 000019
2004532480.tif 000020
2004532480.tif 000021
2004532480.tif 000022
2004532480.tif 000023
2004532480.tif 000024
2004532480.tif 000025
2004532480.tif 000026
2004532480.tif 000027
2004532480.tif 000028
2004532480.tif 000029
2004532480.tif 000030
2004532480.tif 000031
【国際公開パンフレット（コレクトバージョン）】
2004532480.tif 000032
2004532480.tif 000033
【国際調査報告】
2004532480.tif 000034
2004532480.tif 000035
2004532480.tif 000036