(57)【要約】【課題】複数のノードを含むシステムにおいてロックに関連した一貫性欠如を解消する手法を提供する。【解決手段】ロック関連の一貫性欠如を処理する手法を提供する。この種の一貫性欠如は、同一のリソースに関する二つ以上のロック情報の組がそのリソースについて要求されたロックや許与されたロックについて一貫性を欠く情報を伝達するときに生ずる。概括的にいうと、この手法は、リソースについてローカルに蓄積されたロック情報がそのリソースのマスターノードに送られるようにする過程を含む。そのリソースの上記マスターノードは上述の過程を通じて送られてきたロック情報を受けてそのロック情報を自身で維持していたロック情報と比較する。この比較の結果に基づき、マスターノードはそのロック関連の一貫性欠如をどのようにして解消するかを決め、そのリソースについてのローカルロック情報の変更を要するノードにメッセージを送る。ロック情報すべてが一貫性を得ると、リソースはアクセス可能な状態になる。ロック関連の一貫性欠如がノードの再起動なしに解消されるので、リソースの利用可能性が改善される。【選択図】図２
2008544371.tif 000002
【特許請求の範囲】
【請求項１】
リソースに関するロック情報を複数のノードが個別にそれぞれ維持しているシステムにおいて前記リソースを包含するロック関連の一貫性欠如を処理する方法であって、
前記リソースに関するロック情報を前記複数のノードから特定のノードに送らせる過程と、
前記複数のノードから受けた前記ロック情報に基づき、前記特定のノードが前記ロック関連の一貫性欠如をいかに補正するかについて決定を行う過程と、
前記一貫性欠如をいかに補正するかについての決定に基づき、前記特定のノードが一つ以上の要補正ノードの組にそれら要補正ノードが前記リソースについて維持するロック情報を補正するように補正要求を送る過程と、
前記補正要求に応答して前記要補正ノードが前記リソースについてそれら要補正ノード自身の維持する前記ロック情報を補正する過程と
を含む方法。
【請求項２】
前記特定のノードが前記リソースについてマスターリソースオブジェクトを維持するマスターノードである請求項１記載の方法。
【請求項３】
前記ロック関連の一貫性欠如をいかに補正するかについての決定に基づき、前記マスターノードがそのマスターノードについてそれ自身に維持しているグローバルロック情報を変更する過程をさらに含む請求項２記載の方法。
【請求項４】
前記複数のノードが前記リソースについてマスターリソースオブジェクトを維持するマスターノードを含み、
前記特定のノードが前記マスターノード以外のノードである
請求項１記載の方法。
【請求項５】
前記複数のノードが前記リソースに関するロック情報を有しない一つ以上のノードを含むシステムに属し、
前記ロック関連の一貫性欠如を表す状態の検出に応答して、前記システムの中のすべてのノードに対して、前記リソースに伴うロック関連のアクティビティを停止する凍結メッセージを一斉通報する過程と、
前記ロック関連の一貫性欠如の解消のあと、前記システムの中のすべてのノードに対して、前記リソースに伴うロック関連のアクティビティを再開する解凍メッセージを一斉通報する過程と
をさらに含む請求項１記載の方法。
【請求項６】
前記リソースに関するロック情報を前記複数のノードから特定のノードに送らせる過程が、前記複数のノードに対して、前記リソースに関するロック情報を含む受信確認メッセージを送ることにより前記凍結情報に応答させることを含む請求項５記載の方法。
【請求項７】
前記特定のノードが、前記システムの中のすべてのノードが前記解凍メッセージの受信確認を終了するまで、前記ロック関連の一貫性欠如の補正のしかたについての前記決定を行わない請求項５記載の方法。
【請求項８】
前記特定のノードが、前記システムの中のすべてのノードから前記リソースについてのロック情報を維持する旨のロック情報の受信を終了するまで、前記ロック関連の一貫性欠如の補正のしかたについての前記決定を行わない請求項５記載の方法。
【請求項９】
前記リソースに関するロック情報を前記複数のノードから特定のノードに送らせる過程が、複数ノードデータベースシステムの中で前記リソースについて現在シャドウロックオブジェクトを有するすべてのノードから自分のシャドウロックオブジェクトの現在の状態に関するメッセージをそのリソースについての前記マスターノードに送らせる過程を含む請求項１記載の方法。
【請求項１０】
前記ロック関連の一貫性欠如を表す状態を自動的に検出する過程をさらに含み、前記複数のノードからロック情報を送らせる過程を前記状態の検出に応答して行う請求項１記載の方法。
【請求項１１】
一つ以上の命令の系統、すなわち一つ以上のプロセッサによる実行の際に、請求項１乃至１０記載の方法を前記一つ以上のプロセッサに行わせる一つ以上の命令の系統を収容した機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はロックの管理に関し、より詳しくいうと、この発明は複数ノードシステムにおいてロックに関連した一貫性欠如を処理する方法に関する。
【背景技術】
【０００２】
コンピュータはコンピュータプログラムを実行している期間中にメモリ、モデムおよびプリンタなどのリソースを用いる。それらリソースの多くは、特定のコンピュータプログラムが間欠的に用いるに留まるものである。例えば、ワードプロセッシングアプリケーションがプリンタに文書の印刷を要求する時間の長さは、そのワードプロセッシングアプリケーションを文書の作成に使う時間に比べて通常は短い。プリンタへのアクセスを有する唯一のプロセスが単一のワードプロセッシングアプリケーションである場合は、そのプリンタは時間全体の大部分にわたって遊休状態に留まる。
【０００３】
リソースを最大限に利用するために、多数のコンピュータデバイスで実行中の複数のプロセスまたは複数の「ノード」でそれらリソースを共有できるコンピュータネットワークが開発されてきた。したがって、ユーザはコンピュータごとに一つのプリンタを購入する必要はなく、多数のコンピュータを含むネットワークに接続できる単一のプリンタを購入すれば足りるようになった。そのネットワークのそれらコンピュータの各々におけるプロセスは、そのプロセスがプリンタを要求するときだけプリンタにアクセスするのである。
【０００４】
リソースが上述のとおり共有になっても、大部分のリソースは任意の時点で二つ以上のプロセスに使用可能なリソースではない。例えば、プリンタは多くの場合二つ以上の文書を同時に印刷することはできない。蓄積媒体のデータブロックや蓄積媒体に蓄積したテーブルなど複数のプロセスによってある方法で（例えば、読出し）同時並行的にアクセスできる上記以外のリソースもあるが、それ以外の方法では（例えば、書込み）アクセスはプロセス一つずつに可能である。したがって、リソースへのアクセスを制御する機構が開発されてきた。
【０００５】
それらの機構の一つをロックと呼ぶ。ロックは、そのリソースについて特定のプロセスにある権利を与えることを表すデータ構造である。ロックには多様な種類がある。多数のプロセスが共有する種類のロックもあり、同じリソースへの他のロックの許容を阻止する種類のロックもある。
【０００６】
一つのプロセスは、一つのリソースで動作を行う前に、そのリソースで所望の動作を行う権利をそのプロセスに許与するロックを得る必要がある。ロックを得るために、プロセスはロックマネジャーにロック要求を送信する。ロックマネジャーは一つ以上のリソースについてのロックの許与、待ち行列および追跡記録を担当するプロセスである。ネットワークシステムの中のリソースの利用を管理するために、そのネットワークの中の一つ以上のノードでロックマネジャーを実行する。特定のリソースへのアクセスを管理するロックマネジャーを実行しているノードをそのリソースの「マスターノード」または単に「マスター」と呼ぶ。
【０００７】
一つの従来技術の実装によると、ロックマネジャーは二つの種類のオブジェクト、すなわちリソースオブジェクトとロックとを実動化する。リソースオブジェクトは実際のリソースに対応するデータ構造である。ロックマネジャーを用いるアプリケーションは実際のリソースとリソースオブジェクトとの間のマッピングを画定する。リソースオブジェクトの各々は二つの待ち行列、すなわち許与ずみ待ち行列およびコンバート待ち行列を有する。許与ずみ待ち行列は順序を特定していない許与ずみロックのリストである。コンバート待ち行列は要求ずみであってまだ許与されていないロックの一部順序特定ずみのリストである。ロック要求は実際にはコンバート要求、すなわちロックを保持中のプロセスがその保持中のロックのモードを一つのモードから別のモードにコンバートすることを要求するコンバート要求であるのが普通である。
【０００８】
ロックはプロセスおよびそのロックのモードを特定するデータ構造である。ロックマネジャーはリソースオブジェクトの許与ずみの待ち行列にロックを添付して、そのロックの中で特定されたプロセスが、そのロックの添付先のリソースオブジェクトに対応するリソースについてのロックに表示された種類のロックを許与されたことを表示する。
【０００９】
図１は通常のロックマネジャー１０６のブロック図である。ロックマネジャー１０６はメモリ１０８に蓄積されたリソースオブジェクト１００を管理するように構成されたプロセスである。リソースオブジェクトは許与ずみの待ち行列１０２およびコンバート待ち行列１０４を含む。ロックマネジャー１０６が許与ずみの待ち行列１０２に三つのロック１１０，１１２および１１４を添付し、コンバート待ち行列１０４に一つのコンバート要求１３０を添付した状態を示している。
【００１０】
ロックおよびコンバート要求はすべてプロセスＩＤ部とロックモード部とを備えている。ロック１１０のプロセスＩＤ部１１６は、プロセスＰＲＯＣ＿１がロック１１０を所有していることを表し、ロック１１０のロックモード部１１８はロック１１０が排他的ロックであることを表す。ロック１１２のプロセスＩＤ部１２０はロック１１２がプロセスＰＲＯＣ＿２の所有するロックであることを表し、ロック１１２のロックモード部１２２はロック１１２がＮＵＬＬモードロックであることを表す。ロック１１４のプロセスＩＤ部１２４はロック１１４がプロセスＰＲＯＣ＿３の所有するロックであることを表し、ロック１１４のロックモード部１２６はロック１１４がＮＵＬＬモードロックであることを表す。コンバート要求１３０のプロセスＩＤ部１３２はコンバート要求１３０がプロセスＰＲＯＣ＿４と関連づけられるものであることを表し、コンバート要求１３０のロックモード部１３６はＰＲＯＣ＿４がそのリソースについて現在ＮＵＬＬモードロックを保持していることを表す。コンバート要求１３０は、ロックモード部１３６に加えて、ＰＲＯＣ＿４が排他的モードロックを要求していることを表す要求ずみモード部１３４を備える。
【００１１】
ロックマネジャー１０６は許与ずみの待ち行列１０２にロック１１０，１１２および１１４を添付して、リソースオブジェクト１００対応のリソースの排他的所有権をその時点でＰＲＯＣ＿１が有することを表す。ロックマネジャー１０６はコンバート待ち行列１０４にコンバート要求１３０を添付して、リソースオブジェクト１００に関連するリソースへの排他的モードロックをＰＲＯＣ＿４が要求したがまだ許与されていないことを表す。
【００１２】
リソースオブジェクトのコンバート待ち行列は、未決の（未許与の）ロック要求のすべてを保持する部分的に順序特定ずみのリストである。未決ロック要求のいずれかが未許与状態にあると、それら未許与ロック要求の一つがコンバート待ち行列の「先頭」になる。現時点で許与ずみのロックがロックマネジャーに対して特定のロック要求に許与を発しないように阻止しなくても、そのロック要求はコンバート待ち行列が空きでなければそのコンバート待ち行列に収容される。この手法により、システムの中で一つのプロセスが他のプロセスに達成できている進捗を達成できない「ライブロック」を防止する。
【００１３】
ネットワーク構成のコンピュータシステムでは、特定のリソースについてロックを保持し要求しているプロセスのいくつかまたは全部がそのリソースのマスターノード以外のノードにあり得る。一つのリソースについてのロックを要求するプロセスを実行中のノードがそのリソースのマスターノードでない場合は、ロック要求をノード相互間で伝送しなければならない。その種のノード相互間メッセージ授受を容易にするために費やされるコンピュータの処理能力はノード内通信に必要な処理能力に比べて著しく大きい。また、ノード相互間通信は一般にノード内通信よりも低速である。さらに、そのノード相互間信号授受は、それ以外の種類のノード間信号授受に利用できるスループットを低下させ、そのスループット低下はそのノード間信号授受がネットワーク上のワークステーション相互間の信号授受である場合は著しく大きくなる。
【００１４】
ロック動作に関連したノード相互間信号授受を減らす一つの手法は、リソースオブジェクトのシャドウを多数のノードに伝播させて、リソースオブジェクトを実効的に分散型オブジェクトに変換する過程を含む。この手法の実動化は、例えば、２００３年６月３日発行の米国特許第６，５７４，６５４号に記載してあり、その特許明細書の内容をここに参照してこの明細書に組み入れる。
【００１５】
リソースオブジェクトのシャドウを多数のノードに伝播させることによって、マルチプロセシングシステムの処理能力を活用できる。すなわち、シャドウリソースオブジェクトを有するノードの各々がそのリソースに関係したロック動作を行うのに使われるからである。また、リソースに対するロック管理負荷が分散されるので、そのリソースについてのロック管理の実行に必要となる処理負荷がノードを過負荷状態にする可能性は、一つのリソースについてのロック動作をすべて単一のノードで処理する形のロック管理システムに比べて低くなる。
【００１６】
上述のシャドウリソースオブジェクト手法を用いて、一つのリソースに対するマスターリソースオブジェクトは、そのリソースへのアクセスを求めるプロセスのあるノードにあるシャドウリソースオブジェクトにロックを許与する。一方、シャドウリソースオブジェクトの各々は、そのシャドウリソースオブジェクトと同じノードにあるプロセスにリソースについてのロックを許与する。上記マスターリソースオブジェクトは、そのマスターリソースオブジェクトの所有するリソースへのアクセスを必要とするマスターノードで実行中の複数のプロセスに対するシャドウリソースオブジェクトとしても作用し得る。
【００１７】
各シャドウリソースオブジェクトの所有するロックが、そのシャドウリソースオブジェクトの複数のプロセスに許与できるロックの種類を定める。一つのシャドウリソースオブジェクトの所有するロックがそのシャドウリソースオブジェクトにそのシャドウリソースオブジェクトと同じノードにあるプロセスの要求したロックを許与する権利を与えない場合は、そのシャドウリソースオブジェクトはマスターリソースオブジェクトからのロックアップグレードを要求し得る。
【００１８】
一つのリソースを用いる複数のプロセスはマスターリソースオブジェクトと直接に信号授受する必要はないので、上述の分散型ロック管理システムの必要とするノード間信号授受の量は、各リソースについて単一の集中リソースオブジェクトを用いるロック管理システムが必要とする信号授受の量よりも少ない。より詳細に述べると、シャドウリソースオブジェクトが、要求されたロック動作をマスターリソースオブジェクトとの間の信号授受なしに行うことをそのシャドウリソースオブジェクトに許容するロックを有するときは、ノード間信号授受は回避されるのである。
【００１９】
シャドウロックオブジェクトを用いる場合は単一のリソースに関係するロック情報は複数ノードに反映される。例えば、同じロック要求をローカルシャドウリソースオブジェクトおよびマスターリソースオブジェクトの両方に反映させ得る。その場合は、マスターノードはその要求について「グローバル知識」を有する。すなわち、そのマスターノードは、どのノードがロック要求をしたか、どのロックモードを要求したかを認識している。これと対照的に、ローカルシャドウリソースオブジェクトはその要求についての「ローカル知識」を有する。より詳しくいうと、ローカルリソースオブジェクトは、どのローカルプロセスがロックを要求したか、およびそのローカルプロセスがどのロックモードを要求したかを特定し得る。
【００２０】
いずれのリソースにとっても、そのリソースについて保持され要求されたロックに関する情報は、そのリソースにアクセスするノード群全体にわたって、複数メッセージが複数のノード相互間を移動しているごく短い時間を除き、一貫性を保たなければならない。しかし、多様な理由（欠けたメッセージ、バグなど）でシャドウノードとマスターノードとの間の待ち行列ロック情報に一貫性欠如が生じ得る。それらの一貫性欠如をこの明細書では「ロック関連の一貫性欠如」と呼ぶ。
【００２１】
ロック関連の一貫性欠如の一つの例は、マスターリソースオブジェクトがノードＡに排他的ロックが許与されたと表示している一方で、ノードＡのシャドウロックリソースがノードＡはロック許与をまだ待っていると表示している場合である。もう一つの例は、ノードＢがリソースについて排他モード（「ＥＸモード」）を要求中であるのにマスターノードがその要求について何ら認識していない場合である。これらの一貫性欠如はハングアップ状態を引き起こす。
【００２２】
より深刻な場合は、二つのノードの両方が同じリソースへの排他モードを許与されたと「考える」場合である。この種のロック関連一貫性欠如はリソース内の不正動作を惹起する。
【００２３】
ロック関連の一貫性欠如が検出されたときは、その一貫性欠如を解消する方策を講じなければならない。データベースサーバー群という背景の下では、ロック関連の一貫性欠如の解消は、通常、何らかの形のリソース構造改変動作を行うことを伴う。そのような構造改変動作は、例えば、データベースサーバー群の中の一つ以上のノードでサーバーを再起動させることを含む。しかし、データベースサーバーを再起動させるプロセスは、残念ながら、システムの性能に重大な悪影響を及ぼし得る。
【００２４】
ここに述べた手法は追求可能な手法ではあるが、これまでに着想され追求された手法ではない。したがって、特に明示しない限り、これら手法のいずれかが上の説明で言及したというだけの理由で従来技術として扱われるものと想定すべきではない。
【００２５】
【特許文献１】ＵＳＰ  ５  ３３９  ４２７
【特許文献２】ＥＰ  ０  ６６５  ４９５
【発明の開示】
【発明が解決しようとする課題】
【００２６】
したがって、この発明の目的はシステムの性能を損なうことなくロック関連の一貫性欠如を解消する方策を提供することである。
【課題を解決するための手段】
【００２７】
以下に述べる説明においては、この発明の理解を深めるために多数の特定の詳細事項を挙げてある。しかし、この発明がこれら特定の詳細事項なしに実施できることは明らかであろう。一方、この発明の説明を不明確にしないように、周知の構成およびデバイスはブロック図の形で示してある。
【００２８】
［概略］
ロック関連の一貫性欠如を処理する手法がこの明細書には説明してある。上述のとおり、この種の一貫性欠如は、同一のリソースに関係するロック情報の二つ以上の組が、そのリソースについて要求されたロックや許与されたロックに関する一貫性の欠けた情報を伝達する際に起こる。概括的にいうと、この手法は、一つのリソースについてローカルに蓄積されたロック情報がそのリソースのマスターノードに送られるようにする過程を伴う。そのリソースのマスターノードは上記過程を経て受けたロック情報とそのマスターノードに保持してあったロック情報とを比較する。この比較に基づき、そのマスターノードはそのロック関連の一貫性欠如の解消のしかたを定め、上記リソースについてのそれぞれのローカルロック情報を変化させる必要のある複数のノードにメッセージを送る。ロック情報がすべて一貫性を備えるに至ると、そのリソースがアクセスを受け付けるようにする。ロック関連の一貫性欠如はノードを再起動させることなく解消するので、リソースの利用可能性は改善される。
【発明の効果】
【００２９】
マルチノードコンピュータシステムにおけるリソースの稼働率改善に寄与できる。
【発明を実施するための最良の形態】
【００３０】
［ロック関連の一貫性欠如］
ロック関連の一貫性欠如は多様な状況に起因して生ずる。例えば、ロックに関係するメッセージが所在不明になると一貫性欠如が起こる。その状況では、ロック関連のメッセージを送った側はそのメッセージの発送に基づき自分のロック情報の更新を通常は済ませているが、そのメッセージを受け取る側に保持してあるロック情報はそのメッセージを反映していない。
【００３１】
例えば、ロック要求メッセージが要求側のノードからマスターノードへの送信中に所在不明になると、その要求側のノードについてのローカルロック情報はロック要求ずみを反映するが、マスターノードについてのグローバルロック情報はその要求についての証拠を含まない。逆に、ロックを許与する旨のメッセージがマスターノードから要求側のノードへの伝送されている途中で所在不明になると、マスターノード側のグローバルロック情報はロック許与ずみを反映するが、要求側のノードについてのローカルロック情報はそのロック許与を反映しない。
【００３２】
ロックに関係するメッセージの上述の所在不明はロック関連の一貫性欠如を惹起する状況の一つの例にすぎない。ロック関連の一貫性欠如の原因となる上記以外の状況としては、メモリコラプション、不適切なリソースクリーンアップ動作などがある。ここに述べるロック関連の一貫性欠如の処理手法の適用はそれら一貫性欠如の特定の原因または一連の原因に限定されない。
【００３３】
［ロック関連の一貫性欠如の検出］
ロック関連の一貫性欠如があることは多様な方法により検出できる。例えば、一つの実施例によると、複数のノードの相互間で交換されるメッセージは、それらノードが要求したロックや許与したロックだけでなく、「現在のロック状態」情報をも表す。ノードから送られる現在のロック状態情報は、そのノードが保持しているロックの現在の状態を表す。例えば、リソースＲ１に関するノードＮ１でのシャドウロックオブジェクトが、そのリソースＲ１について排他的ロックがノードＮ１に許与されたことを表す場合は、ノードＮ１からリソースＲ１に送られるメッセージは、Ｒ１についての排他的ロックを自分が保持しているとＮ１が認識していることを表す。
【００３４】
一つのリソースについてのロックの現在状態の情報を含むメッセージを一つのノードがもう一つのノードから受けた場合は、受け側のノードはそのロック状態情報をそのリソースについての自分自身のロック情報と比較する。例えば、リソースＲ１のマスターノードＮ２がノードＮ１からそのノードＮ１がリソースＲ１についての排他的ロックを保持していると認識していることを表すメッセージを受ける場合を仮定しよう。その場合、マスターノードＮ２はリソースＲ１についてのマスターリソースオブジェクトを検査することができる。リソースＲ１についてのそのマスターリソースオブジェクトがノードＮ１にリソースＲ１についての排他的ロックが保持されていることを表さない場合は、ロック関連の一貫性欠如が存在することになる。
【００３５】
一つのリソースのマスターノードは上記一貫性欠如を最初に検出したノードではないかもしれない。例えば、ノードＮ１がマスターノードＮ２からリソースＲ１についての排他的ロックをＮ１が保持しているとＮ２が認識していることを表すメッセージを受ける場合を仮定しよう。その場合、ノードＮ１はリソースＲ１についてのシャドウリソースオブジェクトを検査できる。リソースＲ１についてのそのシャドウリソースオブジェクトがリソースＲ１についての排他的ロックがノードＮ１に保持されていることを表さない場合は、ロック関連の一貫性欠如が存在することになる。
【００３６】
ロック関連の一貫性欠如を自動的に検出するもう一つの方法は、要求側のノードの各々にロック要求送出のあとその要求への応答の受信なく経過した時間を追跡記録させるやり方である。応答受信なく経過した時間が閾値以上である場合は、要求を送出したノードはハング解消動作を起動させる。ハング解消動作の一部として、ロック管理システムが要求対象のリソースについてのロック関連一貫性欠如の有無をチェックすることもできる。
【００３７】
上述の例はロック関連一貫性欠如を自動的に検出する方法のごく一部の例にすぎない。一つの実施例によると、このロック管理システムは、ロック関連の一貫性欠如のあり得ることを表す状態を自動的に見極めて、それらの一貫性欠如をノードのシャットダウンなしに処理する動作を起動させる機構を含む。次に、ロック関連の一貫性欠如を処理する手法をさらに詳細に説明する。
【００３８】
［一貫性欠如の処理］
図２を参照すると、この発明の一つの実施例によるロック関連一貫性欠如の処理の流れ図が示してある。説明のために、リソースＲ１についてノードＮ１が保持しているローカルロック情報とリソースＲ１についてマスターノードＮ２が保持している情報との間に一貫性欠如があるものと仮定する。
【００３９】
ステップ２００において、ロック関連の一貫性欠如を検出する。上述のとおり、ロック関連の一貫性欠如の検出には多様な機構を用いることができ、ここに説明するそれら一貫性欠如の処理手法は特定の検出機構に限定されない。一貫性欠如の検出のために用いた機構に応じて、その一貫性欠如を検出するノードをマスターノードＮ２にすることができ、またそれ以外のノードとすることもできる。一つの実施例によると、ロック関連の一貫性欠如を検出するノードがマスターノードＮ２でない場合は、そのロック関連の一貫性欠如を検出するノードがマスターノードＮ２にそのロック関連一貫性欠如を知らせる。
【００４０】
ステップ２０２ではマスターノードＮ２がシステム内の全ノードに「凍結」メッセージを一斉通報する。この凍結メッセージは、ノードに対して、そのリソースについてのロック関連のアクティビティが補正動作の実施を待って中断された旨を伝える。
【００４１】
一つの実施例によると、全ノードがマスターノードに対して上記凍結メッセージを受信したことを表す受信確認メッセージを送る。また、リソースＲ１に関するローカルロック情報を有するノード（「連座ノード」）はマスターノードＮ２に対してローカルロック状態メッセージを送る（ステップ２０４）。検討対象のノードの各々が送出するローカルロック状態メッセージはリソースＲ１についてそのノードが保持しているローカルロック情報を反映する。このようにして、ノードＮ１はノードＮ２に対して、リソースＮ１がリソースＲ１について有するローカルロック情報を表すローカルロック状態メッセージを送る。
【００４２】
上記ローカルロック状態メッセージは受信確認メッセージと別に送ることができ、また、凍結メッセージの受信確認をするとともに、リソースＲ１について保持してあったローカルロック情報を伝達する複合メッセージの形で送ることもできる。
【００４３】
受信確認メッセージを全ノードから受けるとともにローカルロック情報をすべての連座ノードから受けると、マスターノードＮ２は一貫性欠如の解消のために何を変化させる必要があるかを認識する。この事例では、マスターノードＮ２がノードＮ１に対してリソースＲ１への排他的ロックを許与ずみである一方、ノードＮ１が自分はリソースＲ１について共有ロックを保持するに過ぎないと認識しているものと仮定する。この例では、マスターノードＮ２は、ノードＮ１が自分のローカルロック情報をリソースＲ１についての排他的ロックをノードＮ１が有する形に変化させることによって上記一貫性欠如を補正できると判断するかもしれない。
【００４４】
ステップ２０８において、マスターノードＮ２がマスターノードＮ２での補正を要する任意のロック情報を補正し、ローカルロック情報を変えるべき全ノード（「要補正ノード」）に補正要求を送る。この例では、マスターリソースオブジェクトについての情報に変更を加える必要はない。しかし、ノードＮ１についてのローカルロック情報は補正を要する。したがって、マスターノードＮ２は、ノードＮ１に対して、そのＮ１が自分のローカルロック情報をリソースＲ１への排他的ロックを有する形に変更する補正要求を送る。
【００４５】
ステップ２１０では補正を要するノードが補正要求を受けて、それら補正を行う。それら補正を加えたあと、補正を要するノードはマスターノードに対して補正実施ずみのメッセージを送る。この例では、ノードＮ１が自分のローカルロック情報を更新して、リソースＲ１への排他的ロックを保持していることを表すようにし、マスターノードＮ２に補正実施ずみ情報を送ってノードＮ１がローカルロック情報を補正した旨を表すようにする。
【００４６】
ステップ２１２において、マスターノードが要補正ノード全部から補正実施ずみメッセージを受けると、そのマスターノードは全ノードに「解凍」メッセージを一斉通報する。それらノードがこの解凍メッセージを受けると、リソースＲ１についてロック関連動作が再開され得ると認識する。
【００４７】
［個別コーディネータ実施例］
上述の例では、加えるべき補正の決定および補正実施の調整はマスターノードの担当である。しかし、その例においてマスターノードが実行するタスクは一つ以上のそれ以外のノードが代わりに行い得る。すなわち、一つのリソースのマスターノードは、そのリソースについてのロック関連の一貫性欠如を解消する動作の「調整ノード」である必要はない。
【００４８】
例えば、ロック関連の一貫性欠如を検出するノードはその一貫性欠如解消動作のコーディネータと呼ぶこともできる。その実施例では、ロック関連の一貫性欠如を検出するノードは、凍結メッセージを一斉通報し、ローカルロック情報を受け、一貫性欠如の解消のしかたを決めたりするノードであろう。すなわち、そのノードがロック関連の一貫性欠如を検出し、マスターノードからグローバルリソースオブジェクトの状態に関する情報を受けるのである。このコーディネータノードが、上記連座ノードから受けたローカルロック情報とマスターノードから受けたグローバルロック情報との両方に基づき、一貫性欠如の解消のしかたを決めるのである。
【００４９】
上記以外の実施例では、マスターノードの行うタスクをいくつかのノードに分担させる。例えば、ロック関連の一貫性欠如を検出するノードが凍結情報の一斉通報を担当し、マスターノードがロック情報の受信および一貫性欠如の解消のしかたの決定を引き続き担当する。すなわち、この明細書で説明する手法は、特定のタスクの実行を特定のノードが担当する形に限定されない。
【００５０】
［ロック関連の一貫性欠如の解消のマニュアル始動］
上に述べた実施例では、ロック関連一貫性欠如の解消を、ロック関連一貫性欠如の存在の可能性を表す状態を検出するプロセスに応答して自動的に行っている。しかし、それら一貫性欠如が自動的に検出される前に、データベースのユーザはロック関連の一貫性欠如がありそうだと認識させるシステムの振舞に気づき得る。
【００５１】
したがって、一つの実施例では、ロック管理システムを、ユーザがロック関連一貫性欠如解消動作を手動で始動させる機構を含むように構成してある。その機構は、例えば、ユーザが補正動作対象の一つのリソースまたはひと組のリソースを特定できるようにする制御を含む。それらの制御には、例えば、グラフィカルユーザインタフェース（ＧＵＩ）制御、コマンドラインインタープリターなどが含まれる。この発明には上記一貫性欠如解消動作の始動のためのユーザ入力を受ける特定の機構に限定されない。
【００５２】
［ハードウェア概要］
図３はこの発明の実施例を実動化するコンピュータシステム３００のブロック図である。このコンピュータシステム３００は、バス３０２またはそれ以外の情報伝達機構と情報処理のためにバス３０２に接続したプロセッサ３０４とを含む。また、コンピュータシステム３００はランダムアクセスメモリ（ＲＡＭ）またはそれ以外のダイナミック情報蓄積デバイスなどバス３０２に接続されて情報とプロセッサ３０４の実行する命令とを蓄積する主記憶装置３０６を含む。主記憶装置３０６はプロセッサ３０４が命令を実行するあいだ一時的変数またはそれ以外の中間情報の蓄積にも用いられる。コンピュータシステム３００はさらに読出し専用メモリ（ＲＯＭ）またはそれ以外のスタティック蓄積デバイスなどバス３０２に接続されてスタティック情報およびプロセッサ３０４への命令を蓄積するデバイスを含む。磁気ディスクまたは光ディスクなどの蓄積デバイス３１０はバス３０２に接続されて情報および命令を蓄積する。
【００５３】
コンピュータシステム３００はユーザへの情報の表示のためにバス３０２経由で陰極線管（ＣＲＴ）などの表示装置３１２に接続する。英数字キーその他のキーを含む入力デバイスをプロセッサ３０４への情報およびコマンド選択の伝達のためにバス３０２に接続する。もう一つの種類のユーザ入力デバイスとして、マウス、トラックボール、またはプロセッサ３０４への方向情報および命令選択並びに表示装置３１２上のカーソルの動きの制御のためのカーソル方向キーなどがある。この入力デバイスは二つの軸、すなわち第１の軸（例えばｘ軸）および第２の軸（例えばｙ軸）の方向に自由度を有し、一つの平面内で位置を特定できる。
【００５４】
この発明はコンピュータシステム３００を上述の手法の実動化に用いることに関する。この発明の一つの実施例によれば、上述の手法は主記憶装置３０６に蓄積されている一つ以上の命令の一つ以上の系列を実行するプロセッサ３０４に応答して実施される。それらの命令を蓄積装置３１０など機械可読媒体から読み出して主記憶装置３０６に蓄積する。主記憶装置３０６に蓄積されている命令の系列を実行することにより、プロセッサ３０４にそれら命令の系列に記述されたプロセスステップを実行させる。代替の実施例では、この発明の実動化にハードワイヤード回路をソフトウェア命令の代わりまたはソフトウェア命令との組合せで用いる。したがって、この発明の実施例はハードウェア回路とソフトウェアとの特定の組合せには限定されない。
【００５５】
ここに用いた用語「機械可読媒体」は、機械を特定の態様で動作させるデータの発生に使われる諸媒体を意味する。コンピュータシステム３００を用いて実動化した一つの実施例では、例えばプロセッサ３０４に実行させる命令の発生に多様な機械可読媒体が関係している。この種の媒体は非揮発性媒体、揮発性媒体、伝送媒体などの形をとるが、これら媒体だけに限られない。非揮発性媒体としては、例えば、蓄積デバイス３１０を構成する光ディスク、磁気ディスクなどがある。揮発性媒体には主記憶装置３０６に使われるダイナミックメモリなどがある。伝送媒体には、バス３０２を構成するワイヤのほか、同軸ケーブル、導線、光ファイバなどがある。また、伝送媒体は、無線周波数データ通信、赤外線データ通信の際に発生する電磁波や音波や光波などの形もとり得る。
【００５６】
機械可読媒体としては、例えば、フロッピーディスク、可撓性ディスク、ハードディスク、磁気テープその他の磁気媒体、ＣＤ−ＲＯＭその他の光記録媒体、パンチカード、紙テープなど鑽孔パターン付きの物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭその他のメモリーチップもしくはカートリッジ、またはコンピュータに読出し可能な上記以外の任意の媒体が挙げられる。
【００５７】
多様な形式の機械可読媒体が、一つ以上の命令の一つ以上の系列を実行に備えてプロセッサ３０４に送るのに係わり得る。例えば、それら命令は当初は遠隔コンピュータの磁気ディスクに蓄積されていた命令であり得る。その遠隔コンピュータはそれら命令を同コンピュータ内のダイナミックメモリにロードし、モデムを用いて電話回線経由でそれら命令を送ることができる。コンピュータシステム３００付属のモデムで電話回線からデータを受け、そのデータを赤外線信号に変換するように赤外線信号送信機を用いることもできる。その赤外線信号を赤外線検出器で受けて、その検出器からの出力データをバス３０２に供給することができる。バス３０２はそのデータを主記憶装置３０６に送り、その主記憶装置３０６からプロセッサ３０４が上記命令を読み出して実行する。主記憶装置３０６の受けた上記命令は、オプションとして、プロセッサ３０４による実行の前か後で蓄積装置３１０に蓄積することができる。
【００５８】
コンピュータシステム３００はバス３０２に接続した通信インタフェース３１８を併せ備えている。通信インタフェース３１８はローカルネットワーク３２２に接続したネットワークリンク３２０への双方向データ通信路を構成する。例えば、通信インタフェース３１８は、対応する種類の電話回線へのデータ通信路を形成する統合サービスディジタル網（ＩＳＤＮ）カードまたはモデムで構成できる。もう一つの例として、通信インタフェース３１８を互換性あるＬＡＮへのデータ通信路を構成するＬＡＮカードで構成することもできる。無線リンクを用いることもできる。それら具体化例のいずれにおいても、通信インタフェース３１８は、多様な種類の情報を表すディジタルデータストリームを搬送する電気信号、電磁波信号または光信号を送受信する。
【００５９】
ネットワークリンク３２０は通常一つ以上のネットワーク経由で他のデータデバイスにデータ通信を提供する。例えば、ネットワークリンク３２０はローカルネットワーク３２２経由でホストコンピュータ３２４への接続を、またはインターネットサービスプロバイダー（ＩＳＰ）３２６で稼働中のデータ装置への接続を構成し得る。ＩＳＰ３２６は広く「インターネット」３２８と呼ばれている全世界パケットデータ通信ネットワーク経由でデータ通信サービスを提供する。ローカルネットワーク３２２およびインターネット３２８はともにディジタルデータストリームの搬送に電気信号、電磁波信号または光信号を用いている。コンピュータシステム３００へ／からの入／出力ディジタルデータを搬送する諸ネットワーク経由の信号およびネットワークリンク３２０上の信号は、情報を伝送する搬送波の形式の例である。
【００６０】
コンピュータシステム３００は、ネットワーク、ネットワークリンク３２０および通信インタフェース３１８経由でプログラムコードなどのメッセージを送信し、データを受信することができる。インターネットの例では、インターネット３２８，ＩＳＰ３２６，ローカルネットワーク３２２および通信インタフェース３１８経由で、アプリケーションプログラム用の要求コードをサーバー３３０から送信し得る。
【００６１】
受信したコードは、プロセッサ３０４が受信と並行して実行したり、後刻の実行に備えて蓄積装置３１０またはそれ以外の非揮発性メモリに蓄積したりすることができる。このようにして、コンピュータシステム３００は搬送波の形でアプリケーションコードを得ることができる。
【００６２】
この発明の実施例を多様な詳細点を参照しながら上に述べてきたが、これらの詳細点は実動化の例ごとに異なる。したがって、この発明が何であるか、および出願人が何を発明として意図しているかを表す唯一で排他的な指標は、この出願の特許請求の範囲の記載である。請求の範囲に含まれる用語についてこの明細書に述べた定義はそれら用語の意味を特定する。したがって、請求の範囲に明示的に示していない限定、素子、特性、利点、または属性によってそれら請求の範囲に限定を加えてはならない。すなわち、この出願の明細書および図面は例示のみを意図するものであって限定を意図するものではない。
【産業上の利用可能性】
【００６３】
マルチノードコンピュータシステムの設置および運用の費用効率を著しく改善でき、この種のコンピュータシステムのいっそうの普及に寄与できる。
【図面の簡単な説明】
【００６４】
【図１】リソース関連の要求を追跡記録するのに用い得るリソースオブジェクトのブロック図。
【図２】この発明の一つの実施例によるロック関連一貫性欠如の処理の流れ図。
【図３】この明細書で説明した手法を実動化できるコンピュータシステムのブロック図。
【符号の説明】
【００６５】
１００        リソースオブジェクト
１０２        権利許与された待ち行列
１０４        隠れた待ち行列
１０６        ロックマネジャー
１１０，１１２，１１４    ロック
ＰＲＯＣ      プロセス
１１８，１２２，１２６    ロックモード部
１３０        コンバート要求
２００        ロック関連の一貫性欠如を検出する
２０２        マスターノードが凍結メッセージを一斉通報する
２０４        すべてのノードが凍結メッセージを受信確認し、連座ノードがマスターノードにローカルロック情報を送る
２０６        一貫性欠如の補正のしかたを決める
２０８        マスターノードがロック情報を補正して要補正ノードに補正要求を送る
２１０        要補正ノードが補正を行い補正実施ずみメッセージをマスターノードに送る
２１２        マスターノードが補正実施ずみメッセージを受けて解凍メッセージを一斉通報する
３００        コンピュータシステム
３０２        バス
３０４        プロセッサ
３０６        主記憶装置
３０８        ＲＯＭ
３１０        データ蓄積デバイス
３１２        表示装置
３１４        入力デバイス
３１６        カーソル制御
３１８        通信インタフェース
３２０        ネットワークリンク
３２２        ローカルネットワーク
３２４        ホストコンピュータ
３２６        インターネットサービスプロバイダー（ＩＳＰ）
３２８        インターネット
３３０        サーバー
【図１】
2008544371.tif 000003
【図２】
2008544371.tif 000004
【図３】
2008544371.tif 000005
【手続補正書】
【提出日】平成20年1月25日(2008.1.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
リソースに関するロック情報を複数のノードが個別にそれぞれ維持しているシステムにおいて前記リソースを包含するロック関連の一貫性欠如を処理する方法であって、
前記リソースに関するロック情報を前記複数のノードから特定のノードに送らせる過程と、
前記複数のノードから受けた前記ロック情報に基づき、前記特定のノードが前記ロック関連の一貫性欠如をいかに補正するかについて決定を行う過程と、
前記一貫性欠如をいかに補正するかについての決定に基づき、前記特定のノードが一つ以上の要補正ノードの組にそれら要補正ノードが前記リソースについて維持するロック情報を補正するように補正要求を送る過程と、
前記補正要求に応答して前記要補正ノードが前記リソースについてそれら要補正ノード自身の維持する前記ロック情報を補正する過程と
を含み、前記ロック関連の一貫性欠如を前記要補正ノードの再起動を要することなく解消する方法。
【請求項２】
前記特定のノードが前記リソースについてマスターリソースオブジェクトを維持するマスターノードである請求項１記載の方法。
【請求項３】
前記ロック関連の一貫性欠如をいかに補正するかについての決定に基づき、前記マスターノードがそのマスターノードについてそれ自身に維持しているグローバルロック情報を変更する過程をさらに含む請求項２記載の方法。
【請求項４】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項３記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項５】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項２記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項６】
前記複数のノードが前記リソースについてマスターリソースオブジェクトを維持するマスターノードを含み、
前記特定のノードが前記マスターノード以外のノードである
請求項１記載の方法。
【請求項７】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項６記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項８】
前記複数のノードが前記リソースに関するロック情報を有しない一つ以上のノードを含むシステムに属し、
前記ロック関連の一貫性欠如を表す状態の検出に応答して、前記システムの中のすべてのノードに対して、前記リソースに伴うロック関連のアクティビティを停止する凍結メッセージを一斉通報する過程と、
前記ロック関連の一貫性欠如の解消のあと、前記システムの中のすべてのノードに対して、前記リソースに伴うロック関連のアクティビティを再開する解凍メッセージを一斉通報する過程と
をさらに含む請求項１記載の方法。
【請求項９】
前記リソースに関するロック情報を前記複数のノードから特定のノードに送らせる過程が、前記複数のノードに対して、前記リソースに関するロック情報を含む受信確認メッセージを送ることにより前記凍結情報に応答させることを含む請求項８記載の方法。
【請求項１０】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項９記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項１１】
前記特定のノードが、前記システムの中のすべてのノードが前記解凍メッセージの受信確認を終了するまで、前記ロック関連の一貫性欠如の補正のしかたについての前記決定を行わない請求項８記載の方法。
【請求項１２】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項１１記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項１３】
前記特定のノードが、前記システムの中のすべてのノードから前記リソースについてのロック情報を維持する旨のロック情報の受信を終了するまで、前記ロック関連の一貫性欠如の補正のしかたについての前記決定を行わない請求項８記載の方法。
【請求項１４】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項１３記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項１５】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項８記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項１６】
前記リソースに関するロック情報を前記複数のノードから特定のノードに送らせる過程が、複数ノードデータベースシステムの中で前記リソースについて現在シャドウロックオブジェクトを有するすべてのノードから自分のシャドウロックオブジェクトの現在の状態に関するメッセージをそのリソースについての前記マスターノードに送らせる過程を含む請求項１記載の方法。
【請求項１７】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項１６記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項１８】
前記ロック関連の一貫性欠如を表す状態を自動的に検出する過程をさらに含み、前記複数のノードからロック情報を送らせる過程を前記状態の検出に応答して行う請求項１記載の方法。
【請求項１９】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項１８記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【請求項２０】
一つ以上のプロセッサで実行された場合にそれらプロセッサに請求項１記載の方法を実施させる一つ以上の命令系列を記録したコンピュータに読取可能な記録媒体。
【国際調査報告】
2008544371.tif 000006
2008544371.tif 000007
2008544371.tif 000008