JPH0628292A - トランザクション処理を制御するためのネットワーク内の同期点メッセージの数を低減する方法および装置、ならびにネットワークを流れるプロトコルメッセージの数を低減する方法 - Google Patents
トランザクション処理を制御するためのネットワーク内の同期点メッセージの数を低減する方法および装置、ならびにネットワークを流れるプロトコルメッセージの数を低減する方法Info
- Publication number
- JPH0628292A JPH0628292A JP4081824A JP8182492A JPH0628292A JP H0628292 A JPH0628292 A JP H0628292A JP 4081824 A JP4081824 A JP 4081824A JP 8182492 A JP8182492 A JP 8182492A JP H0628292 A JPH0628292 A JP H0628292A
- Authority
- JP
- Japan
- Prior art keywords
- node
- transaction
- message
- exclusion
- excluded
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Small-Scale Networks (AREA)
Abstract
(57)【要約】 (修正有)
【目的】 対応するトランザクションに参加していない
ノードを除外することによって同期点動作に要するメッ
セージ数を低減する。 【構成】 分散形トランザクション処理ネットワークで
は、そのネットワークのトランザクションをコミットま
たはバックアウトするために2段同期点プロトコルが使
用されている。トランザクションxに関する同期点動作
の開始に応答して、各ノードは、自己の相手ノードのそ
れぞれが、その相手がトランザクションx−1の同期点
動作から除外されていたということをトランザクション
x−1の同期点動作時に表明したかどうかを判定する。
相手ノードが除外され得たと表明した場合、現ノード
は、その相手ノードが現トランザクションxにおいて現
ノードによって含まれていたかを判定する。相手ノード
が現トランザクションxにおいて含まれていなかった場
合、現ノードは現同期点動作からその相手ノードを除外
する。
ノードを除外することによって同期点動作に要するメッ
セージ数を低減する。 【構成】 分散形トランザクション処理ネットワークで
は、そのネットワークのトランザクションをコミットま
たはバックアウトするために2段同期点プロトコルが使
用されている。トランザクションxに関する同期点動作
の開始に応答して、各ノードは、自己の相手ノードのそ
れぞれが、その相手がトランザクションx−1の同期点
動作から除外されていたということをトランザクション
x−1の同期点動作時に表明したかどうかを判定する。
相手ノードが除外され得たと表明した場合、現ノード
は、その相手ノードが現トランザクションxにおいて現
ノードによって含まれていたかを判定する。相手ノード
が現トランザクションxにおいて含まれていなかった場
合、現ノードは現同期点動作からその相手ノードを除外
する。
Description
【0001】
【産業上の利用分野】本発明は、データベース・トラン
ザクション処理システム、および、データベース一貫性
の維持を保証するために2段コミット/バックアウトプ
ロトコルを使用する分散形システムに関する。より詳し
くは、本発明は、システム全体に伝播しなければならな
いメッセージ数を減らし、かつ、資源が他の動作のため
にロックされる時間を短縮するための技法として、コミ
ット/バックアウト動作から除外し得る分散形システム
内の一定のノードを判定する方法に関する。
ザクション処理システム、および、データベース一貫性
の維持を保証するために2段コミット/バックアウトプ
ロトコルを使用する分散形システムに関する。より詳し
くは、本発明は、システム全体に伝播しなければならな
いメッセージ数を減らし、かつ、資源が他の動作のため
にロックされる時間を短縮するための技法として、コミ
ット/バックアウト動作から除外し得る分散形システム
内の一定のノードを判定する方法に関する。
【0002】
【従来の技術およびその課題】従来技術の2段コミット
プロトコルメッセージは、分散形トランザクションシス
テムのノード間で動作を制御する。これらのプロトコル
は、故障に際してもデータベース一貫性が維持されるよ
うに、すなわち、トランザクションが全ノードでコミッ
トまたはバックアウトされるように設計されている。こ
れを実現するために、従来のシステムは、すべてのトラ
ンザクションに関してトランザクションシステムの全ノ
ードにメッセージを渡す。これは、所与のトランザクシ
ョンに関して所与のノードで生じているアクティビティ
とは関わりなく行われる。その結果、プロトコルとの適
合を保証するためにすべてのトランザクションに関して
ノード間で多数のメッセージが渡されるということが生
じている。これはさらに、ネットワークの時間および資
源を消費し、ネットワークが取り扱うことができる全ト
ランザクション能力を低下させる。従って、ネットワー
クトラフィックを低減することが妥当であり、またそれ
により資源がロック状態にある時間を短縮することが妥
当である場合に、システム内の一定のノードを同期点
(コミットまたはバックアウト)から「除外」すること
ができれば望ましいであろう。
プロトコルメッセージは、分散形トランザクションシス
テムのノード間で動作を制御する。これらのプロトコル
は、故障に際してもデータベース一貫性が維持されるよ
うに、すなわち、トランザクションが全ノードでコミッ
トまたはバックアウトされるように設計されている。こ
れを実現するために、従来のシステムは、すべてのトラ
ンザクションに関してトランザクションシステムの全ノ
ードにメッセージを渡す。これは、所与のトランザクシ
ョンに関して所与のノードで生じているアクティビティ
とは関わりなく行われる。その結果、プロトコルとの適
合を保証するためにすべてのトランザクションに関して
ノード間で多数のメッセージが渡されるということが生
じている。これはさらに、ネットワークの時間および資
源を消費し、ネットワークが取り扱うことができる全ト
ランザクション能力を低下させる。従って、ネットワー
クトラフィックを低減することが妥当であり、またそれ
により資源がロック状態にある時間を短縮することが妥
当である場合に、システム内の一定のノードを同期点
(コミットまたはバックアウト)から「除外」すること
ができれば望ましいであろう。
【0003】OSI(開放型システム間相互接続)トラ
フィック処理規格に対する一提案は、ある同期点動作
(コミットまたはバックアウト)の開始時に、ノードに
対してそのノードが次の動作から除外されることを一方
的に通知することにより、そのノードを除外することが
できる。これが行われると、除外されるそのノードは、
異なるトランザクションなどの何らかの独立した作業を
開始することが許されない。この方式は、ネットワーク
メッセージの減少には役立つが、いくつかの不利益があ
る。第1に、コミットまたはバックアウト動作のイニシ
エータ(除外されるノードの親)は、その相手ノードに
相談することなく相手ノードに一方的な制限を課すこと
になる。しかし、相手ノードは、独立動作を開始する必
要があり、同期動作に包含され続けなければならないか
もしれない。こうしたことは、例えば、クライアント−
サーバネットワークではなく、ピアーツーピアーネット
ワークで生じるかもしれない。除外の決定は、次の同期
動作に影響を及ぼすある同期動作の開始時に、その子ノ
ードの意見を尋ねることなく断定的に行われる。従っ
て、相手を除外する決定は、次のトランザクションで処
理されるデータにもとづくことはできない。この要求条
件は、相手を除外することが実際的である例の数を厳し
く制約する。最終的な除外の決定に達する上で両者のノ
ードにある程度の柔軟性を許すことが望ましいであろ
う。
フィック処理規格に対する一提案は、ある同期点動作
(コミットまたはバックアウト)の開始時に、ノードに
対してそのノードが次の動作から除外されることを一方
的に通知することにより、そのノードを除外することが
できる。これが行われると、除外されるそのノードは、
異なるトランザクションなどの何らかの独立した作業を
開始することが許されない。この方式は、ネットワーク
メッセージの減少には役立つが、いくつかの不利益があ
る。第1に、コミットまたはバックアウト動作のイニシ
エータ(除外されるノードの親)は、その相手ノードに
相談することなく相手ノードに一方的な制限を課すこと
になる。しかし、相手ノードは、独立動作を開始する必
要があり、同期動作に包含され続けなければならないか
もしれない。こうしたことは、例えば、クライアント−
サーバネットワークではなく、ピアーツーピアーネット
ワークで生じるかもしれない。除外の決定は、次の同期
動作に影響を及ぼすある同期動作の開始時に、その子ノ
ードの意見を尋ねることなく断定的に行われる。従っ
て、相手を除外する決定は、次のトランザクションで処
理されるデータにもとづくことはできない。この要求条
件は、相手を除外することが実際的である例の数を厳し
く制約する。最終的な除外の決定に達する上で両者のノ
ードにある程度の柔軟性を許すことが望ましいであろ
う。
【0004】上述の問題を軽減するために、他のOSI
の提案は、除外されるノードまたはサブツリーが、その
システムの除外サブツリーの子ノードに伝播される各自
の一意の作業単位(トランザクション)識別子を生成す
ることにより、独立した作業を開始できるようにすると
いうものである。親ノードが独立トランザクションを開
始した子ノードを含めるように決定した場合、両者のト
ランザクションはバックアウトされ、それにより過剰作
業を失わせることになる。これは明らかに、それほど望
ましい解決策ではない。
の提案は、除外されるノードまたはサブツリーが、その
システムの除外サブツリーの子ノードに伝播される各自
の一意の作業単位(トランザクション)識別子を生成す
ることにより、独立した作業を開始できるようにすると
いうものである。親ノードが独立トランザクションを開
始した子ノードを含めるように決定した場合、両者のト
ランザクションはバックアウトされ、それにより過剰作
業を失わせることになる。これは明らかに、それほど望
ましい解決策ではない。
【0005】上述に関するOSI規格は、以下に記載さ
れている。 ISO/IEC JTC 1/SC 21 N2608 Information Processing S
ystems-Open Systems Interconnect-Distributed Trans
actionProcessing Part 1:Transaction Proceasing Mod
el ISO/IEC JTC 1/SC 21 N2607Information Processing
Systems-Open Systems Interconnect-DistributedTran
saction Processing Part 2: ServiceDefinition;ISO/I
EC JTC 1/SC 21 N2608 Information Processing System
s-Open Systems Interconnect-Distributed Transactio
nProcessing Part 3:Transaction Processing Protocol
Specification 分散形データベースの動作を制御するための別のプロト
コルセットは、R*プロトコルである。R*プロトコル
は、“The R* Distributed Database Management Sys
tem ”(1986,ACM 03625915/86/1200-0378)に説明されて
いる。R*プロトコルは、常にエージェントノードが次
のトランザクションから除外されるように選ばれるもの
であることを前提とし、そのノードがその許可を受信し
ない限り、独立作業を進めないことになっている。OS
I方式と同様、この解決策は、親ノードの意思を子ノー
ドに課す、クライアント−サーバ関係を前提としてお
り、このことがピアーツーピアーネットワークのような
一部の場合で望ましくなく、不適切であろう。
れている。 ISO/IEC JTC 1/SC 21 N2608 Information Processing S
ystems-Open Systems Interconnect-Distributed Trans
actionProcessing Part 1:Transaction Proceasing Mod
el ISO/IEC JTC 1/SC 21 N2607Information Processing
Systems-Open Systems Interconnect-DistributedTran
saction Processing Part 2: ServiceDefinition;ISO/I
EC JTC 1/SC 21 N2608 Information Processing System
s-Open Systems Interconnect-Distributed Transactio
nProcessing Part 3:Transaction Processing Protocol
Specification 分散形データベースの動作を制御するための別のプロト
コルセットは、R*プロトコルである。R*プロトコル
は、“The R* Distributed Database Management Sys
tem ”(1986,ACM 03625915/86/1200-0378)に説明されて
いる。R*プロトコルは、常にエージェントノードが次
のトランザクションから除外されるように選ばれるもの
であることを前提とし、そのノードがその許可を受信し
ない限り、独立作業を進めないことになっている。OS
I方式と同様、この解決策は、親ノードの意思を子ノー
ドに課す、クライアント−サーバ関係を前提としてお
り、このことがピアーツーピアーネットワークのような
一部の場合で望ましくなく、不適切であろう。
【0006】
【課題を解決するための手段】本発明は、対応するトラ
ンザクションに参加していないノードを除外することに
よって同期点(コミットまたはバックアウト)動作に要
するメッセージ数を低減する方法に関する。分散形トラ
ンザクション処理ネットワークでは、そのネットワーク
のトランザクションをコミットまたはバックアウトする
ために2段同期点プロトコルが使用されている。トラン
ザクションxに関する同期点動作の開始に応答して、各
ノードは、自己の相手ノードのそれぞれが、その相手が
トランザクションx−1の同期点動作から除外され得た
ということをトランザクションx−1の同期点動作時に
表明したかどうかを判定する。相手ノードが除外され得
たと表明した場合、現ノードは、その相手ノードが現ト
ランザクションxにおいて現ノードによって含まれてい
たかを判定する。相手ノードが現トランザクションxに
おいて含まれていなかった場合、現ノードは現同期点動
作からその相手ノードを除外する。
ンザクションに参加していないノードを除外することに
よって同期点(コミットまたはバックアウト)動作に要
するメッセージ数を低減する方法に関する。分散形トラ
ンザクション処理ネットワークでは、そのネットワーク
のトランザクションをコミットまたはバックアウトする
ために2段同期点プロトコルが使用されている。トラン
ザクションxに関する同期点動作の開始に応答して、各
ノードは、自己の相手ノードのそれぞれが、その相手が
トランザクションx−1の同期点動作から除外され得た
ということをトランザクションx−1の同期点動作時に
表明したかどうかを判定する。相手ノードが除外され得
たと表明した場合、現ノードは、その相手ノードが現ト
ランザクションxにおいて現ノードによって含まれてい
たかを判定する。相手ノードが現トランザクションxに
おいて含まれていなかった場合、現ノードは現同期点動
作からその相手ノードを除外する。
【0007】好ましい実施例では、トランザクションx
において、あるノードが、別のノードから作業を実行す
るように求められない限り、次のトランザクションx+
1で何も行わないことを知っている場合、そのノード
は、現トランザクションxのコミット時に自己の親ノー
ドに対して、所望の場合、次のコミット動作から「除
外」されてもよいことを知らせる。この指示により、そ
の子ノードは、親ノードからのメッセージを受信しなけ
れば、トランザクションx+1において作業を独立して
開始しないことになる。従って、親ノードは、そのトラ
ンザクションにおいて子ノードに何らかのメッセージが
送信されたかどうかを単に確認することによって、その
子ノードがいずれかの作業を行っていたかどうかがわか
る。そのノードが除外される場合、そのノード(結果と
して、その各子ノード)には、同期点動作x+1およ
び、あるノードが包含されることを望むまでの以降の全
同期点動作において、同期点メッセージはいっさい渡さ
れない。
において、あるノードが、別のノードから作業を実行す
るように求められない限り、次のトランザクションx+
1で何も行わないことを知っている場合、そのノード
は、現トランザクションxのコミット時に自己の親ノー
ドに対して、所望の場合、次のコミット動作から「除
外」されてもよいことを知らせる。この指示により、そ
の子ノードは、親ノードからのメッセージを受信しなけ
れば、トランザクションx+1において作業を独立して
開始しないことになる。従って、親ノードは、そのトラ
ンザクションにおいて子ノードに何らかのメッセージが
送信されたかどうかを単に確認することによって、その
子ノードがいずれかの作業を行っていたかどうかがわか
る。そのノードが除外される場合、そのノード(結果と
して、その各子ノード)には、同期点動作x+1およ
び、あるノードが包含されることを望むまでの以降の全
同期点動作において、同期点メッセージはいっさい渡さ
れない。
【0008】子ノードは、以下のすべての条件が真であ
る場合にのみ、次の同期点動作から除外されてもよいこ
とを親ノードに知らせる。 1)その子ノードのトランザクションプログラムが、そ
の子ノードの同期点イニシエータ(親ノード)が再び自
己を包含するまで、非活動状態であることを厭わないこ
とを指示した。 2)その子ノードに従属する全部のノード(自己が同期
点イニシエータとして機能する)が、各自も除外されて
もよいことを表明した。 3)半二重の場合、親ノードへの接続が、親ノードが次
のメッセージを送信することが可能な送信状態のままで
ある。
る場合にのみ、次の同期点動作から除外されてもよいこ
とを親ノードに知らせる。 1)その子ノードのトランザクションプログラムが、そ
の子ノードの同期点イニシエータ(親ノード)が再び自
己を包含するまで、非活動状態であることを厭わないこ
とを指示した。 2)その子ノードに従属する全部のノード(自己が同期
点イニシエータとして機能する)が、各自も除外されて
もよいことを表明した。 3)半二重の場合、親ノードへの接続が、親ノードが次
のメッセージを送信することが可能な送信状態のままで
ある。
【0009】本発明の成果により、同期点動作から除外
されるノードは、参加する次の作業単位の指示を受信す
るまで、非活動状態となる。さらに、除外ノードに従属
する全部のノードも、同様に、少なくとも同じ時間だけ
非活動状態となる。子ノードが再びトランザクションに
包含された場合、そのノードは、本発明に完全に従え
ば、自己の下位ノードを包含することも、しないことも
選択できる。
されるノードは、参加する次の作業単位の指示を受信す
るまで、非活動状態となる。さらに、除外ノードに従属
する全部のノードも、同様に、少なくとも同じ時間だけ
非活動状態となる。子ノードが再びトランザクションに
包含された場合、そのノードは、本発明に完全に従え
ば、自己の下位ノードを包含することも、しないことも
選択できる。
【0010】
【実施例】データベースシステムにおける論理作業単位
(LUW)は、通常はデータベースレコードである資源
集合を、論理作業単位が最小単位であるとみなされるよ
うな形で、ある一貫した状態から別の状態を取るように
実行される一連の動作である。論理作業単位において故
障が発生した場合、論理作業単位の一部として生じたそ
の変化は、バックアウトされ、それによって、資源は論
理作業単位の開始時に存在した無矛盾状態に戻ることが
できる。そうでなければ、その変化はシステムの全部の
関係ノードでコミットされる。
(LUW)は、通常はデータベースレコードである資源
集合を、論理作業単位が最小単位であるとみなされるよ
うな形で、ある一貫した状態から別の状態を取るように
実行される一連の動作である。論理作業単位において故
障が発生した場合、論理作業単位の一部として生じたそ
の変化は、バックアウトされ、それによって、資源は論
理作業単位の開始時に存在した無矛盾状態に戻ることが
できる。そうでなければ、その変化はシステムの全部の
関係ノードでコミットされる。
【0011】2段コミットプロトコルは、故障に際して
も、最小単位の一貫性を保証するために使用されてい
る。その基本プロトコルは、J. N. Gray著、“Notes on
Database Operating Systems”(Operating Systems-An
Advanced Cource;Lecture Notes in Computer Science;
Volume 60,Springer-Verlag, 1978)に記載されてい
る。システムズネットワーク体系(SNA)で用いるた
めに、これらのプロトコルの一部の変更方式がIBMの
“LU6.2 Reference: Peer Protocols”(SC31-6808) に
記載されている。他の変更方式は、前述のOSIおよび
R*に関する参考文献に記載されている。
も、最小単位の一貫性を保証するために使用されてい
る。その基本プロトコルは、J. N. Gray著、“Notes on
Database Operating Systems”(Operating Systems-An
Advanced Cource;Lecture Notes in Computer Science;
Volume 60,Springer-Verlag, 1978)に記載されてい
る。システムズネットワーク体系(SNA)で用いるた
めに、これらのプロトコルの一部の変更方式がIBMの
“LU6.2 Reference: Peer Protocols”(SC31-6808) に
記載されている。他の変更方式は、前述のOSIおよび
R*に関する参考文献に記載されている。
【0012】完全を期すために、図1により基本的な2
段同期点プロトコルについて簡単に説明する。完全な説
明については上述の参考文献で言及されている。図1
は、ノード100,102および104から構成される
単純な分散形データベーストランザクションツリーを示
す。ノード100および102は、会話106により接
続されている。ノード102および104は、会話10
8により接続されている。このツリーを割当てツリーと
称する。割当てツリーは、会話が生成された時に確立さ
れる、各ノードにおけるトランザクションプログラム
(TP)中の固定された関係を指す。対照的に、同期点
ツリーは、同期点動作を開始するノードに応じて各トラ
ンザクションについて変化できる。例えば、ノード10
2が現トランザクションについてコミット動作を開始し
た場合、このノードは、ノード100および104を自
己の子ノードとした同期点ツリーの根となる。さらに、
ノード102がコミット動作を開始するとすれば、それ
は、ノード102のトランザクションプログラムが2段
コミット動作を開始するためにコマンドを発したことを
意味する。この時点で、ノード102は、ノード100
および104の両者にPREPARE TO COMM
ITメッセージを送り、それによりコミットイニシエー
タとなる。ノード100および104は、各自の観点か
ら動作が良好に処理されたかを個々に判定し、それぞ
れ、「同意」または「不同意」メッセージとして賛否表
示を返す。通常の場合、ノード100および104の両
者は、ノード102に「同意」メッセージを返す。ノー
ド100および104の両者からの「同意」メッセージ
を受信した後、ノード102はノード100および10
4に「コミット」メッセージを送信し、各ノードで実行
されたデータ修正は永久的となる。ノード100または
104のいずれかから「コミット準備」メッセージに対
して「不同意」メッセージを受信した場合、ノード10
2は、ノード100および104のそれぞれに「バック
アウト」メッセージを送り、各ノードは自己のデータを
現トランザクションの開始時に存在した無矛盾状態に戻
す。この単純な例は、システムが使用する特定の2段コ
ミットプロトコルに応じて多数の変種がある。本発明
は、こうした変種に容易に包含される。
段同期点プロトコルについて簡単に説明する。完全な説
明については上述の参考文献で言及されている。図1
は、ノード100,102および104から構成される
単純な分散形データベーストランザクションツリーを示
す。ノード100および102は、会話106により接
続されている。ノード102および104は、会話10
8により接続されている。このツリーを割当てツリーと
称する。割当てツリーは、会話が生成された時に確立さ
れる、各ノードにおけるトランザクションプログラム
(TP)中の固定された関係を指す。対照的に、同期点
ツリーは、同期点動作を開始するノードに応じて各トラ
ンザクションについて変化できる。例えば、ノード10
2が現トランザクションについてコミット動作を開始し
た場合、このノードは、ノード100および104を自
己の子ノードとした同期点ツリーの根となる。さらに、
ノード102がコミット動作を開始するとすれば、それ
は、ノード102のトランザクションプログラムが2段
コミット動作を開始するためにコマンドを発したことを
意味する。この時点で、ノード102は、ノード100
および104の両者にPREPARE TO COMM
ITメッセージを送り、それによりコミットイニシエー
タとなる。ノード100および104は、各自の観点か
ら動作が良好に処理されたかを個々に判定し、それぞ
れ、「同意」または「不同意」メッセージとして賛否表
示を返す。通常の場合、ノード100および104の両
者は、ノード102に「同意」メッセージを返す。ノー
ド100および104の両者からの「同意」メッセージ
を受信した後、ノード102はノード100および10
4に「コミット」メッセージを送信し、各ノードで実行
されたデータ修正は永久的となる。ノード100または
104のいずれかから「コミット準備」メッセージに対
して「不同意」メッセージを受信した場合、ノード10
2は、ノード100および104のそれぞれに「バック
アウト」メッセージを送り、各ノードは自己のデータを
現トランザクションの開始時に存在した無矛盾状態に戻
す。この単純な例は、システムが使用する特定の2段コ
ミットプロトコルに応じて多数の変種がある。本発明
は、こうした変種に容易に包含される。
【0013】本発明は、IBMのSNA論理単位(L
U)6.2アーキテクチャに関して説明するが、この環
境に限定されるものではないことは明白であろう。LU
6.2では、各同期点動作の終了時に、各ノードは自動
的に自己の論理作業単位識別子(LUWID)を増分さ
せ、新しい作業が存在する場合、新しい作業に自動的に
進む。論理作業単位識別子は、そのネットワークの各ト
ランザクションについて一意である。一意性を保証する
ために、論理作業単位識別子の開始値は、ネットワーク
が図1に示すノード100などの物理ツリーの根によっ
て生成された時に割り当てられる。図2に示すように、
LU6.2の論理作業単位識別子は、初めに論理作業単
位識別子を生成するLUの識別(フィールド200)、
生成LUで一意であるトランザクション例番号(フィー
ルド202)、および、例示的に1で始まり、LUが各
コミットまたはバックアウトの後に加わるごとに1ずつ
自動的に増分されるシーケンス番号(フィールド20
4)の3つの構成要素から成る。これは、連鎖動作と呼
ばれ、ノードが新しいノードおよび関連するトランザク
ション番号の開始を明示的に待っているネットワークで
は存在しない。
U)6.2アーキテクチャに関して説明するが、この環
境に限定されるものではないことは明白であろう。LU
6.2では、各同期点動作の終了時に、各ノードは自動
的に自己の論理作業単位識別子(LUWID)を増分さ
せ、新しい作業が存在する場合、新しい作業に自動的に
進む。論理作業単位識別子は、そのネットワークの各ト
ランザクションについて一意である。一意性を保証する
ために、論理作業単位識別子の開始値は、ネットワーク
が図1に示すノード100などの物理ツリーの根によっ
て生成された時に割り当てられる。図2に示すように、
LU6.2の論理作業単位識別子は、初めに論理作業単
位識別子を生成するLUの識別(フィールド200)、
生成LUで一意であるトランザクション例番号(フィー
ルド202)、および、例示的に1で始まり、LUが各
コミットまたはバックアウトの後に加わるごとに1ずつ
自動的に増分されるシーケンス番号(フィールド20
4)の3つの構成要素から成る。これは、連鎖動作と呼
ばれ、ノードが新しいノードおよび関連するトランザク
ション番号の開始を明示的に待っているネットワークで
は存在しない。
【0014】図3は、ノード300−1〜300−6か
ら成る例示的な物理トランザクションツリーを示す。各
ノードは、同期点マネージャ(SPM) 307、1以
上のトランザクションプログラム(TP)302、デー
タベースなどの資源304、および、トランザクション
プログラムが他のトランザクションプログラムとの通信
を可能にする論理単位(LU)306を含む。図3では
各ノードに1トランザクションプログラムが示されてい
るが、一般に、ノードは、資源トランザクションをもた
らすために論理単位を介して自己自身および他のノード
と全部が会話する多数のトランザクションプログラムを
含むことができると理解すべきである。資源は、局所フ
ァイルおよび装置などの、トランザクションプログラム
により用いられるノードで使用可能ないずれかを含むと
みなしてよい。しかしながら、本開示の目的上、これら
の資源は単にデータベースであるとみなす。
ら成る例示的な物理トランザクションツリーを示す。各
ノードは、同期点マネージャ(SPM) 307、1以
上のトランザクションプログラム(TP)302、デー
タベースなどの資源304、および、トランザクション
プログラムが他のトランザクションプログラムとの通信
を可能にする論理単位(LU)306を含む。図3では
各ノードに1トランザクションプログラムが示されてい
るが、一般に、ノードは、資源トランザクションをもた
らすために論理単位を介して自己自身および他のノード
と全部が会話する多数のトランザクションプログラムを
含むことができると理解すべきである。資源は、局所フ
ァイルおよび装置などの、トランザクションプログラム
により用いられるノードで使用可能ないずれかを含むと
みなしてよい。しかしながら、本開示の目的上、これら
の資源は単にデータベースであるとみなす。
【0015】同期点マネージャおよび論理単位は、局所
トランザクションプログラムが分散形ネットワークに参
加できるようにする動詞を、連係して実行する。あるト
ランザクションプログラムに別のトランザクションプロ
グラムとの間でデータを送受信させるいくつかの動詞が
ある。同期点マネージャは、トランザクションプログラ
ムの要求にもとづいて全ノードでトランザクションをコ
ミットまたはバックアウトするために同期点動詞を実行
する。LU6.2の動詞の詳細な説明については、IB
Mの刊行物“Transaction Programmer’s Reference Ma
nual For LU6.2”(GC30-3084) に言及されている。論理
単位306の詳細な説明については、IBMの刊行物
“Format And Protocol Reference ”(GC30-3269) に言
及されている。これらの両刊行物は、引用によって本明
細書と一体をなす。
トランザクションプログラムが分散形ネットワークに参
加できるようにする動詞を、連係して実行する。あるト
ランザクションプログラムに別のトランザクションプロ
グラムとの間でデータを送受信させるいくつかの動詞が
ある。同期点マネージャは、トランザクションプログラ
ムの要求にもとづいて全ノードでトランザクションをコ
ミットまたはバックアウトするために同期点動詞を実行
する。LU6.2の動詞の詳細な説明については、IB
Mの刊行物“Transaction Programmer’s Reference Ma
nual For LU6.2”(GC30-3084) に言及されている。論理
単位306の詳細な説明については、IBMの刊行物
“Format And Protocol Reference ”(GC30-3269) に言
及されている。これらの両刊行物は、引用によって本明
細書と一体をなす。
【0016】本発明に従えば、図4〜12は、適切なノ
ードが以降の同期点動作から除外されるようにするため
に各ノードの同期点マネージャで実行される方法の各ス
テップを示す。本発明の説明においては、以下の用語を
使用する。同期点イニシエータは、その他の関係ノード
全部でトランザクション(論理作業単位)のコミット動
作を試行する時を決定する、ツリーの特定のノードを指
す。同期点ツリーは、同期点イニシエータノードをコミ
ットツリーの根としてみなした場合に、図1または図3
に示すような物理ツリーから得られる論理ツリーを指
す。特にノードを同期点動作から除外するための規則に
関して、本開示を理解するために、同期点動作イニシエ
ータノードが各トランザクションによって変化し得るこ
とを強調することは有益であろう。同期点ツリーは、子
ノードおよびサブツリーが同期点イニシエータノードの
視野から明白になるように、同期点イニシエータノード
により物理ネットワークを選択することによって想像す
べきである。変化する同期点ツリーのこの概念は、本発
明の理解にとって重要である。なぜなら、そのツリー
が、以下で明らかとなるように、サブツリーが除外され
ると決定された時点で存在していた同期点ツリーがもは
や存在しないとしても、以降の同期点動作において親ノ
ードによって除外される論理サブツリーを決定するから
である。所与のノードの視野から、親ノードは、所与の
ノードとコミットツリーにおいて隣接または上位にある
ノードである。子ノードは、コミットツリーにおける所
与のノードの隣接または下位のノードである。相手ノー
ドは、親ノードまたは子ノードである。従って、図3に
おいて、ノード300−6がコミットツリーを開始した
場合、このノードが同期点イニシエータであり同期点ツ
リーの根ノードである。また、自己の子ノードであるノ
ード300−4の親である。以下に説明するように、こ
の同期点動作において、ノード300−2は、(自己自
身および自己の子ノード300−1および300−3に
表明する)以降の同期点動作から自己が除外され得るこ
とを示した場合、ノード300−1、300−2および
300−3によって形成されたサブツリーは、いずれか
の事象が除外状態を解除するまで、以降の同期点動作か
ら除外され続ける。ついでながら、ノード300−4
(以降除外されるサブツリーをもたらすコミット動作の
時点でノード300−2の親である)だけがサブツリー
の除外状態を知っており、それを管理する。
ードが以降の同期点動作から除外されるようにするため
に各ノードの同期点マネージャで実行される方法の各ス
テップを示す。本発明の説明においては、以下の用語を
使用する。同期点イニシエータは、その他の関係ノード
全部でトランザクション(論理作業単位)のコミット動
作を試行する時を決定する、ツリーの特定のノードを指
す。同期点ツリーは、同期点イニシエータノードをコミ
ットツリーの根としてみなした場合に、図1または図3
に示すような物理ツリーから得られる論理ツリーを指
す。特にノードを同期点動作から除外するための規則に
関して、本開示を理解するために、同期点動作イニシエ
ータノードが各トランザクションによって変化し得るこ
とを強調することは有益であろう。同期点ツリーは、子
ノードおよびサブツリーが同期点イニシエータノードの
視野から明白になるように、同期点イニシエータノード
により物理ネットワークを選択することによって想像す
べきである。変化する同期点ツリーのこの概念は、本発
明の理解にとって重要である。なぜなら、そのツリー
が、以下で明らかとなるように、サブツリーが除外され
ると決定された時点で存在していた同期点ツリーがもは
や存在しないとしても、以降の同期点動作において親ノ
ードによって除外される論理サブツリーを決定するから
である。所与のノードの視野から、親ノードは、所与の
ノードとコミットツリーにおいて隣接または上位にある
ノードである。子ノードは、コミットツリーにおける所
与のノードの隣接または下位のノードである。相手ノー
ドは、親ノードまたは子ノードである。従って、図3に
おいて、ノード300−6がコミットツリーを開始した
場合、このノードが同期点イニシエータであり同期点ツ
リーの根ノードである。また、自己の子ノードであるノ
ード300−4の親である。以下に説明するように、こ
の同期点動作において、ノード300−2は、(自己自
身および自己の子ノード300−1および300−3に
表明する)以降の同期点動作から自己が除外され得るこ
とを示した場合、ノード300−1、300−2および
300−3によって形成されたサブツリーは、いずれか
の事象が除外状態を解除するまで、以降の同期点動作か
ら除外され続ける。ついでながら、ノード300−4
(以降除外されるサブツリーをもたらすコミット動作の
時点でノード300−2の親である)だけがサブツリー
の除外状態を知っており、それを管理する。
【0017】各ノードの各同期点マネージャは、説明す
る適切なステップの実行を可能にする多数の例示的な変
数を維持する。これらの例示的な変数には以下のものが
ある。OK_LO_PARTNER−相手当たり1論理
変数。この変数は、相手ノードがそのノードによる次の
同期点動作(コミットまたはバックアウト)から除外さ
れ得る場合、真である。例えば、図3において、ノード
300−4はノード300−2、300−5および30
0−6についてOK_LO_PARTNER変数を有す
る。この変数の状態は、コミットが成功した同期点動作
においてのみ変更できる。
る適切なステップの実行を可能にする多数の例示的な変
数を維持する。これらの例示的な変数には以下のものが
ある。OK_LO_PARTNER−相手当たり1論理
変数。この変数は、相手ノードがそのノードによる次の
同期点動作(コミットまたはバックアウト)から除外さ
れ得る場合、真である。例えば、図3において、ノード
300−4はノード300−2、300−5および30
0−6についてOK_LO_PARTNER変数を有す
る。この変数の状態は、コミットが成功した同期点動作
においてのみ変更できる。
【0018】OK_LO−これはノード間を流れる「同
意」および「コミット」メッセージにおけるフラグであ
る。真である場合、このフラグは、送信ノードおよびそ
の従属ノードによって形成されるサブツリーが、以降の
同期点動作から除外され得ることを受信側に知らせる。
いずれかの所与のメッセージでのこのフラグの値は、以
下で詳述する多数の要因によって決定される。PROP
OSED_OK_LO_PARTNER−相手当たり1
論理変数。この変数は、相手ノードが自己が以降の同期
点動作から除外され得ることを「同意」メッセージで指
示した場合、真である。この変数の値は、バックアウト
ではなく、同期点動作がコミットした場合にのみOK_
LO_PARTNERに移される。
意」および「コミット」メッセージにおけるフラグであ
る。真である場合、このフラグは、送信ノードおよびそ
の従属ノードによって形成されるサブツリーが、以降の
同期点動作から除外され得ることを受信側に知らせる。
いずれかの所与のメッセージでのこのフラグの値は、以
下で詳述する多数の要因によって決定される。PROP
OSED_OK_LO_PARTNER−相手当たり1
論理変数。この変数は、相手ノードが自己が以降の同期
点動作から除外され得ることを「同意」メッセージで指
示した場合、真である。この変数の値は、バックアウト
ではなく、同期点動作がコミットした場合にのみOK_
LO_PARTNERに移される。
【0019】SUBTREE_OK_LO−各ノードで
維持される要約ビット。親ノードへの「同意」メッセー
ジでのOK_LOの設定についてノードの全条件が満た
された場合にのみ、真である。
維持される要約ビット。親ノードへの「同意」メッセー
ジでのOK_LOの設定についてノードの全条件が満た
された場合にのみ、真である。
【0020】LUWID_SOURCE−ノード当たり
1変数。この変数は、「ヌル」、または、そのノードを
以降の同期点動作において除外できる相手ノードの識別
のいずれかを含む。
1変数。この変数は、「ヌル」、または、そのノードを
以降の同期点動作において除外できる相手ノードの識別
のいずれかを含む。
【0021】PROPOSED_LUWID_SOUR
CE−ノード当たり1論理変数。これは、LUWID_
SOURCEの提案値である。その値は、バックアウト
ではなく、現同期点動作がコミットした場合にLUWI
D_SOURCEに移される。
CE−ノード当たり1論理変数。これは、LUWID_
SOURCEの提案値である。その値は、バックアウト
ではなく、現同期点動作がコミットした場合にLUWI
D_SOURCEに移される。
【0022】図4について説明する。物理ツリーの根ノ
ード(図3の300−1)のトランザクションプログラ
ムによる、または、物理ツリーの生成における他のノー
ドからのATTACHメッセージによる物理ツリーの生
成に応答して、各ノードの同期点マネージャにおいてS
TARTステップが実行される。ステップ401で、A
TTACHメッセージに含まれる論理作業単位識別子を
初期化、または、それが根ノードである場合には一意の
論理作業単位識別子を生成する。ステップ402で、O
K_LO_PARTNERおよびPROPOSED_O
K_LO_PARTNERの各変数をデフォールト状態
の偽に初期化し、LUWID_SOURCEを「ヌル」
に設定する。ステップ404では、根ノードで動作を開
始したトランザクションプログラムへ、または、中間ノ
ードのATTACHメッセージで識別されたトランザク
ションプログラムへ制御が返される。その後、各ノード
の同期点マネージャは、関係するトランザクションプロ
グラムからの動詞コマンドを待つ。
ード(図3の300−1)のトランザクションプログラ
ムによる、または、物理ツリーの生成における他のノー
ドからのATTACHメッセージによる物理ツリーの生
成に応答して、各ノードの同期点マネージャにおいてS
TARTステップが実行される。ステップ401で、A
TTACHメッセージに含まれる論理作業単位識別子を
初期化、または、それが根ノードである場合には一意の
論理作業単位識別子を生成する。ステップ402で、O
K_LO_PARTNERおよびPROPOSED_O
K_LO_PARTNERの各変数をデフォールト状態
の偽に初期化し、LUWID_SOURCEを「ヌル」
に設定する。ステップ404では、根ノードで動作を開
始したトランザクションプログラムへ、または、中間ノ
ードのATTACHメッセージで識別されたトランザク
ションプログラムへ制御が返される。その後、各ノード
の同期点マネージャは、関係するトランザクションプロ
グラムからの動詞コマンドを待つ。
【0023】トランザクションプログラムにより発行さ
れた動詞の同期点マネージャによる受信は、ステップ4
06に示す。受信されると、ステップ408で、その動
詞が同期点動作(コミットまたはバックアウト)に関す
るものであるかが判定される。その動詞がトランザクシ
ョンプログラムによって発行される最初の動詞であると
しばらく仮定する。それは通常、同期点動作ではなく、
送信または受信動詞などの一般動詞であろう。その場
合、同期点マネージャの機能は、その動詞を実行するこ
と、および、この時点で更新のために相手ノードに論理
作業単位識別子を送信する必要があるかどうかを判定す
ることである。後者の機能は、その相手ノードが過去に
現ノードによって除外されたことがあるかどうか、およ
び、相手ノードが局所ノードによって初めて現トランザ
クションに含まれることになるかどうかに応じて異な
る。このトランザクションにおいて更新された論理作業
単位識別子が相手ノードに送信されるべき場合、それは
そのノードへの最初のメッセージにおいて1度だけ送信
することが望ましい。ステップ410で、相手ノードに
メッセージを送信すべきかが判定される。肯定であれ
ば、ステップ411で、それがそのトランザクションに
おいて相手ノードへの最初のメッセージであるかが判定
される。肯定であれば、ステップ412で、その相手ノ
ードに関するOK_LO_PARTNER変数が真に設
定されているかが判定される。肯定であれば、それはそ
の相手ノードが直前に除外されており、論理作業単位識
別子の更新を要することを意味する。従って、ステップ
414で、その相手ノードに向けられたメッセージに、
そのトランザクションに関する正しい論理作業単位識別
子が挿入される。これにより、そのメッセージが現動詞
の実行(ステップ416)の一部として送信された場
合、相手ノードは、数連続トランザクションについて除
外されていたとしても、正しい論理作業単位識別子によ
って動作を開始することが保証される。その後、ステッ
プ404で新しい動詞の発行を待つためにトランザクシ
ョンプログラムに制御が返され、このプロセスが繰り返
される。
れた動詞の同期点マネージャによる受信は、ステップ4
06に示す。受信されると、ステップ408で、その動
詞が同期点動作(コミットまたはバックアウト)に関す
るものであるかが判定される。その動詞がトランザクシ
ョンプログラムによって発行される最初の動詞であると
しばらく仮定する。それは通常、同期点動作ではなく、
送信または受信動詞などの一般動詞であろう。その場
合、同期点マネージャの機能は、その動詞を実行するこ
と、および、この時点で更新のために相手ノードに論理
作業単位識別子を送信する必要があるかどうかを判定す
ることである。後者の機能は、その相手ノードが過去に
現ノードによって除外されたことがあるかどうか、およ
び、相手ノードが局所ノードによって初めて現トランザ
クションに含まれることになるかどうかに応じて異な
る。このトランザクションにおいて更新された論理作業
単位識別子が相手ノードに送信されるべき場合、それは
そのノードへの最初のメッセージにおいて1度だけ送信
することが望ましい。ステップ410で、相手ノードに
メッセージを送信すべきかが判定される。肯定であれ
ば、ステップ411で、それがそのトランザクションに
おいて相手ノードへの最初のメッセージであるかが判定
される。肯定であれば、ステップ412で、その相手ノ
ードに関するOK_LO_PARTNER変数が真に設
定されているかが判定される。肯定であれば、それはそ
の相手ノードが直前に除外されており、論理作業単位識
別子の更新を要することを意味する。従って、ステップ
414で、その相手ノードに向けられたメッセージに、
そのトランザクションに関する正しい論理作業単位識別
子が挿入される。これにより、そのメッセージが現動詞
の実行(ステップ416)の一部として送信された場
合、相手ノードは、数連続トランザクションについて除
外されていたとしても、正しい論理作業単位識別子によ
って動作を開始することが保証される。その後、ステッ
プ404で新しい動詞の発行を待つためにトランザクシ
ョンプログラムに制御が返され、このプロセスが繰り返
される。
【0024】次に、ステップ408において、ツリーの
いずれかのノードで、同期点動詞がそのノードの同期点
マネージャによって受信された場合について説明する。
説明の目的上、この同期点動作はトランザクションxに
ついてのものであると仮定する。これは、そのトランザ
クションが同期点を開始するノードによる判定に従って
完了しており、そのトランザクションをコミットまたは
バックアウトすべき時であることを意味する。そのトラ
ンザクションプログラムから同期点コマンドを受信した
同期点マネージャの機能は、本発明に従えば、その同期
点動作から除外されない自己の各子ノードに「コミット
準備」メッセージを発することである。その後、「コミ
ット準備」メッセージは、それらの子ノードにより、そ
の同期点動作から除外されない各自の子ノード全部に送
信される。ステップ408で、対応するトランザクショ
ンプログラムからの同期点動詞に応答して、同期点根ノ
ードにおいて同期点動作が開始される。この同期点イニ
シエータノードでは、段(Phase)1、すなわち
「コミット準備」メッセージの同期点イニシエータの除
外されない子ノードへの転送を開始するためにP1(図
5)に移る。この第1段の目的は、現ノードのいずれの
子ノードが除外されるべきかを判定し、それらの子ノー
ドへの「コミット準備」または「バックアウト」メッセ
ージを省略することである。これは、逆に、最後の同期
点動作x−1からの各ノードのOK_LO_PARTN
ER変数の状態に依存する。
いずれかのノードで、同期点動詞がそのノードの同期点
マネージャによって受信された場合について説明する。
説明の目的上、この同期点動作はトランザクションxに
ついてのものであると仮定する。これは、そのトランザ
クションが同期点を開始するノードによる判定に従って
完了しており、そのトランザクションをコミットまたは
バックアウトすべき時であることを意味する。そのトラ
ンザクションプログラムから同期点コマンドを受信した
同期点マネージャの機能は、本発明に従えば、その同期
点動作から除外されない自己の各子ノードに「コミット
準備」メッセージを発することである。その後、「コミ
ット準備」メッセージは、それらの子ノードにより、そ
の同期点動作から除外されない各自の子ノード全部に送
信される。ステップ408で、対応するトランザクショ
ンプログラムからの同期点動詞に応答して、同期点根ノ
ードにおいて同期点動作が開始される。この同期点イニ
シエータノードでは、段(Phase)1、すなわち
「コミット準備」メッセージの同期点イニシエータの除
外されない子ノードへの転送を開始するためにP1(図
5)に移る。この第1段の目的は、現ノードのいずれの
子ノードが除外されるべきかを判定し、それらの子ノー
ドへの「コミット準備」または「バックアウト」メッセ
ージを省略することである。これは、逆に、最後の同期
点動作x−1からの各ノードのOK_LO_PARTN
ER変数の状態に依存する。
【0025】ついでながら、「コミット準備」メッセー
ジを受信した各ノードは、そのノードのトランザクショ
ンプログラムにステップ406で同期点動作を同じく発
行させるコード(図示せず)を呼び出す。
ジを受信した各ノードは、そのノードのトランザクショ
ンプログラムにステップ406で同期点動作を同じく発
行させるコード(図示せず)を呼び出す。
【0026】同期点プロトコルの第1段の開始であるス
テップ502は、SUBTREE_OK_LO変数の状
態を局所トランザクションプログラムによって指示され
た除外状態に初期化することから始まる。この変数の状
態は、現ノードの親ノード(それがいる場合)に、自己
が先頭となるサブツリーが次の同期点動作から除外され
得るかを知らせるために使用される。この状態は、プロ
グラムの進行につれて変化し得る。差し当たり、それは
単に、トランザクションプログラムの観点からそのノー
ドの以降の除外状態を表す。トランザクションプログラ
ムは、例えば、それが他のノードから求められない限り
何も行わないサーバである場合に除外され得ることを決
定するかもしれない。LU6.2は、そうした除外情報
を同期点マネージャに知らせるためにトランザクション
プログラムによって使用できる特殊動詞(SET_SY
NC_POINT_OPTIONS)を付与する。いず
れかの他の所望の通信手段も他のシステムにおいて使用
できることは明らかである。ステップ502ではまた、
PROPOSED_LUWID_SOURCE変数の状
態も「ヌル」に初期化される。ステップ504で、その
ノードが同期点イニシエータであるかどうかが判定され
る。同期点イニシエータである場合、そのノードはいっ
さい親ノードを持たず、そうした親ノードによって除外
されることはない。その場合、プログラムの実行はただ
ちにステップ602に進む。そのノードが同期点イニシ
エータでない場合、それが次の同期点動作から除外され
てもよいということを以降の「同意」メッセージで親ノ
ードに知らせることが可能か否かは、一部には、親ノー
ドとの会話が半二重であるかどうか、そしてその場合、
その同期点動作の終了時に親ノードとの会話の状態が
「受信」されるかどうかに依存する。ノードは、接続状
態が親ノードに次のメッセージを送信できるようにする
ものでない限り、親ノードによって除外されることはな
い。そうでなければ、そのノードはその後永久に除外さ
れてしまうであろう。従って、ステップ506で、親ノ
ードとの会話が半二重であるかどうかが判定される。半
二重である場合、ステップ508で、親ノードとの会話
の次の状態が「送信」状態となるかが判定される。親ノ
ードとの会話が全二重(ステップ506)であるか、ま
たは、半二重会話の次の状態が「受信」となる場合、少
なくともそれまでで、その子ノードを除外することが許
されることを親ノードに知らせることは可能である。従
って、プログラムの実行は、出口Aからステップ602
に進む。そうでない場合、ステップ510で、SUBT
REE_OK_LOは偽に設定される。この同期点動作
の応答として親ノードに「同意」メッセージが返された
場合、OK_LOフラグの状態は、後述するように、偽
に設定される。
テップ502は、SUBTREE_OK_LO変数の状
態を局所トランザクションプログラムによって指示され
た除外状態に初期化することから始まる。この変数の状
態は、現ノードの親ノード(それがいる場合)に、自己
が先頭となるサブツリーが次の同期点動作から除外され
得るかを知らせるために使用される。この状態は、プロ
グラムの進行につれて変化し得る。差し当たり、それは
単に、トランザクションプログラムの観点からそのノー
ドの以降の除外状態を表す。トランザクションプログラ
ムは、例えば、それが他のノードから求められない限り
何も行わないサーバである場合に除外され得ることを決
定するかもしれない。LU6.2は、そうした除外情報
を同期点マネージャに知らせるためにトランザクション
プログラムによって使用できる特殊動詞(SET_SY
NC_POINT_OPTIONS)を付与する。いず
れかの他の所望の通信手段も他のシステムにおいて使用
できることは明らかである。ステップ502ではまた、
PROPOSED_LUWID_SOURCE変数の状
態も「ヌル」に初期化される。ステップ504で、その
ノードが同期点イニシエータであるかどうかが判定され
る。同期点イニシエータである場合、そのノードはいっ
さい親ノードを持たず、そうした親ノードによって除外
されることはない。その場合、プログラムの実行はただ
ちにステップ602に進む。そのノードが同期点イニシ
エータでない場合、それが次の同期点動作から除外され
てもよいということを以降の「同意」メッセージで親ノ
ードに知らせることが可能か否かは、一部には、親ノー
ドとの会話が半二重であるかどうか、そしてその場合、
その同期点動作の終了時に親ノードとの会話の状態が
「受信」されるかどうかに依存する。ノードは、接続状
態が親ノードに次のメッセージを送信できるようにする
ものでない限り、親ノードによって除外されることはな
い。そうでなければ、そのノードはその後永久に除外さ
れてしまうであろう。従って、ステップ506で、親ノ
ードとの会話が半二重であるかどうかが判定される。半
二重である場合、ステップ508で、親ノードとの会話
の次の状態が「送信」状態となるかが判定される。親ノ
ードとの会話が全二重(ステップ506)であるか、ま
たは、半二重会話の次の状態が「受信」となる場合、少
なくともそれまでで、その子ノードを除外することが許
されることを親ノードに知らせることは可能である。従
って、プログラムの実行は、出口Aからステップ602
に進む。そうでない場合、ステップ510で、SUBT
REE_OK_LOは偽に設定される。この同期点動作
の応答として親ノードに「同意」メッセージが返された
場合、OK_LOフラグの状態は、後述するように、偽
に設定される。
【0027】図6の各ステップは、「バックアウト」ま
たは「コミット準備」メッセージが現ノードの各子ノー
ドに送信されるループを表す。本発明に従えば、除外さ
れ得る子ノードには、いかなる同期点メッセージも送信
されない。ステップ602で、このループで処理すべき
いずれかの子ノードが存在するかどうかが判定される。
肯定であれば、ステップ604で残りの子ノードのいず
れかが選択される。ステップ606で、その子ノードに
ついてのOK_LO_PARTNER変数の現在の状態
が問い合わされる。この変数の状態は最後に成功した同
期点において設定された状態を反映していることに留意
すべきである。その状態が真であり、かつ、現ノードが
現トランザクションにおいてその子ノードと通信してい
なければ、その子ノードを現同期点動作から除外するこ
とが可能となる。ステップ608で、現ノードが現トラ
ンザクションにおいてその子ノードと通信していたかど
うかが判定される。通信していなければ、その子ノード
はその時点でプログラムアドレスAに直接進むことによ
りその同期点動作から除外され、それによりその子ノー
ドへは同期点メッセージが送信されなくなる。OK_L
O_PARTNERが偽に設定されている(ステップ6
06)か、または、現ノードが現トランザクションxに
おいてその子ノードと通信していた(ステップ608)
場合、ステップ614で、その子ノードに「コミット準
備」メッセージが送信される(ステップ610でその同
期点動作がバックアウトではないと判定されたと仮定し
て)。そうではなく、実行される動詞がバックアウトで
ある場合、ステップ612で「バックアウト」メッセー
ジが子ノードに送信される。
たは「コミット準備」メッセージが現ノードの各子ノー
ドに送信されるループを表す。本発明に従えば、除外さ
れ得る子ノードには、いかなる同期点メッセージも送信
されない。ステップ602で、このループで処理すべき
いずれかの子ノードが存在するかどうかが判定される。
肯定であれば、ステップ604で残りの子ノードのいず
れかが選択される。ステップ606で、その子ノードに
ついてのOK_LO_PARTNER変数の現在の状態
が問い合わされる。この変数の状態は最後に成功した同
期点において設定された状態を反映していることに留意
すべきである。その状態が真であり、かつ、現ノードが
現トランザクションにおいてその子ノードと通信してい
なければ、その子ノードを現同期点動作から除外するこ
とが可能となる。ステップ608で、現ノードが現トラ
ンザクションにおいてその子ノードと通信していたかど
うかが判定される。通信していなければ、その子ノード
はその時点でプログラムアドレスAに直接進むことによ
りその同期点動作から除外され、それによりその子ノー
ドへは同期点メッセージが送信されなくなる。OK_L
O_PARTNERが偽に設定されている(ステップ6
06)か、または、現ノードが現トランザクションxに
おいてその子ノードと通信していた(ステップ608)
場合、ステップ614で、その子ノードに「コミット準
備」メッセージが送信される(ステップ610でその同
期点動作がバックアウトではないと判定されたと仮定し
て)。そうではなく、実行される動詞がバックアウトで
ある場合、ステップ612で「バックアウト」メッセー
ジが子ノードに送信される。
【0028】ステップ602で、現ノードの子ノード全
部が処理され終わっていると判定された場合、ステップ
616で実行される動詞がバックアウトであるかどうか
が再び確認される。バックアウトでなければ、プログラ
ムはステップ614で送信される「コミット準備」メッ
セージを待って、応答を収集しなければならない。これ
は、子ノードの全部がコミットに同意しているかどうか
を判定し、また、子ノードからの各応答のトランザクシ
ョンx+1についてのOK_LOフラグの状態を収集す
るために要する。このプロセスを実行するループはステ
ップ702に始まる。すなわち、ステップ616で動詞
がバックアウトである場合、その現ノードはその現同期
点動作において実行の子ノードのいずれの除外状態も変
更しない。この場合、現同期点動作を完了するために直
接図12に進むにすぎない。現動作がコミットであると
すれば、ステップ702で、「コミット準備」メッセー
ジを送信された各子ノードからの応答を受信するために
ループが設定される。ステップ704で、ある子ノード
からの応答が受信されたことが指示される。ステップ7
06で、この応答が「コミット準備」メッセージに対す
る「同意」メッセージであるかどうかが判定される。現
ノードのいずれかの子ノードからの応答が「不同意」メ
ッセージであった場合、そのトランザクションは全ノー
ドでバックアウトされ、子ノード全部からの残りの応答
を待つ必要はまったくなく、ループは破られ、プログラ
ムの制御はバックアウトを完了するために図12のアド
レスCSに移される。いずれかの所与の子ノードからの
応答が「同意」である場合、ステップ708でその「同
意」メッセージのOK_LOフラグが問い合わされる。
フラグが真であれば、その子ノードおよびその子ノード
の子ノード全部も各自のサブツリーが次の同期点動作x
+1から除外されることに同意したことになる。その場
合、ステップ709で、その子ノードのPROPOSE
D_OK_LO_PARTNER変数が真に設定され、
以前の「コミット準備」メッセージ(それがある場合)
に対する子ノードからの次の応答を待ちに戻る。ステッ
プ708で子ノードからの「同意」メッセージのOK_
LOフラグが偽である場合、ステップ710で、その子
ノードのPROPOSED_OK_LO_PARTNE
R変数が偽に設定される。この状態は、その動作がコミ
ットする場合にのみ有効となる。この状態が偽である場
合、現ノードはその子ノードを次の同期点動作に含める
ことになる。当然、その子ノードは、自己が除外できる
と決定し得る自己自身の単数または複数の子ノードを有
していてよい。
部が処理され終わっていると判定された場合、ステップ
616で実行される動詞がバックアウトであるかどうか
が再び確認される。バックアウトでなければ、プログラ
ムはステップ614で送信される「コミット準備」メッ
セージを待って、応答を収集しなければならない。これ
は、子ノードの全部がコミットに同意しているかどうか
を判定し、また、子ノードからの各応答のトランザクシ
ョンx+1についてのOK_LOフラグの状態を収集す
るために要する。このプロセスを実行するループはステ
ップ702に始まる。すなわち、ステップ616で動詞
がバックアウトである場合、その現ノードはその現同期
点動作において実行の子ノードのいずれの除外状態も変
更しない。この場合、現同期点動作を完了するために直
接図12に進むにすぎない。現動作がコミットであると
すれば、ステップ702で、「コミット準備」メッセー
ジを送信された各子ノードからの応答を受信するために
ループが設定される。ステップ704で、ある子ノード
からの応答が受信されたことが指示される。ステップ7
06で、この応答が「コミット準備」メッセージに対す
る「同意」メッセージであるかどうかが判定される。現
ノードのいずれかの子ノードからの応答が「不同意」メ
ッセージであった場合、そのトランザクションは全ノー
ドでバックアウトされ、子ノード全部からの残りの応答
を待つ必要はまったくなく、ループは破られ、プログラ
ムの制御はバックアウトを完了するために図12のアド
レスCSに移される。いずれかの所与の子ノードからの
応答が「同意」である場合、ステップ708でその「同
意」メッセージのOK_LOフラグが問い合わされる。
フラグが真であれば、その子ノードおよびその子ノード
の子ノード全部も各自のサブツリーが次の同期点動作x
+1から除外されることに同意したことになる。その場
合、ステップ709で、その子ノードのPROPOSE
D_OK_LO_PARTNER変数が真に設定され、
以前の「コミット準備」メッセージ(それがある場合)
に対する子ノードからの次の応答を待ちに戻る。ステッ
プ708で子ノードからの「同意」メッセージのOK_
LOフラグが偽である場合、ステップ710で、その子
ノードのPROPOSED_OK_LO_PARTNE
R変数が偽に設定される。この状態は、その動作がコミ
ットする場合にのみ有効となる。この状態が偽である場
合、現ノードはその子ノードを次の同期点動作に含める
ことになる。当然、その子ノードは、自己が除外できる
と決定し得る自己自身の単数または複数の子ノードを有
していてよい。
【0029】ループがステップ702で終了した時に全
部の子ノードが「コミット準備」に同意すれば、制御は
図8のアドレスFP1に移る。FP1の目的は、2段プ
ロトコルの段1を終了させることである。これは、親ノ
ードが存在する場合に、親ノードから現ノードが受信し
た「コミット準備」について、そのノードの親ノードへ
の応答を生成することを意味する。ステップ802で、
そのノードが同期点ツリーの根ノードであるかが判定さ
れる。根ノードであれば、応答を返すべき親ノードはい
っさい存在しない。その場合、制御は、第2段を開始す
るために図10のアドレスP2Iに移される。そのノー
ドがコミットツリーの根ノードではない場合、ステップ
804で、OK_LOフラグをSUBTREE_OK_
LO変数の状態に設定して「同意」メッセージがコミッ
ト親ノードに送信される。SUBTREE_OK_LO
変数は、局所トランザクションプログラムが以前にそれ
が除外され得ることを指示した場合にはステップ502
で真に設定されており、また、その後、親ノードへの半
二重接続がそのノードを永久的に排除した場合(ステッ
プ502)または子ノードが「同意」メッセージで除外
に同意しなかった場合(ステップ710)には偽にリセ
ットされているはずである点に留意されたい。現ノード
の親ノードに対する応答のOK_LOフラグの結果の状
態が真である場合、そのノードおよび子ノードによって
形成されたサブツリーは、親ノードからのサービス要求
といった何らかの事象がそのサブツリーを復元するま
で、その次以降の同期点動作でのプロトコル交換から排
除(除外)される。次に、ステップ806で、そのノー
ドの親ノードへの「同意」メッセージに含まれていたS
UBTREE_OK_LO変数の状態が判定される。状
態が真であれば、ステップ808で、PROPOSED
_LUWID_SOURCE変数が親ノードの識別に設
定される。この値は、動作がコミットする場合にのみ有
効となる。この値が真であれば、そのノードは次のトラ
ンザクションから親ノードによって除外されることがで
き、処理を再開する前には親ノードからの論理作業単位
識別子の更新を要求する。PROPOSED_LUWI
D_SOURCEの値は、その親ノードを論理作業単位
識別子の将来のソースとして識別する。
部の子ノードが「コミット準備」に同意すれば、制御は
図8のアドレスFP1に移る。FP1の目的は、2段プ
ロトコルの段1を終了させることである。これは、親ノ
ードが存在する場合に、親ノードから現ノードが受信し
た「コミット準備」について、そのノードの親ノードへ
の応答を生成することを意味する。ステップ802で、
そのノードが同期点ツリーの根ノードであるかが判定さ
れる。根ノードであれば、応答を返すべき親ノードはい
っさい存在しない。その場合、制御は、第2段を開始す
るために図10のアドレスP2Iに移される。そのノー
ドがコミットツリーの根ノードではない場合、ステップ
804で、OK_LOフラグをSUBTREE_OK_
LO変数の状態に設定して「同意」メッセージがコミッ
ト親ノードに送信される。SUBTREE_OK_LO
変数は、局所トランザクションプログラムが以前にそれ
が除外され得ることを指示した場合にはステップ502
で真に設定されており、また、その後、親ノードへの半
二重接続がそのノードを永久的に排除した場合(ステッ
プ502)または子ノードが「同意」メッセージで除外
に同意しなかった場合(ステップ710)には偽にリセ
ットされているはずである点に留意されたい。現ノード
の親ノードに対する応答のOK_LOフラグの結果の状
態が真である場合、そのノードおよび子ノードによって
形成されたサブツリーは、親ノードからのサービス要求
といった何らかの事象がそのサブツリーを復元するま
で、その次以降の同期点動作でのプロトコル交換から排
除(除外)される。次に、ステップ806で、そのノー
ドの親ノードへの「同意」メッセージに含まれていたS
UBTREE_OK_LO変数の状態が判定される。状
態が真であれば、ステップ808で、PROPOSED
_LUWID_SOURCE変数が親ノードの識別に設
定される。この値は、動作がコミットする場合にのみ有
効となる。この値が真であれば、そのノードは次のトラ
ンザクションから親ノードによって除外されることがで
き、処理を再開する前には親ノードからの論理作業単位
識別子の更新を要求する。PROPOSED_LUWI
D_SOURCEの値は、その親ノードを論理作業単位
識別子の将来のソースとして識別する。
【0030】次に、プロトコルの実行は図9のアドレス
P2Aでプロトコルの段(Phase)2に進む。
P2Aでプロトコルの段(Phase)2に進む。
【0031】ステップ902では、段2の一部としてコ
ミットまたはバックアウトであるはずの、親ノードから
の次のメッセージが待たれている。ステップ904でそ
のメッセージがバックアウトである場合、現トランザク
ションはバックアウトされることになり、制御は図12
のCSに移りそれを実行する。ステップ904で応答が
コミットである場合、ステップ906で、その親ノード
のOK_LO_PARTNER変数が、その親ノードか
らのコミットメッセージのOK_LOフラグの状態に設
定される。その値が真であり、その親ノードが次の同期
点動作x+1の現ノードの親ノードとなる場合、そのノ
ード(現ノード)およびそのサブツリーは同期点動作x
+1から除外され得る。これが生じるには、ステップ1
010,1014,1102および1104で説明する
ように、一定の基準を満たさなければならない。ステッ
プ906の後、プログラムの実行は、図10のアドレス
P2Pで段2の残りのステップに進む。
ミットまたはバックアウトであるはずの、親ノードから
の次のメッセージが待たれている。ステップ904でそ
のメッセージがバックアウトである場合、現トランザク
ションはバックアウトされることになり、制御は図12
のCSに移りそれを実行する。ステップ904で応答が
コミットである場合、ステップ906で、その親ノード
のOK_LO_PARTNER変数が、その親ノードか
らのコミットメッセージのOK_LOフラグの状態に設
定される。その値が真であり、その親ノードが次の同期
点動作x+1の現ノードの親ノードとなる場合、そのノ
ード(現ノード)およびそのサブツリーは同期点動作x
+1から除外され得る。これが生じるには、ステップ1
010,1014,1102および1104で説明する
ように、一定の基準を満たさなければならない。ステッ
プ906の後、プログラムの実行は、図10のアドレス
P2Pで段2の残りのステップに進む。
【0032】プログラムの実行は、そのノードがコミッ
トツリーの根ノードではない場合(ステップ802)に
のみFP1からP2P(図10)へ進むことに留意され
たい。そのノードがコミットツリーの根ノードである場
合、ステップ802から図10のP2Iに直接移行す
る。コミット根ノードは、「コミット準備」に対する全
部の応答を収集し、現トランザクションがコミットされ
るべきか、バックアウトされるべきなのかを決定しなけ
ればならない。P2Iに入って、ステップ1002で、
根ノードにおいて、その子ノード全部が「コミット準
備」に対して「同意」を示したかどうかが判定される。
否定であれば、トランザクションはバックアウトされる
ことになる。図12のCSに移ってバックアウトが実行
される。他方、全部の子ノード(「コミット準備」を受
信した全部のノードを意味する)が「同意」した場合、
ステップ1004(そのノードがコミット根ノードでは
ない場合にP2Pからの入口でもある)で、その相手ノ
ードのそれぞれについてのOK_LO_PARTNER
変数を、対応するPROPOSED_OK_LO_PA
RTNER変数の状態に設定することにより更新する。
ステップ1004ではまた、LUWID_SOURCE
変数の値がPROPOSED_LUWID_SOURC
E変数の値に更新される。ステップ1006で、そのノ
ードの全部の子ノードに対する「コミット」メッセージ
の伝送を制御するためにループが設定される。ここでの
課題は、それらの「コミット」メッセージに含まれるべ
きOK_LOフラグの状態を判定することである。この
フラグの状態は、メッセージを受信した子ノードが以降
の同期点動作でその送信側ノードを除外できるかどうか
を表している。各子ノードへの現「コミット」メッセー
ジに含まれるOK_LOフラグの状態は、その子ノード
に関するOK_LO_PARTNER変数の状態、およ
び、他の子ノードに与えられたOK_LOフラグの状態
に応じて異なる。前者の考慮事項に関して、子ノードの
OK_LO_PARTNER変数が真に設定されている
場合、現ノードは以降その子ノードを除外することがで
きる。この場合、現ノードは、それが次の同期点で現ノ
ードを除外できることを子ノードに知らせることができ
ない。それは、両ノード間の永久的なロックアウトを生
じるかもしれない。後者の考慮事項に関して、現ノード
は、ネットワークの現在側のノード全部が、次の同期点
動作から除外される得ることを表明しない限り、次の同
期点で除外することはできない。例えば、図3によれ
ば、ノード300−4が現同期点イニシエータであると
仮定した場合、ノード300−6への「コミット」のO
K_LOフラグを設定するためは、ノード300−4の
他の全部の従属ノード、すなわちノード300−1、3
00−2、300−3および300−5が、以前の「同
意」メッセージでそれらを除外することを了承すると表
明していなければならない。上述の問題は以下のように
して解決される。ステップ1008で第1または次の子
ノードが選択される。ステップ1010で、その子ノー
ドについてOK_LO_PARTNER変数が真に設定
されているかどうかが判定される。真であれば、ステッ
プ1012で、その子ノードへの「コミット」メッセー
ジがOK_LO変数が偽に設定されて送信される。これ
は、上述の第1の考慮事項に対する防御である。ステッ
プ1010でその子ノードのOK_LO_PARTNE
R変数が偽に設定されている場合、ステップ1014
で、そのノードの他のいずれかの相手ノードのOK_L
O_PARTNER変数が偽であるかどうかが判定され
る。それが真である場合、ステップ1012でその子ノ
ードへの「コミット」のOK_LOフラグが偽に設定さ
れ、ステップ1006で子ループが継続される。真でな
ければ、図11のプログラムアドレスBBでステップ1
102が実行される。図11は、接続の端状態が半二重
であるかを検査するための上述のステップ506および
508によって説明したものと同じ検査を実行するステ
ップ1102〜1108を含む。これらの検査により、
局所ノードを除外する相手ノードが局所ノードに次のメ
ッセージを送信できることが保証される。
トツリーの根ノードではない場合(ステップ802)に
のみFP1からP2P(図10)へ進むことに留意され
たい。そのノードがコミットツリーの根ノードである場
合、ステップ802から図10のP2Iに直接移行す
る。コミット根ノードは、「コミット準備」に対する全
部の応答を収集し、現トランザクションがコミットされ
るべきか、バックアウトされるべきなのかを決定しなけ
ればならない。P2Iに入って、ステップ1002で、
根ノードにおいて、その子ノード全部が「コミット準
備」に対して「同意」を示したかどうかが判定される。
否定であれば、トランザクションはバックアウトされる
ことになる。図12のCSに移ってバックアウトが実行
される。他方、全部の子ノード(「コミット準備」を受
信した全部のノードを意味する)が「同意」した場合、
ステップ1004(そのノードがコミット根ノードでは
ない場合にP2Pからの入口でもある)で、その相手ノ
ードのそれぞれについてのOK_LO_PARTNER
変数を、対応するPROPOSED_OK_LO_PA
RTNER変数の状態に設定することにより更新する。
ステップ1004ではまた、LUWID_SOURCE
変数の値がPROPOSED_LUWID_SOURC
E変数の値に更新される。ステップ1006で、そのノ
ードの全部の子ノードに対する「コミット」メッセージ
の伝送を制御するためにループが設定される。ここでの
課題は、それらの「コミット」メッセージに含まれるべ
きOK_LOフラグの状態を判定することである。この
フラグの状態は、メッセージを受信した子ノードが以降
の同期点動作でその送信側ノードを除外できるかどうか
を表している。各子ノードへの現「コミット」メッセー
ジに含まれるOK_LOフラグの状態は、その子ノード
に関するOK_LO_PARTNER変数の状態、およ
び、他の子ノードに与えられたOK_LOフラグの状態
に応じて異なる。前者の考慮事項に関して、子ノードの
OK_LO_PARTNER変数が真に設定されている
場合、現ノードは以降その子ノードを除外することがで
きる。この場合、現ノードは、それが次の同期点で現ノ
ードを除外できることを子ノードに知らせることができ
ない。それは、両ノード間の永久的なロックアウトを生
じるかもしれない。後者の考慮事項に関して、現ノード
は、ネットワークの現在側のノード全部が、次の同期点
動作から除外される得ることを表明しない限り、次の同
期点で除外することはできない。例えば、図3によれ
ば、ノード300−4が現同期点イニシエータであると
仮定した場合、ノード300−6への「コミット」のO
K_LOフラグを設定するためは、ノード300−4の
他の全部の従属ノード、すなわちノード300−1、3
00−2、300−3および300−5が、以前の「同
意」メッセージでそれらを除外することを了承すると表
明していなければならない。上述の問題は以下のように
して解決される。ステップ1008で第1または次の子
ノードが選択される。ステップ1010で、その子ノー
ドについてOK_LO_PARTNER変数が真に設定
されているかどうかが判定される。真であれば、ステッ
プ1012で、その子ノードへの「コミット」メッセー
ジがOK_LO変数が偽に設定されて送信される。これ
は、上述の第1の考慮事項に対する防御である。ステッ
プ1010でその子ノードのOK_LO_PARTNE
R変数が偽に設定されている場合、ステップ1014
で、そのノードの他のいずれかの相手ノードのOK_L
O_PARTNER変数が偽であるかどうかが判定され
る。それが真である場合、ステップ1012でその子ノ
ードへの「コミット」のOK_LOフラグが偽に設定さ
れ、ステップ1006で子ループが継続される。真でな
ければ、図11のプログラムアドレスBBでステップ1
102が実行される。図11は、接続の端状態が半二重
であるかを検査するための上述のステップ506および
508によって説明したものと同じ検査を実行するステ
ップ1102〜1108を含む。これらの検査により、
局所ノードを除外する相手ノードが局所ノードに次のメ
ッセージを送信できることが保証される。
【0033】上述の中で幾度か触れたように、図12の
CSは同期点動作を完了するための入口である。これら
の動作は従来通りであり、本発明の一部ではない。図で
は流れは完了に向かう。ステップ1202では単に、現
ノードの適切な相手ノードへの現「コミット」または
「バックアウト」メッセージの流れを終了させることが
表明される。その後、同期点動作は完了する。ステップ
1204で、LUWID_SOURCE変数の状態が問
い合わされる。その状態が「ヌル」であれば、そのノー
ドはいずれの相手ノードに対しても自己が除外できるこ
とを伝えていない。除外させたいずれかのノードからの
論理作業単位識別子の更新は、その論理作業単位識別子
が最新のものであるため、考えられない。この場合、ノ
ードは単に、自己の論理作業単位識別子を増分して次の
トランザクションのために新しい論理作業単位識別子を
作成し、図4のNEXT_VERBに戻って次のトラン
ザクションの最初の動詞を待つにすぎない。あるいはま
た、ステップ1208で、新しい作業を始める前にLU
WID_SOURCEによって識別されたノードから新
しい論理作業単位識別子を受信するまで無期限に待機す
る。
CSは同期点動作を完了するための入口である。これら
の動作は従来通りであり、本発明の一部ではない。図で
は流れは完了に向かう。ステップ1202では単に、現
ノードの適切な相手ノードへの現「コミット」または
「バックアウト」メッセージの流れを終了させることが
表明される。その後、同期点動作は完了する。ステップ
1204で、LUWID_SOURCE変数の状態が問
い合わされる。その状態が「ヌル」であれば、そのノー
ドはいずれの相手ノードに対しても自己が除外できるこ
とを伝えていない。除外させたいずれかのノードからの
論理作業単位識別子の更新は、その論理作業単位識別子
が最新のものであるため、考えられない。この場合、ノ
ードは単に、自己の論理作業単位識別子を増分して次の
トランザクションのために新しい論理作業単位識別子を
作成し、図4のNEXT_VERBに戻って次のトラン
ザクションの最初の動詞を待つにすぎない。あるいはま
た、ステップ1208で、新しい作業を始める前にLU
WID_SOURCEによって識別されたノードから新
しい論理作業単位識別子を受信するまで無期限に待機す
る。
【図1】通信リンクによって直列に接続された3ノード
から成る単純な分散形ネットワークの略図。
から成る単純な分散形ネットワークの略図。
【図2】トランザクション、すなわち、単一の同期点動
作を前提とした論理作業単位の一意の識別である論理作
業単位識別子(LUWID)の形式の例示図。
作を前提とした論理作業単位の一意の識別である論理作
業単位識別子(LUWID)の形式の例示図。
【図3】各ノードが、同期点マネージャ(SPM)、ト
ランザクションプログラム(TP)、データベース資
源、および、トランザクションプログラムが同一または
異なるノードの別のトランザクションプログラムと通信
できるようにするために使用される論理単位(LU)を
含む、より複雑な分散形ネットワークの説明図。
ランザクションプログラム(TP)、データベース資
源、および、トランザクションプログラムが同一または
異なるノードの別のトランザクションプログラムと通信
できるようにするために使用される論理単位(LU)を
含む、より複雑な分散形ネットワークの説明図。
【図4】ネットワークにおける同期点動作を完了し、適
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
【図5】ネットワークにおける同期点動作を完了し、適
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
【図6】ネットワークにおける同期点動作を完了し、適
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
【図7】ネットワークにおける同期点動作を完了し、適
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
【図8】ネットワークにおける同期点動作を完了し、適
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
【図9】ネットワークにおける同期点動作を完了し、適
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
切である場合に同期点動作でノードを除外するためのス
テップを例示する流れ図。
【図10】ネットワークにおける同期点動作を完了し、
適切である場合に同期点動作でノードを除外するための
ステップを例示する流れ図。
適切である場合に同期点動作でノードを除外するための
ステップを例示する流れ図。
【図11】ネットワークにおける同期点動作を完了し、
適切である場合に同期点動作でノードを除外するための
ステップを例示する流れ図。
適切である場合に同期点動作でノードを除外するための
ステップを例示する流れ図。
【図12】ネットワークにおける同期点動作を完了し、
適切である場合に同期点動作でノードを除外するための
ステップを例示する流れ図。
適切である場合に同期点動作でノードを除外するための
ステップを例示する流れ図。
100,102,104 ノード 106,108 会話 200 論理単位識別子 202 トランザクション番号 204 シーケンス番号 300 ノード 302 トランザクションプログラム 304 データベース 306 論理単位 307 同期点マネージャ 308〜318 通信リンク
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アンドルー、ポール、シトロン アメリカ合衆国ノースカロライナ州、ロー リー、ホワイトストーン、ロード、10216 (72)発明者 チャンドラセカラン、モハン アメリカ合衆国カリフォルニア州、サン、 ノゼ、ポーツウッド、ドライブ、727 (72)発明者 ジョージ、モデストス、サマラス アメリカ合衆国ノースカロライナ州、ロー リー、シェルブルック、コート、920−6
Claims (9)
- 【請求項1】論理的にツリー状に構成された多数のノー
ドを有しており、かつ、ネットワークにおけるトランザ
クションのコミットまたはバックアウトを判定するため
の2段同期点プロトコルを使用する分散形トランザクシ
ョンネットワークにおいて、トランザクション処理を制
御するためのネットワーク内の同期点メッセージの数を
低減する方法であって、 トランザクションxに関する同期点動作の開始に応答し
て、各ノードにおいて、各相手ノードがトランザクショ
ンx−1の同期点動作に関して自己がトランザクション
x−1の同期点動作から除外され得ることを表明したか
どうかを判定するステップと、 表明した場合、相手ノードが現トランザクションxにお
いてそのノードによって包含されていたかどうかを判定
するステップと、 相手ノードが現トランザクションxに包含されていなか
った場合、相手ノードを現同期点動作から除外するステ
ップと、 を含むことを特徴とする方法。 - 【請求項2】請求項1記載の方法であって、2段同期点
プロトコルは、同期点イニシエータノードから、現同期
点動作において除外されないその各子ノードに「コミッ
ト準備」メッセージをを含み、それらの子ノードのそれ
ぞれから各自の同様に除外されない子ノードへの「コミ
ット準備」メッセージを生じ、ネットワーク全体にこれ
を行い、プロトコルはまた、「同意」または「不同意」
応答の全部に応答して同期点イニシエータからのコミッ
トまたはバックアウトメッセージを含むものであり、前
記方法はさらに、 送信側ノードが送信側ノードの観点から次の同期点動作
x+1から除外されてもよいことを受信側ノードに知ら
せるためにコミットメッセージの除外了承標識(OK_
LO)を真に設定し、除外されたくない場合には除外了
承標識を偽に設定するステップを含むことを特徴とする
方法。 - 【請求項3】請求項2記載の方法であって、さらに、 受信側ノードが除外了承標識を真に設定された同意メッ
セージを送信した場合、コミットメッセージの除外了承
標識を偽に設定するステップを含むことを特徴とする方
法。 - 【請求項4】請求項3記載の方法であって、さらに、 送信側ノードの他のいずれの相手ノードも除外できない
場合、コミットメッセージの除外了承標識を偽に設定す
るステップを含むことを特徴とする方法。 - 【請求項5】請求項4記載の方法であって、さらに、 同意メッセージを親ノードに送信する各ノードにおい
て、送信側ノードがトランザクションx+1の同期点動
作から除外されてもよいことを親ノードに知らせるため
に同意メッセージの除外了承標識を真に設定するステッ
プと、 除外されたくない場合には同意メッセージの除外了承標
識を偽に設定するステップとを含むことを特徴とする方
法。 - 【請求項6】請求項5記載の方法であって、さらに、 ノードでの同意メッセージの受信に応答して、 そのメッセージの除外了承標識の状態を問い合わせ、 除外了承標識の状態が真である場合には、同意メッセー
ジを送信したノードについて、提案相手ノード除外了承
変数(PROPOSED_OK_LO_PARTNE
R)を真に設定し、 除外了承標識の状態が偽である場合には、同意メッセー
ジを送信するノードについて、提案相手ノード除外了承
変数を偽に設定し、かつ、サブツリー除外了承変数(S
UBTREE_OK_LO)を偽に設定するステップを
含むことを特徴とする方法。 - 【請求項7】請求項6記載の方法であって、同意メッセ
ージの除外了承標識の設定ステップがさらに、 除外了承標識をサブツリー除外了承変数の状態に設定す
るステップを含むことを特徴とする方法。 - 【請求項8】各データベーストランザクションについて
ツリー状に論理的に構成されており、かつ、各ノードは
トランザクションに関するいずれかの動作を実行できる
能力を有する多数のノードを含む分散形トランザクショ
ンネットワークにおいて、トランザクション処理を制御
するためのネットワークを流れるプロトコルメッセージ
の数を低減する方法であって、 トランザクションxに関する作業を実行する各ノードに
おいて、 そのノードがトランザクションx+1に関して自己自身
の開始権で作業を実行するかを判定するステップと、 そのノードがトランザクションx+1に関して自己自身
の開始権で作業を実行しない場合に、自己がトランザク
ションx+1の処理において除外されてもよいことをト
ランザクションxにおいて自己の親ノードに知らせるス
テップと、 トランザクションx+1において作業を実行する各ノー
ドにおいて、 子ノードがそのトランザクションにおいて除外されても
よいことを以前に表明したかを判定するステップと、表
明している場合に、 自己がその子ノードのトランザクションサービスの必要
を生じた場合にのみ、その子ノードに対してプロトコル
メッセージを送信するステップと、 を含むことを特徴とする方法。 - 【請求項9】ツリー状に論理的に構成されている多数の
ノードを有しており、かつ、ネットワークのトランザク
ションをコミットまたはバックアウトすることを判定す
るために2段同期点プロトコルを使用する分散形ネット
ワークで用いる、トランザクション処理を制御するため
のネットワーク内の同期点メッセージの数を低減するた
めの装置であって、 トランザクションxの同期点動作の開始に応答して、相
手ノードがトランザクションx−1において同期点動作
から除外されていたかを判定するための手段と、 相手ノードがトランザクションx−1において同期点動
作から除外されていたという判定に応答して、そのノー
ドが現トランザクションxにその相手ノードを含めるか
を判定するための手段と、 最終的な判定に応答して、その相手ノードが現ノードに
より現トランザクションに含まれない場合に現同期点動
作からその相手ノードを除外するための手段と、 を含むことを特徴とする装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US696667 | 1991-05-07 | ||
US07/696,667 US5258982A (en) | 1991-05-07 | 1991-05-07 | Method of excluding inactive nodes from two-phase commit operations in a distributed transaction processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0628292A true JPH0628292A (ja) | 1994-02-04 |
JPH0675261B2 JPH0675261B2 (ja) | 1994-09-21 |
Family
ID=24798066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4081824A Expired - Lifetime JPH0675261B2 (ja) | 1991-05-07 | 1992-04-03 | トランザクション処理を制御するためのネットワーク内の同期点メッセージの数を低減する方法および装置、ならびにネットワークを流れるプロトコルメッセージの数を低減する方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5258982A (ja) |
EP (1) | EP0514306A2 (ja) |
JP (1) | JPH0675261B2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9116268D0 (en) * | 1991-07-27 | 1991-09-11 | Int Computers Ltd | Data processing system |
JPH0797782B2 (ja) * | 1991-09-18 | 1995-10-18 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 異種トランザクションの調整方法 |
JP2675968B2 (ja) * | 1992-08-20 | 1997-11-12 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 加入者分散2相コミット・プロトコルの拡張機能 |
US5432926A (en) * | 1992-12-04 | 1995-07-11 | International Business Machines Corporation | Method and apparatus for improving database reliability and response time in a distributed transaction processing system |
GB2276737A (en) * | 1993-03-30 | 1994-10-05 | Ibm | Fault-tolerant transaction-oriented data processing |
GB2301686A (en) * | 1995-06-03 | 1996-12-11 | Ibm | Transaction synchronisation procedure in a routing node |
US5799305A (en) * | 1995-11-02 | 1998-08-25 | Informix Software, Inc. | Method of commitment in a distributed database transaction |
GB2313456A (en) * | 1996-05-24 | 1997-11-26 | Ibm | Heterogeneous operations with differing transaction protocols |
US6185662B1 (en) | 1997-12-22 | 2001-02-06 | Nortel Networks Corporation | High availability asynchronous computer system |
TWI220821B (en) * | 2001-04-26 | 2004-09-01 | Accton Technology Corp | Zero-loss web service system and method |
US20050010386A1 (en) * | 2003-06-30 | 2005-01-13 | Mvalent, Inc. | Method and system for dynamically modeling resources |
US7822773B2 (en) * | 2008-01-25 | 2010-10-26 | International Business Machines Corporation | Method and system for reducing complex tree structures to simple tree structures based on relevance of nodes using threshold values |
KR101236990B1 (ko) * | 2009-12-21 | 2013-02-25 | 한국전자통신연구원 | 서버-센서네트워크의 협력 공간질의 처리방법 및 그 서버 |
US8442962B2 (en) * | 2010-12-28 | 2013-05-14 | Sap Ag | Distributed transaction management using two-phase commit optimization |
US20140214886A1 (en) | 2013-01-29 | 2014-07-31 | ParElastic Corporation | Adaptive multi-client saas database |
US9501312B2 (en) * | 2014-01-30 | 2016-11-22 | Red Hat, Inc. | Using compensation transactions for multiple one-phase commit participants |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4769772A (en) * | 1985-02-28 | 1988-09-06 | Honeywell Bull, Inc. | Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases |
-
1991
- 1991-05-07 US US07/696,667 patent/US5258982A/en not_active Expired - Fee Related
-
1992
- 1992-04-03 JP JP4081824A patent/JPH0675261B2/ja not_active Expired - Lifetime
- 1992-04-07 EP EP92480055A patent/EP0514306A2/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
JPH0675261B2 (ja) | 1994-09-21 |
EP0514306A2 (en) | 1992-11-19 |
US5258982A (en) | 1993-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0628292A (ja) | トランザクション処理を制御するためのネットワーク内の同期点メッセージの数を低減する方法および装置、ならびにネットワークを流れるプロトコルメッセージの数を低減する方法 | |
CA2205725C (en) | Preventing conflicts in distributed systems | |
US5371886A (en) | System for managing unit-of-work identifiers when a chained, distributed, two phase commit transaction system is severed | |
US5706429A (en) | Transaction processing system and method | |
US6216151B1 (en) | Saving connection time by obtaining result of request at later reconnection with server supplied associated key | |
KR20010013112A (ko) | 분산 데이터베이스에서의 트랜잭션 방법 | |
EP0533407A2 (en) | Heterogeneous transaction coordination | |
JP3798661B2 (ja) | クラスタ化コンピュータ・システム内のグループのメンバによって受信されたマージ要求を処理する方法 | |
JPH04229333A (ja) | コミット手順の非同期的再同期化実行装置および方法 | |
CN112597249B (zh) | 一种业务数据的同步分发存储方法及系统 | |
JPH04229359A (ja) | コンピュータ・ネットワーク | |
JPH04229334A (ja) | コンピュータ・システム及びアプリケーションプログラム実行方法 | |
JPH04229358A (ja) | 同期点回復手段を有するコンピュータ装置 | |
US6226694B1 (en) | Achieving consistency and synchronization among multiple data stores that cooperate within a single system in the absence of transaction monitoring | |
JP3525933B2 (ja) | 経路指定ノードにおける同期化プロシージャ | |
US6247038B1 (en) | Optimized synchronization procedure | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
JPH077979B2 (ja) | 非同期的プロトコル対話の同期化方法及び装置 | |
CN107465725B (zh) | 基于客户信息控制系统的异构长事务处理系统及方法 | |
CN112131014A (zh) | 决策引擎系统及其业务处理方法 | |
US5894547A (en) | Virtual route synchronization | |
CN114443232A (zh) | 事务管理方法、装置、电子设备及存储介质 | |
CN115150263A (zh) | 一种服务集群的部署方法 | |
JP2005507522A (ja) | 分散コンピューティングにおける順次整合性を保証する方法およびシステム | |
JP2643356B2 (ja) | 分散システムにおけるトランザクション整合性保証制御方法 |