(57)【特許請求の範囲】
【請求項１】
クラスタであって、
１つ以上のデータ記憶装置と、
各々が前記１つ以上のデータ記憶装置とのデータ通信アクセスを有する複数のノードと、
前記複数のノード間にＩＥＥＥ１３９４プロトコルを用いるシリアルなノード間通信リンクを提供するための相互接続バスと、
前記複数のノードの状態をチェックするための状態チェック手段と、
前記状態チェック手段と関連付けられた定数記憶手段とを備え、
前記複数のノードの各々は、
前記相互接続バスの一端に接続される相互接続バスコントローラと、
前記クラスタにおける前記複数のノードのノードトポロジを規定するノードマップと、
予め定められた時間間隔内でハートビートメッセージを伝送するためのハートビートロジックとを含み、前記ハートビートメッセージは、対応するノードを示すノード識別子を含み、
前記相互接続バスコントローラは、対応のノードが前記相互接続バスに接続されるとバイアス信号を送信するように構成されており、
前記相互接続バスコントローラは、前記クラスタにおけるトポロジ変化を検出するための、ＩＥＥＥ１３９４に基づいた自己監視ロジックを含み、
前記自己監視ロジックは、
前記相互接続バス上の前記バイアス信号の変化に基づいて、隣接する他のノードの追加または除去を検出し、
前記隣接する他のノードの追加または除去に応じたトポロジ変化を他のノードへ通知し、
前記トポロジ変化に基づいて、対応の前記ノードマップを更新し、
前記定数記憶手段は、前記複数のノードの各々から伝送される前記ハートビートメッセージを、前記ハートビートメッセージに含まれるノード識別子および前記ハートビートメッセージのタイムスタンプと対応付けて保持し、
前記状態チェック手段は、予め定められた数の連続したタイムスタンプを見落としたか否か、および、前記ノード間通信リンクにおいて前記複数のノードの各々がアクティブであるか否かに基づいて、前記複数のノードの各々の状態をチェックする、クラスタ。
【請求項２】
前記相互接続バス上の前記バイアス信号の変化は信号強度の変化を含む、請求項１に記載のクラスタ。
【請求項３】
前記バイアス信号は非ポーリング信号である、請求項１または２に記載のクラスタ。
【請求項４】
前記ノード間通信リンクは前記複数のノード間にデータのダイレクトメモリアクセスを提供する、請求項１〜３のいずれか１項に記載のクラスタ。
【請求項５】
前記ノード間通信リンクは、前記複数のノード間を通る非同期メッセージを供給する、請求項１〜４のいずれか１項に記載のクラスタ。
【請求項６】
前記複数のノードの各々は１つのコンピュータである、請求項１〜５のいずれか１項に記載のクラスタ。
【請求項７】
前記複数のノードは前記ノード間通信リンクを介してシリアルに接続される、請求項１〜６のいずれか１項に記載のクラスタ。
【請求項８】
前記複数のノードの各々は、
プロセッサと、
前記プロセッサによって実行される、前記データ記憶装置に保持されるデータへのアクセスを管理および制御するアプリケーションインスタンスと、
前記アプリケーションインスタンスからのコマンドを前記相互接続バスで用いられるコマンドに翻訳するデバイスドライバとをさらに含む、請求項１〜７のいずれか１項に記載のクラスタ。
【請求項９】
前記１つ以上のデータ記憶装置は前記複数のノードの各々によって直接アクセス可能である、請求項１〜８のいずれか１項に記載のクラスタ。
【請求項１０】
前記１つ以上のデータ記憶装置は前記複数のノードから選択されたノードによってアクセス可能である、請求項１〜９のいずれか１項に記載のクラスタ。
【請求項１１】
前記複数のノードは１つ以上のデータベースインスタンスを含み、
前記１つ以上のデータ記憶装置のうち少なくとも１つはデータベースとして構成される、請求項１〜１０のいずれか１項に記載のクラスタ。
【請求項１２】
前記相互接続バスコントローラは、他のノードからのデータ要求に応答して、前記データベースから読み出したデータを前記相互接続バスを介して要求ノードに伝送する、請求項１１に記載のクラスタ。
【請求項１３】
第１のノードとしての第１のコンピュータと第２のノードとしての第２のコンピュータとの間で通信するための方法であって、前記第１のコンピュータと前記第２のコンピュータとの間は、第１のネットワークを介して接続されており、前記第１および第２のコンピュータの各々は、前記第１および第２のノードを含む複数のノードのノードトポロジを規定するノードマップを有しており、
前記第１および第２のコンピュータが、前記第１のノードと前記第２のノードとの間で前記第１のネットワークを介してデータを伝送するステップを含み、前記データはＩＥＥＥ１３９４ベースのプロトコルを用いて前記第１のネットワークを介して転送され、前記第１のネットワークはノード間のシリアルな通信リンクであり、さらに、
前記第１のコンピュータが前記第１のノードと１つ以上のデータ記憶装置との間において第２のネットワークを介してデータを伝送するステップと、
前記第２のコンピュータが前記第２のノードと前記１つ以上のデータ記憶装置との間において前記第２のネットワークを介してデータを伝送するステップを含み、前記第２のネットワークは前記第１のネットワークとは別個であり、前記第１および第２のコンピュータは前記第１のネットワークに接続されるとバイアス信号を送信し、さらに、
前記第１または第２のコンピュータが、前記第１のネットワーク上の前記バイアス信号の変化に基づいて、第１または第２のノードの追加または除去を検出するステップと、
前記第１または第２のコンピュータが、検出された変化に応じて、対応の前記ノードマップを更新するステップと、
予め定められた時間間隔内でハートビートメッセージを伝送するステップと、
前記複数のノードの各々から伝送される前記ハートビートメッセージを、前記ハートビートメッセージに含まれるノード識別子および前記ハートビートメッセージのタイムスタンプと対応付けて保持するステップと、
予め定められた数の連続したタイムスタンプを見落としたか否か、および、前記ノード間通信リンクにおいて前記複数のノードの各々がアクティブであるか否かに基づいて、前記複数のノードの各々の状態をチェックするステップとを含む、方法。
【請求項１４】
前記第１および第２のコンピュータが、前記第１のノードと前記第２のノードとの間で前記第１のネットワークを介して非同期的にデータを伝送するステップをさらに含む、請求項１３に記載の通信するための方法。
【請求項１５】
前記第１のコンピュータが、前記第２のノードからのデータ要求に応答して、対応する前記データ記憶装置から読み出したデータを前記第１のネットワークを介して第２のノードに伝送するステップをさらに含む、請求項１３または１４に記載の通信するための方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明はノードクラスタリングに関する。この発明は、ノード間に相互接続を含むクラスタリングシステムおよび方法への特定の用途を見出す。
【背景技術】
【０００２】
発明の背景
クラスタは単一のシステムとして協働する独立したサーバのグループである。主要なクラスタ構成要素はプロセッサノード、クラスタ相互接続（専用ネットワーク）およびディスクサブシステムである。クラスタはディスクアクセスや、データを管理するリソースを共有するが、別個の各ハードウェアクラスタノードはメモリを共有しない。各ノードはそれ自体の専用のシステムメモリ、ならびにそれ自体のオペレーティングシステム、データベースインスタンスおよびアプリケーションソフトウェアを有する。クラスタは、単一の対称的なマルチプロセッサシステムにわたって高度な障害許容力およびモジュールの増分システム成長を提供し得る。サブシステムが故障した場合には、クラスタリングにより高い可用性が確実にされる。冗長なハードウェア構成要素、たとえば付加的なノード、相互接続および共有ディスクはより高い可用性を提供する。このような冗長なハードウェアアーキテクチャにより単一障害点が避けられ、障害許容力が与えられる。
【０００３】
データベースクラスタにおいては、各ノードに対するＣＰＵおよびメモリ要件がデータベースアプリケーションごとに異なり得る。性能および費用の要件もデータベースアプリケーションごとに異なる。性能に寄与する１つの要因は、クラスタにおける各ノードがその健康状態および構成を当該クラスタにおける他のノードに知らせ続ける必要があることである。これは、ハートビートと称されるネットワークメッセージをネットワークにわたって定期的に同報通信することによってなされてきた。ハートビート信号は通常、専用のネットワーク、すなわちノード間通信に用いられるクラスタ相互接続を介して送信される。しかしながら、ハートビートメッセージが損失または遅延したりすると、ノードが機能していないという誤った報告がなされるおそれがある。
【０００４】
先行技術のシステムにおいては、クラスタ相互接続は、各ノードにネットワークカードを取付け、適切なネットワークケーブルでこれらを接続し、ワイヤ全体にわたらせるようソフトウェアプロトコルを構成することによって構築されてきた。相互接続は、典型的には、ＴＣＰ／ＩＰもしくはＵＤＰを実行する低コスト／低速のイーサネット（登録商標）カード、または、ＲＤＧ（Reliable DataGram）を実行するコンパック（Compaq）のメモリチャネル（Memory Channel）もしくはＨＭＰ（Hyper Messaging Protocol）を用いるヒューレット・パッカード（Hewlett-Packard）のHyperfabric／２のような高コスト／高速のプロプラエタリの相互接続であった。低コスト／高速の相互接続はユーザのためにクラスタリングのコストを下げ、実行中の待ち時間を短くするだろう。
【０００５】
この発明は、上述の問題に対処するクラスタリングの新しく有用な方法およびシステムを提供する。
【発明の開示】
【課題を解決するための手段】
【０００６】
発明の概要
一実施例においては、１つ以上のデータ記憶装置と複数のノードとを含むクラスタが提供される。当該複数のノードは各々が当該１つ以上のデータ記憶装置とデータ通信アクセ
スできる。相互接続バスは当該複数のノード間にノード間通信リンクを提供する。自己監視ロジックにより、当該相互接続バス上の信号に基づいて当該クラスタにおけるトポロジ変化が検出される。
【０００７】
別の実施例に従うと、クラスタにおけるデータを伝達する方法が提供される。ここでは、当該クラスタは、１つ以上のデータ記憶装置を備えた通信ネットワークに複数のノードを含み、当該複数のノードの各々がソフトウェアインスタンスを制御する。当該複数のノードはさらに相互接続バスを介して互いに通信を行なう。データ要求メッセージが、当該相互接続バスを介して当該複数のノードにおける第１のノードから第２のノードに直接送信される。ダイレクトメモリアクセスによって選択されたデータは、当該選択されたデータが利用可能であり、当該相互接続バスを介して当該第２のノードから当該第１のノードに直接伝送される場合、当該第２のノードによって検索される。
【０００８】
明細書に援用され、明細書の一部を構成する添付の図面においてシステムおよび方法の実施例が示されるが、当該実施例は、下記の詳細な説明とともに当該システムおよび方法の具体的な実施例を説明するのに役立つ。図面に示される要素の境界（たとえば箱または箱のグループ）が境界の一例を表わすことが理解されるだろう。１つの要素が複数の要素として設計され得るかまたは複数の要素が１つの要素として設計され得ることを当業者は理解するだろう。別の要素の内部の構成要素として示される要素が外部の構成要素として実現され得、逆の場合も同様に実現され得る。
【発明を実施するための最良の形態】
【０００９】
図示される実施例の詳細な説明
以下は、開示全体を通じて用いられる選択された用語の定義を含む。すべての用語の単数形および複数形はともに各々の意味の範囲内である。
【００１０】
この明細書中で用いられる「コンピュータ読取可能媒体」は、信号、命令および／またはデータを実行のために直接的または間接的にプロセッサに供給することに関わるいかなる媒体をも指す。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むが、これらに限定されない多くの形を取り得る。不揮発性媒体はたとえば光ディスクまたは磁気ディスクを含み得る。揮発性媒体は動的メモリを含み得る。伝送媒体は同軸ケーブル、銅ワイヤおよび光ファイバケーブルを含み得る。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形を取り得る。コンピュータ読取可能媒体の一般的な形は、たとえば、フロッピ（登録商標）ーディスク、フレキシブルディスク、ハードディスク、磁気テープもしくは他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを備えた他のいずれかの物理的媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のいずれかのメモリチップもしくはカートリッジ、搬送波／パルス、またはコンピュータが読取ることのできる他のいずれかの媒体を含む。
【００１１】
この明細書中で用いられる「ロジック」は、機能もしくは動作を実行するために、および／または別の構成要素から機能もしくは動作を引起すためにハードウェア、ファームウェア、ソフトウェアおよび／または各々の組合せを含むが、これらには限定されない。たとえば、所望の用途または必要性に基づき、ロジックはソフトウェア制御のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）などのディスクリートロジックまたはプログラミングされた他の論理素子を含み得る。ロジックはまたソフトウェアとして十分に具体化され得る。
【００１２】
この明細書中で用いられる「信号」は、１つ以上の電気信号、アナログもしくはデジタル信号、信号状態の変化（たとえば電圧上昇／降下）、１つ以上のコンピュータ命令、メ
ッセージ、ビットもしくはビットストリーム、または受信、伝送および／もしくは検出が可能な他の手段を含むが、これらに限定されない。
【００１３】
この明細書中で用いられる「ソフトウェア」は、コンピュータまたは他の電子素子に所望の態様で機能を実行させたり、動作を実行させたり、および／または作動させたりする１つ以上のコンピュータ読取可能および／または実行可能な命令を含むが、これらに限定されない。命令は、動的にリンクされたライブラリからの別個のアプリケーションまたはコードを含むルーチン、アルゴリズム、モジュールまたはプログラムなどのさまざまな形で実現され得る。ソフトウェアはまた、独立プログラム、関数呼出、サーブレット、アプレット、メモリに記憶された命令、オペレーティングシステムの一部、または他の種類の実行可能な命令などのさまざまな形で実現され得る。ソフトウェアの形がたとえば所望のアプリケーションの要件、それが実行される環境、および／または設計者／プログラマの要望などに依存することを当業者は理解するだろう。
【００１４】
図１には、この発明の一実施例に従った単純なクラスタ化されたデータベースシステム１００の一実施例が示される。２つのノード、すなわちノード１０５およびノード１１０がこの例において示されるが、異なる数のノードが用いられてもよく、異なる構成でクラスタ化されてもよい。データベースクラスタが一例として用いられるが、当該システムは他の種類のクラスタ化されたシステムにも適用可能である。各ノードは、ソフトウェアを実行しかつ情報を処理するコンピュータシステムである。コンピュータシステムはパーソナルコンピュータ、サーバまたは他の計算装置であってもよい。各ノードはさまざまな構成要素および装置、たとえば、１つ以上のプロセッサ１１５、オペレーティングシステム１２０、メモリ、データ記憶装置、データ通信バスおよびネットワーク通信装置を含み得る。各ノードは他のノードとは異なる構成を有し得る。一種のクラスタリングシステムの一例が、「１つのノードのキャッシュから別のノードのキャッシュにデータを転送するための方法および装置（“Method and Apparatus for Transferring Data from the Cache of One Node to the Cache of Another Node”）」と題され、この発明の譲渡人に譲渡され、その全体がすべての目的のために引用によりこの明細書中に援用される米国特許第６，３５３，８３６号に記載される。
【００１５】
図１をさらに参照すると、ノード１０５が、クラスタ化されたデータベースシステム１００におけるノードの構成例を説明するために用いられる。この実施例においては、ノードは、各ノードが１つ以上のデータ記憶装置１２５にアクセスできるデータ共有構成でネットワーク接続される。データ記憶装置１２５は、クラスタにおいて接続されたノードによって共有され得るデータベースファイルなどのさまざまなファイルを保持し得る。ネットワークコントローラ１３０はノード１０５をネットワーク１３５に接続する。オペレーティングシステム１２０は、ノード１０５上で実行するソフトウェアアプリケーションとネットワークコントローラ１３０との間の通信インターフェイスを含む。たとえば、当該インターフェイスは、ネットワーク１３５の選択された通信プロトコルに従ってプログラミングされたネットワークデバイスドライバ１４０であってもよい。
【００１６】
ネットワークコントローラ１３０およびネットワーク１３５のために用いられ得る通信プロトコルの例には、ファイバチャネル（Fibre Channel）ＡＮＳＩ規格Ｘ３．２３０および／またはＳＣＳＩ−３  ＡＮＳＩ規格Ｘ３．２７０が含まれる。ファイバチャネルアーキテクチャは、シリアル通信およびストレージＩ／Ｏの両方に高速のインターフェイスリンクをもたらす。ネットワークコントローラ１３０の他の実施例は、とりわけ、Fast−４０（Ultra-SCSI）、シリアル・ストレージ・アーキテクチャ（ＳＳＡ）、ＩＥＥＥ規格１３９４、非同期転送モード（ＡＴＭ）、スケーラブル・コヒーレント・インターフェイス（ＳＣＩ）ＩＥＥＥ規格１５９６−１９９２または上述のいくつかの組合せを利用する実施例などの記憶装置１２５とノード１０５、１１０とを接続する他の方法をサポートし
得る。
【００１７】
ノード１０５はさらに、１つ以上の記憶装置１２５において保持されるデータへのアクセスを管理および制御するデータベースインスタンス１４５を含む。クラスタ化されたデータベースシステム１００における各ノードがデータベースインスタンスを実行することにより、その特定のノードが記憶装置１２５において共有データベース上のデータにアクセスしかつ当該データを処理することが可能となるので、ロックマネージャ１５０が設けられる。当該ロックマネージャ１５０は、記憶装置１２５に格納される共有データベースなどの１つ以上のリソース上のロックを認可したり、待ち行列に入れたり、追跡したりすることを担うエンティティである。プロセスが共有データベース上で動作を実行し得る前に、当該プロセスは、データベース上で所望の動作を実行する権利を当該プロセスに与えるロックを得る必要がある。ロックを得るために、プロセスはロックの要求をロックマネージャに伝送する。ネットワークシステムにおけるリソースの使用を管理するために、ロックマネージャがネットワークにおける１つ以上のノード上で実行される。
【００１８】
ロックは、特定のプロセスがリソースに関する或る権利を与えられたことを示すデータ構造である。多くの種類のロックがある。多くのプロセスで共有され得る種類のロックもあれば、同じリソース上で他のいずれかのロックが認可されるのを妨げる種類のロックもある。ロック管理システムの一例のより詳細な説明が、「ロック管理システムにおける予期ロックモード変換（“Anticipatory Lock Mode Conversions in a Lock Management System”）」と題され、この発明の譲渡人に譲渡され、その全体がすべての目的のために引用によりこの明細書中に援用される米国特許第６，４０５，２７４  Ｂ１号に見出される。
【００１９】
記憶装置１２５にアクセスし得るノードをネットワーク上で追跡しかつ管理するために、クラスタ構成ファイル１５５が保持される。クラスタ構成ファイル１５５はクラスタにおけるアクティブなノードの現在のリストを含み、これにはノードアドレス、ノードＩＤおよび接続構造（たとえば隣接ノード、親子ノード）などの識別情報が含まれる。当然、他の種類の情報がこのような構成ファイルに含まれてもよく、その種類のネットワークシステムに基づいて異なっていてもよい。トポロジ変化がクラスタにおいて発生すると、ノードが識別され、クラスタ構成ファイル１５５がクラスタノードの現在の状態を反映するよう更新される。トポロジ変化の例は、ノードがいつ追加されるか、いつ除去されるかまたはいつ動作を停止させるかを含む。
【００２０】
図１をさらに参照すると、データベースクラスタシステム１００はさらに、ノード１０５とノード１１０との間にノード間通信をもたらす相互接続ネットワーク１６０を含む。相互接続ネットワーク１６０は、ネットワーク上のすべてのノードが互いに双方向通信することを可能にするバスを備える。相互接続１６０は、同じバスを介して各ノードとメッセージおよびデータのやりとりを行なうためのアクティブな通信プロトコルを提供する。相互接続ネットワーク１６０に接続されるように、各ノードは、ノードのＰＣＩスロットに差込まれる周辺カードであり得る相互接続バスコントローラ１６５を含む。コントローラ１６５はノード間でケーブルを接続するための１つ以上の接続ポート１７０を含む。３つの接続ポートがポート１７０に図示されているが、異なる数のポートが用いられてもよい。
【００２１】
一実施例においては、相互接続バスコントローラ１６５は、ファイアワイヤまたはｉ．ＬＩＮＫとしても公知であるＩＥＥＥ１３９４プロトコルに従って動作する。データベースインスタンス１４５またはノード１０５上で実行する他のアプリケーションを相互接続バス１６０と通信させるために、バスデバイスドライバ１７５が設けられる。バスデバイスドライバ１７５はオペレーティングシステム１２０と作動して、相互接続バスコントロ
ーラ１６５とアプリケーションとのインターフェイスを取る。たとえば、データベースインスタンス１４５からのデータベースコマンドが、バスデバイスドライバ１６５によってＩＥＥＥ１３９４コマンドまたはオープン・ホスト・コントローラ・インターフェイス（ＯＨＣＩ）コマンドに翻訳される。ＩＥＥＥ１３９４ＯＨＣＩ規格は、ＩＥＥＥ１３９４バスに接続するための標準的なハードウェアおよびソフトウェアを規定する。ＯＨＣＩは、標準的なレジスタアドレスおよび機能、データ構造、ならびにダイレクトメモリアクセス（ＤＭＡ）モデルを規定する。
【００２２】
ＩＥＥＥ１３９４は、使いやすく低コストで高速の通信を提供するバスプロトコルである。当該プロトコルは非常に拡張可能であり、非同期アプリケーションおよび等時性アプリケーション（isochronous application）の両方を備え、大量のメモリマップドアドレス空間へのアクセスを可能にし、ピアツーピア通信を可能にする。相互接続バスコントローラ１６５がＩＥＥＥ１３９４ａ、１３９４ｂなどの他のバージョンのＩＥＥＥ１３９４プロトコルや、他の将来の変更および増強に対応するよう変更可能であることを当業者は理解するだろう。
【００２３】
ＩＥＥＥ１３９４プロトコルは、ポイント・ツー・ポイントシグナリング環境を備えたピアツーピアネットワークである。バス１６０上のノードは、それらの上にいくつかのポート、たとえばポート１７０を有し得る。これらのポートの各々は中継器として機能し、ノード内の他のポートが受信するいずれのデータパケットをも再伝送する。各ノードは、ネットワークトポロジ／構成の現在の状態を追跡するノードマップ１８０を保持する。ＩＥＥＥ１３９４プロトコルは、その現在の形では、単一のバス上で６３個までの装置をサポートし、装置への接続は電話機のプラグ差込口に差込むのと同じくらい容易である。ノードおよび他の装置は、最初にノードの電源を切ったりネットワークを再起動したりしなくても直ちに接続され得る。データベースクラスタトポロジの管理が以下により詳細に記載される。
【００２４】
相互接続ネットワーク１６０を用いれば、ノード１０５におけるデータベース１４５は、ノード１１０またはクラスタにおける他のノード上の実行中のデータベースアプリケーションに対し直接データを要求するかデータを送受信するかまたはメッセージを送信し得る。これにより、１つ以上の中間ステップや付加的なディスクＩ／Ｏが必要になったり、待ち時間が増えたりするような、メッセージまたはデータパケットを記憶装置１２５に送信せざるを得ない状態が回避される。
【００２５】
図２には、ＩＥＥＥ１３９４規格に基づいた相互接続バスコントローラ１６５の例が示される。これは３つのＩＳＯプロトコル層、すなわちトランザクション層２００、リンク層２０５および物理層２１０を含む。当該層は、上述において規定されハードウェア、ソフトウェアまたはこれらの両方を含むロジックで実現され得る。トランザクション層２００は、３つの基本的な動作、すなわち読出、書込およびロックを用いてバストランザクションを実行するための完全な要求−応答プロトコルを規定する。リンク層２０５は中間レベル層であり、トランザクション層２００および物理層２１０の両方と相互作用して、データパケットのために非同期および等時性転送サービスを提供する。データ転送を制御する構成要素はデータパケット送信機、データパケット受信機およびクロックサイクルコントローラを含む。
【００２６】
物理層２１０は、コントローラ１６５と相互接続バス１６０の一部を形成するケーブルとの間に電気的および機械的なインターフェイスを提供する。これは物理ポート１７０を含む。当該物理層２１０はまた、すべてのノードがアービトレーション機構を用いてバスに公平にアクセスできることを確実にする。たとえば、ノードは、バスにアクセスする必要がある場合、その親ノードに要求を送信し、当該親ノードが当該要求をルートノードに
転送する。当該ルートが受信した第１の要求が受入れられると、他のすべての要求が拒否され取消される。ノードがルートに近ければ近いほど受入れられる可能性が高くなる。結果として生ずるアービトレーションの不公平性を解決するために、バスアクティビティの期間がいくつかの間隔に分割される。ある間隔中に各ノードが一度伝送され、次の間隔まで待機する。当然、アービトレーションのために他の方法が用いられてもよい。
【００２７】
物理層２１０の他の機能は、データ再同期、符号化および復号化、バス初期設定ならびに信号レベルの制御を含む。上述のとおり、各ノードの物理層はまた中継器として機能し、ポイント・ツー・ポイント接続を仮想の同報通信バスに翻訳する。標準的なＩＥＥＥ１３９４ケーブルは１．５アンペアまでのＤＣ電力を供給して、遠隔装置を、それらの電源が切られているときでも「認識している（aware）」状態に維持する。物理層はまた、ＩＥＥＥ１３９４に基づいて、ノードが単一の媒体上でさまざまな速度でデータを伝送することを可能にする。データレート能力が異なるノードまたは他の装置はより遅い装置速度で通信する。
【００２８】
ＩＥＥＥ１３９４プロトコルに基づいて動作する相互接続バスコントローラ１６５はアクティブなポートであり、自己監視／自己構成シリアルバスを備える。これは、たとえバスがアクティブであってもユーザが装置を追加したり取除いたりすることを可能にするホットプラグアンドプレイとして公知である。こうして、ノードおよび他の装置が、ネットワーク動作を遮らずに接続および切断され得る。自己監視／自己構成ロジック２１５は、相互接続バス信号における変化に基づいてクラスタシステムにおけるトポロジ変化を自動的に検出する。ノードのバスコントローラ１６５は、当該ノードがバスに接続されると、相互接続バス１６０上にバイアス信号を配置する。自己監視ロジック２１５を介する隣接ノードが、電圧の変化として現われ得るバイアス信号を自動的に検出する。こうして、検出されたバイアス信号は、ノードが追加されたことおよび／またはノードが依然としてアクティブであることを示す。逆に、バイアス信号がないということは、ノードが除去されたかまたは機能を停止したことを示す。この態様では、トポロジ変化は、ノード間で伝送されるポーリングメッセージを用いなくても検出することができる。ロジック２１５の自己構成局面が図６および図７に関連してより詳細に説明される。
【００２９】
アプリケーションプログラムインターフェイス（ＡＰＩ）層２２０は、バスデバイスドライバ１７５へのインターフェイスとしてバスコントローラ１６５に含まれ得る。これは概して、データ、エンドシステム設計およびアプリケーションをまとめるより高いレベルのシステムガイドライン／インターフェイスを含む。ＡＰＩ層２２０は、データベースインスタンス１４５（および他のアプリケーション）と相互接続バスコントローラ１６５との間の通信をカスタマイズするよう所望の特徴でプログラミングされ得る。随意には、ＡＰＩ層２２０の機能は、トランザクション層２００またはバスデバイスドライバ１７５内で全体または一部が実現され得る。
【００３０】
図３を参照すると、この発明のシステムおよび方法が実現され得るデータベースクラスタアーキテクチャ３００の一実施例が示される。当該アーキテクチャ３００は共有ディスクアーキテクチャとして一般に公知であり、付加的なノードが示されている以外は図１に類似している。概して共有ディスクデータベースアーキテクチャにおいては、ファイルおよび／またはデータはノード間で論理的に共有され、各々のデータベースインスタンスはすべてのデータにアクセスできる。共有ディスクアクセスが、たとえばファイルを保持する１つ以上の記憶装置３０５への直接的なハードウェア接続性によって達成される。随意には、接続は、すべてのノード上におけるすべての記憶装置３０５の単一のビューを提供するオペレーティングシステム抽象層を用いることによって実行され得る。ノードＡ〜Ｄはまた、ノード相互接続１６０を介して接続されてノード間通信を提供する。共有ディスクアーキテクチャにおいては、ノード内のいずれかのデータベースインスタンス上で実行
されるトランザクションは、記憶装置３０５上のデータベースのいずれかの部分を直接読出すかまたは変更することができる。アクセスは、上述のように１つ以上のロックマネージャによって制御される。
【００３１】
図４を参照すると、この発明のシステムおよび方法を組込み得るクラスタアーキテクチャの別の実施例が示される。クラスタアーキテクチャ４００は典型的には非共有アーキテクチャと称される。非共有アーキテクチャの一例が、「ハイブリッド非共有／共有ディスクデータベースシステム（“Hybrid Shared Nothing/Shared Disk Database System”）」と題され、この発明の譲渡人に譲渡され、その全体がすべての目的のために引用によりこの明細書中に援用される米国特許第６，３２１，２１８号に記載される。純粋な非共有アーキテクチャにおいては、データベースファイルは、たとえば、ノードＡ〜Ｄ上で実行するデータベースインスタンス間で分割される。各データベースインスタンスまたはノードはデータの別個のサブセットの所有権を有し、このデータへの全アクセスがこの「所有」インスタンスによって排他的に実行される。ノードはまた相互接続１６０と接続される。
【００３２】
たとえば、記憶装置Ａ〜Ｄに記憶されるデータファイルが従業員ファイルを含む場合、当該データファイルは、ノードＡが文字Ａ〜Ｇで始まる従業員名に対する従業員ファイルを制御し、ノードＢが従業員名Ｈ〜Ｎに対する従業員ファイルを記憶装置Ｂ上で制御し、ノードＣが名前「Ｏ〜Ｕ」に対する従業員ファイルを記憶装置Ｃ上で制御し、ノードＤが記憶装置Ｄ上で従業員ファイル名「Ｖ〜Ｚ」を制御するように分割され得る。他のノードからデータにアクセスするために、このようなデータを要求するメッセージが送られるだろう。たとえば、ノードＤがノードＡによって制御される従業員ファイルを所望する場合、データファイルを要求するメッセージがノードＡに送られるだろう。次いで、ノードＡが記憶装置Ａからデータファイルを検索し、データをノードＤに伝送するだろう。この発明のシステムおよび方法が、ツリー構造などの他のクラスタアーキテクチャおよび構成上で、かつ特定の用途に対し所望のとおりに他のデータアクセス権および／または制限で実現され得ることが理解されるだろう。
【００３３】
図５には、図３または図４のクラスタシステムに関連付けられる方法論の一実施例が示される。当該実施例は、相互接続バス１６０を用いたノード間におけるデータの直接的な送受信を説明する。例示された要素は「処理ブロック」を示し、コンピュータに動作を実行させかつ／または決定を下させるコンピュータソフトウェア命令または命令のグループを表わす。代替的には、処理ブロックは、デジタル信号プロセッサ回路または特定用途向け集積回路（ＡＳＩＣ）などの機能的に同等の回路によって実行される機能および／または動作を表わし得る。図ならびに他の例示された図はいずれかの特定のプログラミング言語の構文を示すものではない。むしろ、当該図は、回路を製作し、コンピュータソフトウェアまたはハードウェアおよびソフトウェアの組合せを作成して例示された処理を実行するために当業者が使用し得る関数情報を例示する。電子的アプリケーションおよびソフトウェアアプリケーションが動的かつフレキシブルなプロセスを含み得るので、例示されたブロックが図示されるものとは異なる他のシーケンスで実行され得、および／またはブロックが組合され得るかもしくは付加的な構成要素に分けられ得ることが理解されるだろう。これらはまた、機械語、手続き型、オブジェクト指向および／または人工知能技術などのさまざまなプログラミング手法を用いて実現され得る。上述のことは、この明細書中に記載されるすべての方法論に適用される。
【００３４】
図５を参照すると、図５００は、ノード間相互接続ネットワーク１６０を用いてノード間でデータを伝達する一例である。ノード（要求ノード）が別のノードからのデータを所望する場合、データ要求メッセージが相互接続バス１６０を介して宛先ノードに伝送される（ブロック５０５）。当該データ要求は、ノード名および／またはアドレスを当該要求
に添付することによって１つ以上の選択された宛先ノードに直接送信され得る。要求されたデータの位置が未知である場合、データ要求が相互接続ネットワークにおける各ノードに同報通信され得る。
【００３５】
データ要求が適切なノードによって受信されると、データベースインスタンスは、データがそのノード上で利用可能であるかどうかを判断する（ブロック５１０）。データが利用可能でない場合、データが利用可能でないというメッセージが要求ノードに伝送される（ブロック５１５）。データが利用可能である場合、データはダイレクトメモリアクセスによってローカルメモリから検索され（ブロック５２０）、相互接続バスを介して要求ノードに伝送される（ブロック５２５）。リモートダイレクトメモリアクセスがまた、直接的なメモリ間転送を実行するよう実現され得る。この態様では、メッセージおよびデータは、メッセージまたはデータを共有記憶装置に伝送する必要なしにノード間で直接伝送され得る。ノード間通信は待ち時間を減らし、ディスク入出力の数を減らす。
【００３６】
図６には、ＩＥＥＥ１３９４バスプロトコルに基づいたクラスタアーキテクチャを再構成する例示的な方法論が示される。データベースクラスタにおけるノードが追加されるか、除去されるかまたは機能を停止する場合、データベースクラスタは変更を検出し、ノードを識別する必要があり、当該クラスタは適切に再構成される必要がある。上述のように、ＩＥＥＥ１３９４プロトコルに基づいて動作する相互接続バスコントローラ１６５（図１）はアクティブなポートであり、自己構成シリアルバスを備える。こうして、ノードおよび他の装置がネットワーク動作を遮らずに接続および切断され得る。
【００３７】
たとえば、ノードがバスに追加されると、当該バスがリセットされる（ブロック６０５）。追加されたノードの相互接続コントローラ１６５はバス上でバイアス信号を自動的に送信し、隣接ノードがそのバイアス信号を検出し得る（ブロック６１０）。同様に、ノードが除去されるときにノードのバイアス信号がないことが検出され得る。すなわち、隣接ノードの相互接続コントローラ１６５は、ノードを追加するかまたは除去することによって引起されるバス信号強度の変化などの相互接続バス１６０上の信号の変化を検出し得る。次いで、トポロジ変化が、データベースクラスタにおける他のすべてのノードに伝送される。バスノードマップが当該変化に応じて再構築される（ブロック６１５）。一実施例においては、ノードマップは当該変化に応じて更新され得る。データベースインスタンスが通知され、これが、ロックマネージャに対するアクティブなノードを追跡するようクラスタ構成ファイルを更新する（ブロック６２０）。当然、図示されたシーケンスの順は他のやり方で実現されてもよい。
【００３８】
ＩＥＥＥ１３９４プロトコルを用いれば、相互接続コントローラ１６５は上述の自己監視／自己構成機構を含むアクティブなポートとなる。この機構を用いる場合、データベースクラスタシステムは、ポーリング機構に伴うさらなる待ち時間なしに再構成され得る。というのも、ノードがトポロジにおける変化を実質的に直ちに検出し得るからである。アクティブなポートはまた、ネットワークの電源を切る必要なしにクラスタの再構成を可能にする。
【００３９】
図７には、クラスタを検出および再構成する別の実施例が示される。各ノードは、バイアス信号の有無などのバス信号の変化を検出するために相互接続バスを監視する（ブロック７０５）。ノードがトポロジ変化を検出すると（ブロック７１０）、当該ノードはバスを介してバスリセット信号を送信し、自己構成機構を開始する。物理層２１０によって管理されるこの機構は３つの段階、すなわち、バス初期設定、ツリー識別および自己識別を含み得る。バス初期設定中にアクティブなノードが識別され、樹状の論理トポロジが構築される（ブロック７１５）。各々のアクティブなノードはアドレスが割当てられ、ルートノードが動的に割当てられ、ノードマップが新しいトポロジで再構築または更新される（
ブロック７２０）。バス自体が構成されると、ノードはバスにアクセスできる。各ノード上のデータベースインスタンスがトポロジ変化について通知される（ブロック７２５）と、データベースロックマネージャは、共有データベースがクラスタ全体にわたって適切に管理され得るように当該変化に応じて再構成される（ブロック７３０）。
【００４０】
ネットワーク１３５などのネットワーク接続が他の方法で実現され得ることが理解されるだろう。たとえば、これは、ノベル（Novell）、マイクロソフト（Microsoft）、アーティソフト（Artisoft）および他の販売業者から入手できるソフトウェアなどの通信またはネットワーキングソフトウェアを含み得、ＴＣＰ／ＩＰ、ＳＰＸ、ＩＰＸ、ならびにツイストペア、同軸もしくは光ファイバケーブル、電話線、衛星、マイクロ波中継装置、無線周波数信号、変調されたＡＣ電力線、および／または当業者に公知の他のデータ伝送線を介する他のプロトコルを用いて動作し得る。ネットワーク１３５は、ゲートウェイまたは類似の機構を介して他のネットワークに接続可能であり得る。相互接続バス１６０のプロトコルが無線バージョンを含み得ることも理解されるだろう。
【００４１】
図８を参照すると、データベースクラスタ８００のためのハートビートシステムの一実施例が示される。ハートビートシステムは、ノードが、それらがアクティブであり機能していることを示す信号またはメッセージを周期的に生成する機構である。当該機構はまた、ノードが、生成された信号に基づいてクラスタにおける他のノードの健康状態または状態を判断することを可能にする。図示のとおり、クラスタ８００はノード８０５および８１０を含むが、ノードがいくつクラスタに接続されてもよい。例示されたノードは図１に示されるノードと類似の構成を有し得る。しかしながら、例示の目的で簡略化された構成が示される。
【００４２】
ノード８０５、８１０は、データベースファイルなどのファイルを保持する記憶装置８１５へのアクセスを共有する。当該ノードは、共有ストレージネットワーク８２０によって記憶装置８１５に接続される。一実施例においては、ネットワーク８２０はＩＥＥＥ１３９４通信プロトコルに基づいている。互いに通信するために、ノード８０５、８１０および記憶装置８１５はＩＥＥＥ１３９４ネットワークコントローラ８２５を含む。ネットワークコントローラ８２５は相互接続バスコントローラ１６５に類似しており、一実施例においては、各々の装置に差込まれるネットワークカードである。代替的には、コントローラはノード内に固定され得る。ネットワークコントローラ８２５は、ケーブルが各装置間に接続され得るように１つ以上のポートを含む。加えて、他の種類のネットワーク接続、たとえばＩＥＥＥ１３９４プロトコルまたは他の類似のプロトコル規格に基づいた無線接続が用いられてもよい。
【００４３】
図８をさらに参照すると、各ノードは、記憶装置８１５上のファイルへのアクセスを制御するデータベースインスタンス８３０を含む。リソースがデータベースクラスタ８００におけるノード間で共有されるので、各ノードはそれらの健康状態を他のノードに知らせるためのロジックを含み、ネットワーク上の他のノードの健康状態を判断するためのロジックを含む。たとえば、ハートビートロジック８３５は、予め定められた時間間隔内でハートビートメッセージを生成しかつ伝送するようプログラミングされる。ハートビートメッセージは状態信号とも称される。予め定められた時間間隔は選択されたいかなる間隔であってもよいが、典型的には、数ミリ秒から数秒のオーダ、たとえば３００ミリ秒から５秒のオーダである。このため、当該間隔が１秒である場合、各ノードは１秒ごとにハートビートメッセージを伝送するだろう。
【００４４】
一実施例においては、ネットワークロードはハートビート時間間隔を決定する際に要因として用いられる。たとえば、ハートビートメッセージが同じネットワーク上でデータとして伝送される場合、ネットワーク上のハートビートメッセージの周波数が高いことによ
り、データ伝送プロセスに遅延がもたらされる可能性がある。図８は、この状況によって影響を受ける可能性のあるネットワークを示し、図９は、異なるネットワーク上でハートビートシステムを実現することによりネットワークトラフィックの量を減ずるネットワークを示す。図８および図９のネットワークも非共有アーキテクチャとして構成され得ることがさらに理解されるだろう。
【００４５】
図８をさらに参照すると、各ノードからのハートビートメッセージが集められ、定数ファイル８４０に記憶される。この実施例においては、定数ファイル８４０は、記憶装置８１５内に規定される１つ以上のファイルまたは区域であり、当該記憶装置８１５は共有ファイルも保持する。クラスタ８００における各ノードは定数ファイル８４０内にアドレス空間が割当てられて、そこにそのハートビートメッセージが記憶される。定数ファイル８４０の空間は典型的には等しく分割され、各ノードに割当てられるが、他の構成も可能であり得る。こうして、定数ファイル８４０は、ファイルが１つのデータ構造として論理的に規定され得るにもかかわらず、クラスタ全体に対する１つのファイルとしてではなく各ノードに対する別個のファイルとして実現され得る。定数ファイルは、１つ以上の記憶場所、レジスタまたは他の種類の記憶区域に記憶されるスタック、アレイ、表、リンクされたリスト、テキストファイルまたは他の種類のデータ構造として実現され得る。ノードの定数空間が一杯になれば、新しいメッセージが受信されるとその空間における最も古いメッセージが押出されるかまたは上書きされる。
【００４６】
図９には、データベースクラスタ９００およびハートビートシステムの別の実施例が示される。この実施例においては、ノード９０５および９１０は定数ネットワーク９２０を介して定数装置９１５と通信する。定数ネットワーク９２０は共有ストレージネットワーク９２５とは別個のネットワークである。こうして、ノードは、定数ネットワークとは異なるネットワークバスを用いて記憶装置９３０上の共有ファイルにアクセスする。定数ネットワーク９２０は、上述のようにノード間相互接続ネットワークの一部であり得る。定数装置９１５は、クラスタにおけるノードから受取ったハートビートメッセージを記憶するために定数ファイルを保持するよう構成されたデータストレージを含む。
【００４７】
図９をさらに参照すると、ノード９０５、９１０は定数装置９１５に接続され、ＩＥＥＥ１３９４通信プロトコルに従って互いに通信する。各ノードおよび定数装置９１５は、先述のコントローラに類似のＩＥＥＥ１３９４コントローラ９３５を含む。別個のネットワークがファイルとのデータ通信のために構成されるので、各ノードは、記憶装置９３０と通信を行なう別個の共有ネットワークコントローラ９４０を含む。共有ネットワークコントローラ９４０はＩＥＥＥ１３９４コントローラであり得るかまたはファイバチャネルプロトコルなどの他のネットワークプロトコルであり得る。各ノード内のデータベースインスタンス９４５は共有ネットワークコントローラ９４０を介してデータ要求を処理する。
【００４８】
ハートビートロジック９５０はハートビート機構を制御し、ＩＥＥＥ１３９４コントローラ９３５を用いて定数装置９１５と通信する。このアーキテクチャを用いると、既存のデータベースクラスタ９００内における定数装置９１５の追加または交換は、既存のネットワークへの影響を最小限に抑えて容易に実行可能である。また、ハートビート機構が別個のネットワークを介して処理されるので、共有ストレージネットワーク９２５上のトラフィックを減らすことにより、データ処理要求に対するより迅速な応答が可能となる。図８および図９のクラスタがノード間相互接続ネットワークを含み得ることも理解されるだろう。
【００４９】
図１０には、以下において共に定数ファイルと称される定数ファイル８４０または定数装置９１５で実行されるハートビートシステムの例示的な方法論１０００が示される。定
数ファイルがデータベースクラスタ内で構成されかつ起動されると、定数ファイル内のメモリがクラスタにおけるノードの各々に割当てられる（ブロック１００５）。定数ファイルは等しく分割され得、さらに、各ノードに割当てられ得るかまたは他の割当が規定され得る。定数ファイルがアクティブになると、当該定数ファイルはＩＥＥＥ１３９４プロトコルに従って各ノードからハートビートメッセージを受信する（ブロック１０１０）。各ハートビートメッセージはノード識別子を含み、当該ノード識別子が、メッセージと当該メッセージの時間を示すタイムスタンプとを送信するノードを識別する。次いで、定数ファイルが受信した各メッセージがそのノードの割当てられた位置に記憶され（ブロック１０１５）、受信された各々のハートビートメッセージのために当該プロセスが繰返される。
【００５０】
各ノードのために、ハートビートメッセージが、受信される順序で定数ファイルに記憶される。こうして、最後に受信されたタイムスタンプと現在の時間とを比較することにより、当該システムは、どのノードがそれらのハートビートメッセージをアクティブに送信しているかを決定することができる。この情報は、ノードがアクティブであるか否かを示し得る。たとえば、ノードが予め定められた数の連続したタイムスタンプを見落とした場合、問題が起り得ると想定され得る。１つのメッセージを含む各ノードのために任意の数のメッセージが記憶され得る。上述のように、各ノードのハートビートロジックは、予め定められた間隔でハートビートメッセージを生成および伝送するようプログラミングされる。こうして、定数ファイルからデータを読出すことにより、当該ロジックは、いくつかの間隔が見落とされたかどうかを判断することができる。この種類の状態チェックロジックはハートビートロジック８３５または９５０の一部であってもよく、図１１に関連してより詳細に説明される。
【００５１】
図１１は、ノードの健康状態または状態を判断するための方法論の例を示す。上述のとおり、ハートビートロジックは、予め定められた時間間隔で各ハートビートメッセージを生成し、かつ当該メッセージを定数ファイルに伝送するためのロジックを含む。いかなる所望のときにも、ノードのハートビートロジックはそのクラスタ構成ファイルを更新して、アクティブなノードの現在の組を決定し、いずれかのノードが機能を停止したかまたはさもなければネットワークから除去されたかどうかを決定し得る。また、クラスタ全体に亘ってこの決定の同期を取ることもできる。状態チェックロジック（図示せず）が、以下のとおりにこのタスクを実行するようハートビートロジックの一部としてプログラミングされ得る。
【００５２】
状態チェックを開始するために、定数ファイルが、ノードの各々に対するタイムスタンプされた情報を検査するために読出される（ブロック１１０５）。各ノードのために記憶されるタイムスタンプされたデータに基づき、ロジックは、特定のノードが定数ファイルに書込まれた最後のメッセージの時間に基づいて依然として機能しているかどうかを判断し得る（ブロック１１１０）。しきい値が設定されることにより、問題が存在し得ることが当該決定によって示される前に予め定められた数のタイムスタンプを見落とすことが可能となる。たとえば、ノードは２つの連続したタイムスタンプを見落としてもよいが、第３のスタンプが見落とされた場合、当該ノードは適切に機能し得ない。しきい値は、他の値、たとえば１の値に設定されてもよい。
【００５３】
ノードが指定された量のタイムスタンプメッセージを見落とした場合（ブロック１１２０）、それは必ずしもノードが機能を停止したことを意味するものではないかもしれない。ノードがＩＥＥＥ１３９４規格に従って定数ファイルに接続されるので、付加的な状態チェックを実行することができる。先に説明したとおり、ＩＥＥＥ１３９４バスはアクティブであり、当該バスに接続された各装置は、隣接するノードが機能を停止しているかどうかまたはネットワークから取除かれているかどうかを検出し得る。この付加的な情報は
、ノードの健康状態をよりよく判断するのに役立ち得る。状態ロジックは、定数ファイルからのタイムスタンプ情報とＩＥＥＥ１３９４コントローラによって保持されるノードマップデータとを比較し得る。
【００５４】
たとえば、ノードがそのタイムスタンプを見落とし（ブロック１１２０）、当該ノードがノードマップにおいてアクティブなノードでない（ブロック１１２５）場合、当該ノードがダウンしていると推定されるかまたはネットワークから除去されたと判断される（ブロック１１３０）。しかしながら、ノードがそのタイムスタンプを見落とすが当該ノードがノードマップにおいて依然としてアクティブである場合、ことによると当該ノードがハングアップするか、または他の何らかの遅延がクラスタに存在する可能性がある（ブロック１１３５）。この場合には、プロセスは、そのノードに対する定数ファイルを随意に再チェックして、新しいタイムスタンプが受信されたかどうか、起こり得る遅延を示すメッセージが生成され得るかどうか、および／またはノードがアクティブなノードのリストから除去され得るかどうかを判断し得る。
【００５５】
判断ブロック１１２０を再び参照すると、ノードがそのタイムスタンプを見落とさなければ、当該ノードはおそらく適切に機能している。しかしながら、ノードがノードマップにおいてアクティブであるかどうかをチェックすることにより追加の決定が下され得る（ブロック１１４０）。ノードがアクティブであれば（ブロック１１４５）、当該ノードは適切に機能している。ノードがアクティブでなければ（ブロック１１５０）、ネットワークバスのエラーが存在する可能性がある。こうして、定数ファイルおよびＩＥＥＥ１３９４バスのノードマップの両方からの情報を用いて、ノードの健康状態のより詳細な分析が決定され得る。さらに、共有ストレージネットワーク９２５がＩＥＥＥ１３９４バスでもある実施例における図９に示されるクラスタ構成においては、２つの別個のネットワークノードマップが保持される。付加的なノードマップがまた、上述の比較プロセスおよび状態チェックに含まれてもよい。
【００５６】
図１１を再び参照すると、簡略化された実施例が実現され得る。判断ブロック１１２０では、ノードがそのタイムスタンプを書込むのに失敗した場合、ロジックはそのノードが機能していないことを宣言し、データベースインスタンスのクラスタ構成ファイルからそれを除去し得る。このプロセスにおいてはノードマップは検査されない。
【００５７】
この明細書中に記載されるさまざまな記憶装置が定数ファイルを割当てるための定数装置を含み、多数の方法で実現され得ることが理解されるだろう。たとえば、記憶装置は、磁気ディスクドライブまたは光ディスクドライブ、テープドライブ、電子メモリなどの１つ以上の専用の記憶装置を含み得る。記憶装置はまた、コンピュータ、サーバ、携帯用処理装置、または、データを保持するためのストレージ、メモリもしくはこれらの組合せを含む類似の装置を含み得る。記憶装置はまた、いかなるコンピュータ読取可能媒体であってもよい。
【００５８】
この発明のシステムおよび方法のさまざまな構成要素を実現するための好適なソフトウェアは、ここに呈示される教示やプログラミング言語およびツール、たとえばJava（登録商標）、Pascal、Ｃ＋＋、Ｃ、ＣＧＩ、Perl、ＳＱＬ、ＡＰＩ、ＳＤＫ、アセンブリ、ファームウェア、マイクロコードならびに／または他の言語およびツールなどを用いて当業者によって容易に提供される。ソフトウェアとして具体化される構成要素は、コンピュータを所定の態様で動作させるコンピュータ読取可能／実行可能な命令を含む。当該ソフトウェアは製品としてであってもよく、および／または、先に規定したようにコンピュータ読取可能媒体に記憶されてもよい。
【００５９】
この発明がその実施例を説明することにより例示され、その実施例がかなり詳細に説明
されてきたが、出願人の意図は、添付の特許請求の範囲をこのような詳細に制限するかまたは何らかの方法で限定することではない。付加的な利点および変形例が当業者には容易に明らかとなるだろう。したがって、この発明は、そのより広範な局面においては、特定の詳細、代表的な装置ならびに図示および説明される具体例には限定されない。したがって、出願人の一般的な発明の概念の精神または範囲から逸脱せずにこのような詳細からの逸脱が可能である。
【図面の簡単な説明】
【００６０】
【図１】この発明に従ったクラスタノードの一実施例を示すシステム図である。
【図２】図１の相互接続バスコントローラを示す例図である。
【図３】共有ディスククラスタアーキテクチャの一例を示す図である。
【図４】非共有クラスタアーキテクチャの一例を示す図である。
【図５】相互接続バスを用いてデータを通信する方法論の一例を示す図である。
【図６】トポロジ変化を検出する方法論の一例を示す図である。
【図７】トポロジ変化を検出する方法論の別の例を示す図である。
【図８】ハートビートシステムを含むクラスタの別の実施例を示す図である。
【図９】ハートビートシステムの別の実施例を示す図である。
【図１０】定数ファイルを保持する方法論の一例を示す図である。
【図１１】定数ファイルを用いてノードの状態を決定する方法論の一例を示す図である。
【図１】
0004653490.tif 000002
【図２】
0004653490.tif 000003
【図３】
0004653490.tif 000004
【図４】
0004653490.tif 000005
【図５】
0004653490.tif 000006
【図６】
0004653490.tif 000007
【図７】
0004653490.tif 000008
【図８】
0004653490.tif 000009
【図９】
0004653490.tif 000010
【図１０】
0004653490.tif 000011
【図１１】
0004653490.tif 000012