(57)【要約】【課題】  トランザクション複製システムを提供すること。【解決手段】  このシステムでは、複製された各コマンドが、主キーによって識別される単一の行に適用され、単一のコマンドキューからの複製されたコマンドを主キーのハッシュによって複数の接続にディスパッチして、同じデータ行に対する変更が常に同じ接続にディスパッチされるようにし、パブリッシャ上で発生した元の順序でコマンドの順序を維持する。２フェーズコミットを行わず、全ての接続がそのトランザクションを調整された形で同時にコミットする。論理シーケンス番号に基づく再試行論理を用いて、コミットに失敗した接続からのコマンドを再度適用する。【選択図】  図３
2004252986.tif 000002
【特許請求の範囲】
【請求項１】
複製コマンドを配布するためのシステムであって、
パブリッシャから複製コマンドを受信するコマンドキューを含み、前記複製コマンドをサブスクライバに伝達するための複数の接続をさらに含むディストリビュータと、
それぞれのコマンドバケットが、前記複数の接続のうちの１つを介して前記ディストリビュータと通信し、前記サブスクライバのテーブルの単一行に適用される複製コマンドだけを受信する、複数のコマンドバケットとを備え、前記受信された複製コマンドのそれぞれは、前記単一行の識別子を含むことを特徴とするシステム。
【請求項２】
前記パブリッシャは、前記複製コマンドのそれぞれに、操作を受けるテーブルの前記行の主キーのハッシュを付加することを特徴とする請求項１に記載のシステム。
【請求項３】
前記複製コマンドのそれぞれは、ディスパッチャスレッドによって、前記主キーの前記ハッシュに従って対応するコマンドバケットにソートされることを特徴とする請求項２に記載のシステム。
【請求項４】
前記ディストリビュータは、それぞれのバケットにコミット準備完了のマークを付け、それぞれのバケット内の前記複製コマンドは、実質上同時に前記サブスクライバに適用されることを特徴とする請求項２に記載のシステム。
【請求項５】
それぞれのバケットの実行プログラムは、前記ディストリビュータに、コミットが完了したことを通知し、それによって前記ディストリビュータは処理を再開することを特徴とする請求項４に記載のシステム。
【請求項６】
前記接続のそれぞれはコミットに成功したかどうかを判断するための再試行機構をさらに含むことを特徴とする請求項４に記載のシステム。
【請求項７】
ある接続がコミットに失敗した場合に、前記再試行機構は前記複製コマンドの論理シーケンス番号に従って最初に失敗した点から前記コミット処理を再開し、コミットが成功するように、ある複製コマンドの最後の論理シーケンス番号よりも新しい論理シーケンス番号が付いた前記複製コマンドを適用することを特徴とする請求項６に記載のシステム。
【請求項８】
サブスクライバ、ディストリビュータおよびパブリッシャを含むシステムにおいて、複製コマンドを配布するための方法であって、
パブリッシャ上で、複製コマンドに、それが操作を受ける行の単一識別子を付加するステップと、
前記複製コマンドを前記ディストリビュータに転送するステップと、
コマンドキューに前記複製コマンドを格納するステップと、
前記複製コマンドを複数のコマンドバケットに転送するステップとを含み、前記複数のコマンドバケットのそれぞれは、前記ディストリビュータとの接続を備えており、同じハッシュキーの付いた複製コマンドを受信することを特徴とする方法。
【請求項９】
前記ハッシュキーは、操作を受けるテーブルの前記行の主キーのハッシュであることを特徴とする請求項８に記載の方法。
【請求項１０】
前記複数のコマンドバケットに前記複製コマンドを転送する前記ステップは、前記コマンドのそれぞれを、前記主キーの前記ハッシュに従って対応するコマンドバケットにソートするステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
それぞれのコマンドバケットにコミット準備完了のマークを付けるステップと、
それぞれのバケット内の前記複製コマンドを、実質上同時に前記サブスクライバに適用するステップとをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記ディストリビュータに、それぞれのバケットはコミット処理を完了したことを通知するステップと、
前記ディストリビュータ上で処理を再開するステップとをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
それぞれのバケット内の前記複製コマンドは、前記サブスクライバ上で、コミットに成功したかどうかを判断するステップをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記コミット処理を、前記複製コマンドの論理シーケンス番号に従って最初に失敗した点から再開するステップと、
コミットに成功するように、ある複製コマンドの最後の論理シーケンス番号よりも新しい論理シーケンス番号の付いた前記複製コマンドを適用するステップとをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
サブスクライバ、ディストリビュータおよびパブリッシャを含むシステムにおいて、複製コマンドを配布するための方法を実施するためのコンピュータ実行可能命令を含むコンピュータ読取り可能媒体であって、
前記パブリッシャ上で、複製コマンドに、主キーのハッシュ値であるハッシュキーを付加するステップであって、前記主キーは、前記複製コマンドが操作を受ける行を単一的に識別するステップと、
前記複製コマンドを前記ディストリビュータに転送するステップと、
コマンドキューに前記複製コマンドを格納するステップと、
前記複製コマンドを、複数のコマンドバケットに転送するステップとを含み、前記複数のコマンドバケットのそれぞれは、前記ディストリビュータとの接続を備えており、同じハッシュキーが付いた複製コマンドを受信することを特徴とするコンピュータ読取り可能媒体。
【請求項１６】
前記ハッシュキーは、操作を受けるテーブルの前記行の主キーのハッシュであることを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１７】
前記複数のコマンドバケットに前記複製コマンドを転送する前記ステップは、前記コマンドのそれぞれを、前記主キーの前記ハッシュに従って対応するコマンドバケットにソートするステップをさらに含むことを特徴とする請求項１６に記載のコンピュータ読取り可能媒体。
【請求項１８】
それぞれのコマンドバケットにコミット準備完了のマークを付けるための命令と、
それぞれのバケット内の前記複製コマンドを、実質上同時に前記サブスクライバに適用するための命令とをさらに含むことを特徴とする請求項１６に記載のコンピュータ読取り可能媒体。
【請求項１９】
それぞれのバケットはコミット処理を完了したことを前記ディストリビュータに通知するための命令と、
前記ディストリビュータ上で処理を再開するための命令とをさらに含むことを特徴とする請求項１８に記載のコンピュータ読取り可能媒体。
【請求項２０】
それぞれのバケット内の前記複製コマンドは、前記サブスクライバ上で、コミットに成功したかどうかを判断するための命令をさらに含むことを特徴とする請求項１８に記載のコンピュータ読取り可能媒体。
【請求項２１】
前記コミット処理を、前記複製コマンドの論理シーケンス番号に従って最初に失敗した点から再開するための命令と、
コミットに成功するように、ある複製コマンドの最後の論理シーケンス番号よりも新しい論理シーケンス番号の付いた前記複製コマンドを適用するための命令とをさらに含むことを特徴とする請求項２０に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティング分野に関し、詳細には、トランザクション複製（ｔｒａｎｓａｃｔｉｏｎａｌ  ｒｅｐｌｉｃａｔｉｏｎ）の分野に関する。
【背景技術】
【０００２】
複製は、あるデータベースから別のデータベースへ、データをコピーし、またそのデータに対する変更内容をコピーする機能である。図１は、従来のトランザクション複製の概要を示す図である。パブリッシャ（Ｐｕｂｌｉｓｈｅｒ）２００は、サーバまたはデータベースであり、そのデータを別のサーバまたはデータベースに送る。パブリッシャ２００は、サブスクライバ（ｓｕｂｓｃｒｉｂｅｒ）サーバまたはデータベースに送られる１つまたは複数のアーティクル（ａｒｔｉｃｌｅ）の集合体である１つまたは複数のパブリケーション（ｐｕｂｌｉｃａｔｉｏｎ）を含むことができる。トランザクション複製では、アーティクルは、複製される内容であり、テーブル全体でも、あるテーブルの選択行でも、テーブルまたはストアドプロシージャ（ｓｔｏｒｅｄ  ｐｒｏｃｅｄｕｒｅ）の指定された列でもよい。
【０００３】
ディストリビュータ（Ｄｉｓｔｒｉｂｕｔｏｒ）２０２は、複製システム（ｒｅｐｌｉｃａｔｉｏｎ  ｓｙｓｔｅｍ）によってデータの流れを管理する。ディストリビュータ２０２は、パブリッシャ２００から複製する必要がある（パブリケーションに対する）変更を追跡する配布データベース（ｄｉｓｔｒｉｂｕｔｉｏｎ  ｄａｔａｂａｓｅ）を含む。パブリッシャ２００は、それ自体のディストリビュータ２０２の役割を果たすことができ、またはその配布データベースを保持するために、遠隔データベースサーバを使用することができる。
サブスクライバ２０４は、パブリッシャ２００または他のデータベースからデータを受け取るサーバまたはデータベースである。サブスクリプション（ｓｕｂｓｃｒｉｐｔｉｏｎ）とは、サーバまたはデータベース２０４が受け取るデータの集合体である。これは、１つまたは複数のパブリケーションであり得る。プッシュおよびプルのサブスクリプションがある。プッシュサブスクリプションは、パブリッシュ側（ｐｕｂｌｉｓｈｉｎｇ）のサーバが、サブスクライブ側（ｓｕｂｓｃｒｉｂｉｎｇ）のサーバに、トランザクションを定期的に送り出す場合のサブスクリプションである。プルサブスクリプションは、サブスクライブ側のサーバが配布データベースに定期的に接続し、情報を引き出す場合のサブスクリプションである。
【０００４】
図１に示すように、従来のトランザクション複製では一般に、複製されたコマンドは、単一の接続２０３を介してサブスクライバ上で適用される。単一の接続によって、トランザクションがパブリッシャ上で発生する通りの順序で、サブスクライバ上でトランザクションが適用されるようになるが、この方法では、特に、要求が非常に負荷のかかったパブリッシャからのものである場合に、パフォーマンスロス（ｐｅｒｆｏｒｍａｎｃｅ  ｌｏｓｓ）が生じる。
【０００５】
さらに、従来の複製技術では、挿入、更新、または削除操作が発生した場合には、パブリッシュされたテーブルに対する変更を追跡するためにトリガ（ｔｒｉｇｇｅｒ）を使用する。これでは、トリガのためにパブリッシャ２００に追加のオーバヘッドが加わることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、オーバヘッドコストを削減し、トランザクションが確実にサブスクライバ上で正確に適用されるようにしながらも、トランザクション複製システムのパフォーマンスを向上させることが求められている。本発明は、こうした解決策を提供する。
【課題を解決するための手段】
【０００７】
本発明は、複製コマンド（ｒｅｐｌｉｃａｔｉｏｎ  ｃｏｍｍａｎｄ）を適用する際に、ディストリビューションプロセス内の複数のトランザクションキューを使用することによって、従来技術の限界を有利に克服する。本発明の一態様によれば、複製コマンドを配布（ｄｉｓｔｒｉｂｕｔｅ）するためのシステムが提供される。このシステムは、パブリッシャから複製コマンドを受け取る、コマンドキューを含むディストリビュータを備える。ディストリビュータは、複製コマンドをサブスクライバに伝達する（ｃｏｍｍｕｎｉｃａｔｅ）ための複数の接続を含む。複数のコマンドバケットは、ディストリビュータからコマンドを受け取る。それぞれのコマンドバケットは、複数の接続のうちの１つを介してディストリビュータと通信し、同じハッシュキーをもつ複製コマンドだけを受け取る。受信された各複製コマンドは、単一行（ａｎ  ｕｎｉｑｕｅ  ｒｏｗ）の識別子を含む。
【０００８】
このシステムのある特徴によれば、パブリッシャは、それぞれの複製コマンドに、操作を受ける（ｂｅ  ｏｐｅｒａｔｅｄ  ｕｐｏｎ）テーブルの行の主キーのハッシュを付加（ｄｅｃｏｒａｔｅ）する。複製コマンドは、主キーのハッシュに従って対応するコマンドバケットにソートされる。
【０００９】
別の特徴によれば、ディストリビュータは、コミットの準備が完了しているそれぞれのバケットをマークし、それぞれのバケット内の複製コマンドを、実質上同時にサブスクライバに適用する。それぞれのバケットの実行プログラムは、ディストリビュータに、コミットが完了したことを通知し、それによってディストリビュータが処理を再開する。
【００１０】
別の特徴によれば、それぞれの接続がコミットに成功したかどうか判断するために、再試行機構を用いる。接続がコミットに失敗した場合、複製コマンドの論理シーケンス番号に従って、最初に失敗した点からコミット処理を再開し、コミットが成功するように、ある複製コマンドの最後の論理シーケンス番号よりも新しい論理シーケンス番号をもつ複製コマンドを適用する。
【００１１】
本発明の別の態様によれば、サブスクライバ、ディストリビュータおよびパブリッシャを含むシステム上で、複製コマンドを配布するための方法を提供する。この方法は、パブリッシャ上で、複製コマンドに、それが操作を受ける行の単一識別子（ａｎ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）を付加すること、コマンドキューに複製コマンドを格納すること、ディストリビュータに複製コマンドを転送すること、コマンドキューに複製コマンドを格納すること、および複製コマンドを複数のコマンドバケットに転送することを含み、この複数のコマンドバケットのそれぞれは、ディストリビュータとの接続を含む。それぞれのコマンドバケットは、単一行の単一識別子に従ってサブスクライバ上のテーブルの単一行に適用される複製コマンドを受け取る。
【００１２】
本発明の追加の特徴および利点は、添付の図面を参照して行う以下の例示的な実施形態についての詳細な説明から明らかであろう。
【００１３】
前述の要約および後述の好ましい実施形態の詳細な説明は、添付の図面と併せ読めばより深く理解されよう。本発明の説明のため、図面に本発明の例示的な構成を示す。しかし、本発明は、開示する特定の方法および手段に限定されるものではない。
【発明を実施するための最良の形態】
【００１４】
例示的なコンピューティング環境
図２および以下の説明は、本発明を実施することができる適切なコンピューティング環境の概要について簡潔に述べるためのものである。しかし、ハンドヘルド（ｈａｎｄｈｅｌｄ）、携帯、および全ての種類の他のコンピューティング装置を本発明とともに使用することが考慮されている。汎用コンピュータについて以下に述べるが、これは一例にすぎず、本発明では、ネットワークサーバとの相互運用および相互作用が可能なシンクライアント（ｔｈｉｎ  ｃｌｉｅｎｔ）だけが必要となる。したがって、本発明は、非常に少ないまたは最小のクライアントリソースが関係するネットワーク化されたホストサービス（ｈｏｓｔｅｄ  ｓｅｒｖｉｃｅｓ）の環境、たとえば、クライアント装置が単にブラウザまたはワールドワイドウェブとのインターフェイスとして働くネットワーク環境で実施することができる。
【００１５】
必須ではないが、本発明は、開発者によって使用されるＡＰＩを用いて実施することができ、かつ／またはネットワークブラウザソフトウェア内に含めることができる。これについては、クライアントワークステーション、サーバ、他の装置など１つまたは複数のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明する。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。一般に、プログラムモジュールの機能は、様々な実施形態で望まれるように、組み合わせまたは分散することができる。さらに、本発明は、他のコンピュータシステム構成で実施できることが当業者には理解されよう。本発明とともに使用するのに適し得る他の周知のコンピューティングシステム、環境および／または構成には、これだけには限らないが、パーソナルコンピュータ（ＰＣ）、現金自動預け払い機、サーバコンピュータ、ハンドヘルドまたはラップトップの装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルな家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどが含まれる。本発明は、通信ネットワークまたは他のデータ伝送媒体を介してリンクされた遠隔処理装置によってタスクが実施される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含めて、ローカルと遠隔の両方のコンピュータ記憶媒体に置くことができる。
【００１６】
したがって、図２に、本発明を実施することができる適切なコンピューティングシステム環境１００の例を示したが、上記で明確にしたように、コンピューティングシステム環境１００は適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についての限定を示唆するためのものではない。コンピューティング環境１００は、例示的なコンピューティング環境１００に示したコンポーネントのうちのいずれか１つまたはその組合せに関して依存関係も要件も有するものと解釈すべきでない。
【００１７】
図２を参照すると、本発明を実施するための例示的なシステムが、コンピュータ１１０の形の汎用コンピューティング装置を含んでいる。コンピュータ１１０のコンポーネントは、それだけには限らないが、処理装置１２０、システムメモリ１３０およびシステムバス１２１を含むことができ、このシステムバスは、システムメモリを含めて様々なシステムコンポーネントを処理装置１２０に結合する。システムバス１２１は、様々なバスアーキテクチュアのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含めて複数のタイプのバス構造のいずれかとすることができる。限定のためではなく、例を挙げると、こうしたアーキテクチュアには、ＩＳＡ（業界標準アーキテクチュア）バス、ＭＣＡ（マイクロチャネルアーキテクチュア）バス、ＥＩＳＡ（ビデオ電子標準協会）ローカルバス、ＰＣＩ（周辺コンポーネント相互接続）バス（メザニンバスとも称される）が含まれる。
【００１８】
コンピュータ１１０は一般に、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ１１０からアクセスできるいずれの使用可能な媒体とすることもでき、揮発性媒体と不揮発性媒体の両方、取外し可能な媒体と取外し不可能な媒体の両方を含む。限定のためではなく、例を挙げると、コンピュータ読取り可能媒体には、コンピュータ記憶媒体および通信媒体が含まれ得る。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、他のデータなどの情報を格納するための任意の方法または技術で実装される揮発性媒体と不揮発性媒体の両方、取外し可能な媒体と取外し不可能な媒体の両方が含まれる。コンピュータ記憶媒体には、それだけには限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ  ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ：デジタル多用途ディスク）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、コンピュータ１１０からアクセスすることができる他のどんな媒体も含まれる。通信媒体は一般に、搬送波や他のトランスポート機構などの変調されたデータ信号の形で、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータを実施し、任意の情報伝達媒体を含む。用語「変調されたデータ信号」は、情報を信号に符号化するような方法で特性の１つまたは複数が設定または変更された信号を意味する。限定のためではなく、例を挙げると、通信媒体には、有線ネットワークや直接有線接続などの有線媒体、および音波、ＲＦ、赤外線、他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せもコンピュータ読取り可能媒体の範囲内に含まれるべきである。
【００１９】
システムメモリ１３０は、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ：読出し専用メモリ）１３１やＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ランダムアクセスメモリ）１３２など揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。ＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ：基本入出力システム）１３３は、始動時などにコンピュータ１１０内の要素間で情報を転送する助けをする基本ルーチンを含み、一般にＲＯＭ１３１に格納される。ＲＡＭ１３２は一般に、処理装置１２０によって直ぐにアクセスされ、かつ／またはそれによる操作を現在受けているデータおよび／またはプログラムモジュールを含む。限定のためではなく、例として、図２に、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７を示す。
【００２０】
コンピュータ１１０は、他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。例としてのみ、図２に、取外し不可能な不揮発性磁気媒体からの読出しまたはそれへの書込みを行うハードディスクドライブ１４１、取外し可能な不揮発性磁気ディスク１５２からの読出しまたはそれへの書込みを行う磁気ディスクドライブ１５１、およびＣＤ  ＲＯＭや他の光メディアなど取外し可能な不揮発性光ディスク１５６からの読出しまたはそれへの書込みを行う光ディスクドライブ１５５を示す。例示的なオペレーティング環境で使用できる他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶媒体には、それだけには限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ（ｓｏｌｉｄ  ｓｔａｔｅ  ＲＡＭ）、ソリッドステートＲＯＭ（ｓｏｌｉｄ  ｓｔａｔｅ  ＲＯＭ）などが含まれる。ハードディスクドライブ１４１は一般に、インターフェイス１４０などの取外し不可能なメモリインターフェイスを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェイス１５０などの取外し可能なメモリインターフェイスを介してシステムバス１２１に接続される。
【００２１】
上記で論じ、また図２に示したドライブおよびそれに関連するコンピュータ記憶装置が、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、およびコンピュータ１１０用の他のデータの格納を行う。たとえば図２では、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７を格納する。こうしたコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７と同じでも、異なっていてもよいことに留意されたい。本明細書では、それらが少なくとも異なるコピーであることを示すために、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７には異なる番号を付けてある。ユーザは、入力装置、たとえばキーボード１６２や一般にマウス、トラックボール、タッチパッドなどと称されるポインティング装置１６１を介して、コンピュータ１１０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ（ｓａｔｅｌｌｉｔｅ  ｄｉｓｈ）、スキャナなどが含まれ得る。こうしたおよび他の入力装置はしばしば、システムバス１２１に結合されたユーザ入力インターフェイス１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ：ユニバーサルシリアルバス）によって接続することもできる。
【００２２】
モニタ１９１または他のタイプの表示装置もビデオインターフェイス１９０などのインターフェイスを介してシステムバス１２１に接続される。ノースブリッジ（Ｎｏｒｔｈｂｒｉｄｇｅ）などのグラフィックスインターフェイス１８２をシステムバス１２１に接続することもできる。ノースブリッジは、ＣＰＵすなわちホスト処理装置１２０と通信するチップセットであり、ＡＧＰ（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ：アクセラレーテッドグラフィックスポート）通信の責任を担う。１つまたは複数のＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：グラフィックス処理装置）１８４が、グラフィックスインターフェイス１８２と通信することができる。この点について、ＧＰＵ１８４は一般に、レジスタ記憶装置などのオンチップメモリ記憶装置を含み、またＧＰＵ１８４は、ビデオメモリ１８６と通信する。しかし、ＧＰＵ１８４は、コプロセッサの一例にすぎず、したがって、様々なコプロセッシング装置をコンピュータ１１０に含めることができる。モニタ１９１または他のタイプのディスプレイ装置もまた、ビデオインターフェイス１９０などのインターフェイスを介してシステムバス１２１に接続され、このビデオインターフェイスは、ビデオメモリ１８６と通信することができる。モニタ１９１に加えて、コンピュータは、スピーカ１９７やプリンタ１９６などの他の周辺出力装置を含むこともでき、これらの装置は、出力周辺インターフェイス１９５を介して接続することができる。
【００２３】
コンピュータ１１０は、遠隔コンピュータ１８０などの１つまたは複数の遠隔コンピュータとの論理接続を用いるネットワーク環境で動作することができる。遠隔コンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置（ｐｅｅｒ  ｄｅｖｉｃｅ）または一般的な他のネットワークノードとすることができ、図２では、メモリ記憶装置１８１だけが示されているが、一般にはコンピュータ１１０に関する前述の要素の多くまたは全てを含む。図２では、論理接続は、ＬＡＮ（ｌｏｃａｌ  ａｒｅ  ｎｅｔｗｏｒｋ：ローカルエリアネットワーク）１７１およびＷＡＮ（ｗｉｄｅ  ａｒｅ  ｎｅｔｗｏｒｋ：広域ネットワーク）１７３を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、インターネットでは一般的である。
【００２４】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ１１０は、ネットワークインターフェイスまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は一般に、モデム１７２、またはインターネットなどのＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内部にあっても外部にあってもよく、ユーザ入力インターフェイス１６０や他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０またはその一部に関して示したプログラムモジュールを、遠隔メモリ記憶装置に格納することができる。限定のためでなく、例として、図２に、メモリ装置１８１に常駐する遠隔アプリケーションプログラム１８５を示す。示したネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段も使用できることが理解されよう。
【００２５】
コンピュータ１１０および他のクライアント装置は、コンピュータネットワークの一部として配置できることが当業者には理解されよう。この点について、本発明は、任意の数のメモリまたは記憶装置、および任意の数のアプリケーションを含むコンピュータシステム、ならびに任意の数の記憶装置またはボリュームにまたがって発生する処理に関するものである。本発明は、遠隔またはローカルの記憶装置を含むネットワーク環境にサーバコンピュータおよびクライアントコンピュータが配置されている環境に適用することができる。本発明は、プログラミング言語の機能、変換および実行能力を有するスタンドアロンコンピューティング装置に適用することもできる。
【００２６】
本発明のトランザクション複製の例示的な実施形態
図３は、トランザクション複製システムのトポロジをさらに詳しく示す図である。本発明は、複製コマンド適用のためサブスクライバ上で複数のトランザクションキューを使用することにより、従来技術の限界を有利に克服する。パブリッシャ３００は、トランザクションログ３０１内の複製されるそれぞれのコマンド（すなわち更新、削除、挿入など）に、そのコマンドが適用される行の主キーのハッシュを付加する。当技術分野で周知のように、トランザクションログ３０１は、全てのコマンドのリストを保持し、それによって変更取消しのためロールバックをデータベースに適用することができる。
【００２７】
付加後のコマンドは、パブリッシャ３００によってディストリビュータ３０２に転送され、このディストリビュータは、コマンドをコマンドキュー３１２に格納する。後述するように、コマンドキュー３１２は、サブスクライバへ転送するためコマンドを格納する。ディスパチャスレッド３１４は、それぞれのコマンドにハッシュされた主キーに基づいてコマンドキュー３１２を読み出してソートし、単一の行についてのコマンドを、接続３１６のうちの１つを介してその特定の行に関連する単一バケット（ａｎ ｕｎｉｑｕｅｂｕｃｋｅｔ）３１８、３２０または３２２に送信する。本発明は，３つの接続３１６および３つのバケットに限定されるものではなく、任意の数の接続およびバケットを使用することができる。たとえば、行１に適用される全てのコマンドは、その接続を介してバケット３１８に渡され、行２はその行に対応する接続を介してバケット３２０へ渡され、以下同様である。パブリッシャ３００上で主キーによるハッシュを行うことによって、複製された各コマンドが単一の行に適用され、そのデータ行についてのコマンドが適切なバケット３１８、３２０または３２２に渡されるようになる。さらに、これによって、バケット３１８、３２０および３２２内のコマンドの順序が、パブリッシャ３００上で発生した元の順序に維持されるようになる。
【００２８】
複数の接続３１６は、本発明による「調整されたコミット」を実施し、後述のように、それぞれのバッチが成功して終了したときに、トランザクションの整合性が確保されるようになる。ディスパチャスレッド３１４は、それぞれのバケット３１８、３２０および３２２に、コミット準備完了のマークを付け、コマンドバケットへの追加コマンドの送信を中止する。コミットコマンドを受信すると、それぞれのバケット上で実行される実行プログラムのスレッドにはコミットのためマークが付けられ、それに関連するコマンドバケットから変更を読み出し、それをサブスクライバに適用する。本発明によれば、すべての実行プログラムは実質上同時にコミットして、それぞれに対応する行にコマンドを適用する。ディスパチャスレッド３１４は、実行プログラムからのコミット処理完了を知らせるイベントを待ってから、通常の処理を再開することができる。
【００２９】
調整されたコミット処理によって、コミットする前に書込みおよび準備のステップを要する２フェーズコミット処理（ｔｗｏ  ｐｈａｓｅ  ｃｏｍｍｉｔ  ｏｐｅｒａｔｉｏｎ）に伴う伝達およびロギング上のオーバヘッドが有利に回避される。この機能は、高パフォーマンスの配布のために最適化されているものの、従来の２フェーズコミットにある準備およびコミットの段階が存在しないので、トランザクションの整合性をもつことができる。したがって、いずれかの実行プログラムがコミットに失敗した場合、コミット済みの実行プログラムをロールバックすることはできない。整合性を確保するために、本発明は、再試行論理を実装し、この再試行論理によって、コミットに成功した接続と、コミットに失敗した接続の混在に対処することがここでは企図されている。本発明によれば、シリアル化されたコマンドキュー３１２内の複製されたコマンドを、コミットレコード（ｃｏｍｍｉｔ  ｒｅｃｏｒｄ）の論理シーケンス番号（Ｌｏｇｉｃａｌ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ：ＬＳＮ）でソートする。次いでコマンドは、主キーのハッシュ値に基づいて複数の接続にディスパッチされるので、同じトランザクション内のコマンドが、異なる接続３１６を介してサブスクライバ３０４に到達することができる。
【００３０】
ある特定の接続がコミットに失敗した場合、再試行論理が最初に失敗した点から再開し、コマンドキュー３１２を再度取り出し、コミット済みのトランザクションによってどのコマンドがうまく適用されたか、またどのコマンドを再度適用する必要があるかを識別する。この機能を実施するために、本発明は、すべての接続について、最後にコミットされたＬＳＮを追跡し、最初にコミットされたコマンドから再開し、それぞれのコマンドのＬＳＮを、（ハッシュ値によって識別された）接続上でコミットされた最後のＬＳＮと照合する。関連する最後のＬＳＮよりも新しいＬＳＮが付いたコマンドだけを再度適用する。この手法によって、バッチが成功して終了したときには、サブスクライバ上でトランザクションの整合性がとれている状態になる。
【００３１】
したがって、コマンドを複数の接続に配布すると、末端のサブスクライバでのトランザクションの整合性を損なわずにパフォーマンスを向上させるのに役立つことが、上記の説明から当業者には理解されよう。
【００３２】
本発明を、様々な図の好ましい実施形態に関して説明したが、他の類似の実施形態を使用することができ、また上記に説明した実施形態に対して本発明と同じ機能を実施するための修正および追加を、それから逸脱せずに行うことができることも理解されたい。たとえば、本願で説明した本発明を、有線であれ無線であれ、どんなコンピューティング装置または環境にも適用することができ、また通信ネットワークを介して接続され、ネットワーク全体にわたって相互作用する、任意の数のこうしたコンピューティング装置にも適用できることが当業者には理解されよう。さらに、特に無線ネットワーク装置の数が増加し続けているので、ハンドヘルド装置のオペレーティングシステムおよびアプリケーションに特有の他のオペレーティングシステムを含めた様々なコンピュータプラットフォームが企図されることを強調しておく。さらに、本発明は、複数の処理チップまたは装置上で、あるいはそれらにまたがって実施することができ、格納も同様に、複数の装置にまたがって行うことができる。したがって、本発明は、どんな単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲に定める範囲において解釈すべきである。
【図面の簡単な説明】
【００３３】
【図１】従来のトランザクション複製システムのトポロジを示す図である。
【図２】本発明を実施することができる例示的なコンピューティング環境を示す図である。
【図３】本発明のトランザクション複製システムの例示的なトポロジを示す図である。
【符号の説明】
【００３４】
１００  コンピューティングシステム環境／コンピューティング環境
１１０  コンピュータ
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  取外し不可能なメモリインターフェイス
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能なメモリインターフェイス
１５１  磁気ディスクドライブ
１５２  取外し可能な不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  取外し可能な不揮発性光ディスク
１６０  ユーザ入力インターフェイス
１６１  ポインティング装置
１６２  キーボード
１７０  ネットワークインターフェイスまたはアダプタ
１７１  ＬＡＮ
１７２  モデム
１７３  ＷＡＮ
１８０  遠隔コンピュータ
１８１  メモリ記憶装置
１８２  グラフィックスインターフェイス
１８４  ＧＰＵ
１８５  遠隔アプリケーションプログラム
１８６  ビデオメモリ
１９０  ビデオインターフェイス
１９１  モニタ
１９５  出力周辺インターフェイス
１９６  プリンタ
１９７  スピーカ
２００  パブリッシャ
２０２  ディストリビュータ
２０３  接続
２０４  サブスクライバ／サーバまたはデータベース
３００  パブリッシャ
３０１  トランザクションログ
３０２  ディストリビュータ
３０４  サブスクライバ
３１２  コマンドキュー
３１４  ディスパチャスレッド
３１６  接続
３１８  バケット
３２０  バケット
３２２  バケット
【図１】
2004252986.tif 000003
【図２】
2004252986.tif 000004
【図３】
2004252986.tif 000005