JP2017514239A - トランザクション環境におけるリソースマネージャ(rm)インスタンス検知に基づいた共通のトランザクション識別子(xid)最適化およびトランザクションアフィニティをサポートするためのシステムおよび方法 - Google Patents

トランザクション環境におけるリソースマネージャ(rm)インスタンス検知に基づいた共通のトランザクション識別子(xid)最適化およびトランザクションアフィニティをサポートするためのシステムおよび方法 Download PDF

Info

Publication number
JP2017514239A
JP2017514239A JP2016565068A JP2016565068A JP2017514239A JP 2017514239 A JP2017514239 A JP 2017514239A JP 2016565068 A JP2016565068 A JP 2016565068A JP 2016565068 A JP2016565068 A JP 2016565068A JP 2017514239 A JP2017514239 A JP 2017514239A
Authority
JP
Japan
Prior art keywords
transaction
instance
global
resource manager
coordinator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016565068A
Other languages
English (en)
Other versions
JP6545709B2 (ja
JP2017514239A5 (ja
Inventor
シェン,シュガン
ヂャン,チンシェン
リトル,トッド・ジェイ
ジン,ヨンシュン
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2017514239A publication Critical patent/JP2017514239A/ja
Publication of JP2017514239A5 publication Critical patent/JP2017514239A5/ja
Application granted granted Critical
Publication of JP6545709B2 publication Critical patent/JP6545709B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Abstract

トランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法を提供する。グローバルトランザクションのためのコーディネータは、リソースマネージャインスタンスについての共通のトランザクション識別子および情報を、トランザクション環境におけるグローバルトランザクションの1つ以上のパーティシパントに伝播させるように動作する。コーディネータは、リソースマネージャインスタンスをコーディネータと共有している上記1つ以上のパーティシパントが、共通のトランザクション識別子を用いることを可能にし、1つのトランザクションブランチを用いて、リソースマネージャインスタンスを共有する上記1つ以上のパーティシパントのためのグローバルトランザクションを処理することができる。

Description

著作権表示:
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
発明の分野:
本発明は、一般的に、コンピュータシステムおよびソフトウェアに関し、特に、トランザクションシステムに関する。
背景:
トランザクションミドルウェアシステムまたはトランザクション指向型ミドルウェアは、組織内のさまざまなトランザクションを処理することができるエンタープライズアプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータなどの新技術の開発によって、トランザクションミドルウェアの性能をさらに改善する必要がある。これらは、本発明の実施形態が対処しようとする一般的領域である。
概要:
トランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。グローバルトランザクションのためのコーディネータは、トランザクション環境におけるグローバルトランザクションの1つ以上のパーティシパントに、リソースマネージャインスタンスについての共通のトランザクション識別子および情報を伝播(propagate)させるように動作する。コーディネータは、リソースマネージャインスタンスをコーディネータと共有している上記1つ以上のパーティシパントが共通のトランザクション識別子を用いることを可能にする。さらに、コーディネータは、1つのトランザクションブランチを用いて、リソースマネージャインスタンスを共有する上記1つ以上のパーティシパントのためにグローバルトランザクションを処理することができる。
トランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。トランザクションシステムは、リソースマネージャ(resource manager:RM)インスタンスに接続されているトランザクションサーバに要求をルーティングするように動作する。さらに、トランザクションシステムは、トランザクションサーバが関連付けられているRMインスタンスを示しているアフィニティコンテキスト(affinity context)をトランザクションサーバに割当てることができる。さらに、トランザクションシステムは、アフィニティコンテキストに基づいて、要求に関連する1つ以上の後続の要求をトランザクションサーバにルーティングすることができる。
トランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。トランザクションサーバは、1つ以上のRMインスタンスに関連付けられているデータソースからリソースマネージャ(RM)インスタンス情報を受信するように動作する。この場合、受信されたインスタンス情報は、トランザクションサーバが現在接続されているのがどのRMインスタンスであるかを当該トランザクションサーバが検知することを可能にする。さらに、トランザクションサーバは、受信されたインスタンス情報を、トランザクションサーバに関連付けられた1つ以上のテーブルに保存するように動作する。次いで、トランザクションサーバは、1つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することができる。
本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ(RM)インスタンス検知をサポートする例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてさまざまな状態テーブルを維持する例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてサーバテーブル(server table:ST)をサポートする例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてインスタンス情報を更新する例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてさまざまなチェックポイントを用いてトランザクションプロセスをサポートする例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ(RM)インスタンス検知をサポートするための例示的なフローチャートである。 本発明の一実施形態に従った、トランザクション環境におけるインスタンス検知に基づいてトランザクションアフィニティをサポートする例を示す図である。 本発明の一実施形態に従った、トランザクション環境におけるトランザクションアフィニティルーティングをサポートする例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを送信する例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを受信する例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてクライアントコンテキスト内におけるアフィニティルーティングをサポートする例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてさまざまなドメインにわたってアフィニティコンテキストを伝播させる例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてアプリケーションサーバにアフィニティコンテキストを伝播させる例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてインスタンス検知に基づいてトランザクションアフィニティをサポートするための例示的なフローチャートである。 本発明の一実施形態に従った、さまざまなトランザクション識別子(transaction identifier:XID)を用いて、トランザクション環境においてグローバルトランザクションを処理する例を示す図である。 本発明の一実施形態に従った、共通のトランザクション識別子(XID)を用いてトランザクション環境においてグローバルトランザクションを処理する例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてデータベースインスタンス検知に基づいて1相コミット(one-phase commit:1PC)処理モデルをサポートする例を示す図である。 本発明の一実施形態に従った、トランザクション環境においてデータベースインスタンス検知に基づいてグローバルトランザクションを処理する例を示す図である。 本発明の一実施形態に従った、共通のXIDを用いてトランザクション環境における複数のドメインにわたってグローバルトランザクションを処理する例を示す図である。 本発明の一実施形態に従った、共通のXIDを用いてトランザクション環境においてグローバルトランザクションを処理するための例示的なフローチャートである。
詳細な説明:
本発明は、同様の参照符号で同様の要素を示している添付の図面において、限定によってではなく例示によって説明されている。この開示における「ある」または「1つの」または「いくつかの」実施形態への言及は、必ずしも同じ実施形態に対するものではなく、そのような言及は「少なくとも1つ」という意味である。
以下の本発明の説明は、トランザクションミドルウェアマシン環境についての一例としてTuxedo環境を用いている。他のタイプのトランザクションミドルウェアマシン環境が限定なしに使用可能であることが当業者にとって明らかになるだろう。
トランザクションミドルウェアマシン環境などのトランザクション環境においてトランザクション処理をサポートすることができるシステムおよび方法がこの明細書中に記載される。
トランザクションミドルウェアマシン環境
本発明の一実施形態によれば、迅速に用意することができ且つオンデマンドで拡張することができる大規模並列処理インメモリグリッドを含むJava(登録商標)EEアプリケーションサーバ複合体を提供するために、当該システムは、64ビットプロセッサ技術などの高性能ハードウェア、高性能大容量のメモリ、冗長インフィニバンド(InfiniBand)およびイーサネット(登録商標)ネットワーク、ならびにWebLogic(登録商標)スイートなどのアプリケーションサーバまたはミドルウェア環境の組合せを含む。一実施形態によれば、当該システムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびインフィニバンド(IB)ネットワークを提供するフルラック、ハーフラックまたはクォーターラックもしくは他の構成として展開可能である。ミドルウェアマシンソフトウェアは、アプリケーションサーバ、ミドルウェアおよび他の機能、たとえば、WebLogic Server、JRockitもしくはHotspot JVM、Oracle Linux(登録商標)もしくはSolaris、およびOracle(登録商標) VMなどを提供することができる。一実施形態によれば、当該システムは、IBネットワークを介して互いに通信する複数の計算ノード、IBスイッチゲートウェイ、およびストレージノードまたはストレージユニットを含むことができる。ラック構成として実装される場合、ラックの未使用部分は、空のままにしてもよく、充填物で充填されてもよい。
本発明の一実施形態によれば、当該システムは、OracleミドルウェアSWスイートまたはWebLogicなどのミドルウェアまたはアプリケーションサーバソフトウェアをホストするために、展開容易な解決案を提供する。本明細書に説明されるように、一実施形態に従ったシステムは、ミドルウェアアプリケーションをホストするために必要とされる1つ以上のサーバ、ストレージユニット、ストレージネットワーク用のIBファブリック、およびすべての他の要素を含む「グリッド・イン・ア・ボックス」(grid in a box)である。たとえば、リアルアプリケーションクラスタおよびExalogicオープンストレージなどを使用する大規模並列グリッドアーキテクチャを活用することによって、すべての種類のミドルウェアアプリケーションに高い性能を提供することができる。このシステムは、線形I/O拡張性によって改善した性能を提供し、使用および管理が簡単であり、ミッションクリティカルな可用性および信頼性を提供する。
本発明の一実施形態に従うと、Oracle Tuxedoシステムなどのトランザクションミドルウェアシステムは、Oracle Exalogicミドルウェアマシンなど複数のプロセッサや、IBネットワークなどの高性能ネットワーク接続を備えた高速マシンを利用することができる。付加的には、Oracle Tuxedoシステム(単に「Tuxedo」とも称する)は、キャッシュアーキテクチャが共有されているクラスタ化されたデータベースであるOracleのリアルアプリケーションクラスタ(Real Application Clusters:RAC)エンタープライズデータベースなどのクラスタ化されたデータベースを利用することができ、かつ、クラウドアーキテクチャのコンポーネントにもなり得る。Oracle RACは、従来のシェアド・ナッシング・アプローチおよびシェアド・ディスク・アプローチの制限事項を克服して、ビジネス用途で使用できるように高度に拡張可能かつ利用可能なデータベースソリューションを提供することができる。
本発明の一実施形態によれば、Oracle Tuxedoシステムは、高性能分散型ビジネスアプリケーションの構築、実行および管理を可能にするソフトウェアモジュールのセットであり、トランザクションミドルウェアとして多くの複層アプリケーション開発ツールに使用されてきた。Tuxedoは、分散コンピューティング環境において分散トランザクション処理を管理するために使用することができるミドルウェアプラットフォームである。Tuxedoは、無制限の拡張性および標準ベースの相互運用性を提供しながら、エンタープライズレガシーアプリケーションのロックを解除し、エンタープライズレガシーアプリケーションをサービス指向アーキテクチャに拡張するための有効なプラットフォームである。
付加的には、Oracle Tuxedoシステムは、言語国際化のための、2相コミット(two-phase commit:2PC)処理のためのXA基準と、X/Open ATMI APIと、X/Open Portability Guide(XPG)基準とについてのサポートを含む、オープングループのX/Open基準に準拠し得る。トランザクションアプリケーションサーバは、XA基準を用いる場合にはXAサーバと称されてもよい。たとえば、Tuxedoグループに属する各々のTuxedoアプリケーションサーバは、OPENINFO特性を用いて構成することができる。TuxedoグループにおけるXAサーバはすべて、OPENINFO特性を用いてリソースマネージャ(resource manager:RM)への接続を確立することができる。
インスタンス検知(Instance Awareness)
図1は、本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ(RM)インスタンス検知をサポートする例を示す。図1に示されるように、トランザクション環境100におけるトランザクションシステム101は、データベースなどのデータソース102に関連付けられた1つ以上のリソースマネージャ(RM)インスタンスを用いて、トランザクション処理をサポートすることができる。
本発明の一実施形態に従うと、トランザクションシステム101は、データソース102におけるRMインスタンス情報104を検知することができる。たとえば、トランザクションシステム101におけるトランザクションサーバ103は、ユーザコールバック110を利用することによってデータソース102からRMインスタンス情報104を取得することができる。トランザクションシステム101は、ユーザコールバック110を登録するためのさまざまなメカニズム、たとえば静的登録メカニズムおよび動的登録メカニズム、を用いることができる。
静的登録メカニズムは、XAサーバをサポートする場合に用いることができる。XAサーバは、一様なXAインターフェイスを用いてトランザクションを制御するサーバである。たとえば、Tuxedoにおいては、静的な登録は、xa_open()関数が呼出された後に、tpopen()関数で呼出すことができる。登録が成功すると、トランザクションサーバ103がデータベース(たとえばOracleデータベース)への接続を確立したとき、ユーザコールバック110が呼出し可能となる。付加的には、ユーザコールバック110は、xa_close()関数が呼出される前に、tpclose()関数で登録解除することができる。
代替的には、トランザクションサーバ103は、たとえば、データソース102に関連付けられた共有ライブラリ105に基づいてユーザコールバック110を動的に登録することができる。たとえば、Tuxedoは、ユーザが非XAサーバを用いて(たとえばOCIまたはProc/c++によって)Oracleデータベースに接続したときに、動的にコールバックを登録することができる。Tuxedoは、最初に、Oracle OCIライブラリOCI APIを動的にロードして、関連するOCI環境ハンドルを取得することができる。次いで、Tuxedoは、OCISessionBegin関数で、OCIUserCallbackRegisterによってユーザコールバックを登録することができる。
図1に示されるように、システムは、トランザクションサーバ103に関連付けられた関連するコンテキスト106に、取得したインスタンス情報104を保存することができる。加えて、トランザクションサーバ103は、インスタンス情報104を共有メモリ107におけるさまざまな状態テーブル108(たとえば、Tuxedoにおけるグローバルな掲示板(bulletin board:BB)に記憶することができる。これらのテーブル108は、さまざまなノードに同期させることができ、複数のトランザクションサーバ(たとえば、サーバ111−112)および/またはネイティブ(native)クライアントによってアクセス可能である。
図2は、本発明の一実施形態に従った、トランザクション環境においてさまざまな状態テーブルを維持する例を示す。図2に示されるように、トランザクションシステム200はインスタンス情報220を共有メモリ201におけるさまざまな状態テーブルに記憶することができる。
これらの状態テーブルは、固有のRM/データベース名を記憶するリソースマネージャテーブル211、RM/データベースインスタンス名を記憶するインスタンステーブル212、およびRM/データベースサービス名を記憶するサービステーブル213を含み得る。このような情報により、他のサーバが特定のサーバに関連付けられたインスタンス情報を検知するのが容易になり得る。
加えて、トランザクションシステム200は共有メモリ201におけるサーバテーブル(ST)214を維持することができる。ST214は、1つ以上のサーバテーブルエントリ(server table entry:STE)を含んでいてもよく、その各々はインスタンステーブル212にインデックスを記憶することができる。たとえば、各々のSTEは、サーバがシングルスレッドサーバである場合にインスタンス識別子(instance identifier:ID)を記憶することができる。
図2に示されるように、サーバテーブル214は、共有メモリ201内の他のテーブル211−213を指し示すことができる。このため、トランザクションシステム200は、インスタンス情報(特定のサーバが現在接続されているRMインスタンスについての情報など)を取得するためにサーバテーブル214を用いることができ、トランザクションシステム200は、さまざまな状態テーブル211−213に直接記憶されているインスタンス情報を用いない可能性もある。
図3は、本発明の一実施形態に従った、トランザクション環境においてサーバテーブル(ST)をサポートする例を示す。図3に示されるように、トランザクションシステム300におけるサーバテーブル(ST)310は、1つ以上のサーバテーブルエントリ(STE)311−312を含み得る。サーバテーブルエントリ(STE)311−312の各々は1つ以上のインスタンス識別子(ID)を含み得る。たとえば、STE311はインスタンスID321−322を含み得る。STE312はインスタンスID323−324を含み得る。
本発明の一実施形態に従うと、各々のインスタンスID321−324はさまざまなインスタンス情報を含み得る。図3に示されるように、インスタンスID322はインスタンス名301、データベース名302およびサービス名303を識別することができる。
たとえば、インスタンスIDは、整数(たとえば、ビット0−11、ビット12−19およびビット20−31という3つのセクションを含む32ビット整数)を用いて実現することができる。第1のセクションであるビット0−11は、RM/データベースインスタンス名301についてのエントリインデックスを記憶することができる。第2のセクションであるビット12−19は、RM/データベース名302についてのエントリインデックスを記憶することができる。第3のセクションであるビット20−31は、RM/データベースサービス名303についてのエントリインデックスを記憶することができる。加えて、無効なインスタンスIDを示すために特別の値0xFFFFFFFFを用いることができる。
本発明の一実施形態に従うと、トランザクションシステム300は、関連するビット同士を単純に比較することによってインスタンスID322におけるインスタンス情報をチェックすることができる。これにより、システムは、ストリング比較動作の方がビット比較動作よりも費用がかかるせいで生じる、ストリング比較による性能の問題を回避することができる。
図4は、本発明の一実施形態に従った、トランザクション環境においてインスタンス情報を更新する例を示す。図4に示されるように、トランザクション環境400におけるトランザクションシステム401は、たとえばデータベースにおけるリソースマネージャ(RM)402から、関連するインスタンス情報404を取得することができる。
ユーザコールバック410が呼出されると、最新のインスタンス情報404をRM402から検索することができ、コンテキスト405に記憶することができる。加えて、トランザクションシステム401は、最新のインスタンス情報404を受信したことを示すフラグ409を設定することができる。
本発明の一実施形態に従うと、トランザクションプロセス403は1つ以上のチェックポイントで構成することができる。たとえば、チェックポイントは、サービス呼出しの前後、および初期化ルーチンの後にトリガすることができる。また、接続が確立されるか中断されたときにチェックポイントをトリガすることができる。
図4に示されるように、チェックポイント408において、トランザクションプロセス403がフラグ409をチェックすることができる。フラグ409が上がっていれば、トランザクションサーバ403は、検索されたインスタンス情報404に基づいてトランザクションコンテキスト407を更新し、検索されたインスタンス情報404を(共有メモリにおける)状態テーブル406に記憶することができる。
図5は、本発明の一実施形態に従った、トランザクション環境においてさまざまなチェックポイントを用いてトランザクションプロセスをサポートする例を示す。図5に示されるように、ステップ501において、トランザクションプロセスが開始される。次いで、トランザクションプロセスは、ステップ502において初期化プロセスに進み得る。
初期化プロセス502は、1つ以上のインスタンスチェックポイント、たとえばチェックポイント510、を含み得る。たとえば、Tuxedoにおいて、動的な登録が用いられる場合、チェックポイント510は、初期化ルーチン(たとえば、tpsvrinit)の後にサーバのスタートアップルーチンに配置されていてもよい。また、サーバがRMへの接続を確立しようと試みる場合(たとえば、xa_open()関数呼出しが、tpopen()関数呼出しでの呼出しに成功した後)、チェックポイント510をトリガすることができる。
加えて、ステップ512において、トランザクションプロセスは、初期化プロセス502中に、インスタンス検知能力を使用可能にするためにインスタンス情報を検索することができる。
さらに、ステップ503において、トランザクションプロセスは、サービス要求があるかどうかをチェックすることができる。ステップ505において、トランザクションプロセスはサービスディスパッチャ、たとえば、tmsvcdsp()、を呼出すことができる。図5に示されるように、サービスルーチン507が要求メッセージを処理するために呼出される前にチェックポイント506をトリガすることができる。加えて、サービスルーチン507が完了した後、別のチェックポイント508をトリガすることができる。ステップ509において、トランザクションプロセスはサービスディスパッチャを終了させることができる。
それ以外の場合には、サービス要求がなくてトランザクションプロセスが遮断されるべきであれば、ステップ504において、トランザクションプロセスはシャットダウン処理511を開始することができる。シャットダウンプロセス511では、チェックポイント513をトリガしてインスタンスID情報をクリーンにすることができる。たとえば、Tuxedoにおいて、サーバがRMへの接続を閉鎖しようとする場合(たとえば、xa_close()関数呼出しがtpclose()関数呼出しで呼出される前)に、チェックポイント513をトリガすることができる。最後に、トランザクションプロセスがステップ514において終了する。
本発明の一実施形態に従うと、システムは、動的な登録ではなく静的な登録を用いる場合、チェックポイント512およびチェックポイント513におけるのとは異なるやり方で動作する可能性もある。イニシエータをチェックすることなく、直接、インスタンス情報を検索して更新することができる。たとえば、静的な登録が用いられる場合、XAサーバは、tpopen()/tpclose()関数呼出しを用いて、RMへの接続を確立/削除することができる。また、tpopen()関数は、カスタマイズされたtpsvrinit()関数呼出しで呼出すことができ、tpclose()関数は、カスタマイズされたtpsvrdone()関数で呼出すことができる。
図6は、本発明の一実施形態に従った、トランザクション環境においてリソースマネージャ(RM)インスタンス検知をサポートするための例示的なフローチャートを示す。図6に示されるように、ステップ601において、トランザクションサーバは、1つ以上のRMインスタンスに関連付けられたリソースソースからリソースマネージャ(RM)インスタンス情報を受信することができる。この場合、受信されたインスタンス情報により、トランザクションサーバが現在接続されているのがどのRMインスタンスであるかを当該トランザクションサーバが検知することが可能となる。次いで、ステップ602において、システムは、受信されたインスタンス情報を、トランザクションサーバに関連付けられた1つ以上のテーブルに保存することができる。さらに、ステップ603において、システムは、トランザクションサーバが、1つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することを可能にする。
トランザクションアフィニティ
図7は、本発明の一実施形態に従った、トランザクション環境におけるインスタンス検知に基づいてトランザクションアフィニティをサポートする例を示す。図7に示されるように、トランザクション環境700は、1つ以上のリソースマネージャ(RM)(たとえばデータベース704に関連付けられたRMインスタンス702)を用いて、グローバルトランザクション710の処理をサポートすることができる。
トランザクションシステム701は、(たとえば、デフォルトのルーティングポリシーを用いて)トランザクションサーバ703に対してデータベース接続についての要求711をルーティングすることができる。加えて、システムは、トランザクションサーバ703にアフィニティコンテキスト705を割当てることができる。RMインスタンス702を識別する情報を含むアフィニティコンテキスト705は、共有メモリ(たとえば、Tuxedoにおけるグローバルトランザクションテーブル(global transaction table:GTT))に記憶可能であり、メッセージを用いて伝播させることができる。たとえば、トランザクションサーバ703は、上述のインスタンス検知特徴に基づいて、アフィニティコンテキスト705を介して、RMインスタンス名、RM/データベース名およびRM/データベースサービス名を取得することができる。
さらに、後続の要求712は、アフィニティコンテキスト705に基づいてトランザクションサーバ703にルーティングすることができる。加えて、他の後続の要求もまた、グローバルトランザクション710が完了する(かまたはクライアントコンテキストが終了する)まで、RMインスタンス702に接続されたトランザクションサーバ703にルーティングすることができる。
本発明の一実施形態に従うと、トランザクションアフィニティにより、RMインスタンス702に接続されている関連するデータベース要求711−712を、確実に、同じトランザクションサーバ703にルーティングすることができるようになる。こうして、トランザクションアフィニティはデータベースクラスタを最大限に活用することによってアプリケーション性能を向上させることができる。なぜなら、トランザクションアフィニティは、キャッシュヒットの可能性を増大させることによってデータベース性能を向上させることができるからである。
本発明の一実施形態に従うと、システムは、グローバルトランザクション710を実行するための他のルーティングポリシーと共にトランザクションアフィニティルーティングポリシーを適用することができる。たとえば、以下のルーティング優先順位は、Tuxedoでサポートすることができる。
1.ドメインのためのトランザクション優先順位ルーティング
2.クライアント/サーバアフィニティルーティング
3.トランザクションアフィニティルーティング
4.サービスロードに従ったロードバランシング
図8は、本発明の一実施形態に従った、トランザクション環境におけるトランザクションアフィニティルーティングをサポートする例を示す。図8に示されるように、トランザクションシステムは、トランザクションアフィニティルーティングポリシーを用いて、グローバルトランザクションの処理をサポートすることができる。
ステップ801において、システムは、データベース接続を含むトランザクション要求を受信することができる。次いで、ステップ802において、システムは、既存のアフィニティコンテキストがあるかどうかをチェックすることができる。
グローバルトランザクションにおいてアフィニティコンテキストが含まれない場合、システムは、ステップ809において、ロードバランシングルーティングを実行することができる。
グローバルトランザクションに既存のアフィニティコンテキストが含まれている場合、システムは、サーバを発見するためにトランザクションアフィニティルーティングポリシーを適用することができる。
ステップ803において、システムは、同じインスタンス名、同じデータベース(database:DB)名および同じサービス名に関連付けられたサーバを発見しようと試みてもよい。
システムがサーバを発見することができない場合、ステップ804において、システムは、同じDB名および同じサービス名に関連付けられておりかつ現在のグローバルトランザクションには含まれないグループにあるサーバを発見しようと試みてもよい。
システムがサーバを発見することができない場合、ステップ805において、システムは、同じDB名および同じインスタンス名に関連付けられたサーバを発見しようと試みてもよい。
トランザクションシステムがサーバを発見することができない場合、ステップ806において、システムは、同じDB名に関連付けられたサーバを発見しようと試みてもよい。
ステップ807において、システムは、既存のアフィニティコンテキストに基づいてサーバを発見することができるかもしれない。他方では、ステップ808において、システムはサーバを発見することができないかもしれない。次いで、ステップ809において、システムは、ロードバランシングルーティングに従ってサーバを発見しようと試みることができる。
図9は、本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを送信する例を示す。図9に示されるように、トランザクションシステム901はトランザクション環境900におけるトランザクション処理をサポートすることができる。さらに、トランザクションシステム901におけるトランザクションサーバ903は、トランザクションコンテキスト907(たとえば、TuxedoにおけるTUXC)に基づいてトランザクション処理をサポートすることができる。
図9に示されるように、トランザクションサーバ903は、共有メモリ902から関連するアフィニティコンテキスト904(たとえば、TuxedoにおけるGTT)を取得することができ、関連するアフィニティコンテキスト914を用いてトランザクションコンテキスト907を更新することができる。チェックポイント908がトリガされると、システムは、関連するアフィニティコンテキスト914を、トランザクションコンテキスト907からメッセージキュー905内のメッセージ906にコピーすることができる。
これにより、トランザクションシステム901は、サービスにメッセージに906を送信する前に、サービスルーティングのために、トランザクションコンテキスト907における関連するアフィニティコンテキスト914を参照することができる。
図10は、本発明の一実施形態に従った、トランザクション環境においてアフィニティコンテキストを含むメッセージを受信する例を示す。図10に示されるように、トランザクション環境1000におけるトランザクションシステム1001は、メッセージキュー1005を用いて、1つ以上のメッセージ(たとえば、メッセージ1006)を受信することができる。
トランザクションシステム1001におけるトランザクションサーバ1003は、最初のブート後に連続的に(要求を含む)メッセージをデキューすることができる。図10に示されるように、トランザクションサーバ1003はメッセージキュー1005からメッセージ1006を読出すことができ、メッセージ1006内のサービス要求を処理する。
サービス要求の処理中に、システムは、アフィニティコンテキストをメッセージ1006からトランザクションコンテキスト1007にコピーするためのチェックポイント1008をトリガすることができる。次いで、システムは、トランザクションコンテキスト1007内のアフィニティコンテキスト1014を用いて、共有メモリ1002内のアフィニティコンテキスト1004を更新することができる。
メッセージ1006内の要求が処理されると、トランザクションサーバ1003は、メッセージキュー1005からより多くのメッセージを読出すことができる。そうでない場合、トランザクションサーバ1003は、次の要求が到達するまで、メッセージキュー1005上で待機することができる。
図11は、本発明の一実施形態に従った、トランザクション環境においてクライアントコンテキスト内におけるアフィニティルーティングをサポートする例を示す。図11に示されるように、トランザクション環境1100におけるトランザクションシステム1101は、1つ以上のリソースマネージャ(RM)(たとえばデータベース1104に関連付けられるRMインスタンス1102)を用いて、クライアントコンテキスト1110におけるトランザクション処理をサポートすることができる。たとえば、クライアントコンテキスト1110内では、ウェブ会話は回数ごとに接続したり遮断したりすることができる。これらの各々の接続中、会話は、ショッピングカートなどの同じ(または同様の)データに対する参照および/またはアクセスを実行してもよい。
本発明の一実施形態に従うと、システムは、(たとえば、デフォルトのルーティングポリシーに基づいて)トランザクションサーバ1103に対してデータベース接続についての要求1111をルーティングすることができる。加えて、システムは、RM1102を示すアフィニティコンテキスト1105をトランザクションサーバ1103に割当てることができる。
さらに、クライアントコンテキスト1110内の1つ以上の後続の要求(たとえば、要求1112)は、クライアントコンテキスト1110が終了するかまたは関連するトランザクションが完了するまで、アフィニティコンテキスト1105に基づいてトランザクションサーバ1103にルーティングすることができる。これにより、トランザクションシステム1101は、クライアントコンテキスト1110内のさまざまなデータベース動作を同じRMインスタンス1102に方向付けることを確実にすることができる。
本発明の一実施形態に従うと、トランザクションシステム1101は、クライアントコンテキスト1110内のアフィニティを暗示しているさまざまなロードバランスアドバイザリイベントをデータベースから受信することができる。たとえば、Tuxedoにおいては、データベースから受信されたロードバランシングアドバイザリイベントは、パラメータであるAFFINITY HINTを含み得る。これは、アフィニティが特定のインスタンスとサービスとの組合せに対してアクティブとなるかまたはイナクティブとなるかどうかを示すフラグである。AFFINITY HINTパラメータは、ウェブセッションの期間中継続する一時的なアフィニティであって、サービスに対して目標を設定することによってロードバランシングアドバイザリが使用可能になると、自動的に使用可能にすることができる。加えて、同じサービスを提供するさまざまなインスタンスは、AFFINITY HINTについてのさまざまな設定を有し得る。
本発明の一実施形態に従うと、トランザクションシステム1101は、関連するデータベース動作がトランザクション内にある場合には、クライアントコンテキストベースのアフィニティポリシーではなく、トランザクションアフィニティルーティングポリシーを適用してもよい。他方では、システムは、デフォルトのtuxedoロードバランスルートポリシーに基づいて、クライアントコンテキストベースのアフィニティルーティングポリシーを実現することができる。
図12は、本発明の一実施形態に従った、トランザクション環境におけるさまざまなドメインにわたってアフィニティコンテキストを伝播させる例を示す。図12に示されるように、トランザクション環境1200は、1つ以上のリソースマネージャ(RM)、たとえばデータベース1215に関連付けられたRMインスタンス1205、を用いてトランザクション処理をサポートすることができる。
本発明の一実施形態に従うと、システムは、(たとえば、デフォルトのルーティングポリシーを用いて)トランザクションサーバ1203に対してデータベース接続についての要求1211をルーティングすることができる。加えて、システムは、RMインスタンス1202を示すアフィニティコンテキスト1207をトランザクションサーバ1203に割当てることができる。
さらに、トランザクション環境1200におけるトランザクションドメインは、要求1211がさまざまなドメイン間で転送されるべきである場合、ドメインにわたってアフィニティコンテキスト情報を伝播させることができる。
図12に示されるように、トランザクションドメイン1201は、アフィニティコンテキスト1207をアフィニティキーストリング1208に変換してから、このアフィニティキーストリング1208をリモートドメイン1202に送信することができる。アフィニティキーストリング1208を受信した後、トランザクションドメイン1202は、アフィニティキーストリング1208を、トランザクションドメイン1202においてトランザクションサーバ1004が使用可能なアフィニティコンテキスト1206に変換することができる。
これにより、1つ以上の後続の要求(たとえば、要求1212)をアフィニティコンテキスト1206に基づいてRMインスタンス1202に方向付けることができる。
図13は、本発明の一実施形態に従った、トランザクション環境においてアプリケーションサーバにアフィニティコンテキストを伝播させる例を示す。図13に示されるように、トランザクション環境1300におけるトランザクションシステム1301は、1つ以上のリソースマネージャ(RM)(たとえばデータベース1315に関連付けられたRMインスタンス1305)を用いて、トランザクション処理をサポートすることができる。
本発明の一実施形態に従うと、システムは、(たとえば、デフォルトのルーティングポリシーを用いて)トランザクションサーバ1303に対してデータベース接続についての要求1311をルーティングすることができる。加えて、システムは、RMインスタンス1305を示すアフィニティコンテキスト1307をトランザクションサーバ1303に割当てることができる。
さらに、トランザクションシステム1301(たとえば、Tuxedo TDomain)は、アフィニティキーストリング1308を介して、アプリケーションサーバ1302(たとえばWebLogicアプリケーションサーバ)にアフィニティコンテキスト1307情報を伝播させることができる。たとえば、アフィニティコンテキスト1307は、コネクタ1304(たとえばTuxedo WTC)を介してトランザクションシステム1301とアプリケーションサーバ1302との間でやり取りすることができる。
トランザクションシステム1301がコネクタ1304に要求を送信すると、トランザクションシステム1301はアフィニティコンテキスト1307をアフィニティキーストリング1308に変換することができる。コネクタ1304がトランザクションシステム1301から要求を受信すると、コネクタ1306は、アフィニティキーストリング1308を、アプリケーションサーバ1302が使用可能なトランザクションコンテキスト1306に変換することができる。
コネクタ1304がトランザクションシステム1301に要求を送信すると、コネクタ1304は、アプリケーションサーバ1302に関連付けられたトランザクションコンテキスト1306からアフィニティコンテキストを取得することができる。トランザクションシステム1301がコネクタ1304から要求を受信すると、トランザクションシステム1301は、アフィニティキーストリング1308をアフィニティコンテキスト1307に変換することができる。
これにより、アプリケーションサーバ1312における1つ以上の後続の要求(たとえば要求1312)を、アフィニティコンテキスト1305に基づいてRMインスタンス1302に方向付けることができる。
図14は、本発明の一実施形態に従った、トランザクション環境においてインスタンス検知に基づいてトランザクションアフィニティをサポートするための例示的なフローチャートを示す。図14に示されるように、ステップ1401において、システムは、リソースマネージャ(RM)インスタンスに接続されているトランザクションサーバに要求をルーティングすることができる。次いで、ステップ1402において、システムは、トランザクションサーバが関連付けられているRMインスタンスを示しているアフィニティコンテキストをトランザクションサーバに割当てることができる。さらに、ステップ1403において、システムは、要求に関連する1つ以上の後続の要求を、アフィニティコンテキストに基づいて、トランザクションサーバにルーティングすることができる。
共通のトランザクション識別子(XID)
図15は、本発明の一実施形態に従った、さまざまなトランザクション識別子(XID)を用いて、トランザクション環境においてグローバルトランザクションを処理する例を示す。図15に示されるように、トランザクションシステム1500は、さまざまなリソースマネージャ(RM)インスタンス(たとえば、データベース1506に接続するRMインスタンス1504−1505)を用いて、グローバルトランザクション1510の処理をサポートすることができる。
本発明の一実施形態に従うと、グローバルトランザクション1510はグローバルトランザクション識別子(global transaction identifier:GTRID1520)に関連付けることができる。グローバルトランザクション1510内では、同じグループ内にある関連するトランザクションサーバは1つのトランザクションブランチを共有することができ、別々のグループにおけるトランザクションサーバはそれぞれ別々のトランザクションブランチを用いてもよい。
図15に示されるように、トランザクションシステム1500は、グローバルトランザクション1510を処理するために複数のブランチ(たとえばブランチA1512−C1523)を用いてもよい。ブランチA1521−C1523の各々をブランチ修飾子(たとえばBQUAL A1531−C1533)に関連付けることもできる。
本発明の一実施形態に従うと、トランザクションシステム1500は、さまざまなブランチA1521−C1523上でのグローバルトランザクション1510の処理を管理するために、さまざまなトランザクションマネージャ(transactional manager:TM)(たとえば、TM A1501−TM C1503)を用いることができる。
たとえば、TM A1501はトランザクション識別子(XID)A1511に関連付けられており、ブランチA1521上でのグローバルトランザクション1510の処理を管理するための役割を果たし得る。TM B1502はトランザクション識別子(XID)B1512に関連付けられており、ブランチB1522上でのグローバルトランザクション1510の処理を管理するための役割を果たし得る。TM C1503は、トランザクション識別子(XID)C1513に関連付けられており、ブランチC1523上でのグローバルトランザクション1510の処理を管理するための役割を果たし得る。
図15に示されるように、グローバルトランザクション1510におけるさまざまなブランチA1521−C1523のためのXID A1511−XID C1513は、同じGTRID1520(およびフォーマットID)を共有することができ、かつ、さまざまなブランチ修飾子(すなわちBQUAL A1531−BQUAL C1533)を有していてもよい。
本発明の一実施形態に従うと、システムは、トランザクションサーバの2つ以上のグループがグローバルトランザクション1510に含まれている場合、グローバルトランザクション1510上において2相コミット(2PC)プロセスを呼出すことができる。
図15に示されるように、システムは、グローバルトランザクション1510におけるさまざまな参加トランザクショングループ(たとえば、TM A1501−TM B1502)が、実際に同じRMインスタンス1504に関連付けられている場合であっても、グローバルトランザクション1510を処理するために2PCモデルを用いる可能性がある。
本発明の一実施形態に従うと、システムは、2つ以上のグループが同じリソースマネージャインスタンス1504上で実行されている場合に、共通のXIDを用いることによってグローバルトランザクション1510を処理する性能を向上させることができる。
図16は、本発明の一実施形態に従った、共通のXIDを用いてトランザクション環境におけるグローバルトランザクションを処理する例を示す。図16に示されるように、トランザクションシステム1600は、データベース1606に接続するリソースマネージャ(RM)インスタンス1604−1605を用いて、GRTID1620に関連付けられたグローバルトランザクション1610の処理をサポートすることができる。
さらに、トランザクションシステム1600は、さまざまなトランザクショングループ(たとえば、ブランチA1621−C1623)におけるさまざまなトランザクションアプリケーションサーバ上でグローバルトランザクション1610の処理を管理するためにトランザクションマネージャ(TM)A1601−C1603を用いることができる。
本発明の一実施形態に従うと、リソースマネージャ(RM)1604−1605の各々は、たとえばデータベース名、サーバ名およびインスタンス名に基づいて固有に識別することができる。トランザクションシステム1600におけるトランザクションサーバは、データベースインスタンス検知能力に基づいて、それが現在接続しているのがどのRMインスタンスであるかを検知することができる。
図16に示されるように、トランザクションシステム1600はTM A1601などのコーディネータを含み得る。コーディネータTM A1601は、RMインスタンス1604を識別するインスタンスID1641に関連付けられている。
加えて、グローバルトランザクション1610は、コーディネータ1601がリモートサーバノードにおいて配置されているかまたは配置され得るローカルサーバノード上に位置し得る1つ以上の参加サーバ(たとえば、パーティシパントTM B1602−TM C1603)を含み得る。パーティシパントTM B1602−TM C1603の各々はまた、それら各々が接続しているRMインスタンスを識別するインスタンスID(たとえば、インスタンスID1642−ID1643)に関連付けることもできる。
本発明の一実施形態に従うと、グローバルトランザクション1610を処理するために共通のXID特徴が使用可能になると、コーディネータTM A1601についてのXID1611はグローバルトランザクション1610内で共有可能となる(すなわち、XID1611が共通のXIDとして用いられる)。これにより、複数のグループを含み、Oracleデータベースなどのクラスタ化されたデータベース上で実行されるトランザクションアプリケーションは、データベースインスタンス検知を利用することによってトランザクション性能を向上させることができる。
図16に示されるように、グローバルトランザクション1610のためのコーディネータTM A1601は、グローバルトランザクション1610のライフサイクル内で、XID1611およびインスタンスID1641などのさまざまなタイプの情報をさまざまなパーティシパントTM B1602−TM C1603に伝播させることができる。
さらに、パーティシパントTM B1602−TM C1603の各々は、受信されたインスタンスID1641をそれ自体のインスタンスIDと比較することによって、それがコーディネータTM A1601と同じRMを共有しているかどうかを判断することができる。インスタンスIDが同じであれば、パーティシパントTM B1602−TM C1603はそれら自体を共通のXIDサーバ(またはグループ)としてマーク付けすることができる。
たとえば、システムは、TM B1602がTM A1601と同じRMインスタンス1604を共有しているので、ブランチB1622上に一致を発見する可能性がある。これにより、TM B1602は、トランザクション処理をサポートするためにそれ自体のXIDではなく共通のXID1611を用いることができる。次いで、TM B1602は、それが共通のXID 1611を用いていることをコーディネータTM A1601に通知することができる。このような場合、コーディネータTM A1601がグローバルトランザクション1610をコミットまたはロールバックするように動作すると、システムは、(BQUAL A1631に基づいた)共通のXID1611を用いているので、ブランチB1622を無視することができる。
他方では、TM C1603が(インスタンスID 1643を用いて)別のRM 1605に関連付けられているので、システムは、(XID C1613およびBQUAL C1633を用いる)ブランチC 1623上で一致を発見しない可能性がある。任意には、TM C1603は、それが共通のXID1611用いていないことをコーディネータTM A1601に通知することができる。次いで、システムは、2相コミット(2PC)処理モデルに従ってトランザクションブランチC1623を処理することができる。
本発明の一実施形態に従うと、さまざまな共通のXIDグループ、すなわち、コーディネータ1601と同じRMインスタンス1604に関連付けられているトランザクションサーバのグループは、共通のXID1611を介してRMインスタンス1604にアクセスすることができる。
さらに、コミット要求が呼出されると、コーディネータ1601はローカルの共通XIDグループに対して如何なるメッセージも送信しなくなる可能性がある。システムは、各々のローカルの共通XIDグループの状態を同時に読取り専用に変更することができる。また、リモートの共通XIDグループは、コーディネータ1601から準備要求を受信することができ、実際に如何なるデータベース動作も行なうことなく、その状態を読取り専用に変更してもよい。これにより、システムは、これらのグループのうちの1つ(たとえば、コーディネータのグループ)を準備/コミットするだけでよいかもしれない。
加えて、システムは、インスタンスIDが変化した場合に、共通XIDグループを非共通XIDグループに変更することができる。たとえば、ブランチB1622が別のRMインスタンスを用いるように変化した場合、システムは、代わりに(たとえば、BQUAL B1632に基づいて)2相コミット(2PC)プロセスを呼出すことができる。
図17は、本発明の一実施形態に従った、トランザクション環境においてデータベースインスタンス検知に基づいて1相コミット(1PC)処理モデルをサポートする例を示す。図17に示されるように、トランザクションシステム1700は、データベース1706に接続するリソースマネージャ(RM)インスタンス1704を用いて、GRTID 1720に関連付けられたグローバルトランザクション1710の処理をサポートすることができる。
トランザクションシステム1701は、複数のトランザクションマネージャ(TM)A1701−C1703を含み得る。これら複数のトランザクションマネージャ(TM)A1701−C1703は、さまざまなトランザクショングループ(すなわち、ブランチA1721−C1723)におけるグローバルトランザクション1710の処理を管理するために用いられる。
さらに、TM A1701−TM C1703は、単一のリソースマネージャ(RM)インスタンス1704に基づいてグローバルトランザクション1710の処理を管理することができる。TM A1701−TM C1703の各々は、インスタンス識別子(ID)、たとえばインスタンスID1741−ID1743、を維持することができる。
図17に示されるように、トランザクションシステム1700はコーディネータ(たとえば、TM A1701)を含み得る。グローバルトランザクション1710のためのコーディネータTM A1701は、グローバルトランザクション1710のライフサイクル内において、共通のXID1711およびインスタンスID1741などのさまざまなタイプの情報をさまざまな参加トランザクションサーバ(たとえば、TM B1702−TM C1703)に伝播させることができる。
本発明の一実施形態に従うと、トランザクションアフィニティ性能に基づいて、システムは、グローバルトランザクション1710における関連するすべての要求を同じRMインスタンス1704にルーティングすることができる。さらに、インスタンス検知能力に基づいて、TM A1701−TM C1703は、単一のRMインスタンス1704だけがグローバルトランザクション1710において用いられることを検知することができる。なぜなら、別々のインスタンスID1741−ID1743がすべて、同じRMインスタンス1704を識別するからである。これにより、コーディネータTM A1701は、トランザクション環境1700においてグローバルトランザクション1710を調整するために共通のXID1711(たとえば、BQUAL A1731およびGRTID1720に基づいたそれ自体のXID)を用いることができる。
図17に示されるように、コーディネータTM A1701は、コミット段階において、如何なる「準備/コミット」要求も他のグループに送信しない可能性がある。なぜなら、それらはすべて共通のXIDグループであるからである。さらに、システムは1相コミット(1PC)処理モデルを利用することができる。
本発明の一実施形態に従うと、読取り専用の1相コミット最適化により、システム性能を著しく向上させることができる。これにより、他のすべてのグループが読取り専用に戻った場合に、保存されたグループに対して1PC処理を実行することが可能となる。グローバルトランザクションのブランチがすべて、たとえば同じインスタンスまたは同じRACで密に連結されている場合、当該性能を向上させることができる。
たとえば、トランザクション環境1700は、グローバルトランザクション1710を処理するためのN個(この場合、N>1)の参加グループを有し得る。それらのうち、M個(この場合M<N)の参加グループはコーディネータと同じインスタンスIDを有している可能性がある。
データベースインスタンスが検知されていない2相コミット(2PC)処理モデルを用いる場合、システムは、(たとえば、図15に示されるように)データベース上で、N個の準備動作および1個のコミット動作を実行してもよい。また、システムは、トランザクションログを書込む必要があるかもしれない。
代替的には、(たとえば、図16に示されるように)データベースインスタンス検知に基づいて、システムは、データベース上で、N−M個の準備動作および1個のコミット動作を実行する必要があるかもしれない(M個の準備動作が減じられている)。
さらに、M=N−1である場合、これは、グローバルトランザクションにおける他のすべての参加グループがコーディネータと同じトランザクションブランチを共有し得ることを示している。さらに、グローバルトランザクションを処理する際にブランチは1つしか存在しない。システムは、1つのコミット操作を実行するだけでよいかもしれず、この場合、N個(またはM+1個)の準備動作が減じられている。また、システムはトランザクションログを書込む必要はないかもしれない。
図18は、本発明の一実施形態に従った、トランザクションミドルウェア環境においてデータベースインスタンス検知に基づいてグローバルトランザクションを処理する例を示す。図18に示されるように、トランザクションシステム、たとえばOracle Tuxedoシステムは、複数のトランザクショングループ(たとえばTuxedoグループA1802−B1803)を用いて、グローバルトランザクションの処理をサポートすることができる。
さらに、TuxedoグループA1802−B1803の各々は、1セットのトランザクション管理サーバ(transaction manager server:TMS)を有し得る。たとえば、グループA1802は、サーバA1804と、コーディネータとして機能することができるTMS A1806とを含む。加えて、グループA1802は、共有メモリ(たとえばTuxedo掲示板(BB)A1808)を含み得る。さらに、グループB1803は、サーバB1805およびTMS B1807、ならびに共有メモリ(たとえばTuxedo BB B1809)を含む。
図18に示される例においては、ステップ1811において、クライアント1801は、関数呼出しtpcall(サービスA)を呼出すことによってサーバA1804上のサービス(たとえば、サービスA)にアクセスすることができる。次いで、ステップ1812において、サーバA1804は、Tuxedo BB A1808において、関連するグローバルトランザクションテーブルエントリ(global transaction table entry:GTTE)を作成することができる。
加えて、ステップ1813において、クライアント1801は、関数呼出しtpcall(サービスB)を呼出すことによってサーバB1805上で別のサービス(たとえばサービスB)にアクセスすることができる。ステップ1814において、サーバA1804は、グループA1802についての関連する情報をTuxedo BB B1809に追加することができる。また、ステップ1815において、クライアント1801は、グループB1803についての関連情報をTuxedo BB A1808に追加することができる。
さらに、ステップ1816において、クライアント1801は、関数呼出しtpcommit()を呼出すことによってトランザクションをコミットするように要求することができる。Tuxedoは、グローバルトランザクションに含まれるすべてのグループが同じRMインスタンス上で実行される場合に、グローバルトランザクション上に直接1PCを呼出すことができる。ステップ1817において、コーディネータTMS A1806は次にグローバルトランザクションをコミットすることができる。
1PC呼出しが成功した場合、ステップ1818において、コーディネータTMS A1806は、ローカルノードにおけるGTTEを削除することができる。次いで、ステップ1819において、コーディネータ1806は、リモートの共通XIDグループであるグループB1803に対して、そのブランチを削除(forget)するように通知することができる。最後に、ステップ1820において、TMS B1807はTuxedo BB B1809を更新することができる。
図19は、本発明の一実施形態に従った、共通のXIDを用いてトランザクション環境において複数のドメインにわたってグローバルトランザクションを処理する例を示す。図19に示されるように、トランザクションシステム1900は、データベース1906に接続するリソースマネージャ(RM)インスタンス1904に基づいて、複数のドメイン(たとえば、ドメインA1951−B1952)にわたってグローバルトランザクション1910の処理をサポートすることができる。
加えて、さまざまなブランチA1921−B1923は、トランザクションシステム1900においてGTRID1920を共有することができる。ローカルドメインA1951におけるコーディネータTM A1901は、インスタンスID 1941に基づいたトランザクション識別子(XID)1911およびインスタンス情報をリモートドメインB1952に伝播させることができる。
本発明の一実施形態に従うと、ドメインA1951内において固有であるインスタンスID1941は、サーバ立上げシーケンスが異なっているせいで、別のドメイン(たとえば、ドメインB1952)において、異なるものになる可能性もある。
図19に示されるように、ドメインに直接クロスさせてインスタンスID1941を伝播させるのではなく、コーディネータTM A1901は、インスタンスID1941をフォーマットされたストリング1908に変換してから、ドメインにわたって伝播させることができる。たとえば、フォーマットされたストリング1908は、データベース名、サーバ名およびインスタンス名を含み得る。
加えて、ドメインゲートウェイサーバ1905は、ローカルドメインA1951とリモートドメインB1952との間の通信をサポートするために用いることができる。ドメインゲートウェイサーバ1905のアウトバウンドインターフェイスは、インスタンスID1941からのインスタンス情報をフォーマットされたストリング1908にマッピングすることができる。ドメインゲートウェイサーバ1905のインバウンドにより、フォーマットされたストリング1908からのインスタンス情報をインスタンスID1941にマッピングすることができる。
たとえば、Tuxedoにおいて、ユーザは、ビジネス上の理由から、Tuxedoグループをさまざまなドメインに分割してもよい。GWTDOMAINサーバなどのゲートウェイサーバは異なるドメイン間での通信をサポートするために用いることができる。さらに、コーディネータドメインにおけるGWTDOMAINサーバはプロキシとして機能することもできる。加えて、他のドメインにおけるGWTDOMAINサーバを介するすべての関与サーバが共通のXIDを用いるように設定されている場合、GWTDOMAINサーバは、共通のXIDを用いるように構成することができる。
本発明の一実施形態に従うと、リモートドメインB1952は、共通のXID1911を、インポートされたXID1913として記憶することができる。図19に示されるように、インポートされたXID1913が存在し、インポートされたXID1913に関連付けられたBQUAL A1931が有効である場合、ブランチB1923(すなわち共通のXIDグループ)はデータベースにアクセスするためにこのインポートされたXID1943を用いることができる。
本発明の一実施形態に従うと、ドメイン間トランザクションが単一のRMインスタンスを含む場合、システムはまた、データベースインスタンス検知に基づいて、ドメイン間トランザクションを処理する際に1相コミット(1PC)モデルを利用することもできる。
図20は、本発明の一実施形態に従った、トランザクション環境において共通のXIDを用いてグローバルトランザクションを処理するための例示的なフローチャートを示す。図20に示されるように、ステップ2001において、グローバルトランザクションのためのコーディネータは、トランザクション環境におけるグローバルトランザクションの1つ以上のパーティシパントに対してリソースマネージャインスタンスについての共通のトランザクション識別子および情報を伝播させることができる。次いで、ステップ2002において、システムは、リソースマネージャインスタンスをコーディネータと共有している上記1つ以上のパーティシパントが、共通のトランザクション識別子を用いることを可能にする。さらに、ステップ2003において、コーディネータは、1つのトランザクションブランチを用いて、リソースマネージャインスタンスを共有する上記1つ以上のパーティシパントのためのグローバルトランザクションを処理することができる。
本発明の一実施形態に従うと、トランザクション環境においてトランザクション処理をサポートするための方法が提供される。当該方法は、リソースマネージャ(RM)インスタンスに接続されているトランザクションサーバに要求をルーティングするステップと、トランザクションサーバが関連付けられているRMインスタンスを示しているアフィニティコンテキストをトランザクションサーバに割当てるステップと、アフィニティコンテキストに基づいて、要求に関連する1つ以上の後続の要求をトランザクションサーバにルーティングするステップとを含む。
本発明の一実施形態に従うと、当該方法はさらに、上記RMインスタンスが、クラスタ化されたデータベースにおけるインスタンスとなることを可能にするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、上記要求および上記1つ以上の後続の要求をグローバルトランザクションに関連付けることを可能にするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、RM名、インスタンス名およびサービス名に基づいたアフィニティルーティングポリシーを用いて、1つ以上の後続の要求をルーティングするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、上記要求および上記1つ以上の後続の要求をクライアントコンテキストに関連付けることを可能にするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、メッセージを送信する前に、トランザクションサーバを介してメッセージにアフィニティコンテキストを含めるステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、別のトランザクションサーバから受信したメッセージに基づいて、トランザクションサーバにおけるアフィニティコンテキストを更新するステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、アフィニティコンテキストストリングを用いて、アフィニティコンテキストをトランザクションドメインから別のトランザクションドメインに転送するステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、コネクタを用いて、アフィニティコンテキストをトランザクションシステムからアプリケーションサーバに転送するステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、コネクタを用いて、アプリケーションサーバからアフィニティコンテキストを受信するステップを含む。
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されると当該システムに上述の方法のうちの方法を実行させる命令を含む。
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されると当該システムに上述の方法のうちの方法を実行させる命令を含む。発明の一実施形態に従うと、トランザクションミドルウェア環境におけるグローバルトランザクションの処理をサポートするためのシステムが提供される。当該システムは、1つ以上のマイクロプロセッサと、1つ以上のマイクロプロセッサ上で実行されるトランザクションシステムとを含む。トランザクションシステムは、リソースマネージャ(RM)インスタンスに接続されたトランザクションサーバに要求をルーティングするステップと、トランザクションサーバが関連付けられているRMインスタンスを示すアフィニティコンテキストをトランザクションサーバに割当てるステップと、アフィニティコンテキストに基づいて、要求に関連する1つ以上の後続の要求をトランザクションサーバにルーティングするステップとを実行するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、上記RMインスタンスはクラスタ化されたデータベースにおけるインスタンスである。
本発明の一実施形態に従うと、上述のシステムにおいては、上記要求および上記1つ以上の後続の要求はグローバルトランザクションに関連付けられている。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、RM名、インスタンス名およびサービス名に基づいているアフィニティルーティングポリシーを用いて1つ以上の後続の要求をルーティングするように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、上記要求および上記1つ以上の後続の要求はクライアントコンテキストに関連付けられている。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、メッセージにアフィニティコンテキストを含めてからメッセージを送信するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、別のトランザクションサーバから受信されたメッセージに基づいて、トランザクションサーバにおけるアフィニティコンテキストを更新するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、アフィニティコンテキストストリングを用いて、アフィニティコンテキストをトランザクションドメインから別のトランザクションドメインに転送するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションシステムは、コネクタを用いて、トランザクションシステムからアプリケーションサーバへのアフィニティコンテキストの転送と、アプリケーションサーバからのアフィニティコンテキストの受信とのうち少なくとも1つを実行するように動作する。
本発明の一実施形態に従うと、命令が格納された非一時的な機械読取可能な記憶媒体が提供される。当該命令は、実行されると、システムに、リソースマネージャ(RM)インスタンスに接続されたトランザクションサーバに要求をルーティングするステップと、トランザクションサーバが関連付けられているRMインスタンスを示すアフィニティコンテキストをトランザクションサーバに割当てるステップと、アフィニティコンテキストに基づいて、上記要求に関連する1つ以上の後続の要求をトランザクションサーバにルーティングするステップとを実行させる。
本発明の一実施形態に従うと、トランザクション環境においてトランザクション処理をサポートするための方法が提供される。当該方法は、1つ以上のRMインスタンスに関連付けられたデータソースから、トランザクションサーバを介して、リソースマネージャ(RM)インスタンス情報を受信するステップを含み、受信されたインスタンス情報は、トランザクションサーバが現在接続されているのがどのRMインスタンスであるかを当該トランザクションサーバが検知することを可能にし、当該方法はさらに、受信されたインスタンス情報を、トランザクションサーバに関連付けられた1つ以上のテーブルに保存するステップと、トランザクションサーバが、1つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することを可能にするステップとを含む。
本発明の一実施形態に従うと、当該方法はさらに、複数のトランザクションサーバによってアクセス可能な共有メモリに上記1つ以上のテーブルを記憶するステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、RMにコールバック動作を登録するステップを含む。トランザクションサーバは、コールバック動作がトリガされとき、インスタンス情報をRMから検索するように動作する。
本発明の一実施形態に従うと、当該方法はさらに、コールバック動作を静的にまたは動的に登録することを可能にするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、受信されたインスタンス情報をコンテキストに記憶するステップと、インスタンス情報の受信を示すフラグを使用可能にするステップとを含む。
本発明の一実施形態に従うと、当該方法はさらに、トランザクションを実行している間に1つ以上のチェックポイントにおいてフラグをチェックするステップと、インスタンス情報が更新されたときに、1つ以上のテーブルに保存されたインスタンス情報を更新するステップとを含む。
本発明の一実施形態に従うと、当該方法はさらに、上記1つ以上のテーブルが、1つ以上の固有のデータベース名を記憶するRMテーブル、1つ以上のインスタンス名を記憶するインスタンステーブル、および、1つ以上のデータベースサービス名を記憶するサービステーブルのうち少なくとも1つを含むことを可能にするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、上記1つ以上のテーブルが、1つ以上のサーバテーブルエントリを含むサーバテーブルを含むことを可能にするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、各々の上記サーバテーブルエントリが、トランザクションサーバが現在接続されているRMインスタンスに関連付けられているインスタンス識別子(ID)を含むことを可能にするステップを含む。
本発明の一実施形態に従うと、当該方法はさらに、各々の上記インスタンスIDが複数のセクションを含む整数となることを可能にするステップを含む。
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されると当該システムに上述の方法のうちの方法を実行させる命令を含む。
本発明の一実施形態に従うと、トランザクション環境におけるトランザクション処理をサポートするためのシステムが提供される。当該システムは、1つ以上のマイクロプロセッサと、1つ以上のマイクロプロセッサ上で実行されるトランザクションサーバとを含む。トランザクションサーバは、トランザクションサーバが現在接続されているのがどのRMのインスタンスであるかを当該トランザクションサーバが検知することを可能にするリソースマネージャ(RM)インスタンス情報を1つ以上のRMインスタンスに関連付けられたデータソースから受信するステップと、受信されたインスタンス情報を、トランザクションサーバに関連付けられた1つ以上のテーブルに保存するステップと、1つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理するステップとを実行するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバは、複数のトランザクションサーバによってアクセス可能な共有メモリに上記1つ以上のテーブルを記憶するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバはRMにコールバック動作を登録するように動作する。トランザクションサーバは、コールバック動作がトリガされたとき、RMからインスタンス情報を検索するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、コールバック動作は、静的にまたは動的に登録されるように適合される。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバは、受信されたインスタンス情報をコンテキストに記憶し、インスタンス情報の受信を示すフラグを使用可能にするように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、トランザクションサーバは、トランザクションを実行している間に1つ以上のチェックポイントにおいてフラグをチェックし、インスタンス情報が更新されたときに1つ以上のテーブルに保存されたインスタンス情報を更新するように動作する。
本発明の一実施形態に従うと、上述のシステムにおいては、上記1つ以上のテーブルは、1つ以上の固有のデータベース名を記憶するRMテーブル、1つ以上のインスタンス名を記憶するインスタンステーブル、および、1つ以上のデータベースサービス名を記憶するサービステーブル、のうち少なくとも1つを含む。
本発明の一実施形態に従うと、上述のシステムにおいては、上記1つ以上のテーブルは、1つ以上のサーバテーブルエントリを含むサーバテーブルを含む。
本発明の一実施形態に従うと、上述のシステムにおいては、各々の上記サーバテーブルエントリは、トランザクションサーバが現在接続されているRMインスタンスに関連付けられているインスタンスIDを含み、上記インスタンスIDは、複数のセクションを含む整数である。
本発明の一実施形態に従うと、命令が格納された非一時的な機械読取可能な記憶媒体であって、当該命令が実行されると、システムに:トランザクションサーバが現在接続されているのがどのRMインスタンスであるのかを当該トランザクションサーバが検知することを可能にするリソースマネージャ(RM)インスタンス情報を、トランザクションサーバを介して、1つ以上のRMインスタンスに関連付けられたデータソースから受信するステップと;トランザクションサーバに関連付けられた1つ以上のテーブルに、受信されたインスタンス情報を保存するステップと;トランザクションサーバが1つ以上のテーブルに保存されたインスタンス情報に基づいてグローバルトランザクションを処理することを可能にするステップと;を含むステップを実行させる。
本発明の一実施形態に従うと、コンピュータプログラムは、システムによって実行されたときに当該システムに上記方法のうちの方法を実行するための方法を実行させる命令を含む。
本発明の多くの特徴は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せにおいて、それらを用いて、またはそれらの支援により、実行可能である。従って、本発明の特徴は、(たとえば、1つ以上のプロセッサを含む)処理システムを用いて実現され得る。
当業者であれば、上述の特徴が互いに適宜組合わせされ得ること、および/または、所与のいずれかの実現例の特定の環境および要件に従って添付の特許請求の範囲に規定された特徴と適宜組み合わされ得ることを検知するだろう。
この発明の特徴は、ここに提示された特徴のうちのいずれかを行なうように処理システムをプログラミングするために使用可能な命令を格納した記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラム製品において、それを使用して、またはその助けを借りて実現され得る。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ装置、磁気カードもしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るものの、それらに限定されない。
この発明の特徴は、機械読取可能媒体のうちのいずれかに格納された状態で、処理システムのハードウェアを制御するために、および処理システムがこの発明の結果を利用する他の機構とやり取りすることを可能にするために、ソフトウェアおよび/またはファームウェアに取込まれ得る。そのようなソフトウェアまたはファームウェアは、アプリケーションコード、装置ドライバ、オペレーティングシステム、および実行環境/コンテナを含み得るものの、それらに限定されない。
この発明の特徴はまた、たとえば、特定用途向け集積回路(application specific integrated circuit:ASIC)などのハードウェアコンポーネントを使用して、ハードウェアにおいて実現されてもよい。ここに説明された機能を行なうようにハードウェアステートマシンを実現することは、関連技術の当業者には明らかであろう。
加えて、この発明は、この開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能記憶媒体を含む、1つ以上の従来の汎用または特殊デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
この発明のさまざまな実施形態が上述されてきたが、それらは限定のためではなく例示のために提示されたことが理解されるべきである。この発明の精神および範囲から逸脱することなく、形状および詳細のさまざまな変更を行なうことができることは、関連技術の当業者には明らかであろう。
この発明は、特定された機能およびそれらの関係の実行を示す機能的構築ブロックの助けを借りて上述されてきた。説明の便宜上、これらの機能的構築ブロックの境界は、この明細書中ではしばしば任意に規定されてきた。特定された機能およびそれらの関係が適切に実行される限り、代替的な境界を規定することができる。このため、そのようないかなる代替的な境界も、この発明の範囲および精神に含まれる。
この発明の前述の説明は、例示および説明のために提供されてきた。それは、網羅的であるよう、またはこの発明を開示された形態そのものに限定するよう意図されてはいない。この発明の幅および範囲は、上述の例示的な実施形態のいずれによっても限定されるべきでない。多くの変更および変形が、当業者には明らかになるだろう。これらの変更および変形は、開示された特徴の関連するあらゆる組合せを含む。実施形態は、この発明の原理およびその実用的応用を最良に説明するために選択され説明されたものであり、それにより、考えられる特定の使用に適したさまざまな実施形態についての、およびさまざまな変更例を有するこの発明を、当業者が理解できるようにする。この発明の範囲は、請求項およびそれらの同等例によって定義されるよう意図されている。

Claims (21)

  1. トランザクション環境においてトランザクション処理をサポートするための方法であって、
    リソースマネージャインスタンスについての共通のトランザクション識別子および情報を、グローバルトランザクションのためのコーディネータを介して、前記トランザクション環境における前記グローバルトランザクションの1つ以上のパーティシパントに対して伝播させるステップと、
    前記リソースマネージャインスタンスを前記コーディネータと共有している前記1つ以上のパーティシパントが前記共通のトランザクション識別子を用いることを可能にするステップと、
    1つのトランザクションブランチを用いて前記リソースマネージャインスタンスを共有する前記1つ以上のパーティシパントのために、前記コーディネータを介して前記グローバルトランザクションを処理するステップとを含む、方法。
  2. トランザクショングループにおけるトランザクションマネージャを前記グローバルトランザクションのための前記コーディネータとして用いるステップをさらに含む、請求項1に記載の方法。
  3. 前記トランザクショングループにおける前記トランザクションマネージャに関連付けられたトランザクション識別子を前記共通のトランザクション識別子として用いるステップをさらに含む、請求項2に記載の方法。
  4. 前記リソースマネージャインスタンスをクラスタ化されたデータベースに関連付けることを可能にするステップをさらに含む、請求項1〜3のいずれか1項に記載の方法。
  5. 前記1つ以上のパーティシパントのために前記コーディネータを介して前記グローバルトランザクションをコミットまたはロールバックするステップをさらに含む、請求項1〜4のいずれか1項に記載の方法。
  6. 前記リソースマネージャインスタンスを共有しない別のパーティシパントのために、別のトランザクションブランチを用いて前記グローバルトランザクションを処理するステップをさらに含む、請求項1〜5のいずれか1項に記載の方法。
  7. 前記グローバルトランザクションに含まれるすべてのパーティシパントが前記リソースマネージャインスタンスを共有する場合、前記リソースマネージャインスタンス上に、直接、1相コミット動作を呼出すステップをさらに含む、請求項1〜6のいずれか1項に記載の方法。
  8. リモートトランザクションリソースを解放するためにリモートノード上のパーティシパントに対して削除要求(forget request)を送信するステップをさらに含む、請求項1〜7のいずれか1項に記載の方法。
  9. さまざまなドメインにおける複数のパーティシパントが前記グローバルトランザクションに含まれることを可能にするステップをさらに含む、請求項1〜8のいずれか1項に記載の方法。
  10. 前記リソースマネージャインスタンスについての前記共通のトランザクション識別子および前記識別情報を、リモートドメインへのゲートウェイを介して受信するステップをさらに含む、請求項1〜9のいずれか1項に記載の方法。
  11. プログラム命令を含むコンピュータプログラムであって、前記プログラム命令は、システムによって実行されると、請求項1〜10のいずれか1項に記載の方法を前記システムに実行させる、コンピュータプログラム。
  12. トランザクション環境におけるトランザクション処理をサポートするためのシステムであって、
    1つ以上のマイクロプロセッサと、
    前記1つ以上のマイクロプロセッサ上で実行されるグローバルトランザクションのためのコーディネータとを含み、前記コーディネータは、
    リソースマネージャインスタンスについての共通のトランザクション識別子および情報を、前記トランザクション環境における前記グローバルトランザクションの1つ以上のパーティシパントに伝播させるステップと、
    前記リソースマネージャインスタンスを前記コーディネータと共有している前記1つ以上のパーティシパントが、前記共通のトランザクション識別子を用いることを可能にするステップと、
    1つのトランザクションブランチを用いて前記リソースマネージャインスタンスを共有する前記1つ以上のパーティシパントについての前記グローバルトランザクションを処理するステップとを、実行するように動作する、システム。
  13. 前記グローバルトランザクションのための前記コーディネータはトランザクショングループにおけるトランザクションマネージャである、請求項12に記載のシステム。
  14. 前記トランザクショングループにおいて前記トランザクションマネージャに関連付けられたトランザクション識別子が、前記共通のトランザクション識別子として用いられる、請求項13に記載のシステム。
  15. 前記リソースマネージャインスタンスはクラスタ化されたデータベースに関連付けられる、請求項12〜14のいずれか1項に記載のシステム。
  16. 前記コーディネータは、前記1つ以上のパーティシパントのための前記グローバルトランザクションをコミットまたはロールバックするように動作する、請求項12〜15のいずれか1項に記載のシステム。
  17. 別のトランザクションブランチが、前記リソースマネージャインスタンスを共有しない別のパーティシパントのための前記グローバルトランザクションを処理するために用いられる、請求項12〜16のいずれか1項に記載のシステム。
  18. 前記グローバルトランザクションに含まれるすべてのパーティシパントが前記リソースマネージャインスタンスを共有している場合に、1相コミット動作が前記リソースマネージャインスタンス上に直接呼出される、請求項12〜17のいずれか1項に記載のシステム。
  19. 前記コーディネータは、リモートトランザクションリソースを解放するために、リモートノード上のパーティシパントに対して削除要求を送信するように動作する、請求項12〜18のいずれか1項に記載のシステム。
  20. さまざまなドメインにおける複数のパーティシパントが前記グローバルトランザクションに含まれている、請求項12〜19のいずれか1項に記載のシステム。
  21. 命令が格納された非一時的な機械読取可能な記憶媒体であって、前記命令は、実行されると、システムに、
    リソースマネージャインスタンスについての共通のトランザクション識別子および情報を、グローバルトランザクションのコーディネータを介して、トランザクション環境における前記グローバルトランザクションの1つ以上のパーティシパントに対して伝播させるステップと、
    前記リソースマネージャインスタンスを前記コーディネータと共有している前記1つ以上のパーティシパントが、前記共通のトランザクション識別子を用いることを可能にするステップと、
    1つのトランザクションブランチを用いて前記リソースマネージャインスタンスを共有する前記1つ以上のパーティシパントのために、前記コーディネータを介して前記グローバルトランザクションを処理するステップとを実行させる、非一時的な機械読取可能な記憶媒体。
JP2016565068A 2014-04-28 2015-03-27 トランザクション環境におけるリソースマネージャ(rm)インスタンス検知に基づいた共通のトランザクション識別子(xid)最適化およびトランザクションアフィニティをサポートするためのシステムおよび方法 Active JP6545709B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201461985135P 2014-04-28 2014-04-28
US61/985,135 2014-04-28
US14/587,476 2014-12-31
US14/587,468 US9524186B2 (en) 2014-04-28 2014-12-31 System and method for supporting common transaction identifier (XID) optimization based on resource manager (RM) instance awareness in a transactional environment
US14/587,468 2014-12-31
US14/587,474 US9542220B2 (en) 2014-04-28 2014-12-31 System and method for supporting resource manager (RM) instance awareness in a transactional environment
US14/587,476 US9600324B2 (en) 2014-04-28 2014-12-31 System and method for supporting transaction affinity based on resource manager (RM) instance awareness in a transactional environment
US14/587,474 2014-12-31
PCT/US2015/023120 WO2015167724A1 (en) 2014-04-28 2015-03-27 System and method for supporting common transaction identifier (xid) optimization and transaction affinity based on resource manager (rm) instance awareness in a transactional environment

Publications (3)

Publication Number Publication Date
JP2017514239A true JP2017514239A (ja) 2017-06-01
JP2017514239A5 JP2017514239A5 (ja) 2018-03-08
JP6545709B2 JP6545709B2 (ja) 2019-07-17

Family

ID=54334870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016565068A Active JP6545709B2 (ja) 2014-04-28 2015-03-27 トランザクション環境におけるリソースマネージャ(rm)インスタンス検知に基づいた共通のトランザクション識別子(xid)最適化およびトランザクションアフィニティをサポートするためのシステムおよび方法

Country Status (6)

Country Link
US (4) US9524186B2 (ja)
EP (1) EP3138000B1 (ja)
JP (1) JP6545709B2 (ja)
KR (1) KR102340296B1 (ja)
CN (1) CN106255956B (ja)
WO (1) WO2015167724A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015112614A1 (en) 2014-01-21 2015-07-30 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
US9524186B2 (en) 2014-04-28 2016-12-20 Oracle International Corporation System and method for supporting common transaction identifier (XID) optimization based on resource manager (RM) instance awareness in a transactional environment
EP3198426B1 (en) * 2014-09-26 2023-08-30 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US9519509B2 (en) * 2014-10-21 2016-12-13 Oracle International Corporation System and method for supporting transaction affinity based request handling in a middleware environment
CN107623703B (zh) * 2016-07-13 2021-08-17 中兴通讯股份有限公司 全局事务标识gtid的同步方法、装置及系统
US10558488B2 (en) * 2017-01-06 2020-02-11 International Business Machines Corporation Sharing transaction contexts in an optimized colocation of java and non-java language applications
JP6868702B2 (ja) * 2017-01-13 2021-05-12 オラクル・インターナショナル・コーポレイション 分散トランザクションミドルウェア環境における条件付き呼び出しパスモニタリングのためのシステムおよび方法
CN109426552A (zh) * 2017-09-05 2019-03-05 阿里巴巴集团控股有限公司 事务处理方法、装置和系统以及电子设备
CN110019443B (zh) 2017-09-08 2023-08-11 阿里巴巴集团控股有限公司 非关系型数据库事务处理方法、装置及电子设备
CN109684045B (zh) * 2017-10-18 2023-04-28 阿里巴巴集团控股有限公司 事务消息的处理方法、装置及电子设备
CN109040272A (zh) * 2018-08-16 2018-12-18 北京中科梧桐网络科技有限公司 一种java统一缓存处理框架模型
CN109783204A (zh) * 2018-12-28 2019-05-21 咪咕文化科技有限公司 一种分布式事务处理方法、装置及存储介质
US11531686B2 (en) * 2019-02-04 2022-12-20 Apex Data Solutions, Llc Computing system providing blockchain-facilitated semantic interoperability between multiple disparate systems of record (SORs) and related methods
CN110471746B (zh) * 2019-08-22 2022-04-19 中国工商银行股份有限公司 一种分布式事务回调方法、装置及系统
CN117112149B (zh) * 2023-10-24 2024-02-06 苔花科迈(西安)信息技术有限公司 一种矿区矿井业务流程联通方法、装置、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295272A (ja) * 2003-03-26 2004-10-21 Hitachi Ltd トランザクション制御方法
JP2007011550A (ja) * 2005-06-29 2007-01-18 Hitachi Ltd プログラム制御方法、計算機および計算機制御プログラム
WO2013138770A1 (en) * 2012-03-16 2013-09-19 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283897A (en) 1990-04-30 1994-02-01 International Business Machines Corporation Semi-dynamic load balancer for periodically reassigning new transactions of a transaction type from an overload processor to an under-utilized processor based on the predicted load thereof
US5864679A (en) * 1993-09-06 1999-01-26 Kabushiki Kaisha Toshiba Transaction routing in a multiple processor system using an extracted transaction feature parameter and transaction historical data
US6424992B2 (en) 1996-12-23 2002-07-23 International Business Machines Corporation Affinity-based router and routing method
US7076784B1 (en) * 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6209018B1 (en) * 1997-11-13 2001-03-27 Sun Microsystems, Inc. Service framework for a distributed object network system
US6298356B1 (en) * 1998-01-16 2001-10-02 Aspect Communications Corp. Methods and apparatus for enabling dynamic resource collaboration
US6182086B1 (en) 1998-03-02 2001-01-30 Microsoft Corporation Client-server computer system with application recovery of server applications and client applications
US6209038B1 (en) * 1999-01-13 2001-03-27 International Business Machines Corporation Technique for aggregate transaction scope across multiple independent web requests
US6671704B1 (en) * 1999-03-11 2003-12-30 Hewlett-Packard Development Company, L.P. Method and apparatus for handling failures of resource managers in a clustered environment
US20030177182A1 (en) 1999-06-14 2003-09-18 International Business Machines Corporation Ensuring a given transactional unit of work arrives at an appropriate server instance
US6560609B1 (en) * 1999-06-14 2003-05-06 International Business Machines Corporation Delegating instance management functions to underlying resource managers
US6745387B1 (en) * 1999-06-14 2004-06-01 Sun Microsystems, Inc. Method for using a transaction service synchronization interface to perform internal state clean up
US7140025B1 (en) 1999-11-16 2006-11-21 Mci, Llc Method and apparatus for providing a real-time message routing communications manager
US6922724B1 (en) 2000-05-08 2005-07-26 Citrix Systems, Inc. Method and apparatus for managing server load
US9800608B2 (en) 2000-09-25 2017-10-24 Symantec Corporation Processing data flows with a data flow processor
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US6823514B1 (en) * 2000-11-14 2004-11-23 International Business Machines Corporation Method and system for caching across multiple contexts
US20020143965A1 (en) * 2001-04-03 2002-10-03 International Business Machines Corporation Server application initiated affinity within networks performing workload balancing
US7426730B2 (en) * 2001-04-19 2008-09-16 Wre-Hol Llc Method and system for generalized and adaptive transaction processing between uniform information services and applications
US7337441B2 (en) * 2001-07-17 2008-02-26 Bea Systems, Inc. System and method for prepreparing a transaction process involving a chain of servers in a circular flow
US7213049B2 (en) 2001-07-17 2007-05-01 Bea Systems, Inc. System and method for transaction processing with transaction property feature
US6799172B2 (en) * 2001-08-28 2004-09-28 International Business Machines Corporation Method and system for removal of resource manager affinity during restart in a transaction processing system
US7376953B2 (en) 2001-10-29 2008-05-20 Hewlett-Packard Development Company, L.P. Apparatus and method for routing a transaction to a server
WO2004077259A2 (en) * 2003-02-24 2004-09-10 Bea Systems Inc. System and method for server load balancing and server affinity
US7584474B2 (en) * 2003-02-25 2009-09-01 Bea Systems, Inc. Systems and methods for transaction chaining
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7640545B2 (en) 2003-07-14 2009-12-29 Sun Microsytems, Inc. Transaction manager freezing
US7562145B2 (en) * 2003-08-28 2009-07-14 International Business Machines Corporation Application instance level workload distribution affinities
US7284018B1 (en) 2003-10-15 2007-10-16 Sun Microsystems, Inc. Logless transaction coordination
US7676810B2 (en) * 2004-06-03 2010-03-09 Sap Ag Identification of execution context
US9262490B2 (en) * 2004-08-12 2016-02-16 Oracle International Corporation Adaptively routing transactions to servers
US8270410B2 (en) * 2005-08-04 2012-09-18 Microsoft Corporation Sampling techniques
US7814065B2 (en) * 2005-08-16 2010-10-12 Oracle International Corporation Affinity-based recovery/failover in a cluster environment
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US8538931B2 (en) * 2006-04-28 2013-09-17 International Business Machines Corporation Protecting the integrity of dependent multi-tiered transactions
US7996837B2 (en) 2006-05-03 2011-08-09 Oracle International Corporation Recovery mechanism for transactions
US8103773B2 (en) * 2007-01-19 2012-01-24 Cisco Technology, Inc. Transactional application processing in a distributed environment
US8176486B2 (en) * 2007-02-15 2012-05-08 Clearcube Technology, Inc. Maintaining a pool of free virtual machines on a server computer
US20080243865A1 (en) 2007-03-28 2008-10-02 Oracle International Corporation Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems
US7937611B2 (en) 2007-04-30 2011-05-03 Sap Ag Method, system and machine accessible medium of a reconnect mechanism in a distributed system (cluster-wide reconnect mechanism)
US8463894B2 (en) 2007-06-08 2013-06-11 Oracle International Corporation Performance monitoring web console for distributed transaction service
US8391295B2 (en) 2007-07-31 2013-03-05 Oracle International Corporation Temporal affinity-based routing of workloads
US8336053B2 (en) * 2007-10-15 2012-12-18 International Business Machines Corporation Transaction management
US20090157766A1 (en) 2007-12-18 2009-06-18 Jinmei Shen Method, System, and Computer Program Product for Ensuring Data Consistency of Asynchronously Replicated Data Following a Master Transaction Server Failover Event
US8447859B2 (en) 2007-12-28 2013-05-21 International Business Machines Corporation Adaptive business resiliency computer system for information technology environments
US8818934B2 (en) * 2008-03-13 2014-08-26 Oracle International Corporation Transparent support for distributed transactions in a clustered disk-sharing database environment
US8131872B2 (en) 2008-05-30 2012-03-06 International Business Machines Corporation Affinity-based transaction processing
CN101661403B (zh) * 2009-09-17 2012-07-04 上海交通大学 基于替代服务模型的实时网格事务管理系统
WO2011083056A2 (en) 2010-01-11 2011-07-14 International Business Machines Corporation Transactional updating in dynamic distributed workloads
US8499298B2 (en) 2010-01-28 2013-07-30 International Business Machines Corporation Multiprocessing transaction recovery manager
US20110252127A1 (en) * 2010-04-13 2011-10-13 International Business Machines Corporation Method and system for load balancing with affinity
US8484341B2 (en) 2010-06-30 2013-07-09 International Business Machines Corporation Organizing individual java client request flows into a single server transaction
US8738961B2 (en) 2010-08-17 2014-05-27 International Business Machines Corporation High-availability computer cluster with failover support based on a resource map
EP2500856A1 (en) 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for providing a session involving a plurality of software applications
US9715412B2 (en) 2011-03-25 2017-07-25 Oracle International Corporation System and method for supporting session management in a distributed transactional service system
US8732191B2 (en) 2011-06-27 2014-05-20 Oracle International Corporation System and method for improving application connectivity in a clustered database environment
US8539490B2 (en) 2011-07-21 2013-09-17 Oracle International Corporation System and method for providing dynamic transaction optimizations
US8898271B2 (en) 2011-09-29 2014-11-25 Oracle International Corporation System and method for supporting accurate load balancing in a transactional middleware machine environment
US9665392B2 (en) 2012-03-16 2017-05-30 Oracle International Corporation System and method for supporting intra-node communication based on a shared memory queue
CN103546440B (zh) * 2012-07-16 2016-10-12 上海宝信软件股份有限公司 一种客户端发起事务的事务实现方法和系统
US9027026B2 (en) * 2012-11-09 2015-05-05 Sap Se Managing transactions within an application server
WO2014197963A1 (en) 2013-06-13 2014-12-18 Tsx Inc. Failover system and method
US9798598B2 (en) 2013-11-26 2017-10-24 International Business Machines Corporation Managing faults in a high availability system
US9665633B2 (en) * 2014-02-19 2017-05-30 Snowflake Computing, Inc. Data management systems and methods
US9524186B2 (en) 2014-04-28 2016-12-20 Oracle International Corporation System and method for supporting common transaction identifier (XID) optimization based on resource manager (RM) instance awareness in a transactional environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295272A (ja) * 2003-03-26 2004-10-21 Hitachi Ltd トランザクション制御方法
JP2007011550A (ja) * 2005-06-29 2007-01-18 Hitachi Ltd プログラム制御方法、計算機および計算機制御プログラム
WO2013138770A1 (en) * 2012-03-16 2013-09-19 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database

Also Published As

Publication number Publication date
CN106255956A (zh) 2016-12-21
US20150309837A1 (en) 2015-10-29
WO2015167724A1 (en) 2015-11-05
EP3138000B1 (en) 2018-09-12
US9977694B2 (en) 2018-05-22
KR102340296B1 (ko) 2021-12-17
US9542220B2 (en) 2017-01-10
JP6545709B2 (ja) 2019-07-17
US20150309835A1 (en) 2015-10-29
EP3138000A1 (en) 2017-03-08
CN106255956B (zh) 2019-08-23
KR20160147909A (ko) 2016-12-23
US20170153910A1 (en) 2017-06-01
US9600324B2 (en) 2017-03-21
US9524186B2 (en) 2016-12-20
US20150309834A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
JP6545709B2 (ja) トランザクション環境におけるリソースマネージャ(rm)インスタンス検知に基づいた共通のトランザクション識別子(xid)最適化およびトランザクションアフィニティをサポートするためのシステムおよび方法
US9749445B2 (en) System and method for updating service information for across-domain messaging in a transactional middleware machine environment
US10721095B2 (en) Virtual interface system and method for multi-tenant cloud networking
JP6334643B2 (ja) Smb2スケールアウト
WO2016033180A1 (en) Distributed transaction subsystem
JP2018535456A (ja) アプリケーションサーバを並列起動するためのシステムおよび方法
US9569224B2 (en) System and method for adaptively integrating a database state notification service with a distributed transactional middleware machine
US10652094B2 (en) Network traffic management for virtualized graphics devices
US8832217B2 (en) System and method for supporting different message queues in a transactional middleware machine environment
US10587725B2 (en) Enabling a traditional language platform to participate in a Java enterprise computing environment
US10061607B2 (en) System and method for providing single group multiple branches based on instance awareness
TW201509158A (zh) 整合網路裝置及其服務整合方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190619

R150 Certificate of patent or registration of utility model

Ref document number: 6545709

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250