JP6724039B2 - 分散型コンピューティングシステムにおけるデータベーストランザクションの処理 - Google Patents

分散型コンピューティングシステムにおけるデータベーストランザクションの処理 Download PDF

Info

Publication number
JP6724039B2
JP6724039B2 JP2017551177A JP2017551177A JP6724039B2 JP 6724039 B2 JP6724039 B2 JP 6724039B2 JP 2017551177 A JP2017551177 A JP 2017551177A JP 2017551177 A JP2017551177 A JP 2017551177A JP 6724039 B2 JP6724039 B2 JP 6724039B2
Authority
JP
Japan
Prior art keywords
transaction
data item
order
lock
processes
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.)
Active
Application number
JP2017551177A
Other languages
English (en)
Other versions
JP2018511886A (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 JP2018511886A publication Critical patent/JP2018511886A/ja
Application granted granted Critical
Publication of JP6724039B2 publication Critical patent/JP6724039B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • 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

Landscapes

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

Description

関連出願の相互参照
本出願は、2015年4月1日に出願した米国特許出願第62/141,388号明細書の優先権を主張するものである。
本出願は、分散型コンピューティングシステムにおいてトランザクションを処理することに関する。特に、本出願は、複数のデータ処理モジュールと、例えば、いくつかのデータベースノードに分散される可能性があるデータベースとの分散型ネットワークにおいてデータベーストランザクションを処理するように特に適合される分散型コンピューティングシステム、コンピュータによって履行される方法(computer-implemented methods)、及びコンピュータ可読ストレージ媒体にも関する。
データベースは、ソフトウェアプログラムを使用して管理され、問い合わせられ得る永続的なデータの構造化された組である。トランザクション型(transactional)データベース管理システムは、データベース「トランザクション」を使用してデータベース内のデータに働きかける(例えば、記憶する及び操作する)リレーショナルデータベースシステムを含み得る。概して、データベーストランザクションは、データベースに対してデータベース管理システムによって実施される(1又は2以上の動作を含む)単一の作業単位を象徴する。データベーストランザクションが確実に処理されることを保証するために、データベーストランザクションは、原子性がなければ(atomic)ならず(つまり、その1若しくは2以上の動作のすべてを含むトランザクションがすべて完了するか若しくは何らの影響も与えないかのどちらかでなければならず)、一貫性がなければ(consistent)ならず(つまり、トランザクションがデータベースをある有効な状態から別の有効な状態へと移さなければならず)、独立性がなければ(isolated)ならず(つまり、同時に実施されるトランザクションがデータベース内で、それらのトランザクションが逐次的に実行されたとした場合に至るのと同じ状態に至り)、永続性がなければ(durable)ならない(つまり、コミットされたトランザクションがシステムのクラッシュ、エラー、及びその他の問題に関係なくコミットされたままである)。データベーストランザクションのこの1組の特性は、「ACID」と呼ばれることがある。データベーストランザクションは、1若しくは2以上のサーバコンピュータにおいてクライアントコンピュータからの要求に応答するために使用され得るオンライントランザクション処理(OLTP)システムなどの産業用システムにおいて使用される可能性があり、又はデータウェアハウスシステムを含むオンライン分析処理(OLAP)システムなどのその他のシステムが構築される基礎として使用される可能性がある。例えば、研究、健康管理、又は情報サービスに関連する産業を含むさまざまな種類の産業が、そのようなシステムを使用する可能性がある。
場合によっては、特に、ACID特性を厳守することが困難であるシステム(例えば、分散型システム)において、ACID特性のうちの1又は2以上が、特定の条件の下で緩められる可能性がある。その他の状況においては、たとえデータベースがいくつかのデータベースノードに分散されるときでも、トランザクションがACID特性を維持することが重要である。分散型データベースなどの分散型システムにおいては、いずれかのACID特性をサポートするために使用されるいずれの分散型アルゴリズムも、下でより詳細に説明されるように、ノード間のデッドロックを避けるようにして実施される必要がある。しかし、実際のデッドロックの状況を検出する能力を提供するか、又は常に厳密なデッドロックの回避を保証する特定の分散型アルゴリズム(例えば、原子性のある(atomic)コミットのための2相コミットプロトコル、又は同時実行制御(concurrency control)のための2相ロックプロトコル)は、システムの性能に影響を与える。
通常の集中的なトランザクション型データベースにおいては、上述のデッドロックなどのデッドロックの検出、防止、及び/又は回避のための方法がよく知られている。しかし、複数の同時に実行されるトランザクションの場合、デッドロックの起こる見込みがより高いので、分散型データベースにおいては、デッドロックを検出し、回避するための解決策を見つけることがますます難しくなる。いくつかの分散型データベースの動作は、特に耐障害アルゴリズムによって解決することが難しい分散型コンピューティングにおける問題に対応する。いくつかの種類の障害に関しては、分散型コンピューティングにおける一部の問題が、耐障害分散型アルゴリズムによって解決することが不可能であることが分かってさえいる。
一態様においては、概して、複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための方法が、分散型コンピューティングシステムにおいてラン(running)される複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶するステップであって、データアイテムが、順序付け規則によって全順序的(totally ordered)であり、プロセスの少なくとも一部が、異なる処理モジュール上でランされている、ステップと、複数のプロセスのうちの2以上(plurality)を使用してトランザクションを処理するステップとを含む。複数のプロセスのうちの2以上のうちの1つを使用してトランザクションを処理することは、データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、要求が第1の順序である、受信すること、データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、ロックを第1の順序で順番に取得すること、ロックのいずれかが第1の時間間隔以内に取得されない場合に、ロックのうちの少なくとも2つに関して順序付け規則に合致する第2の順序を決定すること、及びデータアイテムに対するロックを第2の順序で順番に取得することを含む、処理されているトランザクションを再始動することを含む。
態様は、以下の特徴のうちの1又は2以上を含み得る。
処理されているトランザクションを再始動することは、トランザクションをロールバックし、データアイテムに対するすべての既存のロックを解放することを含む。
第2の順序は、少なくとも、ロックが第1の時間間隔以内に取得されたデータアイテムに関して順序付け規則に合致する。
処理するステップは、ロックが第1の時間間隔以内に取得されたデータアイテムの順序付け規則に基づく位置を特定する情報を記憶することをさらに含み、第2の順序を決定することは、位置を特定する記憶された情報に少なくとも部分的に基づいて第2の順序を決定することを含む。
第2の順序を決定することは順序付け規則に従って、ロックを取得するための動作のリストをソートすることを含む。
処理するステップは、第1の順序が順序付け規則に合致するか否かを決定し、第1の順序が順序付け規則に合致する場合に、ロックが第1の時間間隔以内に取得されなかったすべてのデータアイテムに対するロックを第1の時間間隔よりも長く待つことをさらに含む。
処理するステップは、複数のプロセスのうちの2以上のうちのその他のプロセスに対する、1組の要求を受信したプロセスの優先度を決定することをさらに含む。
処理されているトランザクションを再始動することは、優先度を決定した後に実施される(performed)。
処理されているトランザクションを再始動することは、1組の要求によってアクセスが要求された少なくとも1つのデータアイテムに対するロックの状態が変わったと決定した後に実施される。
処理するステップは、第1の順序が順序付け規則に合致するか否かを決定することをさらに含み、処理されているトランザクションを再始動することは、第1の順序が順序付け規則に合致しないと決定してから第2の時間間隔の後に実施される。
第2の時間間隔は、第1の時間間隔よりも長い。
第1の時間間隔は、1秒未満である。
処理するステップは、処理されているトランザクションがコミットされるか、中止されるか、又は再始動されるまでデータアイテムに対して取得されたすべてのロックを保持することと、処理されているトランザクションがコミットされるか、中止されるか、又は再始動されるときにデータアイテムに対するロックを解放することとをさらに含む。
データアイテムに対するロックは、単一のロック解除状態及び1又は2以上のロック状態を含む少なくとも2つの状態を含む。
データアイテムに対するロックを取得することは、データアイテムに関連するロックの状態をロック状態のうちの1つに変更することを含む。
データアイテムに対するロックを解放することは、データアイテムに関連するロックの状態をロック状態のうちの1つからロック解除状態に変更することを含む。
データアイテムに対するロックは、ロックされたデータアイテムへの完全なアクセスを単一のプロセスにのみ許可する少なくとも1つの排他的ロック状態を含む。
データアイテムに対するロックは、ロックされたデータアイテムへの読み取りのみのアクセスを複数のプロセスに許可する少なくとも1つの共有ロック状態を含む。
複数のプロセスの少なくとも一部は、互いに非同期にランされている。
トランザクションは、データベーストランザクションを含み、データアイテムは、データベースのレコードである。
データベースは、インメモリデータベースである。
データストレージシステムは、データベースの複数のノードに分散される。
複数のプロセスのうちの2以上の少なくとも一部は、処理モジュールのうちの異なる処理モジュール上でランされている。
別の態様においては、概して、1又は2以上のコンピュータによって実行されるときに、複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための動作を1又は2以上のコンピュータに実施させる命令を記憶するコンピュータ可読ストレージ媒体であって、動作が、分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶する動作であって、データアイテムが、順序付け規則によって全順序的であり、プロセスの少なくとも一部が、異なる処理モジュール上でランされている、記憶する動作と、複数のプロセスのうちの2以上を使用してトランザクションを処理する動作であって、複数のプロセスのうちの2以上のうちの1つを使用してトランザクションを処理することが、データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、要求が第1の順序である、受信すること、データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、ロックを第1の順序で順番に取得すること、ロックのいずれかが第1の時間間隔以内に取得されない場合に、ロックのうちの少なくとも2つに関して順序付け規則に合致する第2の順序を決定すること、及びデータアイテムに対するロックを第2の順序で順番に取得することを含む、処理されているトランザクションを再始動することを含む、処理する動作を含む、コンピュータ可読ストレージ媒体。
別の態様においては、概して、トランザクションを処理するための分散型コンピューティングシステムが、複数の処理モジュールと、分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能であり、データアイテムを記憶するデータストレージシステムであって、データアイテムが、順序付け規則によって全順序的であり、プロセスの少なくとも一部が、異なる処理モジュール上でランされている、データストレージシステムとを含む。複数のプロセスのうちの2以上が、トランザクションを処理する。複数のプロセスのうちの2以上のうちの1つを使用してトランザクションを処理することは、データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、要求が第1の順序である、受信すること、データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、ロックを第1の順序で順番に取得すること、ロックのいずれかが第1の時間間隔以内に取得されない場合に、ロックのうちの少なくとも2つに関して順序付け規則に合致する第2の順序を決定すること、及びデータアイテムに対するロックを第2の順序で順番に取得することを含む、処理されているトランザクションを再始動することを含む。
別の態様においては、概して、複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための方法が、分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶するステップであって、データアイテムが、順序付け規則によって全順序的であり、プロセスの少なくとも一部が、異なる処理モジュール上でランされている、記憶するステップと、複数のプロセスのうちの2以上を使用してトランザクションを処理するステップとを含む。複数のプロセスのうちの2以上のうちの1つを使用してトランザクションを処理することは、データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、要求が第1の順序である、受信すること、データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、ロックを第1の順序で順番に取得すること、ロックのいずれかが第1の時間間隔以内に取得されない場合に、第1の順序が順序付け規則に合致するか否かを決定すること、及び第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することを含む。
態様は、以下の特徴のうちの1又は2以上を含み得る。
処理されているトランザクションを再始動することは、トランザクションをロールバックし、データアイテムに対するすべての既存のロックを解放し、第1の順序とは異なる第2の順序で順番にデータアイテムに対するロックを取得することを含む。
第2の順序は、少なくとも、ロックが第1の時間間隔以内に取得されたデータアイテムに関して順序付け規則に合致する。
処理するステップは、ロックが第1の時間間隔以内に取得されたデータアイテムの順序付け規則に基づく位置を特定する情報を記憶し、位置を特定する記憶された情報に少なくとも部分的に基づいて第2の順序を決定することをさらに含む。
第2の順序は、順序付け規則に従って、ロックを取得するための動作のリストをソートすることに基づいて決定される。
処理するステップは、第1の順序が順序付け規則に合致する場合に、ロックが第1の時間間隔以内に取得されなかったすべてのデータアイテムに対するロックを第1の時間間隔よりも長く待つことをさらに含む。
処理するステップは、複数のプロセスのうちの2以上のうちのその他のプロセスに対する、1組の要求を受信したプロセスの優先度を決定することをさらに含む。
第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することは、優先度を決定した後に実施される。
第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することは、1組の要求によってアクセスが要求された少なくとも1つのデータアイテムに対するロックの状態が変わったと決定した後に実施される。
第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することは、第1の順序が順序付け規則に合致しないと決定してから第2の時間間隔の後に実施される。
第2の時間間隔は、第1の時間間隔よりも長い。
第1の時間間隔は、1秒未満である。
処理するステップは、処理されているトランザクションがコミットされるか、中止されるか、又は再始動されるまでデータアイテムに対して取得されたすべてのロックを保持することと、処理されているトランザクションがコミットされるか、中止されるか、又は再始動されるときにデータアイテムに対するロックを解放することとをさらに含む。
データアイテムに対するロックは、単一のロック解除状態及び1又は2以上のロック状態を含む少なくとも2つの状態を含む。
データアイテムに対するロックを取得することは、データアイテムに関連するロックの状態をロック状態のうちの1つに変更することを含む。
データアイテムに対するロックを解放することは、データアイテムに関連するロックの状態をロック状態のうちの1つからロック解除状態に変更することを含む。
データアイテムに対するロックは、ロックされたデータアイテムへの完全なアクセスを単一のプロセスにのみ許可する少なくとも1つの排他的ロック状態を含む。
データアイテムに対するロックは、ロックされたデータアイテムへの読み取りのみのアクセスを複数のプロセスに許可する少なくとも1つの共有ロック状態を含む。
複数のプロセスの少なくとも一部は、互いに非同期にランされている。
トランザクションは、データベーストランザクションを含み、データアイテムは、データベースのレコードである。
データベースは、インメモリデータベースである。
データストレージシステムは、データベースの複数のノードに分散される。
複数のプロセスのうちの2以上の少なくとも一部は、処理モジュールのうちの異なる処理モジュール上でランされている。
別の態様においては、概して、1又は2以上のコンピュータによって実行されるときに、複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための動作を1又は2以上のコンピュータに実施させる命令を記憶するコンピュータ可読ストレージ媒体であって、動作が、分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶する動作であって、データアイテムが、順序付け規則によって全順序的であり、プロセスの少なくとも一部が、異なる処理モジュール上でランされている、記憶する動作と、複数のプロセスのうちの2以上を使用してトランザクションを処理する動作であって、複数のプロセスのうちの2以上のうちの1つを使用してトランザクションを処理することが、データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、要求が第1の順序である、受信すること、データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、ロックを第1の順序で順番に取得すること、ロックのいずれかが第1の時間間隔以内に取得されない場合に、第1の順序が順序付け規則に合致するか否かを決定すること、及び第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することを含む、処理する動作とを含む、コンピュータ可読ストレージ媒体。
別の態様においては、概して、トランザクションを処理するための分散型コンピューティングシステムが、複数の処理モジュールと、分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能であり、データアイテムを記憶するデータストレージシステムであって、データアイテムが、順序付け規則によって全順序的であり、プロセスの少なくとも一部が、異なる処理モジュール上でランされている、データストレージシステムとを含む。複数のプロセスのうちの2以上が、トランザクションを処理する。複数のプロセスのうちの2以上のうちの1つを使用してトランザクションを処理することは、データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、要求が第1の順序である、受信すること、データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、ロックを第1の順序で順番に取得すること、ロックのいずれかが第1の時間間隔以内に取得されない場合に、第1の順序が順序付け規則に合致するか否かを決定すること、及び第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することを含む。
態様は、以下の利点のうちの1又は2以上を含む可能性がある。
その他の利点の中でもとりわけ、態様は、システムの性能(system performance)を維持しながら、分散型データベースにおいてデッドロックを防止する。
態様は、ロールバックされ続けることによってトランザクションが欠乏に苦しむことがないことを保証する。
態様は、分散型データベースにおける効率的なトランザクション型データ処理に依拠する物流又は産業プロセスがデッドロックの回数の削減又はより速いトランザクション型データ処理の恩恵を直接受けることができることを可能にする。
態様は、トランザクションによって指定された順序に従ってデータアイテムに対するロックを取得し、成功しない場合、知られているデッドロックのないロック順序に戻ることを可能にする。
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
分散型データベースシステムを含むデータ処理システムのブロック図である。 2つのデータベーストランザクションの間のデッドロックを示す図である。 予防的デッドロック回避(pre-emptive deadlock avoidance)アルゴリズムの流れ図である。 第1の潜在的なデッドロック状況への図3のアルゴリズムの適用を示す図である。 第2の潜在的なデッドロック状況への図3のアルゴリズムの適用を示す図である。
1 概要
図1は、デッドロック回避技術が使用され得るデータ処理システム100の例を示す。システム100は、通信ネットワーク106(例えば、WAN、LAN、又はマルチプロセッサシステム内若しくはチップ上のネットワーク)を介してM個のデータベースクライアント104と通信する分散型データベースシステム102を含む。
分散型データベースシステム102は、データベースDのフラグメント(fragment)Dが割り当てられるN個のノード108を含む。各ノード108は、データベースDのフラグメントが記憶されるデータストレージデバイス112と、データストレージデバイス112上のデータベースのフラグメントを管理する(例えば、サーバコンピュータ、プロセッサ、又はプロセッサコアによって制御される)処理モジュールであるデータベースマネージャ110とを含む。所与のノード108のためのデータベースマネージャ110は、データストレージデバイス112上のデータベースのフラグメントとクライアント104及びその他のノード108などのノード108の外部のエンティティ(entity)との間のインターフェースとしても働く。図1に明示的に示されていないが、一部の例において、各データベースマネージャ110は、データベースマネージャ110によって管理されるデータストレージデバイス112上に記憶されるデータベースのフラグメントの管理に責任を負うデータプロセッサと、2つ以上のノード108上のデータベースフラグメントへのアクセスを必要とする要求を処理するためのアプリケーションプロセッサと、クライアント104及びその他のノード108と通信するための通信ソフトウェアとを含む。
動作中、クライアント104は、データベースDに対して実行するための1又は2以上のデータベーストランザクションを指定する。クライアント104によって指定されたトランザクションは、ノード108のデータベースマネージャ110のうちの1又は2以上に通信ネットワーク106を介して送信される。トランザクションがN個のノード108の第nのデータベースマネージャ110に到着するとき、第nのデータベースマネージャ110は、トランザクションを評価し、第nのデータベースマネージャ110によって管理される第nのデータストレージデバイス112上に記憶されるデータベースのフラグメントに対してトランザクションを実行するためのアクセス計画(access plan)(例えば、問い合わせ計画(query plan))を生じさせる。
一部の例においては、トランザクションが複数のノード108に記憶されるデータベースの複数のフラグメントにアクセスするとき、第nのデータベースマネージャ110が、複数のノード108のデータベースマネージャ110にトランザクション及び/又はアクセス計画を転送する。その他の例においては、トランザクションが生じたクライアント104が、トランザクションを完了するために必要とされる適切なノード108にトランザクションを送信する。さらにその他の例においては、トランザクションが生じたクライアント104が、リーダーノードとして指定されるノード108のうちの1つにトランザクションを送信し、リーダーノードが、トランザクションを完了するために必要とされる適切なノード108に適切なアクセス計画を送信する。
1又は2以上のデータベーストランザクションに関するアクセス計画が適切なノード108に適切に置かれるようにして、1又は2以上のトランザクションが実行され、データベースにアクセスし得る。通常の集中的なトランザクション型データベースと同様に、1又は2以上のトランザクションが互いに衝突し、一部のトランザクションが成功裏に完了し、その他のトランザクションが失敗する結果を生じる可能性があり、その時点で、それらのトランザクションは、強制的にそれらのトランザクションの変更を元に戻され、再始動される。
2 デッドロック
トランザクションの間で生じる1つの潜在的な衝突が、デッドロックである。非常に広く言えば、デッドロックは、2又は3以上の同時に実行されるトランザクションがそれぞれ他のトランザクションが排他的にアクセスすることができるリソースを必要とし、完了する前にその他のトランザクションがリソースを解放するのを待たなければならない状況である。調べられず放置されると、2又は3以上の同時に実行されるトランザクションはそれらのトランザクションの必要とされるリソースにアクセスすることができないので、それらの2又は3以上の同時に実行されるトランザクションのいずれも完了しない。
図2を参照すると、デッドロックが発生する状況の従来の例が示される。例においては、2つのトランザクションT及びTが、トランザクションデータベースに記憶されたデータ要素x及びyに同時に働きかける。Tは、データ要素yの値を読み取り、データ要素xに値を書き込むための動作を含む。Tは、データ要素xの値を読み取り、データ要素yに値を書き込むための動作を含む。本明細書において使用されるとき、「ロック」は、特定のデータ要素に対するロックを獲得するエンティティ以外のいずれのエンティティによるその特定のデータ要素への同時アクセスも防止するための任意のメカニズムである。実施されている/防止されているアクセスの種類に応じた複数の種類のロックが、存在する可能性がある。例えば、「読み取りロック」は、いずれのその他のエンティティがデータ要素を読み取ることも防止するロックであり、「書き込みロック」は、いずれのその他のエンティティがデータ要素を書き込むことも防止するロックである。
第1の時間ステップ(1)において、Tが、データ要素yに対する読み取りロックRT1113を取得するためのread_lock(y)コマンドを発する。第2の時間ステップ(2)において、Tが、yの値を読み取るためのread(y)コマンドを発する。第3の時間ステップ(3)において、Tが、データ要素xに対する読み取りロックRT2115を取得するためのread_lock(x)コマンドを発する。第4の時間ステップ(4)において、Tが、xの値を読み取るためのread(x)コマンドを発する。
第5の時間ステップ(5)において、Tが、データ要素xに対する書き込みロックWT1117を取得しようと試みるためのwrite_lock(x)コマンドを発する。しかし、Tが、データ要素xに対する読み取りロックを既に有しており、したがって、Tは、そのTがそのTの書き込みロックWT1117を取得することが可能になる前に、Tがデータ要素xに対するそのTの読み取りロックを解放し終わるまで待たなければならない。同様に、第6の時間ステップ(6)において、Tは、データ要素yに対する書き込みロックWT2119を取得しようと試みるためのwrite_lock(y)コマンドを発する。しかし、Tが、データ要素yに対する読み取りロックを既に有しており、したがって、Tは、そのTがそのTの書き込みロックWT2119を取得することが可能になる前に、Tがデータ要素yに対するそのTの読み取りロックを解放し終わるまで待たなければならない。
この時点で、TもTもそのトランザクションを完了し終わるまでその読み取りロックを解放しないが、どちらかのトランザクションが先に進むためには、他方のトランザクションがその他方のトランザクションを解放しなければならないので、デッドロックが発生している。図2に示されるデッドロックなどのデッドロックが発生すると、先に進むための唯一の方法は、トランザクションのうちの一方をロールバックし、他方が完了することを可能にすることによってデッドロックを解くことである。
3 デッドロックの回避
上述のように、通常の集中的なトランザクション型データベースにおいては、上述のデッドロックなどのデッドロックの検出、防止、及び/又は回避のための方法がよく知られている。しかし、分散型データベースシステム102の複数の異なるノード108によって記憶されるデータにそれぞれが働きかける複数の同時に実行されるトランザクションの場合、デッドロックの起こる見込みがより高いので、分散型データベースにおいては、デッドロックを検出し、回避するための解決策を見つけることがますます難しくなる。いくつかの分散型データベースの動作は、特に耐障害アルゴリズムによって解決することが難しい分散型コンピューティングにおける問題に対応する。いくつかの種類の障害に関しては、分散型コンピューティングにおける一部の問題が、耐障害分散型アルゴリズムによって解決することが不可能であることが分かってさえいる。
図3を参照すると、一部の例において、分散型データベースシステム102は、たとえデッドロックがまだ実際に起こっていないとしても、トランザクションがデッドロックさせられるか又はデッドロックする可能性がある場合にトランザクションを元に戻す(又はロールバックする)「予防的デッドロック回避」アルゴリズム314を使用してデッドロックを回避する。さらに、アルゴリズム314は、下でより詳細に説明されるように、順序付け規則との合致を求める必要を、ロックが迅速に取得されない特定の状況のみに制限することによって、他の方法であれば、順序付けられたロック方式において強いられることになるであろうオーバーヘッドの一部を削減することができる。このようにして、分散型データベースにおける効率的なトランザクション型データ処理に依拠する物流又は産業プロセスは、デッドロックの回数の削減又はより速いトランザクション型データ処理の恩恵を直接受けることができる。
予防的デッドロック回避アルゴリズム314の前提条件は、分散型データベースに記憶されたデータアイテムが順序付け規則によって全順序的であることである。アイテムの「全順序」(又は「線形順序(linearly ordered)」)集合は、集合内のアイテムの対のあらゆるアイテムが、順序付け規則(「比較可能性(comparability)」又は「全順序律(totality)」とも呼ばれる)によって対の他方のアイテムに対して定義された順序を有する集合である。「半順序(partially ordered)」集合においては、対照的に、アイテムのあらゆる対が、互いに対して定義された順序を有するとは限らない。全順序集合は、半順序集合にも当てはまるその他の特性(例えば、反対称性(antisymmetry)及び推移性(transitivity))も有する。
全順序的であるそのような順序付け規則の1つの簡単な例は、データベース内の各データアイテムに一連の番号のうちの異なる番号を割り振ることである。例えば、データベース内の第1のデータ要素が、番号1を割り振られ、データベース内の第2のデータ要素が、番号2を割り振られ、以下同様である。もちろん、その他のより複雑な順序付け規則が、使用される可能性がある。例えば、ノード108の各々が、任意の所与のノードにおける番号がそれぞれのデータベースフラグメントの中で一意であるようにそのノード108のデータアイテムに番号を独立して割り振る可能性があり、そのときは、異なるノードの間の重複のチェックが、実施される。いずれかの重複が見つかった場合、ノードのすべてにわたって異なるデータアイテムに異なる番号(又は全順序的文字列)が割り振られることを保証するために、番号の一部又はすべてを変更するための同点決勝(tie breaker)規則が使用される。重複が見つかる場合に使用され得る同点決勝規則の例は、「i」がデータアイテムに割り振られた元のローカルの番号であり、「j」がノードの番号(1からNまで)である場合にN個のノードの各々におけるすべての番号を再割り振りするための次の規則、すなわち、(i+j) mod Nである。
全順序的なデータアイテムを有するデータベースの1つの特性は、データアイテムに対するロックがデータアイテムの順序付け規則に合致する順序でしか獲得されない場合に、デッドロックが起こり得ないことである。つまり、トランザクションが番号1のデータアイテムに対するロックを獲得し、それから、番号2のデータアイテムに対するロックを獲得する場合、(すべてのその他のトランザクションが順序付け規則に合致する順序でロックを獲得していると仮定すれば)デッドロックは起こり得ない。しかし、トランザクションが番号2のデータアイテムに対するロックを獲得し、それから、データアイテム1に対するロックを獲得する場合、トランザクションの相対的なタイミングによっては、デッドロックが(必ずではないが)起こり得る。
非常に広く言えば、予防的デッドロック回避アルゴリズム314は、まず、トランザクションが任意の順序でデータアイテムに対するロックを取得しようと試みることを可能にし、トランザクションが順序付け規則に合致する順序でロックを取得しようと試みることを強制しない。トランザクションが取得しようと試みるロックのいずれかが予め定義された時間間隔又は時間遅延以内に取得されない場合、デッドロックが起こったか又は起こる可能性があるので、トランザクションがロールバックされる。一部の例において、時間間隔又は時間遅延は、順序付け規則に合致する順序でロックを獲得している任意の2つのトランザクションが時間間隔又は時間遅延以内にそれらのトランザクションのロックを取得する見込みが高くなる(例えば、見込みが50%を超えているか、75%を超えているか、又は90%を超えている)ように十分に長い。
ロールバックされるいずれのトランザクションに関しても、トランザクションのロック動作は、順序付け規則に合致するように第2の順序でソートされる。それから、トランザクションが、再始動され(例えば、再び試みられるか又は再び処理され)、ロック動作が、ソートされた第2の順序で実施される。再始動されたトランザクションは、順序付け規則に合致する順序でそのトランザクションのロックを獲得し、初めて試みているトランザクションよりも高い優先度を有するので、少なくともロックを獲得することに関してはデッドロックなく進行する。つまり、下で説明される例示的なアルゴリズム314は、再始動されたトランザクションが初めて試みているトランザクションよりも高い優先度を有するので、初めて試みているすべてのトランザクションをロールバックする。結果として、再始動されたトランザクションは、以前ロールバックされロックの順序に合致する順序でそれらのトランザクションのロックの少なくとも一部を獲得しているトランザクションとだけ、ロックを求めて競合する。アルゴリズムのその他の例においては、時間間隔の後の順序決定が引き続き使用されるが、トランザクションの間の相対的な優先度は必ずしも使用されず、したがって、デッドロック(deadline)が引き続き阻止されるが、進行するための要件は必ずしも厳しくない。
より詳細には、アルゴリズム314の第1のステップ316において、ループがトランザクションTによって実行されるロック動作のリストに沿って順番に進むときに、実施されるべき次のロック動作が存在するかどうかを知るためにループ条件が調べられ(つまり、リストによって示される順番で1度に1つのロック動作)、各ロック動作に関して、アルゴリズム314は、そのロック動作によって特定されたデータアイテムに対するロックLを取得しようと試み始める。第2のステップ318において、ロック動作が、L.owner(つまり、もしあれば、どのトランザクションがロックLを既に所有するかを表すロックLのプロパティ)を調べて、その値がNULLに等しいかどうかを決定する。NULLに等しい場合、どのトランザクションもロックLを現在所有しておらず、アルゴリズムは第3のステップ320に進み、第3のステップ320において、トランザクションTがロックLを入手する。第3のステップ320においては、L.ownerがTに設定され、ループがステップ316に戻る。
L.ownerがNULLに等しくない場合、別のトランザクションがロックLを既に所有しており、アルゴリズムは第4のステップ322に進み、第4のステップ322において、T.priority(つまり、トランザクションTの処理の優先度を表すプロパティ)がL.ownerの優先度(つまり、ロックLを現在所有しているトランザクションの処理の優先度を表すプロパティ)と比較される。T.priorityがL.owner.priorityよりも高い場合、アルゴリズム314は、第5のステップ324に進み、第5のステップ324において、ロックLを現在所有しているトランザクション(つまり、L.owner)が、ロールバックされる。そして、トランザクションTがロックLを入手し、そのとき、L.ownerがTに設定され、ループがステップ316に戻る。T.priorityがL.owner.priority以下である場合、アルゴリズム314は、第6のステップ326に進み、第6のステップ326において、トランザクションがロックLを取得しようと試みるための時間の間隔(又は「時間間隔」若しくは「時間遅延」)tを与えられる。
ロックLが時間の間隔t以内に解放され、L.ownerをNULLに等しくする場合、アルゴリズム314は第7のステップ330に進み、第7のステップ330において、トランザクションTがロックLを入手し、ループがステップ316に戻る。第7のステップ330において、L.ownerがTに設定される。代替的に、時間間隔又は時間遅延tの間に別のトランザクションがロックLを解放しない場合、アルゴリズムは、第8のステップ332に進む。第8のステップ332において、アルゴリズム314が、トランザクションTによって発せられたすべての動作をロールバックする。第8のステップ332は、Tによって実行されるロック動作のリストをデータアイテムの順序付け規則に合致するように第2の順序でソートし、T.priorityをインクリメントする(increment)。そして、アルゴリズム314は、ループ条件がソートされたロック動作のリストの初めに再び初期化されるようにしてステップ316に戻ることによってトランザクションTを再始動し、したがって、ロック動作のロックは、今やソートされた(第2の)順序で順番に取得される。
例示的なアルゴリズム314とは異なる解決策を適用するが、アルゴリズム314と同様にオーバーヘッドを減らすようにしてやはりデッドロックを回避する予防的デッドロック回避アルゴリズムのさまざまなその他の例が、代替的に使用され得る。例えば、特定の時間間隔又は時間遅延の後にあらゆるトランザクションに関して(ステップ332において)ロック動作をロールバックし、第2の順序でソートする代わりに、アルゴリズムは、すべての最初のロックが取得された順序が順序付け規則に合致しているか否かをまず決定する可能性がある。最初のロックが順序付け規則に合致する順序で取得された場合、遅延は、デッドロックが原因ではなく、トランザクションは、トランザクションをロールバックする前により長い時間間隔又は時間遅延の間、ロックを待ち続ける可能性がある。しかし、最初のロックが順序付け規則に合致する順序で取得されなかった場合、トランザクションは、デッドロックが発生した可能性があるのでロールバックされ、例えば、ソートされたリストを用いて再始動される(例えば、再び試みられるか又は再び処理される)。したがって、一部のアルゴリズムは、第1の順序が順序付け規則に合致するか否かを決定するためのステップを含み、(アルゴリズム314などの)その他のアルゴリズムは、そのようなステップを含まない。
3.1 例
図4を参照すると、予防的デッドロック回避アルゴリズム314の例示的な応用において、2つのトランザクションT及びTは、分散型データベースの(データアイテムx及びyを含む)データアイテムに同時に働きかけている。データアイテムは、順序付け規則に従った順序で番号を振られ、xが、番号1を割り振られ、yが、番号2を割り振られる。以下の検討を簡潔にするために、データアイテムは、x及びyと呼ばれる。
最初の時間ステップ(0)においては、いかなるトランザクションもx又はyに対するロックを所有しない。第1の時間ステップ(1)において、Tが、read_lock(y2)コマンドを発することによってyに対するロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、yに関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第1の時間ステップ(1)においてyに対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、yに対する読み取りロック
434を成功裏に取得する。yに対する読み取りロック
434を取得すると、yに関するL.ownerがTに設定される。
第2の時間ステップ(2)において、Tは、read(y2)コマンドを発することによってyの値を読み取ろうと試みる。Tは、yに対する読み取りロックを所有するので、yの値を成功裏に読み取る。
第3の時間ステップ(3)において、Tが、read_lock(x1)コマンドを発することによってxに対するロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、xに関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第3の時間ステップ(3)においてxに対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、xに対する読み取りロック
436を成功裏に取得する。xに対する読み取りロック
436を取得すると、xに関するL.ownerがTに設定される。
第4の時間ステップ(4)において、Tは、read(x1)コマンドを発することによってxの値を読み取ろうと試みる。Tは、xに対する読み取りロックを所有するので、xの値を成功裏に読み取る。
第5の時間ステップ(5)において、Tが、write_lock(x1)コマンドを発することによってxに対する書き込みロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、xに関するL.ownerがNULLに等しいかどうかを決定する。Tがxに対する読み取りロックをまだ所有する(つまり、xに関するL.ownerがTに等しい)ので、Tは、アルゴリズム314の第4のステップ322に進み、TがTよりも高い優先度を有するかどうかを決定する。第5の時間ステップ(5)において、T.priorityとT.priorityとの両方はゼロに等しく、したがって、Tは、アルゴリズム314の第6のステップ326に進み、時間間隔又は時間遅延tの間、xに対する書き込みロックを取得しようと試みる。
第6の時間ステップ(6)において、Tがxに対する書き込みロックを取得するのをまだ待っている間に、Tはwrite_lock(y2)コマンドを発することによってyに対する書き込みロックを取得しようと試みる。そのようにするために、トランザクションTは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、yに関するL.ownerがNULLに等しいかどうかを決定する。Tがyに対する読み取りロックをまだ所有する(つまり、yに関するL.ownerがTに等しい)ので、Tは、アルゴリズム314の第4のステップ322に進み、TがTよりも高い優先度を有するかどうかを決定する。第5の時間ステップ(5)において、T.priorityとT.priorityとの両方はゼロに等しく、したがって、Tは、アルゴリズム314の第6のステップ326に進み、時間間隔又は時間遅延tの間、yに対する書き込みロックを取得しようと試みる。
第7の時間ステップ(7)において、トランザクションTがxに対する書き込みロックを取得しようと試みるための時間間隔tが、(読み取りロック
436が時間間隔tの間に解放されなかったので)Tがxに対する書き込みロックを未だ取得することなく経過する。アルゴリズム314は、第8のステップ332に進み、第7の時間ステップ(7)においてxに対する書き込みロックを取得しようとするトランザクションの試みを中止することと、第8の時間ステップ(8)においてyに対するトランザクションの読み取りロックを解放することとを含め、トランザクションTをロールバックする。Tをロールバックすることによって、TとTとの間のデッドロックが回避される。Tがロールバックされたので、T.priorityは、アルゴリズム314の第8のステップ332によってゼロから1にインクリメントされる(図5参照)。Tの優先度を上げることによって、アルゴリズム314は、繰り返しロールバックされることによってTが欠乏に苦しむことがないことを保証する。最後に、アルゴリズム314の第8のステップ332は、Tがロールバックされる前に発したロック動作を調べ、データアイテムの順序付け規則に合致するようにそれらのロック動作をソートする。Tに関して、ロック動作は、以下のようにソートされる。
(1)write_lock(x1)
(2)read_lock(y2)
に対するTの読み取りロックが解放されると、トランザクションTは、yに対する書き込みロック
440を成功裏に取得することができる。第9の時間ステップ(9)において、トランザクションTが、write(y2)コマンドを発し、yを新しい値y’によって上書きする。第10の時間ステップ(10)において、トランザクションTは、commit(T2)コマンドを発して、そのトランザクションの変更をデータベースにコミットする。Tの変更がコミットされた後、xに対する読み取りロック
436及びy’に対する書き込みロック
440が解放され、トランザクションTが完了する。
第11の時間ステップ(11)において、Tが、第2の試みを始める。第2の試みにおいて、Tは、Tの第1の試みにおいてTが発したロック動作を、トランザクションの冒頭に、ソートされた順序で(つまり、データアイテムの順序付け規則に合致する順序で)再び発する。つまり、第11の時間ステップ(11)において、Tが、write_lock(x1)コマンドを発することによってxに対する書き込みロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、xに関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第11の時間ステップ(11)においてxに対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、xに対する書き込みロック
442を成功裏に取得する。xに対する書き込みロック
442を取得すると、xに関するL.ownerがTに設定される。
第12の時間ステップ(12)において、Tが、read_lock(y2')コマンドを発することによってy’に対する読み取りロックを取得しようと試みる。そのようにするために、第1のトランザクションTは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、y’に関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第12の時間ステップ(12)においてy’に対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、y’に対する読み取りロック
444を成功裏に取得する。y’に対する読み取りロック
444を取得すると、y’に関するL.ownerがTに設定される。
第13の時間ステップ(13)において、トランザクションTが、write(x1)コマンドを発し、xを新しい値x’によって上書きする。第14の時間ステップ(14)において、トランザクションTは、commit(T1)コマンドを発して、そのトランザクションの変更をデータベースにコミットする。Tの変更がコミットされた後、yに対する読み取りロック
444、及び書き込みロック
442が解放され、トランザクションTが完了する。
図5を参照すると、予防的デッドロック回避アルゴリズム314の別の例示的な応用において、2つのトランザクションT及びTは、分散型データベースの(データアイテムx及びyを含む)データアイテムに同時に働きかけている。この例において、第1のトランザクションTは、以前ロールバックされたことがあり、T.priorityは1に等しい。
最初の時間ステップ(0)においては、いかなるトランザクションもx又はyに対するロックを所有しない。第1の時間ステップ(1)において、Tが、read_lock(y2)コマンドを発することによってyに対するロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、yに関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第1の時間ステップ(1)においてyに対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、yに対する読み取りロック
646を成功裏に取得する。yに対する読み取りロック
646を取得すると、yに関するL.ownerがTに設定される。
第2の時間ステップ(2)において、Tは、read(y2)コマンドを発することによってyの値を読み取ろうと試みる。Tは、yに対する読み取りロックを所有するので、yの値を成功裏に読み取る。
第3の時間ステップ(3)において、Tが、read_lock(x1)コマンドを発することによってxに対するロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、xに関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第3の時間ステップ(3)においてxに対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、xに対する読み取りロック
648を成功裏に取得する。xに対する読み取りロック
648を取得すると、xに関するL.ownerがTに設定される。
第4の時間ステップ(4)において、Tは、read(x1)コマンドを発することによってxの値を読み取ろうと試みる。Tは、xに対する読み取りロックを所有するので、xの値を成功裏に読み取る。
第5の時間ステップ(5)において、Tが、write_lock(x1)コマンドを発することによってxに対する書き込みロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、xに関するL.ownerがNULLに等しいかどうかを決定する。Tがxに対する読み取りロックをまだ所有する(つまり、xに関するL.ownerがTに等しい)ので、Tは、アルゴリズム314の第4のステップ322に進み、TがTよりも高い優先度を有するかどうかを決定する。第5の時間ステップ(5)において、T.priorityは1に等しく、T.priorityは0に等しい。したがって、Tは、アルゴリズム314の第5のステップ324に進み、第6の時間ステップ(6)においてxに対するTの読み取りロック
646を解放するためのunlock(x1)コマンドを発することを含め、Tをロールバックする。Tがロールバックされたので、T.priorityは、アルゴリズム314の第5のステップ324によってゼロから1にインクリメントされる。
に対するTの読み取りロック
648が解放されると、Tは、xに対する書き込みロック
650を成功裏に取得することができる。第7の時間ステップ(7)において、Tが、write(x1)コマンドを発し、xを新しい値x’によって上書きする。第8の時間ステップ(8)において、Tは、commit(T1)コマンドを発して、そのトランザクションの変更をデータベースにコミットする。Tの変更がコミットされた後、yに対する読み取りロック
646及びx’に対する書き込みロック
650が解放され、トランザクションTが完了する。
第9の時間ステップ(9)において、Tが、第2の試みを始める。第2の試みにおいて、Tが、read_lock(x1)コマンドを発することによってx’に対する読み取りロックを取得しようと試みる。そのようにするために、Tは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、xに関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第9の時間ステップ(9)においてx’に対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、x’に対する読み取りロック
652を成功裏に取得する。x’に対する読み取りロック
652を取得すると、x’に関するL.ownerがTに設定される。
第10の時間ステップ(10)において、Tが、write_lock(y2)コマンドを発することによってyに対する書き込みロックを取得しようと試みる。そのようにするために、第2のトランザクションTは、予防的デッドロック回避アルゴリズム314の第2のステップ318を適用し、yに関するL.ownerがNULLに等しいかどうかを決定する。その他のトランザクションが第10の時間ステップ(10)においてyに対する書き込みロックを所有しないので、Tは、アルゴリズム314の第3のステップ320に進み、yに対する書き込みロック
654を成功裏に取得する。yに対する書き込みロック
654を取得すると、yに関するL.ownerがTに設定される。
第11の時間ステップ(11)において、Tが、x’の値を読み取るためのread(x1')コマンドを発する。第12の時間ステップ(12)において、Tが、write(y2)コマンドを発し、yを新しい値y’によって上書きする。第13の時間ステップ(13)において、Tは、commit(T2)コマンドを発して、そのトランザクションの変更をデータベースにコミットする。Tの変更がコミットされた後、xに対する読み取りロック
652及びx’に対する書き込みロック
654が解放され、トランザクションTが完了する。
4 代替形態
一部の例においては、ロック動作がトランザクションの第1の試みにおいてデータアイテムに対して実施されるときに、順序付け規則に基づくデータアイテムの位置が、ロック動作をソートする際に後で使用するために記憶される。例えば、第1の時間遅延以内にロックが取得されたデータアイテムの位置が、記憶される可能性がある。トランザクション内のすべてのロックがソートされることを必要とする代わりに、第1の時間遅延以内に最初に取得されたロックのみを単純にソートすれば、進展を保証するのに十分である可能性があり、そのようなソートは、多数のロック動作を伴うトランザクションのためにそれほど多くの作業を必要としない可能性がある。
一部の例において、ロック動作が完了するのを待つための時間間隔又は時間遅延は、ロック動作が順序付け規則に合致する場合より長い。
一部の例において、トランザクションは、第2の時間間隔又は第2の時間遅延の後にのみ再始動される。一部の例において、第2の時間間隔又は時間遅延は、ロック動作がロックを取得しようと試みることを可能にされる時間間隔又は時間遅延よりも長い。
一部の例において、ロック動作がロックを取得しようと試みることを可能にされる時間間隔又は時間遅延は、1秒未満(例えば、100ms、1ms、100マイクロ秒、1マイクロ秒、又は0.1マイクロ秒)である。一部の例において、ロック動作がロックを取得しようと試みることを可能にされる時間間隔は、約ゼロ秒である。
一部の例において、所与のデータアイテムに関するロックは、単一のロック解除状態及び1又は2以上のロック状態を含む複数の状態を有する可能性がある。一部の例において、1又は2以上のロック状態は、排他的書き込みロック状態及び非排他的複数読み取りロック状態を含む。
一部の例において、分散型データベースシステム上で実行されているトランザクションは、非同期に実行されるトランザクションである。一部の例において、データベースは、インメモリデータベースである。
上の発明の概要の節において説明された特徴を含む本明細書において説明されたさまざまな特徴を含むさまざまなその他の代替的な技術が、使用され得る。
5 実施形態
上述のデッドロック回避手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される(implemented)可能性があり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステム上で実行される1又は2以上のコンピュータプログラムのプロシージャを含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
ソフトウェアは、ある期間(例えば、ダイナミックRAMなどのダイナミックメモリデバイスのリフレッシュ周期の間の時間)媒体の物理特性(例えば、表面ピット及びランド、磁区、又は電荷)を使用して、揮発性若しくは不揮発性ストレージ媒体又は任意のその他の非一時的媒体に具現化されるなど、非一時的形態で記憶され得る。命令をロードするのに備えて、ソフトウェアは、CD−ROM又は(例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体上に提供される可能性があり、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝搬信号に符号化される)可能性がある。処理の一部又はすべては、専用のコンピュータ上で、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを使用して実施される可能性がある。処理は、ソフトウェアによって規定された計算の異なる部分が異なるコンピューティング要素によって実施される分散された方法で履行される(implemented)可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実施するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセスされ得るストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの1又は2以上を実施するために特定の予め定義された方法でコンピュータを動作させる。
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって画定される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実施される可能性がある。

Claims (50)

  1. 複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための方法であって、
    前記分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶するステップであって、前記データアイテムが、順序付け規則によって全順序的であり、前記プロセスの少なくとも一部が、異なる処理モジュール上でランされている、前記記憶するステップと、
    前記複数のプロセスのうちの2以上を使用して各プロセスの自身に割り当てられたトランザクションを処理するステップであって、前記複数のプロセスのうちの前記2以上のうちの1つを使用してトランザクションを処理することが、
    前記データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、前記要求が第1の順序である、前記受信すること、
    前記データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、前記ロックを前記第1の順序で順番に取得すること、
    前記ロックのいずれかが前記第1の時間間隔以内に取得されない場合に、前記ロックのうちの少なくとも2つに関して前記順序付け規則に合致する第2の順序を決定すること、及び
    データアイテムに対するロックを前記第2の順序で順番に取得することを含む、処理されている前記トランザクションを再始動することを含む、前記処理するステップとを含む、前記方法。
  2. 処理されているトランザクションを再始動することが、前記トランザクションをロールバックし、データアイテムに対する前記トランザクションを処理するために取得したすべての既存のロックを解放することを含む請求項1に記載の方法。
  3. 第2の順序が、少なくとも、ロックが第1の時間間隔以内に取得されたデータアイテムに関して順序付け規則に合致する請求項1又は2に記載の方法。
  4. 処理するステップが、順序付け規則に基づく第1の時間遅延以内にロックが取得されたデータアイテムの位置を特定する情報を記憶することをさらに含み、第2の順序を決定することが、前記第1の時間遅延以内にロックが取得された前記データアイテムの前記位置を特定する記憶された情報に少なくとも部分的に基づいて前記第2の順序を決定することを含む請求項1〜3のいずれかに記載の方法。
  5. 第2の順序を決定することが、前記トランザクションが処理する前記データアイテムに前記順序付け規則に従って割り振られた番号に基づいて、ロックを取得するための動作順のリストをソートすることを含む請求項1〜4のいずれかに記載の方法。
  6. 処理するステップが、第1の順序が順序付け規則に合致するか否かを決定し、前記第1の順序が前記順序付け規則に合致する場合に、ロックが第1の時間間隔以内に取得されなかったすべてのデータアイテムに対するロックを前記第1の時間間隔よりも長く待つことをさらに含む請求項1〜5のいずれかに記載の方法。
  7. 処理するステップが、1組の要求を受信したプロセスをロールバックするかどうか決定するために、複数のプロセスのうちの2以上のうちのその他のプロセスの優先度に対する、前記1組の要求を受信したプロセスの優先度を決定することをさらに含む請求項1〜6のいずれかに記載の方法。
  8. 処理されているトランザクションを再始動することが、優先度を決定した後に実施される請求項7に記載の方法。
  9. 処理されているトランザクションを再始動することが、1組の要求によってアクセスが要求された少なくとも1つのデータアイテムに対するロックの状態が解放された状態であると決定した後に実施される請求項1〜8のいずれかに記載の方法。
  10. 処理するステップが、第1の順序が順序付け規則に合致するか否かを決定することをさらに含み、処理されているトランザクションを再始動することが、第1の順序が前記順序付け規則に合致しないと決定してから第2の時間間隔の後に実施される請求項1〜5のいずれかに記載の方法。
  11. 第2の時間間隔が、第1の時間間隔よりも長い請求項10に記載の方法。
  12. 第1の時間間隔が、1秒未満である請求項1〜11のいずれかに記載の方法。
  13. 処理するステップが、処理されているトランザクションがコミットされるか、中止されるか、又は再始動されるまでデータアイテムに対して取得されたすべてのロックを保持することと、処理されている前記トランザクションがコミットされるか、中止されるか、又は再始動されるときに前記データアイテムに対する前記ロックを解放することとをさらに含む請求項1〜12のいずれかに記載の方法。
  14. データアイテムに対するロックが、単一のロック解除状態及び1又は2以上のロック状態を含む少なくとも2つの状態を含む請求項1〜13のいずれかに記載の方法。
  15. データアイテムに対するロックを取得することが、前記データアイテムに関連するロックの状態をロック状態のうちの1つに変更することを含む請求項14に記載の方法。
  16. データアイテムに対するロックを解放することが、前記データアイテムに関連するロックの状態をロック状態のうちの1つからロック解除状態に変更することを含む請求項14又は15に記載の方法。
  17. データアイテムに対するロックが、ロックされたデータアイテムへの完全なアクセスを単一のプロセスにのみ許可する少なくとも1つの排他的ロック状態を含む請求項14〜16のいずれかに記載の方法。
  18. データアイテムに対するロックが、ロックされたデータアイテムへの読み取りのみのアクセスを複数のプロセスに許可する少なくとも1つの共有ロック状態を含む請求項14〜17のいずれかに記載の方法。
  19. 複数のプロセスの少なくとも一部が、互いに非同期にランされている請求項1〜18のいずれかに記載の方法。
  20. トランザクションが、データベーストランザクションを含み、データアイテムが、データベースのレコードである請求項1〜19のいずれかに記載の方法。
  21. データベースが、インメモリデータベースである請求項20に記載の方法。
  22. データストレージシステムが、データベースの複数のノードに分散される請求項20又は21に記載の方法。
  23. 複数のプロセスのうちの2以上の少なくとも一部が、処理モジュールのうちの異なる処理モジュール上でランされている請求項1〜22のいずれかに記載の方法。
  24. 1又は2以上のコンピュータによって実行されるときに、複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための動作を1又は2以上のコンピュータに実施させる命令を記憶するコンピュータ可読ストレージ媒体であって、前記動作が、
    前記分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶する動作であって、前記データアイテムが、順序付け規則によって全順序的であり、前記プロセスの少なくとも一部が、異なる処理モジュール上でランされている、前記記憶する動作と、
    前記複数のプロセスのうちの2以上を使用して各プロセスの自身に割り当てられたトランザクションを処理する動作であって、前記複数のプロセスのうちの前記2以上のうちの1つを使用してトランザクションを処理することが、
    前記データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、前記要求が第1の順序である、前記受信すること、
    前記データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、前記ロックを前記第1の順序で順番に取得すること、
    前記ロックのいずれかが前記第1の時間間隔以内に取得されない場合に、前記ロックのうちの少なくとも2つに関して前記順序付け規則に合致する第2の順序を決定すること、及び
    データアイテムに対するロックを前記第2の順序で順番に取得することを含む、処理されている前記トランザクションを再始動することを含む、前記処理する動作とを含む、前記コンピュータ可読ストレージ媒体。
  25. トランザクションを処理するための分散型コンピューティングシステムであって、
    複数の処理モジュールと、
    前記分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能であり、データアイテムを記憶するように構成されたデータストレージシステムであって、前記データアイテムが、順序付け規則によって全順序的であり、前記プロセスの少なくとも一部が、異なる処理モジュール上でランされている、前記データストレージシステムとを含み、
    前記複数のプロセスのうちの2以上が、各プロセスの自身に割り当てられたトランザクションを処理するように構成され、前記複数のプロセスのうちの前記2以上のうちの1つを使用してトランザクションを処理することが、
    前記データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、前記要求が第1の順序である、前記受信すること、
    前記データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、前記ロックを前記第1の順序で順番に取得すること、
    前記ロックのいずれかが前記第1の時間間隔以内に取得されない場合に、前記ロックのうちの少なくとも2つに関して前記順序付け規則に合致する第2の順序を決定すること、及び
    データアイテムに対するロックを前記第2の順序で順番に取得することを含む、処理されている前記トランザクションを再始動することを含む、前記分散型コンピューティングシステム。
  26. 複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための方法であって、
    前記分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶するステップであって、前記データアイテムが、順序付け規則によって全順序的であり、前記プロセスの少なくとも一部が、異なる処理モジュール上でランされている、前記記憶するステップと、
    前記複数のプロセスのうちの2以上を使用して各プロセスの自身に割り当てられたトランザクションを処理するステップであって、前記複数のプロセスのうちの前記2以上のうちの1つを使用してトランザクションを処理することが、
    前記データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、前記要求が第1の順序である、前記受信すること、
    前記データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、前記ロックを前記第1の順序で順番に取得すること、
    前記ロックのいずれかが前記第1の時間間隔以内に取得されない場合に、前記第1の順序が前記順序付け規則に合致するか否かを決定すること、及び
    前記第1の順序が前記順序付け規則に合致しない場合に、処理されている前記トランザクションを再始動することを含む、前記処理するステップとを含む、前記方法。
  27. 処理されているトランザクションを再始動することが、前記トランザクションをロールバックし、データアイテムに対する前記トランザクションを処理するために取得したすべての既存のロックを解放し、第1の順序とは異なる第2の順序で順番にデータアイテムに対するロックを取得することを含む請求項26に記載の方法。
  28. 第2の順序が、少なくとも、ロックが第1の時間間隔以内に取得されたデータアイテムに関して順序付け規則に合致する請求項27に記載の方法。
  29. 処理するステップが、順序付け規則に基づく第1の時間遅延以内にロックが取得されたデータアイテムの位置を特定する情報を記憶することをさらに含み、第2の順序を決定することが、前記第1の時間遅延以内にロックが取得された前記データアイテムの前記位置を特定する記憶された情報に少なくとも部分的に基づいて前記第2の順序を決定することを含請求項27〜28のいずれかに記載の方法。
  30. 第2の順序が、前記トランザクションが処理する前記データアイテムに前記順序付け規則に従って割り振られた番号に基づいて、ロックを取得するための動作順のリストをソートすることに基づいて決定される請求項27〜29のいずれかに記載の方法。
  31. 処理するステップが、第1の順序が順序付け規則に合致する場合に、ロックが第1の時間間隔以内に取得されなかったすべてのデータアイテムに対するロックを前記第1の時間間隔よりも長く待つことをさらに含む請求項26〜30のいずれかに記載の方法。
  32. 処理するステップが、1組の要求を受信したプロセスをロールバックするかどうか決定するために、複数のプロセスのうちの2以上のうちのその他のプロセスの優先度に対する、前記1組の要求を受信したプロセスの優先度を決定することをさらに含む請求項26〜31のいずれかに記載の方法。
  33. 第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することが、優先度を決定した後に実施される請求項32に記載の方法。
  34. 第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することが、1組の要求によってアクセスが要求された少なくとも1つのデータアイテムに対するロックの状態が解放された状態であると決定した後に実施される請求項26〜33のいずれかに記載の方法。
  35. 第1の順序が順序付け規則に合致しない場合に、処理されているトランザクションを再始動することが、前記第1の順序が前記順序付け規則に合致しないと決定してから第2の時間間隔の後に実施される請求項26〜33のいずれかに記載の方法。
  36. 第2の時間間隔が、第1の時間間隔よりも長い請求項35に記載の方法。
  37. 第1の時間間隔が、1秒未満である請求項26〜36のいずれかに記載の方法。
  38. 処理するステップが、処理されているトランザクションがコミットされるか、中止されるか、又は再始動されるまでデータアイテムに対して取得されたすべてのロックを保持することと、処理されている前記トランザクションがコミットされるか、中止されるか、又は再始動されるときに前記データアイテムに対する前記ロックを解放することとをさらに含む請求項26〜37のいずれかに記載の方法。
  39. データアイテムに対するロックが、単一のロック解除状態及び1又は2以上のロック状態を含む少なくとも2つの状態を含む請求項26〜38のいずれかに記載の方法。
  40. データアイテムに対するロックを取得することが、前記データアイテムに関連するロックの状態をロック状態のうちの1つに変更することを含む請求項39に記載の方法。
  41. データアイテムに対するロックを解放することが、前記データアイテムに関連するロックの状態をロック状態のうちの1つからロック解除状態に変更することを含む請求項39又は40に記載の方法。
  42. データアイテムに対するロックが、ロックされたデータアイテムへの完全なアクセスを単一のプロセスにのみ許可する少なくとも1つの排他的ロック状態を含む請求項39〜41のいずれかに記載の方法。
  43. データアイテムに対するロックが、ロックされたデータアイテムへの読み取りのみのアクセスを複数のプロセスに許可する少なくとも1つの共有ロック状態を含む請求項39〜42のいずれかに記載の方法。
  44. 複数のプロセスの少なくとも一部が、互いに非同期にランされている請求項26〜43のいずれかに記載の方法。
  45. トランザクションが、データベーストランザクションを含み、データアイテムが、データベースのレコードである請求項26〜44のいずれかに記載の方法。
  46. データベースが、インメモリデータベースである請求項45に記載の方法。
  47. データストレージシステムが、データベースの複数のノードに分散される請求項45又は46に記載の方法。
  48. 複数のプロセスのうちの2以上の少なくとも一部が、処理モジュールのうちの異なる処理モジュール上で施行されている請求項26〜47のいずれかに記載の方法。
  49. 1又は2以上のコンピュータによって実行されるときに、複数の処理モジュールを含む分散型コンピューティングシステムにおいてトランザクションを処理するための動作を1又は2以上のコンピュータに実施させる命令を記憶するコンピュータ可読ストレージ媒体であって、前記動作が、
    前記分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能なデータストレージシステムにデータアイテムを記憶する動作であって、前記データアイテムが、順序付け規則によって全順序的であり、前記プロセスの少なくとも一部が、異なる処理モジュール上でランされている、前記記憶する動作と、
    前記複数のプロセスのうちの2以上を使用して各プロセスの自身に割り当てられたトランザクションを処理する動作であって、前記複数のプロセスのうちの前記2以上のうちの1つを使用してトランザクションを処理することが、
    前記データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、前記要求が第1の順序である、前記受信すること、
    前記データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、前記ロックを前記第1の順序で順番に取得すること、
    前記ロックのいずれかが前記第1の時間間隔以内に取得されない場合に、前記第1の順序が前記順序付け規則に合致するか否かを決定すること、及び
    前記第1の順序が前記順序付け規則に合致しない場合に、処理されている前記トランザクションを再始動することを含む、前記処理する動作とを含む、前記コンピュータ可読ストレージ媒体。
  50. トランザクションを処理するための分散型コンピューティングシステムであって、
    複数の処理モジュールと、
    前記分散型コンピューティングシステムにおいてランされる複数のプロセスがアクセス可能であり、データアイテムを記憶するように構成されたデータストレージシステムであって、前記データアイテムが、順序付け規則によって全順序的であり、前記プロセスの少なくとも一部が、異なる処理モジュール上でランされている、前記データストレージシステムとを含み、
    前記複数のプロセスのうちの2以上が、各プロセスの自身に割り当てられたトランザクションを処理するように構成され、前記複数のプロセスのうちの前記2以上のうちの1つを使用してトランザクションを処理することが、
    前記データストレージシステムに記憶されたデータアイテムにアクセスするための1組の要求を受信することであって、前記要求が第1の順序である、前記受信すること、
    前記データアイテムに対するロックの各々が第1の時間間隔以内に取得される場合に、前記ロックを前記第1の順序で順番に取得すること、
    前記ロックのいずれかが前記第1の時間間隔以内に取得されない場合に、前記第1の順序が前記順序付け規則に合致するか否かを決定すること、及び
    前記第1の順序が前記順序付け規則に合致しない場合に、処理されている前記トランザクションを再始動することを含む、前記分散型コンピューティングシステム。
JP2017551177A 2015-04-01 2016-03-22 分散型コンピューティングシステムにおけるデータベーストランザクションの処理 Active JP6724039B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562141388P 2015-04-01 2015-04-01
US62/141,388 2015-04-01
PCT/US2016/023554 WO2016160416A1 (en) 2015-04-01 2016-03-22 Processing database transactions in a distributed computing system

Publications (2)

Publication Number Publication Date
JP2018511886A JP2018511886A (ja) 2018-04-26
JP6724039B2 true JP6724039B2 (ja) 2020-07-15

Family

ID=55750446

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017551177A Active JP6724039B2 (ja) 2015-04-01 2016-03-22 分散型コンピューティングシステムにおけるデータベーストランザクションの処理

Country Status (10)

Country Link
US (1) US10140329B2 (ja)
EP (1) EP3278239B1 (ja)
JP (1) JP6724039B2 (ja)
KR (1) KR102103063B1 (ja)
CN (1) CN108337911B (ja)
AU (1) AU2016244128B2 (ja)
CA (1) CA2981476C (ja)
HK (1) HK1257454A1 (ja)
SG (1) SG11201707983QA (ja)
WO (1) WO2016160416A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
AU2017357770B2 (en) 2016-11-10 2020-12-24 Hedera Hashgraph, Llc Methods and apparatus for a distributed database including anonymous entries
CN106775974B (zh) * 2016-12-07 2019-12-10 国云科技股份有限公司 一种分布式优先级排队锁的实现方法
KR102454779B1 (ko) 2016-12-19 2022-10-13 스월즈, 인크. 이벤트들의 삭제를 가능하게 하는 분산 데이터베이스를 위한 방법 및 장치
US10614039B2 (en) * 2017-04-04 2020-04-07 International Business Machines Corporation Testing of lock managers in computing environments
US11334678B2 (en) * 2017-07-06 2022-05-17 Chromaway Ab Method and system for a distributed computing system
AU2018300147B2 (en) 2017-07-11 2020-07-16 Hedera Hashgraph, Llc Methods and apparatus for efficiently implementing a distributed database within a network
KR102452425B1 (ko) 2017-11-01 2022-10-06 스월즈, 인크. 고속 카피가능 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
US11182379B2 (en) * 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
CN109471735A (zh) * 2018-11-14 2019-03-15 常熟理工学院 分布式集中控制系统的现场数据信息安全控制方法及系统
SG11202109729SA (en) 2019-05-22 2021-10-28 Swirlds Inc Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database
CN110765143B (zh) * 2019-10-10 2022-08-02 腾讯科技(深圳)有限公司 数据处理方法、装置、服务器和存储介质
US11409559B2 (en) * 2019-10-24 2022-08-09 EMC IP Holding Company, LLC System and method for weak lock allowing force preemption by high priority thread
US11941611B2 (en) * 2019-12-11 2024-03-26 Intuit Inc. Shareable and nested transactions on hash chains
US11698898B2 (en) * 2020-11-04 2023-07-11 Salesforce, Inc. Lock wait tracing
US11822538B2 (en) 2020-11-05 2023-11-21 Oracle International Corporation Systems and methods of transaction identification generation for transaction-based environment
CN113111099B (zh) * 2021-06-15 2021-08-24 蚂蚁金服(杭州)网络技术有限公司 一种环路检测方法、装置、电子设备与存储介质
CN114546705B (zh) * 2022-02-28 2023-02-07 北京百度网讯科技有限公司 操作响应方法、操作响应装置、电子设备以及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0679284B2 (ja) * 1986-04-02 1994-10-05 株式会社日立製作所 分散デ−タベ−スシステムのデツドロツク防止方式
JP2850863B2 (ja) * 1996-06-29 1999-01-27 日本電気株式会社 排他制御装置
US7337290B2 (en) * 2003-04-03 2008-02-26 Oracle International Corporation Deadlock resolution through lock requeing
KR100611739B1 (ko) 2003-12-24 2006-08-11 한국전자통신연구원 다중 프로세서 환경의 저널링 파일 시스템에서 병렬 자원할당 및 반납 방법
CN101183377B (zh) * 2007-12-10 2010-09-08 华中科技大学 一种基于消息中间件的高可用性数据库集群系统
CN101425070B (zh) * 2008-08-11 2011-04-20 深圳市金蝶中间件有限公司 一种死锁定位的方法、死锁定位装置和数据系统
CN101727629A (zh) * 2008-10-10 2010-06-09 北京资和信担保有限公司 自组织分布式金融业务系统
CN101576830B (zh) 2009-06-04 2011-11-30 中兴通讯股份有限公司 数据库事务锁机制的死锁检测方法及装置
JP5352421B2 (ja) * 2009-10-30 2013-11-27 株式会社エヌ・ティ・ティ・データ データアクセス装置、データアクセス方法およびデータアクセスプログラム
CN103136308A (zh) * 2011-11-23 2013-06-05 英业达股份有限公司 应用系统数据库更新的方法和系统
US9208190B2 (en) 2012-05-03 2015-12-08 Red Hat, Inc. Lock reordering for optimistic locking of data on a single node to avoid transaction deadlock
US9104714B2 (en) * 2012-05-31 2015-08-11 Red Hat, Inc. Incremental optimistic locking of data distributed on multiple nodes to avoid transaction deadlock
CN102831156B (zh) * 2012-06-29 2014-12-31 浙江大学 一种云计算平台上的分布式事务处理方法
KR101296778B1 (ko) 2012-09-18 2013-08-14 (주)카디날정보기술 NoSQL 데이터베이스를 위한 결과적 트랜잭션 처리 방법
US20140136571A1 (en) * 2012-11-12 2014-05-15 Ecole Polytechnique Federale De Lausanne (Epfl) System and Method for Optimizing Data Storage in a Distributed Data Storage Environment
US9367346B2 (en) 2013-02-20 2016-06-14 Nec Corporation Accelerating distributed transactions on key-value stores through dynamic lock localization
US9652491B2 (en) * 2013-04-15 2017-05-16 International Business Machines Corporation Out-of-order execution of strictly-ordered transactional workloads
CN104252545B (zh) * 2014-10-11 2017-05-31 南京国电南自维美德自动化有限公司 一种实时内存数据库的对象类型属性类型锁的实现方法
CN104317944B (zh) * 2014-10-31 2018-07-06 上海实方软件有限公司 一种基于公式的时间戳动态调整并发控制方法

Also Published As

Publication number Publication date
CA2981476A1 (en) 2016-10-06
JP2018511886A (ja) 2018-04-26
KR102103063B1 (ko) 2020-05-29
HK1257454A1 (zh) 2019-10-18
EP3278239B1 (en) 2019-08-14
WO2016160416A1 (en) 2016-10-06
CA2981476C (en) 2020-03-24
CN108337911A (zh) 2018-07-27
EP3278239A1 (en) 2018-02-07
AU2016244128A1 (en) 2017-10-19
AU2016244128B2 (en) 2018-08-30
SG11201707983QA (en) 2017-10-30
US20160292213A1 (en) 2016-10-06
CN108337911B (zh) 2022-05-24
US10140329B2 (en) 2018-11-27
KR20170132873A (ko) 2017-12-04

Similar Documents

Publication Publication Date Title
JP6724039B2 (ja) 分散型コンピューティングシステムにおけるデータベーストランザクションの処理
US11003689B2 (en) Distributed database transaction protocol
CN107977376B (zh) 分布式数据库系统及事务处理方法
CN108027829B (zh) 用于管理数据库事务的方法、设备和计算机可读介质
Kim et al. Ermia: Fast memory-optimized database system for heterogeneous workloads
US9208191B2 (en) Lock-free, scalable read access to shared data structures
Thomson et al. The case for determinism in database systems
US8713046B2 (en) Snapshot isolation support for distributed query processing in a shared disk database cluster
US9576038B1 (en) Consistent query of local indexes
Mahmoud et al. Maat: Effective and scalable coordination of distributed transactions in the cloud
US20180074919A1 (en) Hybrid Database Concurrent Transaction Control
US20180210914A1 (en) Consistent query of local indexes
Levandoski et al. Multi-version range concurrency control in deuteronomy
US11080261B2 (en) Hybrid concurrency control
Padhye et al. Scalable transaction management with snapshot isolation for NoSQL data storage systems
Padhye et al. Scalable transaction management with snapshot isolation on cloud data management systems
JP2022503497A (ja) バージョンベースのテーブルロック
JP6477169B2 (ja) データベースの処理制御方法、処理制御プロラム及びデータベースサーバ
Haroon Challenges of concurrency control in object oriented distributed database systems
Eldeeb et al. Transactions for Distributed Actors in the Cloud
Srivastava et al. Transaction processing in replicated data in the DDBMS
WO2023235054A1 (en) Method and system for lock after qualification for update queries
Niles Jr Improving performance of highly-programmable concurrent applications by leveraging parallel nesting and weaker isolation levels
Gahlyan et al. Waiting Algorithm for Concurrency Control in Distributed Databases
JPS6394343A (ja) フアイル制御システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190716

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200624

R150 Certificate of patent or registration of utility model

Ref document number: 6724039

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