(57)【要約】【課題】データベースシステム用のロック管理手法を提供する。【解決手段】データベースシステムにおいてロックを管理する方法および装置を提供する。マスターノードが、第１のリソースおよびその第１のリソースを含むリソース群についてのロックを第１の要求ノードに許与する。その要求ノードは、上記リソース群の中の第２のリソースについてのロックが既に存在することを表す上記リソース群対応のマッピングを受ける。上記群の中のリソースについてのロックを上記要求ノードが求める場合は、その要求ノードはマスターノードに知らせることなく自分自身にロックを許与する。第２の要求ノードが上記リソース群の中の特定のリソースについてのロックを要求する。第１の要求ノードはその特定のリソースについてのロックを許与し、上記マッピングを別のノードが上記特定のリソースについてのロックを保持していることを表すように更新する。【選択図】図２
2009525536.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムにおいてロックの要求を管理する方法であって、
一つのリソースについてのロックの要求を表すメッセージを送信する過程と、
入力確認、すなわち
前記リソースについての前記ロックが許与されたこと、および
前記リソースを含むリソース群についてのロックが許与されたこと
を表す入力確認を受信する過程と
を含む方法。
【請求項２】
前記入力確認を受信する過程が、前記リソース群の中の一つ以上のリソースが一つ以上の他のノードによってロックされていることを特定するマッピングを受信する過程を含む請求項１記載の方法。
【請求項３】
前記メッセージが前記リソース群についてのロックの要求を含む請求項１記載の方法。
【請求項４】
データベースシステムにおいてロックの要求を管理する方法であって、
マスターノードにおいて、第１のノードからの第１のリソースについてのロックの要求を受ける過程と、
前記第１のノードに入力確認、すなわち
前記第１のリソースについてのロックが前記第１のノードに許与されたこと、および
前記第１のリソースを含むリソース群についてのロックが許与されたこと
を表す入力確認を送る過程と
を含む方法。
【請求項５】
前記入力確認を送る過程が、前記リソース群の中で一つ以上の他のノードによってロックされている一つ以上のリソースを特定するマッピングを送ることを含む請求項４記載の方法。
【請求項６】
前記要求が前記リソース群についてのロックの要求を含む請求項４記載の方法。
【請求項７】
前記第１のリソースについての前記ロックと前記リソース群についてのロックとが互いに異なる種類のロックである請求項４記載の方法。
【請求項８】
前記マスターノードが前記リソース群を決める請求項４記載の方法。
【請求項９】
データベースシステムにおいてロックの要求を管理する方法であって、
一つのリソースについてのロックの要求を表すメッセージを送信する過程と、
前記リソースについての前記ロックが許与されたとの受信確認と、
前記リソースを含むリソース群についてのロックが許与されたとの受信確認と、
一つ以上の他のノードによってロックされている前記リソース群の中の一つ以上のリソースを特定するマッピングと
を受信する過程と
を含む方法。
【請求項１０】
前記リソース群に含まれる第２のリソースについての第２のロックを第１のノードが要求していることを前記第１のノードが判定する過程と、
前記マッピングに基づき、前記第１のノードが、前記第２のリソースについての非互換ロックが他のノードにはないと判断する過程と、
前記第１のノードが前記第２のリソースについての前記第２のロックを許与する過程と
をさらに含む請求項９記載の方法。
【請求項１１】
前記リソース群に含まれる第２のリソースについてのロックを第１のノードが要求していることを前記第１のノードが判定する過程と、
前記マッピングに基づき、前記第１のノードが、前記第２のリソースについての非互換ロックを他のノードが有すると判断する過程と、
前記第１のノードが前記マスターノードからの前記第２のリソースについての前記ロックを要求する過程と
をさらに含む請求項９記載の方法。
【請求項１２】
前記第１のノードにおいて、第２のリソースについてのロックを第２のノードが要求していることを示すメッセージを受ける過程と、
前記メッセージを受けたことに応答して、前記マッピングに、前記第２のリソースについての前記ロックを前記もう一つのノードが保持していることを表示する過程と
をさらに含む請求項９記載の方法。
【請求項１３】
前記第１のノードにおいて、第２のリソースについてのロックを第２のノードが要求していることを表すメッセージを受ける過程と、
前記メッセージを受けたことに応答して、前記第１のノードにおいて、前記リソース群についてのロックを放出することを決定する過程と、
前記リソース群についての前記ロックの放出を前記マスターノードに知らせる過程と
をさらに含む請求項９記載の方法。
【請求項１４】
データベースシステムにおいてロックの要求を管理する方法であって、
第１のノードからリソース群についての第１の要求を表す第１のメッセージを送出する過程と、
前記第１のノードにおいて、前記リソース群についての前記ロックが許与されたとの入力確認を受ける過程と、
前記第１のノードが前記リソースを含む前記リソース群についての前記ロックを保持している間に、前記第１のノードにおいて、前記リソースについてのロックを第２のノードが要求したことを表す第２のメッセージを受信する過程と、
前記リソースについてのロックを許与する第３のメッセージを前記第２のノードに送信する過程と、
前記リソース群についての前記ロックを保持する過程と、
前記第１のノードにおいて、前記リソース群を特定するマッピングに、前記リソースについての前記ロックが前記第２のノードに保持されている旨を表示させる過程と
を含む方法。
【請求項１５】
一つ以上のプロセッサによる実行時に請求項１乃至１４のいずれか一つに記載の方法を一つ以上のプロセッサに実行させる命令の一つ以上の系列を収容したコンピュータに読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はリソースをロックすることに関し、より詳しくいうと、この発明はアグリゲートロック処理に関する。
【背景技術】
【０００２】
明細書のこの節で述べる手法は開発努力の対象となり得る手法であるが、これまでに着想され検討された手法であるとは限らない。したがって、特に明示しない場合は、この節に記載してあるというだけの理由でそれらの手法が従来技術に属するものと考えてはならない。
【０００３】
マルチプロセシングシステムで実行中の複数のプロセスはディスクブロックなどの共有リソースにアクセスし得る。それら共有リソースの中には、アクセスを許すプロセスを一つずつに限っているものもあり、複数のプロセスが同時並行的にアクセスできるものもある。したがって、共有リソースへの多数のプロセスのアクセス動作を制御するために、「同期化メカニズム」が開発された。同期化メカニズムはそれらプロセスにロックを許与する。ロックは、そのロックを保持しているプロセスに、特定の方法で特定のリソースにアクセスする権利を許与する。一つのプロセスにロックが許与されると、そのプロセスは、そのロックが放棄され、取り消され、またはそれ以外の形で終結されるまで、そのロックを保持または所有する。ロックはセマフォ、読出し／書込みラッチ、および条件変数などのデータ構造で表される。ロックには多数の種類がある。すなわち、共有リソースが多数のプロセスに同時並行的に共有されることを許容する種類のロック（例えば共有読出しロック）もあり、同一リソースに他の種類のロックが許与されることを防ぐ種類のロック（排他的書込みロック）もある。
【０００４】
ロックの許与を担当するエンティティをこの明細書ではロックマネジャーと呼ぶ。単一ノードマルチプロセシングシステムでは、ロックマネジャーは、通常、共有リソースにアクセスするノード上のプロセスが実行し呼び出すソフトウェアコンポーネントで構成される。
【０００５】
単一ノードシステムと異なり、マルチノードシステムは、各々がマルチプロセシングシステムである複数のコンピューティングデバイスまたは「ノード」のネットワークから成る。それらノードの各々がひと組の共有リソースにアクセスできる。マルチノードシステムは、そのマルチノードシステムの中のノードによる上記ひと組の共有リソースへのアクセスを制御するために、グローバル同期化メカニズムと呼ぶ同期化メカニズムを用いる。
【０００６】
グローバルロックメカニズムは、マルチノードシステム上のプロセスにロックを発行することを担当するグローバルロックマネジャーを含む。ノードは、共有リソースへのアクセスのために、グローバルロックマネジャーから「グローバルロック」を許与される。グローバルロックは、マルチノードシステムの中のノード上のグローバルロックマネジャーが、もう一つのノード上の一つ以上のプロセスに、マルチノードシステムの中の任意のノード上で実行中のプロセス相互間で共有リソースへのアクセスを調整するように、許与できるロックである。
【０００７】
グローバルロックマネジャーの一種として、分散型ロックマネジャー、すなわちマルチノードシステムの複数のノード上に分散配置された複数のローカルロックマネジャーから成り、それら複数のローカルロックマネジャーの一つまたはそれ以上がマルチノードシステムの中の各ノードでランするようにした分散型ロックマネジャーがある。各ロックマネジャーが、そのローカルロックマネジャー所属のノード上のプロセスのためのグローバルロック相互間の調整を担当する。ローカルロックマネジャーは所属ノードについてのローカルロックマネジャーと呼ばれ、そのノードおよびそのノード上で実行中のプロセスはローカルノードおよび上記ローカルロックマネジャーについてのローカルプロセスとそれぞれ呼ばれる。
【０００８】
一つのノードにあるローカルロックマネジャーが、それ以外のノードにあるロックマネジャーと、上記ローカルロックマネジャーと同一のノードで実行中の複数のプロセスとに、グローバルロックを発行する。ノンローカルロックマネジャーが管理しているリソースについてのグローバルロックを必要としているプロセスは、そのプロセス所属のローカルロックマネジャーからのグローバルロックを要求する。ローカルロックマネジャーが互換性あるグローバルロックを既に保持している場合は、そのローカルロックマネジャーはそのローカルプロセスにグローバルロックを発行する。そのローカルロックマネジャーが互換性あるグローバルロックを保持していない場合は、そのローカルロックマネジャーは初め上記ノンローカルロックマネジャーから互換性あるグローバルロックを得る。一旦それを得ると、ローカルロックマネジャーはローカルプロセスにグローバルロックを発行する。
【０００９】
表現の便宜のために、ローカルロックマネジャーがローカルプロセスに発行するグローバルロックをこの明細書ではローカルロックと呼ぶ。すなわち、ローカルロックマネジャーは、もう一つのロックマネジャーからグローバルロックを得て、互換性あるローカルロックをローカルプロセスに発行する。
【００１０】
また、表現の便宜のために、ノードは動作を行うものとして、また動作の対象を構成するものとして説明する。しかし、これは、ノード上の一つ以上のプロセスが動作を行い、または動作の対象をなしていることの便宜上の表現であるに過ぎない。例えば、グローバルロックまたはローカルロックを要求し、取得し、または発行しているロックマネジャーは、グローバルロックまたはローカルロックを要求し、取得し、または発行しているノードとして説明できる。
【００１１】
グローバルロックを取得することは、ローカルロックだけを取得することよりも多くの費用を要する。すなわち、グローバルロックはノード相互間信号授受およびもう一つのノード上のローカルロック／ローカルロックマネジャー間の相互作用を伴うからである。
【００１２】
それらの相互作用はピン（ping: packet internet groper）と呼ばれる特に高コストの形式の動作を伴い得る。ピンは、一つのサーバーのキャッシュに常駐するリソースのバージョンを別のサーバーのキャッシュに供給する必要がある場合に起こる。すなわち、ピンは、ノードＡがそのノードのキャッシュの中のリソースＸを修正したあとノードＢがそのリソースＸを要求した場合に起こる。
【００１３】
［キャッシュフュージョン］
ピンを行う一つの方法はキャッシュフュージョンと呼ばれる。ロッキングメカニズムの高速化のためにノード間でリソースのキャッシュのコピーの転送を行う。図１は、この発明の一つの実施例によるマルチノードシステム１０１、およびキャッシュ付きリソースの要求および転送のためのキャッシュフュージョンプロトコルを示すブロック図である。システム１０１の中の複数のノードは互いに直接に、またはＬＡＮなどのネットワーク経由もしくはインターネット経由で信号授受できる。共有リソースについてのグローバルロックを取得するために、キャッシュフュージョンプロトコルは、要求側ノード１０４が特定の共有リソースについてのロックをその特定の共有リソースのためのロックマネジャーのあるマスターノード１０２から要求しているとき、開始する（ステップ１１２）。
【００１４】
マスターノード１０２はその要求を受けて、他のノードのいずれかがその共有リソースについての非互換性ロックを保持してないかどうか判定する。共有リソースについての非互換性ロックを保持しているノードがない単純な場合は、マスターノードが要求ノードに直接にロックを許与する。マスターノード自身が共有リソースについての非互換性ロックを保持している場合は、最終的にはマスターノードが共有リソースについてのロックを要求ノードに直接に許与する。それ以外の場合は、別のノード（すなわち保持ノード１０６）がその共有リソースについての非互換性ロックを保持する。
【００１５】
マスターノードは、保持ノード１０６にロックを保持されている特定の共有リソースについてのロックを要求ノード１０４が要求していることを表すメッセージを、保持ノード１０６に送る（ステップ１１４）。保持ノード１０６はそのロックを許与し、共有リソースのコピーを要求ノード１０４に直接に送る（ステップ１１６）。共有リソースについて保持ノード１０６が保持する互換性あるロック（例えば、要求ノード１０４がそのリソースについての共有ロックを要求し、保持ノード１０６がそのリソースについての共有ロックを保持するなど）で、保持ノード１０６から要求ノード１０４への相互接続メッセージをトリガーする場合もある。すなわち、保持ノード１０６が、共有リソースの誤り含有または修正バージョンを保持している場合があり得るからである。
【００１６】
次に、要求ノード１０４が共有リソースおよびロックを受けると、その要求ノード１０４は、その共有リソースについてのロックを要求ノード１０４が保持している旨をマスターノード１０２に知らせる（ステップ１１８）。したがって、共有リソースについてのロックの要求の各々は、四つのノード間メッセージを生じさせる。したがって、グローバルロックを取得するためのコストを低減する手法が必要とされている。
【００１７】
グローバルロックの取得のためのコストを下げる一つの手法が、複数の共有リソースへのアクセスのパターンに基づいて共有リソースのサブセットにマスターノードを割り当てる「マスタリング手法」を用いるやり方である（一つの共有リソースについてのマスターノードがその共有リソースへの他のノードによるアクセスを管理する）。例えば、共有データの一部へのアクセスの大部分を特定のノードが行う場合は、そのノードをその共有データの上記一部についてのマスターノードとする。それによって、ノード相互間のメッセージ授受オーバーヘッドを減らすことができる。すなわち、共有データの上記一部へのアクセスの大部分を特定のノードが要求するのでグローバルロック取得の必要性が低下するからである。共有データの上記一部への今後のアクセスには、上記特定のノードに関するローカルロックの許与だけがあればよい。しかし、上記マスタリング手法でも、グローバルロックの取得のためのより多くの命令の実行に伴うコストは解消しない。
【００１８】
グローバルロックの取得のためのコストを下げるもう一つの手法は、粗粒度ロッキングを用いる手法である。この手法では、ロックを行やディスクブロックなどより微細な粒度レベルで取得するのではなく、テーブルやファイルなどより高い粒度レベルで取得する。ロックを高い粒度レベルで取得した場合は、より微細な粒度で共有データの諸レベルへのロックが黙示的に許与されたことになる。例えば、一つのテーブル全体についてグローバルロックを取得すると、そのテーブルの行またはブロックについての個々のグローバルロックが黙示的に許与されており、個別に取得する必要はなく、したがって、各行および各ブロックについてグローバルロックを取得するコストを回避できる。
【００１９】
この手法の利点はマスターノードの割当てに左右されないことである。一方、この手法の不利な点は、誤ったコンテンションに陥り得ることである。より詳しくいうと、一つのノードがもう一つのノードにロックされたテーブルの中の行を競合モードで修正する必要がある場合は、そのノードは、アクセスの対象が互いに異なる行または互いに異なるブロックであるかもしれないにも関わらず、そのテーブルについてのロックを手放さなければならないのである。
【００２０】
グローバルロック取得のコストを低減するさらにもう一つの手法は階層ロック処理を用いる手法である。この手法では、ロックをテーブルなどの階層の高いレベルでまず取得する。グローバルロックを階層の高い方のレベルで取得すると、その階層のより低い方のレベルでもグローバルロックが黙示的に許与される。そのあとで、別のノードが行またはブロックなどその階層の低い方のレベルのデータに競合モードでアクセスする必要が生じた場合は、第１のノードがそのロックを段階的に縮小してその階層のより低いレベルでロックを取得する。
【００２１】
この手法の不利な点は、グローバルロック取得のコストが増大して、上記段階的縮小を引き起こすロック要求の出所である要求ノードに移ることである。上記要求を満たすために、階層の低い方のレベルで共有データ全部についてのグローバルロックを取得する動作を行う。この動作は、上記要求ノードの要求したロックが共有データのごく一部だけについてのロックであるにも関わらず行われるのである。
【００２２】
【非特許文献１】Thomas Schoebel-Theurer"Generalized Optional Locking in Distributed Systems," OperatingSystems Research Day 2004, 16-17 December 2004, pp.1-10
【特許文献１】ＵＳ  ５  ４１４  ８３９
【発明の開示】
【発明が解決しようとする課題】
【００２３】
したがって、グローバルロック関連のコストを低減する上述の手法に伴う欠陥を回避するグローバルロック取得コストの低減の手法が必要になっている。
【課題を解決するための手段】
【００２４】
以下に述べる説明においては、この発明の理解を深めるために多数の特定の詳細事項を挙げてある。しかし、この発明がこれら特定の詳細事項なしに実施できることは明らかであろう。一方、この発明の説明を不明確にしないように、周知の構成およびデバイスはブロック図の形で示してある。
【発明の効果】
【００２５】
マルチノードシステムで実行中の複数のプロセスから共有リソースへのアクセスを効率化し、そのシステムの利用効率を高める。
【発明を実施するための最良の形態】
【００２６】
［概略］
データベースシステムにおいてロックを管理する方法および装置を提供する。第１の要求ノードが第１のリソースについてのグローバルロックを要求し、マスターノードが第１のリソースとその第１のリソースを含む一つのリソース群とについてのロックを許与する。上記リソース群についてのグローバルロックの許与は、上記第１の要求ノードが同じリソース群の中の他のリソースにアクセスしがちであるとの想定に基づいて行う。要求ノードは、上記リソース群に対応するマッピング、すなわち他のノードの保持しているグローバルロックがそのリソース群の中の第２のリソースについて既に存在することを表すマッピングを受ける。要求ノードは上記リソース群についてのロックと互換性のあるローカルロックを、マスターノードへの通知なしに、自分自身に許与する。
【００２７】
第２の要求ノードは、上記リソース群の中の特定のリソースについてのグローバルロックを要求し得る。その場合、第１の要求ノードはその特定のリソースについてのロックを手放すかダウンコンバートし、その特定のリソースについてのロックを第２の要求ノードに許与する。第１の要求ノードはそのノードのマッピングを、別のノード（すなわち、第２の要求ノード）がその特定のリソースについてのロックを保持していることを表すように更新する。第１の要求ノードがその特定のリソースを修正したり汚染したりした場合は、第１の要求ノードはその修正に対応するデータを併せて送る。
【００２８】
［リソースについてのロックの要求］
図２はこの発明の一つの実施例によるマルチノードシステム２０１および共有リソース群についてのロックを得る方法を表すブロック図である。リソースは、概括的にいうと、マルチノードシステムの中のノードが共有できる任意のアイテムである。リソースのごく普通の例はデータベースデータブロックである。すなわち、リソース群は持続蓄積装置の中に蓄積された二つ以上の互いに隣接したデータブロックの組に対応する。
【００２９】
マスターノード１０２は、データベースシステムの中の共有リソースについて他のノードにグローバルロックを許与することを担当する。初めに、ノード２０４がリソースまたはリソース群について特定の種類のグローバルロックを要求する（ステップ２１２）。この要求には、特定のリソースについてのグローバルロックと、そのリソースを含む特定のリソース群についてのグローバルロックとの両方に対する要求が含まれ得る。ノード２０４からの要求は、特定のリソースだけまたは特定のリソース群だけについてのグローバルロック要求でもあり得る。
【００３０】
マスターノード１０２は、少なくともリソース群についての共有ロックなどのグローバルロックへの要求を許与するメッセージをノード２０４に送る（ステップ２１４）。ノード２０４からの要求が特定のリソースに対する要求である場合は、マスターノード１０２は、その特定のリソースが特定のリソース群（例えば、相続くデータブロックの組）の中にあることを動的に判定する（または統計的に判定ずみである）。マスターノード１０２は上記リソース群の中の全リソースについてロックおよびロックの種類を表すリソース群対応のマッピングを送る。ノード２０４上のローカルプロセスがそのマッピングにおいて特定されたリソース群の中の任意のリソースについてのグローバルロック、すなわちリソース群についてのグローバルロックと互換性のあるグローバルロックを要求する場合は、ノード２０４のローカルロックマネジャーはそのローカルプロセスにロックを許与して、マスターノード１０２へのロック要求なしにマッピングを更新するだけである。
【００３１】
例えば、上記リソース群についてのグローバルロックが共有ロックである場合は、ノード２０４は、ローカルプロセスにローカル共有ロックを許与するのに、上記リソース群の中のいずれかのリソースに対するマスターノード１０２からの共有ロックを要求する必要はない。要するに、ノード２０４は複数のリソースについてのロックをただ一つのメッセージで受けるのである。
【００３２】
上記リソース群に許与されたグローバルロックは、特定のリソースについてのグローバルロックと同一であっても異なっていても差し支えない。例えば、ノード２０４が特定のリソースについての排他的ロックを要求する場合は、マスターノード１０２はその特定のリソースについての排他的ロックを許与し得るとともに、その特定のリソースを含む上記リソース群についての共有ロックを許与し得る。その場合は、上述のマッピング自身が、ノード２０４に許与ずみの特定のリソースについての排他的ロックがあることを表す。
【００３３】
ノード２０４が初めにリソースについての少なくとも一つのグローバルロックを要求し（ステップ２１２）、このシステムの中のもう一つのノードがそのリソースについての非互換性ノードを保持している場合は、マスターノード１０２がそのリソースを含むリソース群についてのグローバルロックを許与し、ノード２０４がそのリソースについてグローバルロックを要求していることを表すメッセージを他のノードに送る。その際には、上記マッピングは、上記リソース群についてのロックの種類に加えて、非互換性グローバルロックが他のノードに保持中であることを併せて表す。
【００３４】
データベースサーバーネットワークの中のノードが如何に構成されているかに応じて、上記他のノードは、上記リソースについてのグローバルロックを、特に前記他のノードがそのリソースについて排他的ロックを有する場合は、所定の長さの時間が経過するまで、ノード２０４に許与しない。すなわち、排他的ロックの取得は、ノード間メッセージ授受の点から、比較的「不経済」であるからである。上記他のノードは、リソースに対するマスターノード１０２からの要求がある数に達した場合は、上記所定の長さの時間の経過に関わりなく、そのリソースについてのグローバルロックを放出するように構成することもできる。
【００３５】
上記他のノードは、図１に関連づけて説明したプロセスと同様に、上記リソースについてのグローバルロックを互換性あるロックモードにダウンコンバートするか、そのロックを全く手放してリソースの最新バージョンのコピーをノード２０４に送る。次に、ノード２０４は、そのリソースについてのロックを自分が保持していることをマスターノード２０４に知らせる。したがって、ノード２０４が既にロックずみのリソースについての非互換性グローバルロックを要求し、そのロックずみのリソースを含むリソース群についてのグローバルロックを許与されている場合は、ノード２０４は二つのメッセージ、すなわち上記リソース群についてのロックを許与するマスターノード１０２からのメッセージ、および上記リソースについてのロックを許与する上記他のノードからのメッセージの二つのメッセージを受ける。
【００３６】
［領域マッピング］
ノード２０４に送られたマッピングは、上記リソース群についてのグローバルロックに加えて、同リソース群の中の特定のリソースについてのロックがシステム内のもう一つのノードに保持されていることを併せて表す。図３は、ノード２０４など特定のノードについて共有リソース群のこの発明の一つの実施例によるマッピング３００を説明する図である。マッピング３００は、上記リソース群のロックモードおよびその群の中の個々のリソースのロックモードに関するノード２０４への情報を後述のとおり保持する任意の形式のデータ構造（例えば、文字アレーなど）またはデータファイル（例えば、編成ずみのテキストを含む単純なテキストファイルなど）で構成できる。
【００３７】
この例では、マッピング３００は共有グローバルロック３０２がマッピング３００に対応して上記リソース群につき許与されたことを表している。また、マッピング３００は、排他的グローバルロック３０４がブロック７（「リソース７」）に対応して上記リソースにつきもう一つのノードに保持されていることを表す。さらに、マッピング３００はノード２０４が自分自身に共有ロックを許与したこと（すなわち、ノード２０４のローカルロックマネジャーがノード２０４に関するローカルプロセスに共有ロックを許与したこと）を表す。
【００３８】
マッピング３００などのマッピングは、上記リソース群の中の一つのリソースに関する他の情報、例えばシステムの中のどのノードが排他的ロックを保持しているか、そのロックはいつ許与されたかなどの情報も保持できる。マッピング３００が１６個のリソースに対応するものとして図３には示してあるが、マッピング３００は任意の個数のリソースに対応させることができ、また、例えばどのリソースが最も頻繁に要求を受けたか、どれほど頻繁に競合が生じたか、衝突はいつ起きたか、などに基づいて、マスターノード１０２が動的に決めた個数にすることができる。
【００３９】
［群ロック保持ノードからの後続のロック要求］
図４はこの発明の一つの実施例によるマルチノードシステム４０１、およびリソース群の中の一つのリソースについてのグローバルロックを一つのノード（例えば要求ノード４０４）が得る方法を、要求ノード４０４が上記リソース群についてのグローバルロックを保持しもう一つのノード（例えば保持ノード４０６）が上記一つのリソースについてのグローバルロックを保持する場合について示すブロック図である。
【００４０】
要求ノード４０４がマッピング３００の中のリソース７についてのグローバルロックを要求し、そのロックが保持ノード４０６の保持するリソース７について保持中ロックとの間で互換性を備えない場合は、キャッシュフュージョンプロトコルにしたがってノード間メッセージをマスターノード１０２および保持ノード４０６に送る。例えば、要求ノード４０４がリソース７についてのグローバルロックを要求するメッセージをマスターノード１０２に送る（ステップ４１２）。マスターノード１０２はどのノードがリソース７についての排他的ノードを保持するかを判定し、要求ノード４０４がリソース７についてのグローバルロックを要求していることを保持ノード４０６に知らせるメッセージを保持ノード４０６に送る（ステップ４１４）。保持ノード４０６はそれ自身のグローバルロックをナルモードにダウンコンバートするか全面的に手放すかして、リソース７についてのロックを許与するメッセージを要求ノード４０４に送る（ステップ４１６）。また、保持ノード４０６は、リソース７に加えられたあらゆる修正を反映したリソース７の最新バージョンのコピーも送る。要求ノード４０４は、要求ノード４０４がリソース７についての排他的グローバルロックを保持していることをマスターノード１０２に知らせる（ステップ４１８）。マスターノード１０２はそれ自身の情報テーブルを更新して、要求ノード４０４がリソース７についての排他的ロックを保持中であることを表示する。
【００４１】
要求ノード４０４がマッピング３００の特定するリソース群の中の一つのリソースについてのグローバルロックを要求しており、それ以外のノードがグローバルロックを保持していないかそのリソースについての非互換性グローバルロックを保持していない状態では、複数のノード間メッセージを発生する必要はない。しかし、要求ノード４０４が上記リソース群の中でマッピング３００の特定するリソースであって共有モードで領域ロックを保有するリソースについての排他的ロックを要求する場合は、ノード４０４はそのグローバルロックをフュージョンロックに拡張し、マスター１０２に拡大要求を差し出す。要求ノード４０４はマッピング３００の中にロック拡張を表示することができる。
【００４２】
［リソース群の中の一つのリソースについてのロックを要求する第２のノード］
図５はこの発明の一つの実施例によるマルチノードシステム５０１、およびリソース群の中の一つのリソースについてのロックを一つのノード（例えば、要求ノード５０４）が得る方法を、もう一つのノード（例えば、保持ノード５０６）がそのリソース群についてのロックを保持する場合について示すブロック図である。
【００４３】
保持ノード５０６がリソース群に対応するマッピング３００を得たのち、例えば要求ノード５０４などもう一つのノードがマッピング３００対応のリソース群の中の一つのリソースについてのグローバルロックを要求し得る。例えば、要求ノード５０４がマッピング３００の中のブロック３（すなわち「リソース３」）に関連したリソースについての排他的グローバルロックを要求しており、保持ノード５０６が共有モードで群ロックを保持しているものと仮定する。要求ノード５０４はリソース３についての排他的グローバルロックの要求をマスターノード１０２に送る（ステップ５１２）。マスターノード１０２は、例えばそのノード１０２自身のマッピングに基づき、保持ノード５０６がリソース３を含む上記リソース群についての共有グローバルロックを有すると判定する。
【００４４】
この段階において少なくとも二つのケースがあり得る。すなわち、（１）保持ノード５０６がリソース３についての個別共有グローバルロック（すなわち、グループロックに加えてそのリソースだけについてのグローバルロック）を保持する、または（２）保持ノード５０６はリソース３についての個別グローバルロックを保持しない、の二つのケースである。保持ノード５０６が排他的ロックを保持している場合は、マスターノード１０２はその情報を有する。
【００４５】
保持ノード５０６がリソース３についての個別共有グローバルロックを保持している場合は、ロックを放出し許与するキャッシュフュージョンプロトコルに従う。より詳細に述べると、要求ノード５０４が排他的グローバルロックを要求していることをマスターノード１０２から知らされた保持ノード５０６は、リソース３についてそれ自身が有するロックを共有モードからナルモードにダウンコンバートするか、リソース３についてのロックを手放す。次に、保持ノード５０６はリソース３のコピーをノード５０４に送り、リソース３についての排他的グローバルロックを要求ノード５０４に許与する。要求ノード５０４は、自分がリソース３についての排他的グローバルロックを有することをマスターノード１０２に知らせる。保持ノード５０６におけるマッピング３００は更新されて、リソース３についての排他的グローバルロックがもう一つのノードに保持されていることを表示する。
【００４６】
保持ノード５０６がリソース３についての個別グローバルを保持していない場合は、マスターノード１０２は、リソース３についての排他的ロックを上記もう一つのノードが要求している旨のメッセージを保持ノード５０６に送る（ステップ５１４）。保持ノード５０６は、自分が個別グローバルロックを保持してないことをマスターノード１０２に知らせる（ステップ５１６）。マスターノード１０２はリソース３を含む上記リソース群に対応する自分自身のマッピングを更新するか、要求ノード５０４がリソース３についての排他的グローバルロックを保持中であることを表示するようにもう一つのログを更新する。マスターノード１０２は、初めに要求されていた排他的ロックを要求ノード５０４に許与する（ステップ５１８）。
【００４７】
［その他のロック処理環境］
リソース群全体についての特定のマッピング対応のロックを別のロックにアップグレードまたはダウングレードする（例えば、排他的ロックから共通ロックへのダウングレード）必要があったり、マッピング全体を分解したりする必要があったりという場合があり得る。
【００４８】
例えば、図２の中のノード２０４がマッピング３００を維持しそのノード２０４が一つのリソース群についてのグローバルロックを共有モードで保持するものとする。ノード２０４はマッピング３００で特定されたリソースの主要部分についての複数の排他的ロックをそのあとで取得し得るであろう。マルチノードシステム２０１の中のノード相互間の現在のトラフィックやその他のアップグレード関連要因に応じて、上記群ロックを排他モードにアップグレードする方がより効率的であるかもしれない。
【００４９】
より普通の事態は、一つ以上の他のノードが、マッピング３００で特定されたリソース群の中の複数のリソースについて複数の非互換性グローバルロックを要求する状態が生ずることである。ノード２０４は、上記リソース群の中のそれらリソースについての個別ロックが他のノードにいくつ保持されているか、互いに競合する要求がさらに出てくる可能性、上記リソース群の中のいずれかのリソースについてのロックをノード２０４が要求するか否かなどの要因一つ以上に基づき、群ロックをダウングレードまたは分解する必要があるか否かを判断する。上述の群ロックのダウングレードの場合は、ノード２０４が、マスターノード１０２に対して、マッピング３００対応のマスターノード１０２のマッピングを例えば排他的ロックから共有ロックへまたは共有ロックからナルロックへダウングレードするように、知らせる。
【００５０】
代わりに、ノード２０４はマスターノード１０２に対して群ロックを分解するように知らせる。その分解を要する事態は、ロックモードを大部分読込みロックなど他の種類のロックモードに変換中である場合である。他の種類のロックを変換するために、群ロックをまず分解したのち新たなロックの種類を取得しなければならない。
【００５１】
グループロックの伝達を要するもう一つの事態はマスターノードの故障である。マスターノード１０２が故障すると、マルチノードシステムの中のノードから新たなマスターノードを選択する。リソース群のマッピングを維持している非マスターノードの各々は、それぞれのマッピングを上記新たなマスターノードに送り、その新たなマスターノードが個々のリソースについての複数のロックおよびリソース群についての複数のロックを許与できるようにする。
【００５２】
上に述べてきたこの発明の実施例は、分散ロック処理環境にあるものとして説明した。しかし、この発明の実施例はこの分散処理環境に限定されない。それら実施例を非分散ロック処理環境で実働化することもできる。
【００５３】
［ハードウェア概要］
図６はこの発明の実施例を実働化できるコンピュータシステム６００のブロック図を示す。コンピュータシステム６００は、情報を授受するためのバス６０２ほかの通信メカニズムと、その情報を処理するようにバス６０２に接続したプロセッサ６０４とを含む。また、コンピュータシステム６００は、バス６０２に接続されて情報およびプロセッサ６０４で実行すべき命令を蓄積するＲＡＭその他のダイナミック蓄積装置などの主記憶装置６０６を含む。主記憶装置６０６は、プロセッサ６０４で実行すべき命令の実行中に一時的変数その他の中間情報を蓄積するためにも用いられる。コンピュータシステム６００は、さらに、バス６０２に接続されコンピュータ６０４へのスタティック情報および命令を蓄積する読出し専用メモリ（ＲＯＭ）６０８その他のスタティック蓄積装置を含む。磁気ディスクや光ディスクなどの蓄積装置６１０をバス６０２に接続し情報および命令の蓄積に備えてある。
【００５４】
コンピュータシステム６００は、コンピュータユーザに情報を表示するように、ＣＲＴ表示装置などの表示装置６１２にバス６０２経由で接続できる。英数字その他のキーを含む入力デバイス６１４を、プロセッサ６０４への情報および命令選択の伝達のために、バス６０２に接続してある。もう一つの種類のユーザ入力デバイスは、マウス、トラックボール、またはプロセッサ６０４への方向情報および命令選択の伝達および表示装置６１２上でのカーソルの動きの制御のためのカーソル方向キーなどのカーソルコントロール手段６１６である。この入力デバイスは通常二つの軸、すなわち第１の軸（例えばｘ軸）および第２の軸（例えばｙ軸）で二度の自由度をもち、一つの平面上での位置を特定する。
【００５５】
この発明は上述の手法を実働化するためのコンピュータシステム６００の利用に関する。この発明の一つの実施例によると、それらの手法は、主記憶装置６０６に含まれている一つ以上の命令の一つ以上の命令系列を実行しているプロセッサ６０４に応答してコンピュータシステム６００が行う。それらの命令は蓄積装置６１０などもう一つのコンピュータ可読媒体から主記憶装置６０６に読み込まれる。主記憶装置６０６に収容されている命令の系列の実行により、プロセッサ６０４はこの明細書に記載したプロセスの各ステップを実行する。代わりの実施例では、この発明の実働化のためにソフトウェア命令の代わりに、またはソフトウェア命令との組合せで、結線回路を用いる。すなわち、この発明の実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限られない。
【００５６】
この明細書で用いている用語「コンピュータ可読媒体」は、コンピュータを特定の形で動作させるデータを供給するのに寄与する任意の媒体を意味する。コンピュータシステム６００を用いて実働化した実施例では、例えばプロセッサ６０４に実行のために供給する際に多様なコンピュータ可読媒体が関わってくる。それら媒体は、非揮発性媒体、揮発性媒体、伝送媒体など任意の形態をとり得る。非揮発性媒体としては、例えば蓄積装置６１０などの光ディスクまたは磁気ディスクが挙げられる。揮発性媒体には主記憶装置６０６などのダイナミックメモリを含む。伝送媒体は、同軸ケーブル、銅線、光ファイバ、バス６０２を構成するリード線などの媒体を含む。また、伝送媒体は無線周波数データ通信および赤外線データ通信などの過程で生ずる音響波または光波の形をとることもできる。
【００５７】
コンピュータ可読媒体の普通の形態としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁性媒体、ＣＤ−ＲＯＭ、その他の光媒体、鑽孔カード、紙テープ、その他の鑽孔パターン付きの物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、その他のメモリチップまたはカートリッジ、後述の搬送波、またはその他のコンピュータ可読媒体が挙げられる。
【００５８】
一つ以上の命令の一つ以上の系列を実行に備えてプロセッサ６０４に供給するのに多様な形態のコンピュータ可読媒体を用いることができる。例えば、それら命令は当初は遠隔地点のコンピュータの磁気ディスクに蓄積しておくことができる。その遠隔地点のコンピュータはそのコンピュータのダイナミックメモリにそれら命令をロードしてモデムにより電話回線経由で送出する。コンピュータシステム６００内蔵のモデムは電話回線経由でデータを受けて赤外線送信機によりそのデータを赤外線信号に変換する。その赤外線信号により搬送されたデータを赤外線検出器で受けて、適切な回路によりバス６０２に送出する。バス６０２はそれらデータを主記憶装置６０６に送り、その主記憶装置６０６からプロセッサ６０４が命令を読み出して実行する。主記憶装置６０６の受けた命令を、プロセッサ６０４による実行の前または後に、蓄積装置６１０に蓄積することもできる。
【００５９】
コンピュータシステム６００には、バス６０２に接続した通信インタフェース６１８も含まれる。この通信インタフェース６１８は、ローカルネットワーク６２２に接続されたネットワークリンク６２０への双方向データ通信接続を構成する。例えば、通信インタフェース６１８は、対応のタイプの電話回線へのデータ通信接続を提供するための統合サービスディジタル網（ＩＳＤＮ）カードまたはモデムで構成できる。もう一つの例として、通信インタフェース６１８をローカルエリアネットワーク（ＬＡＮ）カードで構成して、互換性あるＬＡＮへのデータ通信接続を提供することもできる。無線リンクを用いることもできる。リンクの形態の如何を問わず、通信インタフェース６１８は多様な情報を表すディジタルデータストリームを搬送する電気信号、電磁波信号または光信号を送受する。
【００６０】
ネットワークリンク６２０は、一つ以上のネットワーク経由で他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク６２０は、ホストコンピュータ６２４、またはインターネットサービスプロバイダ（ＩＳＰ）６２６の稼働するデータ装置への接続を、ローカルネットワーク６２２経由で構成する。一方、ＩＳＰ６２６は、一般に「インターネット」と呼ばれるパケットデータ全世界通信網６２８経由でデータ通信サービスを提供する。ローカルネットワーク６２２および６２８はいずれも、ディジタルデータストリームの搬送に電気信号、電磁波信号または光信号を用いる。多様なネットワーク経由の信号、ネットワーク６２０および通信インタフェース６１８経由の信号はいずれもコンピュータシステム６００に出入りするディジタルデータを搬送するものであり、情報搬送用搬送波を例示するものである。
【００６１】
コンピュータシステム６００は上述の諸ネットワーク、ネットワークリンク６２０および通信インタフェース６１８経由で、プログラムコードを含むメッセージを送信しデータを受信できる。上述のインターネットの例では、サーバー６３０が、アプリケーションプログラムのための要求コードを、インターネット６２８、ＩＳＰ６２６、ローカルネットワーク６２２および通信インタフェース６１８経由で送る。
【００６２】
受けたコードは、受信され次第プロセッサ６０４で処理し、または蓄積装置６１０その他の不揮発性蓄積装置に後刻の実行に備えて蓄積する。このようにして、コンピュータシステム６００はアプリケーションコードを搬送波の形で取得する。
【００６３】
この発明の実施例を多様な詳細点を参照しながら上に述べてきたが、これらの詳細点は実動化の例ごとに異なる。したがって、この発明が何であるか、および出願人が何を発明として意図しているかを表す唯一で排他的な指標は、この出願の特許請求の範囲の記載である。特許請求の範囲に用いてある用語についてこの明細書に述べた定義はそれら用語の意味を特定する。したがって、請求の範囲に明示的に示していない限定、素子、特性、利点、または属性によってそれら請求の範囲に限定を加えてはならない。すなわち、この出願の明細書および図面は例示のみを意図するものであって限定を意図するものではない。
【産業上の利用可能性】
【００６４】
マルチノードシステムにおけるデータベース装置などの共有リソースの設置および運用の費用効率を著しく改善でき、この種のシステムのいっそうの普及に寄与できる。
【図面の簡単な説明】
【００６５】
【図１】この発明の一つの実施例によるマルチノードシステム、およびキャッシュ付きリソースを要求し転送する方法のブロック図。
【図２】この発明の一つの実施例によるマルチノードシステム、および一群の共有リソースについてロックを取得する方法のブロック図。
【図３】この発明の一つの実施例により一群の共有リソースについて特定のノードでロックを取得する方法の流れ図。
【図４】この発明によるマルチノードシステム、および一群のリソースの中の一つのリソースについてのロックを一つのノードで取得する方法であって、そのノードが上記一群のリソースについてのロックを保持しもう一つのノードがそのリソースについてのロックを保持している方法を図解するブロック図。
【図５】この発明によるマルチノードシステム、および一群のリソースの中の一つのリソースについてのロックを一つのノードで取得する方法であって、もう一つのノードがそのリソース群についてのロックを保持している場合の方法を図解するブロック図。
【図６】この発明の一つの実施例の実動化に用いることができるコンピュータシステムのブロック図。
【符号の説明】
【００６６】
［図１］
１０１，２０１，４０１，５０１    マルチノードシステム
１０２        マスターノード
１０４，４０４，５０４    要求ノード
１０６，４０６，５０６    保持ノード
１１２        グローバルロックを要求する
１１４        グローバルロックをダウングレードまたは放棄するようノードに知らせる
１１６        グローバルロックを許与する
１１８        グローバルロック保持の変化をマスターノードに知らせる
［図２］
２０４        ノード
２１２        リソースについてのグローバルロックを要求する
２１４        リソースおよび一群のリソースについてグローバルロックを許与する
［図４］
４１２        一群のリソースの中のリソースについてのグローバルロックを要求する
４１４        ノード４０４がリソースについてグローバルロックを要求していることを表すメッセージ
４１６        グローバルロックを許与する
４１８        グローバルロック保持の変化をマスターノードに知らせる
［図５］
５１２        リソースについてのグローバルロックを要求する
５１４        そのリソースについてもう一つのノードがグローバルロックを要求していることをノードに知らせる
５１６        そのノードがそのリソースについてのグローバルロックを保持していないことをマスターノードに知らせる
５１８        そのリソースについてグローバルロックを許与する
［図６］
６００        コンピュータシステム
６０２        バス
６０４        プロセッサ
６０６        主記憶装置
６０８        ＲＯＭ
６１０        蓄積装置
６１２        表示装置
６１４        入力装置
６１６        カーソル制御装置
６１８        通信インタフェース
６２０        ネットワークリンク
６２２        ローカルネットワーク
６２４        ホストコンピュータ
６２６        インターネットサービスプロバイダ（ＩＳＰ）
６２８        インターネット網
６３０        サーバー
【図１】
2009525536.tif 000003
【図２】
2009525536.tif 000004
【図３】
2009525536.tif 000005
【図４】
2009525536.tif 000006
【図５】
2009525536.tif 000007
【図６】
2009525536.tif 000008
【国際調査報告】
2009525536.tif 000009
2009525536.tif 000010
2009525536.tif 000011