JP2017515229A - トランザクションミドルウェアマシン環境に分散トランザクションのロックを提供するためのシステムおよび方法 - Google Patents

トランザクションミドルウェアマシン環境に分散トランザクションのロックを提供するためのシステムおよび方法 Download PDF

Info

Publication number
JP2017515229A
JP2017515229A JP2016564184A JP2016564184A JP2017515229A JP 2017515229 A JP2017515229 A JP 2017515229A JP 2016564184 A JP2016564184 A JP 2016564184A JP 2016564184 A JP2016564184 A JP 2016564184A JP 2017515229 A JP2017515229 A JP 2017515229A
Authority
JP
Japan
Prior art keywords
transaction
hash
hash table
global
lock
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
JP2016564184A
Other languages
English (en)
Other versions
JP6397053B2 (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 JP2017515229A publication Critical patent/JP2017515229A/ja
Application granted granted Critical
Publication of JP6397053B2 publication Critical patent/JP6397053B2/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
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

システムおよび方法は、トランザクションミドルウェアマシン環境において、分散トランザクションのロックをサポートすることができる。システムは、グローバルトランザクション識別子を用いて、トランザクションハッシュテーブルにおいて、ハッシュバケットを特定することができる。トランザクションハッシュテーブルは、複数のハッシュバケットを含む。システムは、トランザクションハッシュテーブルにおいて、ハッシュバケットをロックすることができる。システムは、ハッシュバケットのロックが解除される前に、トランザクションハッシュテーブル内の1つ以上のグローバルトランザクションエントリ構造にアクセスするプロセスを1つのみに制限することができる。この1つ以上のグローバルトランザクションエントリ構造は、トランザクションハッシュテーブルにおいてロックされたハッシュバケットに関連付けられている。

Description

著作権の表示
この特許文書の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、特許商標庁の特許ファイルまたは記録に掲載された特許文書または特許開示の複製に対しては異議を唱えないが、その他の場合、すべての著作権を留保する。
発明の分野
本発明は、一般的に、ミドルウェアなどのコンピュータシステムおよびソフトウェアに関し、特に、トランザクションミドルウェアマシン環境のサポートに関する。
背景
トランザクションミドルウェアシステムまたはトランザクション指向ミドルウェアは、組織内のさまざまなトランザクションを処理することができるエンタープライズアプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータなどの新技術の開発によって、トランザクションミドルウェアの性能をさらに改善する必要がある。これらは、本発明の実施形態が対処しようとする一般的領域である。
概要
本明細書は、トランザクションミドルウェアマシン環境において、分散トランザクションのロックをサポートすることができるシステムおよび方法を記載する。システムは、グローバルトランザクション識別子を用いて、トランザクションハッシュテーブルにおいて、ハッシュバケットを特定することができる。トランザクションハッシュテーブルは、複数のハッシュバケットを含む。システムは、トランザクションハッシュテーブルにおいて、ハッシュバケットをロックすることができる。システムは、ハッシュバケットのロックが解除される前に、トランザクションハッシュテーブル内の1つ以上のグローバルトランザクションエントリ構造にアクセスするプロセスを1つのみに制限することができる。この1つ以上のグローバルトランザクションエントリ構造は、トランザクションハッシュテーブルにおいてロックされたハッシュバケットに関連付けられている。
本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内の共有メモリを示す図である。 本発明の一実施形態に従って、トランザクションロック機構をサポートするトランザクションミドルウェアマシン環境を示す図である。 本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内のグローバルトランザクションテーブル(GTT)にエントリの追加を示す図である。 本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内のグローバルトランザクションテーブルからエントリ(GTT)の削除を示す図である。 本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内の粒状ロック機構(granular lock mechanism)の支持を示す図である。 本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内のトランザクションロック機構の支持を示す例示的なフローチャートである。
詳細な説明
本明細書は、トランザクションミドルウェアマシン環境において、分散トランザクションのロックをサポートすることができるシステムおよび方法を記載する。
本発明の一実施形態によれば、迅速に用意することができ且つオンデマンドで拡張することができる大規模並列処理インメモリグリッドを含むJava(登録商標)EEアプリケーションサーバ複合体を提供するために、本発明のシステムは、64ビットプロセッサ技術などの高性能ハードウェア、高性能大容量のメモリ、冗長インフィニバンド(InfiniBand)およびイーサネット(登録商標)ネットワーク、並びにWebLogic(登録商標)スイートなどのアプリケーションサーバまたはミドルウェア環境の組み合わせを含む。一実施形態によれば、本発明のシステムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびインフィニバンド(IB)ネットワークを形成するフルラック、ハーフラックまたはクォーターラックもしくは他の構成として展開されることができる。ミドルウェアマシンソフトウェアは、アプリケーションサーバ、ミドルウェアおよび他の機能、例えば、WebLogic Server、JRockitもしくはHotspot JVM、Oracle Linux(登録商標)もしくはSolaris、およびOracle(登録商標) VMなどを形成することができる。一実施形態によれば、本発明のシステムは、IBネットワークを介して互いに通信する複数の計算ノード、IBスイッチゲートウェイ、およびストレージノードまたはストレージユニットを含むことができる。ラック構成として実装される場合、ラックの未使用部分は、空のままにしてもよく、充填物で充填されてもよい。
本発明の一実施形態によれば、本明細書において「Sun Oracle Exalogic」または「Exalogic」と称されたシステムは、OracleミドルウェアSWスイートまたはWebLogicなどのミドルウェアまたはアプリケーションサーバソフトウェアをホストするために、展開容易な解決案である。本明細書に説明するように、一実施形態に従ったシステムは、ミドルウェアアプリケーションをホストするために必要とされる1つ以上のサーバ、ストレージユニット、ストレージネットワーク用のIBファブリック、およびすべての他の要素を含む「グリッドボックス」(grid in a box)である。例えば、リアルアプリケーションクラスタおよびExalogicオープンストレージなどを使用する大規模並列グリッドアーキテクチャを活用することによって、すべての種類のミドルウェアアプリケーションに高性能を提供することができる。このシステムは、線形I/O拡張性によって改善した性能を提供し、使用および管理が簡単であり、ミッションクリティカルな可用性および信頼性を提供する。
本発明の一実施形態によれば、タキシード(TUXEDO)は、高性能分散型ビジネスアプリケーションの構築、実行および管理を可能にするソフトウェアモジュールのセットであり、トランザクションミドルウェアとして多くの複層アプリケーション開発ツールに使用されている。タキシードは、分散トランザクション処理を管理するために、分散コンピューティング環境に使用することができるミドルウェアプラットフォームである。タキシードは、無制限の拡張性および標準ベースの相互運用性を提供しながら、エンタープライズレガシーアプリケーションのロックを解除し、エンタープライズレガシーアプリケーションをサービス指向アーキテクチャに拡張するための有効なプラットフォームである。
本発明の一実施形態によれば、タキシードシステムのようなトランザクションミドルウェアシステムは、複数のプロセッサを備える高速マシン、例えばExalogicミドルウェアマシン、および高性能ネットワーク接続、例えばインフィニバンド(IB)ネットワークを利用することができる。
共有メモリおよびロック
図1は、本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内の共有メモリを示す図である。図1に示すように、共有メモリデータ構造110を用いて、ネームサービス、トランザクション管理およびランタイム制御をサポートするなどのさまざまな目的のために、トランザクションミドルウェアマシン環境100において情報を保持することができる。
例えば、タキシードシステムは、少なくとも部分的に複製することができる分散型共有メモリである電子掲示板(BB)を利用することができる。また、タキシードシステムは、BBを共有する一セットの協働作業するクライアントプロセスおよびサーバプロセスに、アプリケーションを分配することができる。
図1に示すように、共有メモリ110は、複数のトランザクション関連セクション、例えば、トランザクションハッシュテーブル101、トランザクションテーブル102、グローバルトランザクション制御構造103、およびトランザクションログ制御構造104を含むことができる。
トランザクションテーブル102は、複数のグローバルトランザクションエントリ構造121〜125を含むことができる。例えば、タキシード内のグローバルトランザクションテーブル(GTT)102は、複数のグローバルトランザクションテーブルエントリ(GTTE)121〜125を含むことができる。グローバルトランザクションエントリ構造の各々は、異なるグローバルトランザクションに関する共有情報を含むことができる。
タキシード内のグローバルトランザクションハッシュテーブル、例えばトランザクションハッシュテーブル101を用いて、グローバルトランザクションテーブル102内の異なるエントリに高速にアクセスすることができる。グローバルトランザクションテーブルのハッシングは、グローバルトランザクション識別子(GTRID)に基づいて行うことができる。
グローバルトランザクション制御構造103は、異なるグローバルトランザクション上の各種制御情報を含む。例えば、タキシード内のTMGCTL構造は、(マシンIDと共に)GTRIDの一意性を保証することができる時間およびカウンタ値を含む。また、新規GTRIDを作成する際に、TMGCTL構造を使用することができる。
トランザクションログ制御構造104は、異なるグローバルトランザクションログファイルの各種制御情報を含む。例えば、タキシード内のTMTLGCTL構造は、トランザクションログ(TLOG)ファイルの状態に関する情報を含み、TLOGファイルを更新する際に使用されることができる。
本発明の一実施形態によれば、複数のプロセスまたはスレッドが共有メモリ110上のデータを読み取るまたは書き込む際に、システムは、ロック105を用いて、ダーティ読み取りおよび/またはダーティ書き込みを回避することができる。プロセス(またはスレッド)が共有メモリ110にアクセスする際に、ロック105を適用することができる。これによって、共有メモリ110内に保護されたデータは、一度に1つのみのプロセスまたはスレッドにアクセスされる。
例えば、タキシードにおいて、BBは、ユーザレベルセマフォを用いて保護される。このユーザレベルセマフォは、OSカーネルによって提供されるセマフォよりも高速なロック機構である。このテストアンドセット(TAS)の組立コンポーネントに基づいたユーザーセマフォは、臨界期において、BBの異なるセクションに対して単一のアクセスを確保することができる。一方、ユーザレベルセマフォアルゴリズムは、ロックの順序を保証できない(すなわち、システムは、最先の要求者にロックを引き渡すことを保証することはできない)場合がある。
さらに、ロック105は、再帰することができる。すなわち、システムにおいて、同様のプロセスは、ロック105を繰り返して適用することができる。
利点として、ソフトウェア開発者は、任意の時点で特定のプロセスがロック105を保有している(または保有していない)か否かを心配する必要がないということである。また、ソフトウェア開発者は、ロック105を既存のコードに簡単に導入することができる。
トレードオフとは、ジャイアントロック(Giant lock)であるロック105を用いて、コードの大部分を任意の長さの時間帯にロックすることができることである。また、ソフトウェア開発者は、アプリケーションに対して粗い制御しかできない。例えば、アプリケーションプログラムに問題が生じる際に、ロック105に関与する根本的な原因を特定することは困難である。その理由は、ロック105が複数回に適用されるため、問題を生じさせるトリガーが、コードにおいて、ハング/デッドロックが発生した場所から遠くに位置する可能性があるからである。
また、ロック105は、粗い粒度(granularity)を有するため、トランザクションシナリオにおいて、高競合を引き起こすおよび/または高競合に遭遇する可能性がある。ロック105の粒度が粗くなればなるほど、ロック105が無関係なプロセスで停止する/ハングする可能性が高くなる。
トランザクションロックの配布
図2は、本発明の一実施形態に従って、トランザクションロック機構をサポートするトランザクションミドルウェアマシン環境を示す図である。図2に示すように、トランザクションミドルウェアマシン環境200において、1つ以上のトランザクション203および204を使用することによって、トランザクションの性能を改善することができる。
本発明の一実施形態によれば、システムは、グローバルトランザクションテーブル(GTT)202内の異なるグローバルトランザクションエントリ構造(例えば、GTTE221〜225)にアクセスするために、トランザクションハッシュテーブル201内の異なるハッシュバケット(例えば、バケット211〜217)に別々のトランザクションロックを適用することができる。各トランザクションハッシュリンクは、ユーザレベルセマフォに基づいた専用のロック(例えば、トランザクションロック203または204)を使用することができる。
システムは、例えば、GTRID 210を用いてハッシュ関数を計算することによって、ハッシュバケット213を特定することができる。さらに、システムは、GTTエントリ213を操作するために、トランザクションハッシュテーブルバケット213をロックすることができる。システムは、ハッシュテーブルバケット213のロックを解除し、GTTエントリ222にアクセスしようとする別のプロセスのために、ロック203を外すことができる。
また、システムは、GTRID 220を用いて、ハッシュバケット216を特定することができる。さらに、システムは、GTTエントリ223を操作するために、トランザクションハッシュテーブルバケット216をロックすることができる。システムは、ハッシュテーブルバケット223のロックを解除し、GTTエントリ223にアクセスしようとする別のプロセスのために、ロック204を外すことができる。
本発明の一実施形態によれば、トランザクションロック203および204は、非再帰的にすることができ、システムは、必要な場合のみまたはできるだけ短い期間でトランザクションロック203および204を保持しようとする可能性がある。
さらに、システムは、あるプロセスが現在ではトランザクションハッシュロックを保有しているか否かをすぐに知るために、制御構造(例えば、タキシードRTE)にトランザクションロックフラグを追加することができる。例えば、タキシード内のトランザクションロックフラグによって、ソフトウェア開発者は、BBLOCK()ファンクションを呼び出す前に、トランザクションのロックを解除する必要があるか否かを容易に知ることができる。また、ソフトウェア開発者は、別のトランザクションのロックを要求する前に、あるアプリケーションがトランザクションロックを保有しているか否かを明確に知ることができる。
本発明の一実施形態によれば、トランザクションハッシュテーブルロックの数を固定しなくてもよく、大きい数字にしてもよい。例えば、タキシードにおいて、GTTハッシュテーブルのサイズをGTTのサイズの倍にすることができる。
さらに、2つ以上のGTTエントリが同一のハッシュバケットに帰属された場合、異なるGTTエントリは、同様のトランザクションロック(すなわち、同様のトランザクションハッシュテーブルロック)を使用することができる。実装を容易にするために、システムにおいて、2つのハッシュ値は、1つのミューテックス(mutex)を共有することができ、追加のBBテーブルの作成を回避するために、GTTにハッシュミューテックスを配置することができる。
本発明の一実施形態によれば、トランザクションミドルウェアマシン環境200は、トランザクションテーブルハッシュバケット213および214のトランザクションロック203および204に加えて、共有メモリのロック205を含むことができる。
例えば、タキシードにおいて、トランザクションテーブルエントリを割り当てるまたは割り当てを解除するときに、GTRIDのカウンタを増分するときに、および現在のTLOGページのカウンタを増分するときに、トランザクションロック203および204から独立するBBロック205を維持することができる。
さらに、TMGCTLおよびTMTLGCTLデータ構造などの制御構造の操作が頻繁ではないため、BBロック205を用いて、これらの制御構造を保護することができる。代替的に、TMGCTL構造の各々は、別々のロックを使用することも可能である。
図3は、本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内のグローバルトランザクションテーブル(GTT)にエントリの追加を示す図である。
ステップ301において、システムは、トランザクションミドルウェアマシン環境300内の共有メモリ、例えばタキシードBBをロックすることができる。ステップ302において、システムは、新規GTRIDを作成することができる。ステップ303において、システムは、GTRIDに基づいて、新規GTTエントリを作成することができる。ステップ304において、システムは、トランザクションテーブル、例えばタキシードTMGTTEテーブルにGTTエントリを追加することができる。ステップ305において、他のプロセスが共有メモリにアクセスできるように、システムは、共有メモリのロックを解除することができる。
ステップ306において、システムは、(例えば、GTRIDに基づくハッシングを用いて)トランザクションハッシュテーブルにおいて、ハッシュバケットを特定することができる。ステップ307において、システムは、トランザクションハッシュテーブルにおいて、ハッシュバケットをロックすることができる。ステップ308において、システムは、GTTエントリをトランザクションハッシュテーブル内のハッシュバケットにリンクすることができる。ステップ309において、システムは、ハッシュテーブルバケットのロックを解除することができる。
図4は、本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内のグローバルトランザクションテーブルからエントリ(GTT)の削除を示す図である。
ステップ401において、システムは、トランザクションミドルウェアマシン環境400において、GTRIDを用いて、トランザクションハッシュテーブルにおいて、ハッシュバケットを特定することができる。ステップ402において、システムは、トランザクションハッシュテーブルにおいて、ハッシュバケットをロックすることができる。ステップ403において、システムは、トランザクションハッシュテーブル内のハッシュバケットからGTTエントリを切り離すことができる。ステップ404において、他のプロセスがトランザクションハッシュテーブル内のハッシュバケットを再利用できるように、システムは、トランザクションハッシュテーブル内のハッシュバケットのロックを解除することができる。
ステップ405において、システムは、共有メモリをロックすることができる。ステップ406において、システムは、TMGTTEテーブル内のGTTエントリを削除することができる。ステップ407において、他のプロセスが共有メモリにアクセスできるように、システムは、共有メモリのロックを解除することができる。
図5は、本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内の粒状ロック機構の支持を示す図である。図5に示すように、トランザクションミドルウェアマシン環境500内の共有メモリ508は、複数のトランザクション関連セクション、例えば、(複数のハッシュバケット、例えばバケット511〜517を含む)トランザクションテーブル501、(複数のエントリ、例えばGTTE521〜525を含む)トランザクションテーブル502、グローバルトランザクション制御構造503、およびトランザクションログ制御504を含むことができる。
トランザクションミドルウェアマシン環境500によって、プロセス(またはスレッド)は、共有メモリ508上のロック507(グローバルトランザクション制御503およびトランザクションログ制御504などの)制御構造上のロック506を含む複数のロックを保有することができる。また、ハッシュバケット513に1つ以上のトランザクションロック、例えばトランザクションロック505を追加することができる。
本発明の一実施形態によれば、システムは、粒状ロック機構を用いて、異なるプロセスが複数のロックを使用するときに生じ得るロック依存性を対処することができる。
タキシードにおいて、BBロック507をインタリーブ方式で異なる場所に使用することができる。ロック依存性は、例えば次のシナリオにおいて問題になる可能性がある。
ファンクションAは、BBロックを保有しながら、ファンクションBを呼び出すことができる。よって、ファンクションBは、再びBBをロックすることがある。また、ファンクションBは、(トランザクションロックを用いて)GTTEにアクセスし、ファンクションCを呼び出すことがあり、これによって、BBに3回目のロックをなすことになる。
単一のプロセス(またはスレッド)に保有されたさまざまなロックのうち、デッドロックを回避するために、システムは、ロックに部分配置方式を適用することができる。例えば、システムは、スコープまたは粒度に基づいて、異なるロックを配置することができる。
図5に示すように、共有メモリ508上の最も粗い粒度を有するロック507に、最小の番号を割り当てることができる。一方、最も細い粒度を有するトランザクションロック505に、最大の番号を割り当てることができる。システムは、制御構造上のロック506をその間に追加的に配置することができる。
システムは、任意の時点であるプロセスがトランザクションハッシュテーブル501内の1つのみのハッシュバケットをロックすることができること、換言すれば、このプロセスが、すでにハッシュバケットに1つのトランザクションロックを保有しているときに、別のハッシュバケットをロックすることができないことを保証することができる。これによって、システムは、トランザクションロック(または同様の番号が割り当てられたロック)の間に、デッドロックを回避することができる。
さらに、プロセスは、このプロセスがすでに保有しているロックに割り当てられたすべての数字のうち、最大の数字よりも大きい数字を有するロックしか取得できるように設定されている。
例えば、タキシードにおいて、BBロックを保有しているスレッドAは、トランザクションロックを保有することができる。その理由は、このトランザクションロックには、BBロックに割り当てられた数字よりも大きな数字が割り当てられているからである。一方、トランザクションロックを保有しているスレッドBは、BBのロックを保有することができない。トランザクションロックがBBロックに割り当てられた数字よりも大きな数字が割り当てられているため、スレッドBは、BBロックを保有する前に、トランザクションロックを先に解除しなければならない。
また、スレッドBがトランザクションロックを解放した後、スレッドAは、トランザクションロックを取得することができる。スレッドAが完了し、トランザクションロックおよびBBロックを解放した後、スレッドBは、両方のロックを取得することができ、デッドロックすることなく、完了するまで実行される。
このように、システムは、プログラマが意図せず、システム内の異なるロックにデッドロックを導入することができる可能性を低減することによって、トランザクションの性能を改善することができる。
図6は、本発明の一実施形態に従って、トランザクションミドルウェアマシン環境内のトランザクションロック機構の支持を示す例示的なフローチャートである。図6に示すように、ステップ601において、システムは、グローバルトランザクション識別子を用いて、複数のハッシュバケットを含むトランザクションハッシュテーブルにおいて、ハッシュバケットを特定することができる。ステップ602において、システムは、トランザクションハッシュテーブルにおいて、ハッシュバケットロックすることができる。ステップ603において、システムは、ハッシュバケットのロックが解除される前に、トランザクションハッシュテーブル内の1つ以上のグローバルトランザクションエントリ構造にアクセスするプロセスを1つのみに制限することができる。この1つ以上のグローバルトランザクションエントリ構造は、トランザクションハッシュテーブルにおいてロックされたハッシュバケットに関連付けられている。
本発明は、1つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティング装置、コンピューティング機械、または1つ以上のプロセッサ、メモリおよび/または本開示の教示に従ってプログラムされたコンピュータ読取可能記憶媒体を含むマイクロプロセッサを用いて、簡便に実施することができる。ソフトウェア分野の当業者には明らかなように、本開示の教示に基づいて、熟練したプログラマは、適切なソフトウェアコーディングを容易に用意することができる。
いくつかの実施形態において、本発明は、コンピュータプログラム製品(メディア)を含む。本発明のコンピュータプログラム製品は、本発明のいずれかのプロセスを実行するようにコンピュータをプログラムするために使用することができる命令をその上に/中に格納する記憶媒体またはコンピュータ読取可能媒体である。記憶媒体は、フロッピーディスク(登録商標)、光ディスク、DVD、CD−ROM、マイクロドライブおよび光磁気ディスクを含む任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気または光カード、(分子メモリICを含む)ナノシステム、または指令および/またはデータの格納に適した任意の種類の媒体またはデバイスを含むことができるが、これらに限定されない。
本発明の上記説明は、例示および説明のために提供されている。本発明を網羅的であることにまたは開示された形態に厳密に限定することを意図するものではない。多くの修正および変更は、当業者にとって明らかであろう。修正および変更は、開示された特徴の任意の適切な組み合わせを含む。実施形態は、本発明の原理およびその実際の応用を最善に説明するために選択され説明された。よって、当業者は、さまざまな実施形態により本発明を理解し、考えられる特定の用途に適したさまざまな修正を行うことができる。なお、本発明の範囲が添付の特許請求の範囲およびその等価物によって定義されることが意図される。

Claims (20)

  1. トランザクションミドルウェアマシン環境において、分散トランザクションのロックをサポートするための方法であって、
    グローバルトランザクション識別子を用いて、トランザクションハッシュテーブルにおいて、ハッシュバケットを特定するステップを備え、前記トランザクションハッシュテーブルは、複数のハッシュバケットを含み、
    前記トランザクションハッシュテーブルにおいて、前記ハッシュバケットをロックするステップと、
    前記ハッシュバケットのロックが解除される前に、前記トランザクションハッシュテーブル内の1つ以上のグローバルトランザクションエントリ構造にアクセスするプロセスを1つのみに制限するステップとを備え、前記1つ以上のグローバルトランザクションエントリ構造は、前記トランザクションハッシュテーブルにおいてロックされた前記ハッシュバケットに関連付けられている、方法。
  2. 別のローバルトランザクション識別子を用いて、前記トランザクションハッシュテーブルにおいて、別のハッシュバケットを特定するステップをさらに備える、請求項1に記載の方法。
  3. 前記トランザクションハッシュテーブル内の1つ以上の別のグローバルトランザクションエントリ構造に対する別のプロセスのアクセスを許可するステップをさらに備え、
    前記1つ以上の別のグローバルトランザクションエントリ構造は、前記トランザクションハッシュテーブル内の前記別のハッシュバケットに関連付けられている、請求項2に記載の方法。
  4. 前記トランザクションハッシュテーブルおよび前記トランザクションハッシュテーブルを共有メモリに格納するステップをさらに備える、請求項1に記載の方法。
  5. 前記共有メモリをロックするステップと、
    新規グローバルトランザクション識別子および1つ以上の新規グローバルトランザクションエントリ構造を作成するステップと、
    前記1つ以上の新規グローバルトランザクションエントリ構造を前記トランザクションテーブルに追加するステップと、
    前記共有メモリのロックを解除するステップとをさらに備える、請求項4に記載の方法。
  6. 前記トランザクションハッシュテーブルにおいて、前記新規グローバルトランザクション識別子に関連付けられた別のハッシュバケットをロックするステップと、
    前記1つ以上の新規グローバルトランザクションエントリ構造を前記トランザクションハッシュテーブル内の別のハッシュバケットにリンクするステップと、
    前記トランザクションハッシュテーブル内の前記別のハッシュバケットのロックを解除するステップとをさらに備える、請求項5に記載の方法。
  7. 前記トランザクションハッシュテーブル内の前記ハッシュバケットから、前記1つ以上のグローバルトランザクションエントリ構造を切り離すステップと、
    前記トランザクションハッシュテーブル内の前記ハッシュバケットのロックを解除するステップと、
    前記共有メモリをロックするステップと、
    前記トランザクションテーブルから、前記1つ以上のグローバルトランザクションエントリ構造を削除するステップと、
    前記共有メモリのロックを解除するステップとをさらに備える、請求項4に記載の方法。
  8. グローバルトランザクション制御構造およびトランザクションログ制御構造を前記共有メモリに格納するステップをさらに備える、請求項4に記載の方法。
  9. 前記方法は、グローバルトランザクション識別子を有するグローバルトランザクションに一セットのロックを与えるステップをさらに備え、
    前記ロックセットは、共有メモリのロックと、前記グローバルトランザクション制御構造およびトランザクションログ制御構造のロックと、前記トランザクションハッシュテーブル内のハッシュバケットのロックを含む、請求項8に記載の方法。
  10. デッドロックを回避するために、前記グローバルトランザクションの前記ロックセットに部分配置方式を適用するステップをさらに備える、請求項1に記載の方法。
  11. トランザクションミドルウェアマシン環境において、分散トランザクションのロック機構を提供するためのシステムであって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサ上で動作するトランザクションサーバとを備え、
    前記トランザクションサーバは、
    グローバルトランザクション識別子を用いて、複数のハッシュバケットを含むトランザクションハッシュテーブルにおいて、ハッシュバケットを特定し、
    前記トランザクションハッシュテーブルにおいて、前記ハッシュバケットをロックし、
    前記ハッシュバケットのロックが解除される前に、前記トランザクションハッシュテーブル内の1つ以上のグローバルトランザクションエントリ構造にアクセスするプロセスを1つのみに制限するように動作し、前記1つ以上のグローバルトランザクションエントリ構造は、前記トランザクションハッシュテーブルにおいてロックされた前記ハッシュバケットに関連付けられている、システム。
  12. 前記トランザクションサーバは、別のローバルトランザクション識別子を用いて、前記トランザクションハッシュテーブルにおいて、別のハッシュバケットを特定するように動作する、請求項11に記載のシステム。
  13. 前記トランザクションサーバは、前記トランザクションハッシュテーブル内の1つ以上の別のグローバルトランザクションエントリ構造に対する別のプロセスのアクセスを許可するように動作し、
    前記1つ以上の別のグローバルトランザクションエントリ構造は、前記トランザクションハッシュテーブル内の前記別のハッシュバケットに関連付けられている、請求項12に記載のシステム。
  14. 共有メモリは、前記トランザクションハッシュテーブルおよび前記トランザクションハッシュテーブルを格納する、請求項11に記載のシステム。
  15. 前記トランザクションサーバは、
    前記共有メモリをロックし、
    新規グローバルトランザクション識別子および1つ以上の新規グローバルトランザクションエントリ構造を作成し、
    前記1つ以上の新規グローバルトランザクションエントリ構造を前記トランザクションテーブルに追加し、
    前記共有メモリのロックを解除するように、動作する、請求項14に記載のシステム。
  16. 前記トランザクションサーバは、
    前記トランザクションハッシュテーブルにおいて、前記新規グローバルトランザクション識別子に関連付けられた別のハッシュバケットをロックし、
    前記1つ以上の新規グローバルトランザクションエントリ構造を前記トランザクションハッシュテーブル内の別のハッシュバケットにリンクし、
    前記トランザクションハッシュテーブル内の前記別のハッシュバケットのロックを解除するように、動作する、請求項15に記載のシステム。
  17. 前記トランザクションサーバは、
    前記トランザクションハッシュテーブル内の前記ハッシュバケットから、前記1つ以上のグローバルトランザクションエントリ構造を切り離し、
    前記トランザクションハッシュテーブル内の前記ハッシュバケットのロックを解除し、
    前記共有メモリをロックし、
    前記トランザクションテーブルから、前記1つ以上のグローバルトランザクションエントリ構造を削除し、
    前記共有メモリのロックを解除するように、動作する、請求項14に記載のシステム。
  18. 前記共有メモリは、グローバルトランザクション制御構造およびトランザクションログ制御構造を格納する、請求項14に記載のシステム。
  19. 前記トランザクションサーバは、グローバルトランザクション識別子を有するグローバルトランザクションに一セットのロックを与えるように動作し、前記ロックセットは、共有メモリのロックと、前記グローバルトランザクション制御構造およびトランザクションログ制御構造のロックと、前記トランザクションハッシュテーブル内のハッシュバケットのロックを含み、
    前記トランザクションサーバは、デッドロックを回避するために、前記グローバルトランザクションの前記ロックセットに部分配置方式を適用するように動作する、請求項18に記載のシステム。
  20. 命令を記憶する非一時的な機械読み取り可能な記憶媒体であって、これらの命令は、実行されると、以下のステップをシステムに実行させ、当該以下のステップは、
    グローバルトランザクション識別子を用いて、トランザクションハッシュテーブルにおいてハッシュバケットを特定するステップを備え、前記トランザクションハッシュテーブルは、複数のハッシュバケットを含み、
    前記トランザクションハッシュテーブル内の前記ハッシュバケットをロックするステップと、
    前記ハッシュバケットのロックが解除される前に、前記トランザクションハッシュテーブル内の1つ以上のグローバルトランザクションエントリ構造にアクセスするプロセスを1つのみに制限するステップとを備え、前記1つ以上のグローバルトランザクションエントリ構造は、前記トランザクションハッシュテーブルにおいてロックされた前記ハッシュバケットに関連付けられている、記憶媒体。
JP2016564184A 2014-04-30 2014-04-30 トランザクションミドルウェアマシン環境に分散トランザクションのロックを提供するためのシステムおよび方法 Active JP6397053B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/076602 WO2015165077A1 (en) 2014-04-30 2014-04-30 System and method for providing distributed transaction lock in transactional middleware machine environment

Publications (2)

Publication Number Publication Date
JP2017515229A true JP2017515229A (ja) 2017-06-08
JP6397053B2 JP6397053B2 (ja) 2018-09-26

Family

ID=54355307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016564184A Active JP6397053B2 (ja) 2014-04-30 2014-04-30 トランザクションミドルウェアマシン環境に分散トランザクションのロックを提供するためのシステムおよび方法

Country Status (6)

Country Link
US (1) US9389907B2 (ja)
EP (1) EP3138013B1 (ja)
JP (1) JP6397053B2 (ja)
KR (1) KR102206577B1 (ja)
CN (1) CN106663062B (ja)
WO (1) WO2015165077A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9723110B2 (en) * 2014-04-28 2017-08-01 Oracle International Corporation System and method for supporting a proxy model for across-domain messaging in a transactional middleware machine environment
US9990423B2 (en) 2014-09-30 2018-06-05 Splunk Inc. Hybrid cluster-based data intake and query
US9922099B2 (en) 2014-09-30 2018-03-20 Splunk Inc. Event limited field picker
US10235460B2 (en) * 2014-09-30 2019-03-19 Splunk Inc. Sharing configuration information for searches in data intake and query systems
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10747752B2 (en) * 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US9851920B2 (en) * 2015-11-30 2017-12-26 Nxp Usa, Inc. System and method for removing hash table entries
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10146696B1 (en) * 2016-09-30 2018-12-04 EMC IP Holding Company LLC Data storage system with cluster virtual memory on non-cache-coherent cluster interconnect
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
CN109446203A (zh) * 2018-11-15 2019-03-08 郑州云海信息技术有限公司 一种实现数据加锁的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0250224A (ja) * 1988-08-11 1990-02-20 Nec Corp テーブル排他制御方式
JPH09293055A (ja) * 1996-04-26 1997-11-11 Nec Corp 疎結合多重計算機システムにおける共有ファイルの排他制御システム、排他制御方法、および排他制御プログラムを記憶する媒体
JPH10240553A (ja) * 1996-12-27 1998-09-11 N T T Data Tsushin Kk 分散型トランザクション処理システムのためのリソースの排他制御方式及び方法
JP2005509944A (ja) * 2001-11-13 2005-04-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 大きなデータ構造のエントリロック
US20130185270A1 (en) * 2012-01-13 2013-07-18 Oracle International Corporation Lock acceleration

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0926608B1 (en) * 1997-12-24 2004-03-10 Nortel Networks Limited Distributed persistent storage for intermittently connected clients
US6144983A (en) * 1998-06-09 2000-11-07 Oracle Corporation Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system
US20040107227A1 (en) * 2002-12-03 2004-06-03 International Business Machines Corporation Method for efficient implementation of dynamic lock-free data structures with safe memory reclamation
US20070005920A1 (en) * 2005-06-30 2007-01-04 Michael Bacon Hash bucket spin locks
US8571882B1 (en) * 2006-07-05 2013-10-29 Ronald J. Teitelbaum Peer to peer database
US7822927B1 (en) * 2007-05-14 2010-10-26 Emc Corporation Dynamically configurable reverse DNLC lookup
US8650155B2 (en) * 2008-02-26 2014-02-11 Oracle International Corporation Apparatus and method for log based replication of distributed transactions using globally acknowledged commits
CN101615203B (zh) * 2009-07-23 2012-04-04 中兴通讯股份有限公司 并发控制方法及装置
US8812555B2 (en) * 2011-06-18 2014-08-19 Microsoft Corporation Dynamic lock-free hash tables
CN103678553A (zh) * 2013-12-06 2014-03-26 上海寰创通信科技股份有限公司 基于共享内存设计的无线终端数据库构建方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0250224A (ja) * 1988-08-11 1990-02-20 Nec Corp テーブル排他制御方式
JPH09293055A (ja) * 1996-04-26 1997-11-11 Nec Corp 疎結合多重計算機システムにおける共有ファイルの排他制御システム、排他制御方法、および排他制御プログラムを記憶する媒体
JPH10240553A (ja) * 1996-12-27 1998-09-11 N T T Data Tsushin Kk 分散型トランザクション処理システムのためのリソースの排他制御方式及び方法
JP2005509944A (ja) * 2001-11-13 2005-04-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 大きなデータ構造のエントリロック
US20130185270A1 (en) * 2012-01-13 2013-07-18 Oracle International Corporation Lock acceleration

Also Published As

Publication number Publication date
EP3138013A4 (en) 2017-09-13
KR102206577B1 (ko) 2021-01-25
US9389907B2 (en) 2016-07-12
JP6397053B2 (ja) 2018-09-26
CN106663062B (zh) 2019-08-16
WO2015165077A1 (en) 2015-11-05
CN106663062A (zh) 2017-05-10
EP3138013A1 (en) 2017-03-08
US20150317183A1 (en) 2015-11-05
EP3138013B1 (en) 2019-02-27
KR20160148672A (ko) 2016-12-26

Similar Documents

Publication Publication Date Title
JP6397053B2 (ja) トランザクションミドルウェアマシン環境に分散トランザクションのロックを提供するためのシステムおよび方法
Chen et al. Fast and general distributed transactions using RDMA and HTM
JP6129851B2 (ja) トランザクショナルミドルウェアマシン環境においてダイナミックリソースブローカをサポートするためのシステムおよび方法
US5862376A (en) System and method for space and time efficient object locking
US9658900B2 (en) Reentrant read-write lock algorithm
US7912821B2 (en) Apparatus and method for data management
Feldman et al. A wait-free multi-word compare-and-swap operation
JP6195834B2 (ja) トランザクショナルミドルウェアマシン環境においてトランザクションレコードを永続化するためのシステムおよび方法
US11594252B2 (en) Reader bias based locking technique enabling high read concurrency for read-mostly workloads
US9553951B1 (en) Semaphores in distributed computing environments
US11281630B2 (en) Deadlock-free locking for consistent and concurrent server-side file operations in file systems
JP2018535456A (ja) アプリケーションサーバを並列起動するためのシステムおよび方法
JP6088527B2 (ja) トランザクショナルミドルウェアマシン環境においてセルフチューニングロックメカニズムをサポートするためのシステムおよび方法
JP6446475B2 (ja) トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法
US10310916B2 (en) Scalable spinlocks for non-uniform memory access
Dhoke et al. On reducing false conflicts in distributed transactional data structures
Vikranth et al. Affinity-Aware Synchronization in Work Stealing Run-Times for NUMA Multi-core Processors
Aggarwal et al. Expander: Lock-free cache for a concurrent data structure

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170406

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180511

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: 20180807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180830

R150 Certificate of patent or registration of utility model

Ref document number: 6397053

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250