JP4475818B2 - 漸進変化を伴うオブジェクトハッシング - Google Patents
漸進変化を伴うオブジェクトハッシング Download PDFInfo
- Publication number
- JP4475818B2 JP4475818B2 JP2000590054A JP2000590054A JP4475818B2 JP 4475818 B2 JP4475818 B2 JP 4475818B2 JP 2000590054 A JP2000590054 A JP 2000590054A JP 2000590054 A JP2000590054 A JP 2000590054A JP 4475818 B2 JP4475818 B2 JP 4475818B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- buckets
- bucket
- nodes
- resource
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Description
【発明の分野】
この発明はコンピュータシステムに関し、より特定的には、コンピュータシステム内の資源を支配するための技術に関する。
【0002】
【発明の背景】
データベースサーバは、トランザクションを実行する間も資源を利用する。たとえ資源がデータベースサーバ間で共有可能であったとしても、多くの資源はある種の態様では任意の所与の時間で2つ以上のプロセスによってアクセス不可能であることがある。たとえば、記憶媒体のデータブロックまたは記憶媒体上に記憶されるテーブルなどの資源は、ある態様では(たとえば読出)複数のプロセスによって同時的にアクセス可能であるが、他の態様では(たとえば書込)一度に1個のプロセスによってしかアクセスされ得ない。したがって、資源へのアクセスを制御するメカニズムが開発されてきた。
【0003】
そのようなメカニズムの1つをロックと呼ぶ。ロックは、特定のプロセスが資源に関してある種の権利を与えられたことを示すデータ構造である。ロックには多くのタイプがある。多くのプロセスによって同じ資源上で共有可能であるタイプのロックもあれば、他のロックが同じ資源上に与えられることを防ぐタイプのロックもある。
【0004】
資源に対するロックを与える責任を担う存在をロックマネージャと呼ぶ。単一ノードのデータシステムでは、ロックマネージャは典型的には、ノード上の1つ以上のプロセスからなるものである。マルチプロセッシングマシンまたはローカルエリアネットワークなどの、複数ノードのシステムでは、ロックマネージャは、多数のノードに分散したプロセスを含むであろう。2つ以上のノード上に存在する構成要素を含むロックマネージャを分散ロックマネージャと呼ぶ。
【0005】
図1は、複数ノードのコンピュータシステム100のブロック図である。各ノードは、そこにデータベースサーバおよび分散ロック管理システム132の一部を備えている。具体的には、例示のシステムは、3つのノード102、112および122を含み、その上に、それぞれデータベースサーバ104、114および124と、それぞれロックマネージャユニット106、116および126とが存在する。データベースサーバ104、114および124は、同じデータベース120へのアクセスを有する。データベース120は、データの複数ブロックを含むディスク118上に存在する。一般的に、ディスク118は1つ以上の永続的記憶装置を表わし、これはノード102、112および122を含むマシンを含むがこれに限定されるものではない、任意の数のマシン上にあってもよい。
【0006】
通信メカニズムによって、ノード102、112および122上のプロセスは相互にかつデータベース120の一部を含むディスクと通信可能である。ノードとディスク118との間の特定の通信メカニズムは、システム100の性質によって異なる。たとえば、ノード102、112および122がネットワーク上のワークステーションに対応する場合、通信メカニズムは、ノード102、112および122がマルチプロセッシングマシン内のメモリおよびプロセッサのクラスタに対応する場合とは異なるであろう。
【0007】
データベースサーバ104、114および124のいずれかが他のデータベースサーバと共有される資源にアクセス可能となる前に、これは資源の適切なロックを分散ロック管理システム132から獲得しなければならない。そのような資源は、たとえば、データベース120からのデータが格納されているディスク118の1つ以上のブロックであってもよい。
【0008】
ロック管理システム132は、データベースサーバ104、114および124によって保持される、データベースサーバが共有する資源に対するロックを示すデータ構造を記憶する。もしあるデータベースサーバが資源のロックを有している一方で別のデータベースサーバがその資源へのロックを要求すれば、分散ロック管理システム132は、要求されたロックが許可されたロックと一致しているかどうかを決定しなければならない。もし要求されたロックが許可されたロックと一致していなければ、要求者は、許可されたロックを保持しているデータベースサーバが許可されたロックを解放するまで、待たなければならない。
【0009】
あるアプローチに従うと、ロック管理システム132は、ロック管理システム132によって管理されるいずれの資源についても1つのマスタ資源オブジェクトを維持し、かつ、データベースサーバを含む各ノードごとに1つのロックマネージャユニットを含む。特定の資源のマスタ資源オブジェクトはとりわけ、特定の資源について許可されたまたは要求されたすべてのロックの表示を記憶する。各資源に対するマスタ資源オブジェクトは、ロックマネージャユニット106、116および126の1つ内にのみ存在する。
【0010】
ロックマネージャユニットが存在するノードを、資源の「マスタノード」(または単に「マスタ」)と呼び、そのマスタ資源オブジェクトはロックマネージャユニットによって管理される。したがって、資源R1のマスタ資源オブジェクトがロックマネージャユニット106によって管理されれば、ノード102が資源R1のマスタとなる。
【0011】
典型的なシステムでは、ハッシュ関数を採用して、所与の資源のマスタノードとして働く特定のノードを選択する。具体的には、ハッシュ関数を資源名に適用して値を生成する。同じ値にハッシュされる資源名はすべて、同じ「バケット」に属する。次に、所与のバケットにその名前が属するすべての資源のマスタとなるよう、各ノードが割当てられる。
【0012】
たとえば、システム100は3つのノードを含み、したがって、値0、1および2を生成する3バケットハッシュ関数を採用するであろう。各バケットは3つのノードの1つに関連付けられる。システム100での特定の資源のマスタとしての役割を果たすノードは、資源の名前にハッシュ関数を適用することによって決定される。値0に関連付けられるバケットにハッシュされる名前を有する資源はすべて、ノード102上で支配される。値1に関連付けられるバケットにハッシュされる名前を有する資源はすべて、ノード112上で支配される。値2に関連付けられるバケットにハッシュされる名前を有する資源はすべて、ノード122上で支配される。
【0013】
ノード上のプロセスが資源にアクセスしたいとき、ハッシュ関数が資源の名前に適用されて資源のマスタを決定し、ロック要求がその資源のマスタノードに送信される。資源のマスタノード上のロックマネージャは、関連付けられた資源のロックの割当および割当解除を制御する。
【0014】
資源のマスタノードが、別のノード上で稼動するプロセスに、資源のロックを許可すると、その別のノードがそのプロセスが保持する資源のロックについての情報を維持する。資源に関心のある(すなわち、そのロックを保持する)非マスタノードによって維持されるロック情報は、マスタノードに障害が発生した場合、復旧の間に、利用可能である。ローカルプロセスによって保持される、資源のロックを追跡するために、資源のマスタでないノードによって使用されるデータ構造を、シャドー資源オブジェクトと呼ぶ。いずれのマスタ資源オブジェクトについても、最大N−1個のシャドー資源オブジェクトが存在し得る(Nはシステム内のノードの数に等しい)。というのも、すべての非マスタノード上のプロセスが、同じ資源に対して非排他的ロックを同時に保持することが可能であるからである。
【0015】
あるノードから別のノードへとロック資源のマスタを変更することを、ロック資源を「リマスタする」と言う。資源をリマスタするプロセスは、典型的には、資源のマスタ資源オブジェクトを新しいマスタ上に再構築することを伴う。資源がリマスタされている間、一般的には資源は利用不可能である。
【0016】
任意の時点で、資源を支配する責任は、特定の組のノード間で分散される。ノードのその組が変わるとき、「エポック変更」が起こると言う。
【0017】
さまざまな事象によって、リマスタリング動作を実行することが望まれるかまたは必要となることがある。たとえば、ノードに障害が発生するかまたはこれがシャットダウンすると、これらのノードによって現在支配されている資源の支配権は、他のノードに移動されなければならない。同様に、新しいノードがシステムに加えられると、資源のいくつかの支配権を新しく加えられたノードに移動して、資源管理に関連するロードをすべてのノード間で均一に分散することが望ましいであろう。
【0018】
資源名ハッシュを用いて資源をノードに割当てる場合、エポック変更に応答して資源をリマスタすると、典型的には、ハッシュ関数を変更し、さらに、新しいハッシュ関数によって生成される資源からマスタへの対応付に基づいて支配権責任を再分散する必要がある。具体的には、システムがN個のノードからなる場合、Nバケットハッシュ関数(N個の値を生成するハッシュ関数)を用いてマスタノード割当を実行する。(ノードの付加、除去または障害によって)Nが変わると、ハッシュ関数も変更されなければならない。資源からマスタへの対応付のための新しいハッシュ関数が選択された後、マスタ資源オブジェクトはその新しいマスタに移動されなければならない。任意の所与の資源の新しいマスタは、新しいハッシュ関数を資源の名前に適用することによって決定される。
【0019】
残念ながら、新しいハッシュ関数の採用に応答して起こるリマスタリングによって、システム内の資源をいずれも、リマスタリングしなければならない可能性がある。したがって、システム全体が、リマスタリングが完了するまで、実際上利用不可能となることがある。これは、システム構成の変更が比較的小さいものであったとしても当てはまる。たとえば、もし51番目のノードが50ノードのシステムに加えられるならば、システム内のすべての資源が51個のノード間でのロードバランスをとるよう選択された新しいハッシュ関数によって、新しいマスタに割当てられる可能性がある。同様に、50ノード上での1つのノードに障害が発生したときにも、大規模なリマスタリング動作が起こることがある。
【0020】
前記に基づいて、複数ノードのシステムでのエポック変更に関連するリマスタリングオーバーヘッドを低減するリマスタリング技術を提供することが明らかに望まれる。さらに、新しいノードがシステムに加えられたときにもノードがシステムから取除かれたときにも、比較的バランスのとれたロード分散がエポック変更後にも維持されることを可能にするリマスタリング技術を提供することが望まれる。リマスタリング動作の持続時間の間、システム全体を実際上利用不可能にしないようなリマスタリング技術を提供することも望まれる。
【0021】
【発明の概要】
典型的には再構成の間もたらされるオーバーヘッドおよびシステムの利用不可能性を低減するよう、エポック変更後に複数ノードのシステムを再構成するための方法およびシステムが提供される。この発明のある局面に従うと、資源からマスタへの対応付は、資源からバケットへのハッシュ関数と、バケットからノードへのハッシュ関数とを組合せることによって確立される。
【0022】
この発明のある局面に従うと、資源からバケットへのハッシュ関数はエポック変更に応答して変更されないが、バケットからノードへのハッシュ関数はエポック変更に応答して変更する。したがって、資源からバケットへのハッシュ関数は「静的」であるが、バケットからノードへのハッシュ関数は「動的」である。
【0023】
好ましくは、動的なバケットからノードへのハッシュ関数は、システム内の新しい数のノード間でロードバランスをとるよう、エポック変更後に調整される。さらに、バケットからノードへの割当に対する変更は、リマスタされなければならない資源の数を最小限にするよう行なわれる。
【0024】
この発明の別の局面に従うと、資源のうちエポック変更の間にそのマスタを失ったもののみが、初期再構成の間に新しいマスタを割当てられる。ロードバランスは、システムが利用可能になった後に、資源を移動することによって徐々に達成される。一旦資源の古いマスタが要求された資源のマスタ資源オブジェクトを転送すると、これはアクセス要求を資源の新しいマスタに転送する。加えて、ノードの計画されたシャットダウンを見込んで、資源をノードから移動するための技術が開示される。
【0025】
この発明は、同じ参照番号が同様の要素を指す添付の図面の図中に例として示されるが、これに限定されるものではない。
【0026】
【好ましい実施例の詳細な説明】
複数ノードのシステムでの資源を管理するための方法および装置を記載する。以下の説明では、説明のため、この発明を完全に理解するために、多くの具体的詳細が述べられる。しかしながら、この発明はこれらの具体的な詳細なしに実施され得ることが当業者には明らかである。他の例では、この発明を不要にわかりにくくすることを避けるため、周知の構造および装置がブロック図で示される。
【0027】
ハードウェア概要
図2は、この発明の実施例が実現可能であるコンピュータシステム200を示すブロック図である。コンピュータシステム200は、情報を受け渡しするためのバス202または他の通信メカニズムと、バス202に結合され情報を処理するためのプロセッサ204とを含む。コンピュータシステム200はまた、ランダムアクセスメモリ(RAM)または他のダイナミック記憶装置などの主メモリ206を含み、これはバス202に結合されプロセッサ204によって実行されるべき命令および情報を記憶する。主メモリ206はまた、プロセッサ204によって実行されるべき命令の実行の間、一時的変数または他の中間情報を記憶するために使用され得る。コンピュータシステム200は、リードオンリメモリ(ROM)208または他の静的記憶装置をさらに含み、これはバス202に結合され静的情報およびプロセッサ204のための命令を記憶する。磁気ディスクまたは光学ディスクなどの記憶装置210が設けられこれはバス202に結合され情報および命令を記憶する。
【0028】
コンピュータシステム200は、バス202を介して陰極線管(CRT)などのディスプレイ212に結合されてもよく、これはコンピュータユーザに情報を表示する。英数字および他のキーを含む入力デバイス214は、バス202に結合されプロセッサ204に情報およびコマンド選択を与える。ユーザ入力デバイスの別のタイプは、マウス、トラックボールまたはカーソル方向キーなどのカーソルコントロール216であって、これは方向情報およびコマンド選択をプロセッサ204に与え、かつ、ディスプレイ212上のカーソルの動きを制御する。この入力デバイスは典型的には、第1の軸(たとえばx)および第2の軸(たとえばy)の、2軸での2自由度を有し、これによってデバイスは画面での位置を特定することが可能となる。
【0029】
この発明は、複数ノードのシステムでの資源を管理するコンピュータシステム200の使用に関する。この発明のある実施例に従うと、資源管理は、プロセッサ204が主メモリ206に含まれる1つ以上の命令の1つ以上のシーケンスを実行することに応答して、コンピュータシステム200によって与えられる。そのような命令は、記憶装置210などの、別のコンピュータ読出可能媒体から主メモリ206に読出されてもよい。主メモリ206内に含まれる命令のシーケンスを実行することによって、プロセッサ204はここに記載するプロセスステップを実行する。代替の実施例では、ハードワイア回路をソフトウェア命令の代わりにまたはこれと組合せて使用してこの発明を実現してもよい。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限定されない。
【0030】
ここに用いる「コンピュータ読出可能媒体」という言葉は、プロセッサ204に命令を与えて実行させることに関与する任意の媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むがこれに限定されるものではない、多くの形態を取ってもよい。不揮発性媒体は、たとえば、記憶装置210などの、光学ディスクまたは磁気ディスクを含む。揮発性媒体は、主メモリ206などの、ダイナミックメモリを含む。伝送媒体は、バス202を含むワイアを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体はまた、電波および赤外データ通信の間生成されるものなど、音波または光波の形態を取ってもよい。
【0031】
コンピュータ読出可能媒体の通常の形態は、たとえば、フロッピー、フレキシブルディスク、ハードディスク、磁気テープ、またはその他の磁気媒体、CD−ROM、その他の光学媒体、パンチカード、紙テープ、孔のパターンを備えるその他の物理的媒体、RAM、PROMおよびEPROM、FLASH−EPROM、その他のメモリチップまたはカートリッジ、以下に記載する搬送波、またはコンピュータが読出可能なその他の媒体の形態を含む。
【0032】
コンピュータ読出可能媒体のさまざまな形態は、1つ以上の命令の1つ以上のシーケンスをプロセッサ204に搬送して実行することにかかわり得る。たとえば、命令は最初に、遠隔コンピュータの磁気ディスク上に担持されてもよい。遠隔コンピュータは、命令をそのダイナミックメモリにロードし、モデムを使用して電話線を介して命令を送信することができる。コンピュータシステム200にローカルなモデムは、電話線上のデータを受信し、赤外送信器を使用してデータを赤外信号に変換することができる。赤外検出器は赤外信号で搬送されるデータを受信可能であり、適切な回路がデータをバス202上に与えることができる。バス202は、データを主メモリ206に搬送し、プロセッサ204はそこから命令を取出し実行する。主メモリ206によって受取られた命令は、プロセッサ204によって実行される前またはその後に、記憶装置210上にオプションとして記憶されてもよい。
【0033】
コンピュータシステム200はまた、バス202に結合される通信インターフェイス218を含む。通信インターフェイス218は、双方向のデータ通信を与え、これはネットワークリンク220に結合し、ネットワークリンクはローカルネットワーク222に接続される。たとえば、通信インターフェイス218は、統合サービスデジタル網(ISDN)カードまたはモデムであってもよく対応するタイプの電話線にデータ通信接続を与える。別の例として、通信インターフェイス218は、互換性のあるLANにデータ通信接続を与えるローカルエリアネットワーク(LAN)カードであってもよい。ワイアレスリンクが実現されてもよい。いかなるそのような実現化例でも、通信インターフェイス218は、さまざまなタイプの情報を表わすデジタルデータストリームを搬送する電気信号、電磁波信号または光学信号を送信し受信する。
【0034】
ネットワークリンク220は、典型的には、1つ以上のネットワークを介して他のデータデバイスにデータ通信を与える。たとえば、ネットワークリンク220は、ローカルネットワーク222を介してホストコンピュータ224またはインターネットサービスプロバイダ(ISP)226によって動作するデータ装置に接続してもよい。ISP226は、現在通常「インターネット」228と呼ばれるワールドワイドパケットデータ通信ネットワークを介して、データ通信サービスを提供する。ローカルネットワーク222とインターネット228とはどちらも、デジタルデータストリームを搬送する電気信号、電磁波信号または光学信号を使用する。さまざまなネットワークを通る信号と、ネットワークリンク220上および通信インターネット218を通る信号とは、デジタルデータをコンピュータシステム200へかつそこから搬送するものであるが、情報を転送する搬送波の例示的形態である。
【0035】
コンピュータシステム200は、ネットワーク、ネットワークリンク220および通信インターフェイス218を介して、プログラムコードを含め、メッセージを送信しデータを受信することが可能である。インターネットの例では、サーバ230は、インターネット228、ISP226、ローカルネットワーク222および通信インターフェイス218を介して、アプリケーションプログラムのために要求されたコードを伝送可能である。
【0036】
受信されたコードは、受信されたときにプロセッサ204によって実行されてもよいし、かつ/または記憶装置210または他の不揮発性装置に記憶されて後に実行されてもよい。このようにして、コンピュータシステム200は、搬送波の形でアプリケーションコードを獲得可能である。
【0037】
機能的な概要
Mバケットハッシュ関数を用いてN個ノードのシステムでのL数の資源について資源からマスタへの対応付を確立するための技術をここに記載する。Mは、Nよりも大きいがLよりも小さい。実際には、LはMよりも大きい3から4のオーダの大きさであり、MはNよりも大きい1または2のオーダの大きさである。たとえば、1000バケットハッシュ関数を用いて、6ノードシステムでの100万個の資源について資源からバケットへの対応付を確立することができる。バケットの数はノードの数よりも大きいので、各ノードは、第2のバケットからノードへのハッシュ関数を用いて1つ以上のバケットを割当てられる。
【0038】
この発明のある局面に従うと、ハッシュバケットに資源を対応付けるために用いられるハッシュ関数は、エポック変更に応答して変更されない。名前からバケットへのハッシュ関数と異なって、バケットからノードへのハッシュ関数はエポック変更に応答して変わる。したがって、資源からバケットへのハッシュ関数は「静的」であり、一方、バケットからノードへのハッシュ関数は「動的」である。
【0039】
好ましくは、動的なバケットからノードへのハッシュ関数は、システムでの新しい数のノード間でロードバランスをとるよう、エポック変更後に調整される。好ましくは、バケットからノードへの割当の変更は、リマスタされなければならない資源の数を最小限にするようにして行なわれる。
【0040】
ある実施例に従うと、バケットからノードへのハッシュは、バケット範囲からノードへの対応付情報を用いて実行され、この情報はどのバケット範囲がどのノードに対応するかを示すよう維持される。エポック変更に応答して、バケット範囲からノードへの対応付情報は、1組の再対応付規則に基づいて修正される。再対応付規則は、ロードを均等に分散し、かつ、リマスタされなければならない資源の数を最小限にしようとする。
【0041】
バケットの数は資源の数よりも小さく、バケット範囲の数はバケットの数よりも小さいので、バケット範囲からノードへの対応付情報は典型的には、資源が個別にノードに対応付けられた場合必要であろう情報の量よりもかなり少なくてすむ。
【0042】
例示的システム
図3を参照して、これは、この発明の実施例に従ってバケット範囲をノードに対応付ける複数ノードのシステムを例示するブロック図である。このシステムは、ハッシュ関数302を用いて、資源名300を1000個のハッシュバケット304に対応付ける。システムは、どのハッシュバケットがどのノードに対応するかを示す、バケット範囲からノードへの対応付情報318を維持する。このバケット範囲からノードへの対応付情報318は、第2のハッシュ関数として動作し、比較的大きい数のバケットをより小さい数のノードに対応付ける。バケットがノードに対応付けられると、そのバケットにハッシュされる資源名を有する資源は、そのノードで支配される。
【0043】
図3に示す実施例では、2つのノード306および308がある。バケット範囲1〜500はノード306に対応付けられ、バケット範囲501〜1000はノード308に対応付けられる。したがって、ノード306は、バケット1〜500に名前がハッシュされるすべての資源のマスタであり、ノード308は、バケット501〜1000に名前がハッシュされるすべての資源のマスタである。
【0044】
図4は、エポック変更が起きた後の、図3に示すシステムを例示するブロック図である。この例では、エポック変更は、新しいノード402がシステムに導入されてノードの数が3個に増えたために起きた。資源からバケット関数302への変更はエポック変更に応答してなされない。したがって、ハッシュバケットの数は同じままであり、すべての資源名が同じバケットにハッシュされ続けれている。
【0045】
しかしながら、3つのノード間での資源のマスタリング責任をより均等に分散するために、バケット範囲からノードへの対応付情報318に修正が加えられる。具体的には、ノード306に対応付けられるバケット範囲は、1〜500から1〜333に変更される。同様に、ノード308に対応付けられるバケット範囲は、501〜1000から501〜833に変更される。残りのバケット範囲(334〜500と834〜100)はこのため、新しいノード402に対応付けられる。
【0046】
新しいノード402に名前が対応付けられるバケットにハッシュされる資源のすべては、新しいノードでリマスタされなければならない。しかしながら、先行技術のリマスタリング技術と異なって、新しく導入されたノードに対応付けられない資源は、一般的には、その現在のマスタで支配され続ける。この例では、バケット1〜333にハッシュされる資源はすべて、ノード306で支配され続け、バケット501〜833にハッシュされる資源はすべて、ノード308で支配され続けた。したがって、リマスタに関連するオーバーヘッドは、これらの資源については全く起きない。さらに、これらの資源はリマスタされないので、これらの資源は、資源のリマスタに関連する利用不可能の期間を被ることがない。
【0047】
バケット範囲からノードへの対応付調整
上記のとおり、バケット範囲からノードへの対応付は、(1)新しい組のノードの間でマスタリング負担を均等に分散し、かつ、(2)リマスタされる資源の数を低減するようにして、エポック変更に応答して調整される。さまざまな対応付調整技術を用いてこれらの目的を達成することができる。以下の説明では、具体的な技術を詳細に記載する。しかしながら、この発明は、特定の対応付調整技術に限定されるものではない。
【0048】
この発明のある実施例に従うと、システムが使用する対応付調整技術は、確定的である。したがって、任意の特定の初期バケットからノードへの対応付および任意の特定のシステム構成変更が与えられれば、対応付調整規則によって、バケットからノードへの対応付は1回の修正ですむ。対応付調整規則の確定的な組を用いることによって、システム内のどのノードも、他のノードとの不必要な連係メッセージなしに、リマスタリング動作においてその役割に対する責任を果たすことができる。
【0049】
説明のために、以下の記載では、システム内に存在するすべてのノードが資源の支配に等しく関与することが望ましいと仮定する。しかしながら、ノードすべてが関与するわけでなくかつ/またはノードが異なったレベルで関与するようなシステム(たとえば、あるノードが、別のノードで支配される資源の半数を支配することが望ましいようなシステム)に合わせて適合するよう、バケット割当技術を調整してもよい。
【0050】
均等バケットアプローチ
均等バケットアプローチに従うと、システム内のノードはいずれも、エポック変更後にシステムに属するノードの数を示すメッセージを送信される。各ノードは、ハッシュ関数によって生成されるバケットの総数がわかっているので、バケットが既存のノード間で均等に分散されるためには、いくつのバケットをノードのいずれもが持たなければならないかを計算することができる(「ターゲットバケット数」)。
【0051】
エポック変更後にシステム内に存在するノードは、以下の2つのカテゴリのうちの1つに属する。すなわち、現在割当てられている範囲がターゲットバケット数より大きい数のバケットに及ぶノード(「過剰ノード」)と、現在割当てられている範囲がターゲットバケット数より少ない数のバケットに及ぶノード(「不足ノード」)とである。均等バケットアプローチに従うと、過剰ノードは、その範囲がターゲットバケット数にのみ及ぶまで、その範囲を削減する。一方で、不足ノードは、過剰ノードが行なった範囲削減によって「より合わされて」いないままのバケットまで及ぶよう、その範囲を増大させる(またはさらなる範囲を割当てる)。この範囲の増大は、不足ノードの範囲がターゲットバケット数の数のバケットに及ぶようになるよう、不足ノード間で分散される。
【0052】
たとえば、図4は、エポック変更が起きた後の図3のシステムを示す。エポック変更の際、第3のノード402が2ノードシステムに加えられた。均等バケットアプローチを用いると、例示のシステム変更後のバケットのターゲット数は、1000/3=333.3となる。エポック変更後当初、ノード306に割当てられた範囲は500個の資源を含み、ノード308に割当てられた範囲は500個の資源を含み、ノード402に割当てられた範囲は資源を全く含まない(ノード402には範囲がまだ割当てられていない)。したがって、ノード306および308は過剰ノードであり、ノード402は不足ノードである。
【0053】
過剰ノード306および308は、これに割当てられた範囲を減らし、その結果その範囲はバケットのターゲット数(333)に削減される。例示の例では、ノード306に割当てられた範囲は、1〜500から1〜333に削減され、ノード308に割当てられた範囲は501〜1000から501〜833に削減される。過剰ノードがこの範囲削減を経た後、範囲334〜500および834〜1000に属するバケットはもはや、いかなるノードにも割当てられていないので、「より合わされたバケットプール」に属するようになる。
【0054】
不足ノードには、より合わされたバケットプールに属するバケットを含む範囲が割当てられ、これによって、割当てられたバケットのその数はバケットのターゲット数に増える。この例では不足ノード402にのみ、より合わされたバケットプールに属する範囲のすべて(この場合では、範囲334〜500および範囲834〜1000)が割当てられる。エポック変更後のバケット範囲再割当に応答して、バケット範囲からノードへの対応付情報318は修正される。図4に示すバケット範囲からノードへの対応付情報318は、均等バケットアプローチに従って範囲が調整された後に、バケット範囲割当を反映する。
【0055】
ある実施例に従うと、過剰ノードは、範囲割当の総数を削減するよう、より合わされたバケットプールに解放するべき範囲を選択する。たとえば、ノード308がより合わされたバケットプールにバケットを解放しようとする時点で、ノード306が既に、より合わされたバケットプールに範囲224〜500を解放していたとする。範囲834〜1000をより合わされたバケットプールに解放する代わりに、ノード308は、より合わされたバケットプールに既にある範囲に連続する範囲を選択してもよい。この例では、ノード308は、範囲500〜666を解放するよう決定してもよい。範囲500〜666を解放した後、ノード308には範囲667〜1000が残され、より合わされたバケットプールは、単一の範囲334〜666を含む。
【0056】
この例では、より合わされたバケットプールに含まれる単一の範囲を、不足ノード402に割当てるだけでよい。しかしながら、不足ノードが既に、これに割当てられている1つ以上のバケット範囲を有する場合、可能であれば、不足ノードは、その現在割当てられている範囲と連続する範囲を、より合わされたバケットプールから選択する。たとえば、ノード402がシステムから取除かれると仮定する。これによって、ノードの数が3から再び2に減るというエポック変更が起きる。ノード402には範囲334〜666が割当てられていたとすると、この範囲がより合わされたバケットプールに与えられるであろう。残りのノード306および308は、その現在の範囲が含むのは333個のバケットのみであり新しいターゲットバケット数は1000/2=500となるので、このどちらも不足ノードとなるであろう。
【0057】
その範囲をターゲットバケット数に増大させるために、ノード306は、より合わされたバケットプールから範囲334〜500を取る。この範囲が選択されるのは、これがノード306に現在割当てられている範囲1〜333と連続するからである。次に、ノード308は、より合わされたバケットプールから残りの範囲501〜666を取る。これらの範囲調整の結果、ノード306および308に関連付けられる範囲はそれぞれ、再び、1〜500および501〜1000となる。
【0058】
ノードベクトルアプローチ
バケット再割当に対する均等バケットアプローチの代替を、ここでは、ノードベクトルアプローチと呼ぶ。ノードベクトルアプローチに従うと、M長ベクトルが維持される。Mは、資源からバケットへのハッシュ関数のハッシュバケットの数である。ノードベクトルへの各エントリは、ハッシュバケットに対応し、ノード識別子を記憶する。ベクトルエントリのノード識別子によって識別されるノードが、ベクトルエントリに関連付けられるバケットに名前がハッシュされるすべての資源のマスタとしての役割を果たす。たとえば、ベクトルをMASTER()と名付けるとする。ノードN1の識別子がMASTER(5)に記憶されているとすれば、バケット5にハッシュされる資源はすべて、ノードN1上で支配される。
【0059】
ノードベクトルMASTER()は、およそ等しい数のエントリをノードの各々に割当てることによって初期的に配置される。この割当を実行する簡単な方法は、第1のベクトルエントリに始まって、各ノードごとにX個のノード識別子を記憶することである。Xは、ノードの数で除算されるハッシュバケットの数に等しい。たとえば、100個のハッシュバケットおよび10個のノードがあるとすれば、第1のノードでの識別子は、ベクトルエントリ1〜10に記憶され、第2のノードの識別子は、ベクトルエントリ11〜20に記憶され、等々である。
【0060】
エポック変更後、第2のノードベクトルNEWMASTER()が生成される。加えて、ターゲットバケット数が、エポック変更後のシステムでのノードの数に基づいて上述のとおり計算される。NEWMASTER()ベクトルは、初期的に、以下の2つの条件を満たすMASTER()ベクトルの各エントリに記憶される識別子をNEWMASTER()にコピーすることによって配置される。この条件とは、(1)識別子がシステム内になおもあるノードについてのものであることと、(2)ノードに既に割当てられているエントリの数がターゲットバケット数よりも少ないこととである。NEWMASTER()のこの初期配置の後、MASTER(i)=NEWMASTER(i)などの、値iにハッシュされる資源はすべて、即座に利用可能となるであろう。この次に、NEWMASTER()への残っている割当てられていないエントリは、Xがターゲットバケット数である、各ノードのX個の識別子の合計を記憶するようにして、ノード識別子に割当てられる。
【0061】
NEWMASTER()へのエントリがすべて配置された後、MASTER(i)<>NEWMASTER(i)である値iにハッシュされる資源はすべて、リマスタされなければならない。このリマスタリング動作の間、MASTER(i)=Na、NEWMASTER(i)=Nbとなるよう、各ノードNaは、バケットiにハッシュされる資源のマスタ資源オブジェクトを別のノードNbに転送する。加えて、MASTER(i)=エポック変更の間失われたノードの識別子、NEWMASTER(i)=Naとなるよう、各ノードNaは、バケットiにハッシュされる資源のマスタ資源オブジェクトを再構築する。
【0062】
遅延されたロードバランス
理想的な場合には、資源の支配に関連するロードは、再構成後のシステムでのノード間で均等に分散される。さらに、再構成の間、ロードを均等に分散するのに必要な最小限の数の資源のみが移動される。しかしながら、ロードの均等なバランスをとるために必要な最小限の数の資源をリマスタするとしても、再構成プロセスは、かなりの量のオーバーヘッドを伴い、不当に長い時間期間の間、システムの一部を利用不可能にしてしまう可能性がある。
【0063】
この発明のある局面に従うと、再構成動作の持続時間は、リマスタして所望のロードバランスを達成する必要があるすべての資源より少ない資源を初期的にリマスタすることによって、低減される。したがって、エポック変更後に起きる初期再構成は、均等にロードのバランスがとれていない。代わりに、初期再構成が行なわれ、システムが一般的に利用可能となった後に、過剰ノードから不足ノードへとバケットを徐々に再割当して、これによって資源を「移動」して、やがてより均等に分散されたロードバランスが達成される。
【0064】
リマスタリング動作には、ロストマスタリマスタリングと転送マスタリマスタリングとの、2つの一般的なタイプがある。ロストマスタリマスタリングが必要とされるのは、エポック変更の間エポック変更前のそのマスタがシステムから取除かれた資源についてである。資源のロストマスタリマスタリングは、一般的には、既存のノードで資源のマスタ資源オブジェクトを再構築することを伴う。
【0065】
一方、転送マスタリマスタリングが行なわれるのは、エポック変更前のそのマスタがエポック変更後もシステム内に存在し続ける資源についてである。マスタ資源オブジェクトはエポック変更の間に失われていないため、転送マスタリマスタリングは、資源のマスタ資源オブジェクトが再構築されることを必要としない。
【0066】
ある実施例に従うと、資源のうちロストマスタリマスタリングを経なければならないもののみが、エポック変更後初期的にリマスタされる。具体的には、エポック変更に応答してバケットからノードへのハッシュ関数を修正して、エポック変更中に失われたノードに対応付けられるバケットのみを初期的に再割当する。好ましくは、現在マスタリングロードが最も低いエポック変更後のノードにこれらのバケットを対応付けるようにして、バケットからノードへのハッシュ関数は修正される。これらのバケットが再割当されたノードは、典型的には、エポック変更中にシステムに新しく加えられたいかなるノードをも含む。
【0067】
必要なロストマスタリマスタリングのすべてが実行された後、システムはユーザに利用可能となる。システムが利用可能となった後に、さらなる資源を過剰ノードから不足ノードに徐々に移動させてよりバランスのとれたロード分散を達成する。さらに、転送マスタリマスタリング動作は、初期エポック変更後再構成の後に行なわれるものであるが、これはシステムが再び利用不可能とならないようにして行なわれる。
【0068】
図5を参照すると、これは、この発明の実施例に従ってエポック変更後資源をリマスタするステップを例示するフローチャートである。ステップ502で、エポック変更が起きる。ステップ504で、エポック変更中に失われたノードに割当てられたバケット(「マスタレスバケット」)を支配するよう不足ノードが選択される。ある実施例に従うと、割当てられたバケットの数が最小である、エポック変更後システムの1つ以上のノードが選択される。典型的には、選択されたバケットは、エポック変更中にシステムに加えられたいかなるノードも含むであろう。
【0069】
ステップ506で、バケットからノードへの対応付が修正され、マスタレスバケットに、ステップ504で選択されたノードが割当てられる。ステップ508で、ロストマスタリマスタリングが実行される。具体的には、再対応付されたバケットにハッシュされる名前を有する資源のマスタ資源オブジェクトが、その新しいマスタノード上で再構築される。たとえば、資源名R1が、ノードN1に再対応付されたバケットB1にハッシュされるならば、R1のマスタ資源オブジェクトはN1上で再構築される。
【0070】
ステップ504、506および508は、この発明の実施例に従ってエポック変更後に実行された初期再構成を構成する。ステップ510〜518は、再構成後資源移動に関わるステップを例示し、これは、エポック変更後に存在するノード間でのより均等なロードバランスのために、初期再構成後に行なわれる。多くの過剰ノードが、再構成後資源移動に同時的に関与し得る。さらに、そのような再構成後移動は、徐々に起こればよく、初期再構成後に直ちに始まるかまたは起きる必要はない。
【0071】
ステップ510で、過剰ノードは不足ノードを選択し、これに、過剰ノードに現在属しているバケットの1つ以上が再割当されるようになる。説明のために、単一の「ターゲット」バケットが、選択された不足ノードに再割当されるものと仮定する。ステップ512で、過剰ノードは、バケット転送メッセージを、選択された不足ノードに送信して、ターゲットバケットが不足ノードに再割当されることを不足ノードに知らせる。ステップ514で、過剰ノードは、選択された不足ノードに、ターゲットバケットに属する資源のマスタノードオブジェクト情報を送信する。
【0072】
ステップ516で、不足ノードは、システム内の他のノードに、不足バケットがターゲットバケットの新しいマスタとなったことを示すメッセージをブロードキャストする。ステップ518で、ノードは、そのバケットからノードへの対応付を更新し、ターゲットバケットがメッセージを送信した不足ノードに割当てられたことを示すことによって応答する。
【0073】
重要なことには、再構成後資源移動が行なわれている間にもシステムは利用可能なままであり得る。ある実施例に従うと、移動されている資源へのアクセスを要求するプロセスさえも実行し続けることが可能である。たとえば、ノードN1上のプロセスがノードN2からノードN3へと移動されつつある資源を要求すると仮定する。資源名は、バケットからノードへの対応付に従えばN3であるが依然としてN2になおも割当てられているバケットにハッシュされる。したがって、プロセスはアクセス要求をN2に送信する。もしN2が当該資源のマスタ資源オブジェクトをまだ転送していなければ、N2は通常どおり要求をサービスし得る。もしN2がマスタ資源オブジェクトをN3に既に転送していれば、N2は要求をN3に転送する。資源のマスタ資源オブジェクトがN3にまだ到着していなかったとしても、要求は、マスタ資源オブジェクトの後にN3に到着するであろう。なぜなら、N2からのデータは、これがN2から送信されるのと同じ順でN3に到着するからである。マスタ資源オブジェクトと要求とのどちらもがN3に到着すると、N3は要求をサービスし得る。
【0074】
この発明のある局面に従うと、資源を別のノードに転送しているノード(上記の例ではN2)は、それが転送しているマスタ資源オブジェクトの自己のバージョンを引続き維持可能である。転送ノードで維持されるマスタ資源オブジェクトのバージョンは、バックアップとして機能する。したがって、もしマスタ資源オブジェクトがそこに転送されつつあるノードに障害が発生しても、バックアップマスタ資源オブジェクトを使用して資源へのアクセスを制御することが可能である。受信ノードが、それが新しいマスタであるということをブロードキャストするまで、転送ノード上にバックアップマスタ資源オブジェクトを維持することに関連するオーバーヘッドは低減されるが、これはすべてのアクセス要求がいずれにせよ転送ノードに到着し(かつこれによって転送される)ことによるものである。受信ノードが、それが新しいマスタであるということをブロードキャストした後、転送ノードは、バックアップマスタ資源オブジェクトの維持を停止してもよいし、マスタ資源オブジェクトを維持し続けてもよい。もし転送ノードがマスタ資源オブジェクトのバックアップバージョンを維持し続ければ、これは、新しいマスタノードが、正確にバックアップを維持する目的で古いマスタノードにアクセス要求を転送することに関連するさらなるオーバーヘッドを招くことになる。
【0075】
ある実施例に従うと、バケットに関連付けられるマスタ資源オブジェクトがノード間で移動されている間にエポック変更が起きると、そのバケットはマスタレスバケットとして扱われる。したがって、バケットにマスタが再割当され、エポック変更後の初期再構成の間、マスタ資源オブジェクトは再構築される。
【0076】
計画されたシャットダウン
この発明のある実施例に従うと、あるノードがエポック変更中にシャットダウンする予定とわかっているとき、図5に示すステップ510〜518がエポック変更前に行なわれる。たとえば、ノードN2がシャットダウンする予定とわかれば、ノードN2は、N2に現在割当てられているバケットに関連付けられたマスタ資源オブジェクトを、シャットダウンされない予定の1つ以上の他のノードに転送する。
【0077】
このプロセスの間、もしN2が、マスタ資源オブジェクトが既に転送されている資源に関連付けられるアクセス要求を受信すれば、N2はその要求を適切なノードに転送する。N2は、先にN2に割当てられていたバケットのすべてに関連付けられるマスタ資源オブジェクトを転送した後、N2は、すべての受信ノードがその新しいバケット割当を示すメッセージをブロードキャストするのを待つ。すべてのブロードキャストメッセージが送信された後、N2はもはやいかなるバケットをも割当てられていないので、N2はシャットダウンしてもよい。この状況下でのN2のシャットダウンは、ロストマスタリマスタリングに関連するオーバーヘッドを招くことはない。
【0078】
前記の明細書においては、この発明はその特定の実施例を参照して記載された。しかしながら、この発明のより広い精神および範囲から逸脱することなしに、これにさまざまな変形および変更をなし得ることは明らかであろう。したがって、この明細書および図面は、限定的なものではなく例示的なものとみなされるべきである。
【図面の簡単な説明】
【図1】 分散ロックマネージャを有する複数ノードのシステムのブロック図である。
【図2】 この発明の実施例が実施可能であるコンピュータシステムのブロック図である。
【図3】 この発明の実施例を採用して複数ノードのシステム内で資源がどこに支配されるべきかを決定するシステムを例示するブロック図である。
【図4】 エポック変更後の図3に示すシステムのブロック図である。
【図5】 この発明の実施例に従うエポック変更後のシステムを再構成するステップを例示するフローチャートである。
Claims (16)
- 複数ノードのシステムでのノードに対する資源を支配するためのコンピュータで実行される方法であって、前記コンピュータが以下のステップを実行し、前記以下のステップは、
1組の資源の中の各資源について、
第1のハッシュ関数を用いて特定のバケットに資源を対応付けるステップと、
第2のハッシュ関数を用いて特定のノードに特定のバケットを対応付けるステップと、
前記資源のマスタとなるよう前記特定のノードを選択するステップとによって資源を支配するノードを選択するステップと、
前記第1のハッシュ関数を変更することなしに前記第2のハッシュ関数を変更することによってエポック変更に応答するステップとを含み、
前記エポック変更に応答するステップでは、前記エポック変更後に初期再構成を実行し、前記初期再構成は、エポック変更後に存在するノードにエポック変更中に取除かれたノードに対応付けられた1組のバケットを再対応付するステップを含み、さらに、前記以下のステップは、
前記初期再構成を実行した後、
複数ノードのシステムを、要求の受信および処理が可能にするステップと、
複数ノードのシステムで要求の受信および処理が可能である一方で、不足ノードに割当てられたバケットの数がターゲットバケット数に等しくなるまで過剰ノードに現在対応付けられている1つ以上のバケットを不足ノードに移動するステップとを実行するステップとを含み、
エポック変更は、複数ノードのシステムにおけるノードの数の変更であり、
不足ノードは、現在割当てられている範囲がターゲットバケット数より少ない数のバケットに及ぶ複数ノードのシステムにおけるノードであり、
過剰ノードは、現在割当てられている範囲がターゲットバケット数より大きい数のバケットに及ぶ複数ノードのシステムにおけるノードであり、
ターゲットバケット数は、バケットを複数ノードのシステムにおけるノード間で均等に分散するために複数ノードのシステムにおける各ノードが持たなければならないバケットの数である、方法。 - エポック変更前に、第1の数のノードを用いて前記資源の組からの資源を支配し、
エポック変更後に、第2の数のノードを用いて前記資源の組からの資源を支配し、
前記方法は前記第1のハッシュ関数を用いてある数のバケットに資源をハッシュするステップを含み、前記ある数のバケットは前記第1の数および前記第2の数のどちらよりも大きい、請求項1に記載の方法。 - 前記第2のハッシュ関数はバケットからノードへの対応付情報を用いて実現され、
前記第2のハッシュ関数を変更するステップは、前記バケットからノードへの対応付情報のうち1つ以上のバケットからノードへの対応付を変更するステップを含む、請求項1に記載の方法。 - 複数個のノードの各ノードがバケットからノードへの対応付情報のローカルコピーを維持し、
前記バケットからノードへの対応付情報のうち1つ以上のバケットからノードへの対応付を変更するステップは、前記複数個のノードの各々で並列に実行される、請求項3に記載の方法。 - 前記1つ以上のバケットからノードへの対応付を変更するステップは、エポック変更前のバケットからノードへの対応付およびいくつのノードがエポック変更後に資源を支配するよう利用可能であるかに基づいて確定結果を生成する1組の規則を適用することによって実行される、請求項4に記載の方法。
- 1つ以上のバケットからノードへの対応付を変更するステップは、
いくつのバケットが前記第1のハッシュ関数に関連付けられるかおよびいくつのノードがエポック変更後に資源を支配するよう利用可能であるかに基づいてターゲットバケット数を決定するステップと、
もし特定のノードがエポック変更後に資源を支配するよう利用可能であれば、エポック変更後に、
もしターゲットバケット数よりも多いバケットがエポック変更前に特定のノードに対応付けられていたならば、バケットからノードへの情報を修正してエポック変更前に特定のノードに対応付けられていた1つ以上のバケットを異なったノードに対応付けるステップと、
もしターゲットバケット数より少ないバケットがエポック変更前に特定のノードに対応付けられていたならば、バケットからノードへの情報を修正してエポック変更前に異なったノードに対応付けられていた1つ以上のバケットを特定のノードに対応付けるステップとを実行するステップとを含む、請求項3に記載の方法。 - 移動するステップは、
過剰ノードが前記1つ以上のバケットに対応付けられる資源を支配するために必要な資源情報を不足ノードに送信するステップと、
過剰ノードが資源情報を送信し始めた後、前記資源に関する要求を過剰ノードにおいて受信するステップと、
前記資源情報を送信した後に、過剰ノードが前記要求を前記不足ノードに転送するステップとを含む、請求項1に記載の方法。 - 不足ノードは、前記不足ノードが前記1つ以上のバケットに対応付けられる前記資源のマスタであることを示すメッセージをノードの組にブロードキャストするステップと、
前記ノードの組のノードは、前記第2のハッシュ関数を変更して前記1つ以上のバケットを前記不足ノードに対応付けることによって前記メッセージに応答するステップとを含む、請求項7に記載の方法。 - 複数ノードのシステムでのノードに対する資源を支配するためのプログラムを担持するコンピュータ読出可能媒体であって、前記プログラムは、コンピュータに以下のステップを実行させ、前記以下のステップは、
1組の資源の中の各資源について、
第1のハッシュ関数を用いて特定のバケットに資源を対応付けるステップと、
第2のハッシュ関数を用いて特定のノードに特定のバケットを対応付けるステップと、
前記資源のマスタとなるよう前記特定のノードを選択するステップとによって資源を支配するノードを選択するステップと、
前記第1のハッシュ関数を変更することなしに前記第2のハッシュ関数を変更することによってエポック変更に応答するステップとを実行する命令を含み、
前記エポック変更に応答するステップでは、前記エポック変更後に初期再構成を実行し、前記初期再構成は、エポック変更後に存在するノードにエポック変更中に取除かれたノードに対応付けられた1組のバケットを再対応付するステップを含み、さらに、
前記初期再構成を実行した後、
複数ノードのシステムを、要求の受信および処理が可能にするステップと、
複数ノードのシステムで要求の受信および処理が可能である一方で、不足ノードに割当てられたバケットの数がターゲットバケット数に等しくなるまで過剰ノードに現在対応付けられている1つ以上のバケットを不足ノードに移動するステップとを実行するステップを含み、
エポック変更は、複数ノードのシステムにおけるノードの数の変更であり、
不足ノードは、現在割当てられている範囲がターゲットバケット数より少ない数のバケットに及ぶ複数ノードのシステムにおけるノードであり、
過剰ノードは、現在割当てられている範囲がターゲットバケット数より大きい数のバケットに及ぶ複数ノードのシステムにおけるノードであり、
ターゲットバケット数は、バケットを複数ノードのシステムにおけるノード間で均等に分散するために複数ノードのシステムにおける各ノードが持たなければならないバケットの数である、コンピュータ読出可能媒体。 - エポック変更前に、第1の数のノードを用いて前記資源の組からの資源を支配し、
エポック変更後に、第2の数のノードを用いて前記資源の組からの資源を支配し、
コンピュータ読出可能媒体は、前記第1のハッシュ関数を用いてある数のバケットに資源をハッシュするステップを実行する命令を含み、前記ある数のバケットは前記第1の数および前記第2の数のどちらよりも大きい、請求項9に記載のコンピュータ読出可能媒体。 - 前記第2のハッシュ関数はバケットからノードへの対応付情報を用いて実現され、
前記第2のハッシュ関数を変更するステップは、前記バケットからノードへの対応付情報のうち1つ以上のバケットからノードへの対応付を変更するステップを含む、請求項9に記載のコンピュータ読出可能媒体。 - 複数個のノードの各ノードがバケットからノードへの対応付情報のローカルコピーを維持し、
前記バケットからノードへの対応付情報のうち1つ以上のバケットからノードへの対応付を変更するステップは、前記複数個のノードの各々で並列に実行される、請求項11に記載のコンピュータ読出可能媒体。 - 前記1つ以上のバケットからノードへの対応付を変更するステップは、エポック変更前のバケットからノードへの対応付およびいくつのノードがエポック変更後に資源を支配するよう利用可能であるかに基づいて確定結果を生成する1組の規則を適用することによって実行される、請求項12に記載のコンピュータ読出可能媒体。
- 1つ以上のバケットからノードへの対応付を変更するステップは、
いくつのバケットが前記第1のハッシュ関数に関連付けられるかおよびいくつのノードがエポック変更後に資源を支配するよう利用可能であるかに基づいてターゲットバケット数を決定するステップと、
もし特定のノードがエポック変更後に資源を支配するよう利用可能であれば、エポック変更後に、
もしターゲットバケット数よりも多いバケットがエポック変更前に特定のノードに対応付けられていたならば、バケットからノードへの情報を修正してエポック変更前に特定のノードに対応付けられていた1つ以上のバケットを異なったノードに対応付けるステップと、
もしターゲットバケット数より少ないバケットがエポック変更前に特定のノードに対応付けられていたならば、バケットからノードへの情報を修正してエポック変更前に異なったノードに対応付けられていた1つ以上のバケットを特定のノードに対応付けるステップとを実行するステップとを含む、請求項11に記載のコンピュータ読出可能媒体。 - 移動するステップは、
過剰ノードが前記1つ以上のバケットに対応付けられる資源を支配するために必要な資源情報を不足ノードに送信するステップと、
過剰ノードが資源情報を送信し始めた後、前記資源に関する要求を過剰ノードにおいて受信するステップと、
前記資源情報を送信した後に、過剰ノードが前記要求を前記不足ノードに転送するステップとを含む、請求項9に記載のコンピュータ読出可能媒体。 - 不足ノードは、前記不足ノードが前記1つ以上のバケットに対応付けられる前記資源のマスタであることを示すメッセージをノードの組にブロードキャストするステップと、
前記ノードの組のノードは、前記第2のハッシュ関数を変更して前記1つ以上のバケットを前記不足ノードに対応付けることによって前記メッセージに応答するステップとを実行する命令をさらに含む、請求項15に記載のコンピュータ読出可能媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/218,864 US6363396B1 (en) | 1998-12-21 | 1998-12-21 | Object hashing with incremental changes |
US09/218,864 | 1998-12-21 | ||
PCT/US1999/028701 WO2000038062A1 (en) | 1998-12-21 | 1999-12-06 | Object hashing with incremental changes |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002533809A JP2002533809A (ja) | 2002-10-08 |
JP2002533809A5 JP2002533809A5 (ja) | 2006-12-14 |
JP4475818B2 true JP4475818B2 (ja) | 2010-06-09 |
Family
ID=22816794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000590054A Expired - Lifetime JP4475818B2 (ja) | 1998-12-21 | 1999-12-06 | 漸進変化を伴うオブジェクトハッシング |
Country Status (8)
Country | Link |
---|---|
US (1) | US6363396B1 (ja) |
EP (2) | EP1830262B1 (ja) |
JP (1) | JP4475818B2 (ja) |
AU (1) | AU770875B2 (ja) |
CA (1) | CA2320307C (ja) |
DE (2) | DE69937946T2 (ja) |
HK (1) | HK1104861A1 (ja) |
WO (1) | WO2000038062A1 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3510042B2 (ja) * | 1996-04-26 | 2004-03-22 | 株式会社日立製作所 | データベース管理方法及びシステム |
US6529906B1 (en) * | 2000-01-28 | 2003-03-04 | Oracle Corporation | Techniques for DLM optimization with re-mastering events |
US7246120B2 (en) | 2000-01-28 | 2007-07-17 | Oracle International Corporation | Techniques for achieving higher availability of resources during reconfiguration of a cluster |
US6751616B1 (en) * | 2000-01-28 | 2004-06-15 | Oracle International Corp. | Techniques for DLM optimization with re-mapping responsibility for lock management |
US6920454B1 (en) | 2000-01-28 | 2005-07-19 | Oracle International Corporation | Techniques for DLM optimization with transferring lock information |
US7487152B1 (en) * | 2000-05-31 | 2009-02-03 | International Business Machines Corporation | Method for efficiently locking resources of a global data repository |
US7020713B1 (en) * | 2000-10-10 | 2006-03-28 | Novell, Inc. | System and method for balancing TCP/IP/workload of multi-processor system based on hash buckets |
US6697901B1 (en) * | 2000-10-24 | 2004-02-24 | Oracle International Corporation | Using secondary resource masters in conjunction with a primary resource master for managing resources that are accessible to a plurality of entities |
US7389293B2 (en) * | 2000-12-20 | 2008-06-17 | Oracle International Corporation | Remastering for asymmetric clusters in high-load scenarios |
TW576061B (en) * | 2001-08-13 | 2004-02-11 | Via Tech Inc | Device and method for load balancing of packet switching |
US7379952B2 (en) * | 2004-01-30 | 2008-05-27 | Oracle International Corporation | Techniques for multiple window resource remastering among nodes of a cluster |
US20060200469A1 (en) * | 2005-03-02 | 2006-09-07 | Lakshminarayanan Chidambaran | Global session identifiers in a multi-node system |
US8504521B2 (en) * | 2005-07-28 | 2013-08-06 | Gopivotal, Inc. | Distributed data management system |
US7814065B2 (en) * | 2005-08-16 | 2010-10-12 | Oracle International Corporation | Affinity-based recovery/failover in a cluster environment |
US8464265B2 (en) * | 2006-04-03 | 2013-06-11 | Secure64 Software | Method and system for reallocating computational resources using resource reallocation enabling information |
US8209305B2 (en) * | 2006-04-19 | 2012-06-26 | Microsoft Corporation | Incremental update scheme for hyperlink database |
US8392366B2 (en) * | 2006-08-29 | 2013-03-05 | Microsoft Corporation | Changing number of machines running distributed hyperlink database |
US7821925B2 (en) * | 2007-01-29 | 2010-10-26 | Fulcrum Microsystems, Inc. | Traffic distribution techniques utilizing initial and scrambled hash values |
US7984158B2 (en) * | 2007-03-20 | 2011-07-19 | Microsoft Corporation | Web service for coordinating actions of clients |
US20080278508A1 (en) * | 2007-05-11 | 2008-11-13 | Swen Anderson | Architecture and Method for Remote Platform Control Management |
US8924403B2 (en) * | 2007-12-31 | 2014-12-30 | Sap Se | Method and system for central data querying |
WO2009087413A1 (en) * | 2008-01-08 | 2009-07-16 | Taptu Ltd. | Data storage |
US9237100B1 (en) | 2008-08-06 | 2016-01-12 | Marvell Israel (M.I.S.L.) Ltd. | Hash computation for network switches |
US8078825B2 (en) * | 2009-03-11 | 2011-12-13 | Oracle America, Inc. | Composite hash and list partitioning of database tables |
US8614950B2 (en) | 2010-11-30 | 2013-12-24 | Marvell Israel (M.I.S.L) Ltd. | Load balancing hash computation for network switches |
US9229740B1 (en) | 2011-11-02 | 2016-01-05 | Amazon Technologies, Inc. | Cache-assisted upload proxy |
US8726264B1 (en) | 2011-11-02 | 2014-05-13 | Amazon Technologies, Inc. | Architecture for incremental deployment |
US8984162B1 (en) * | 2011-11-02 | 2015-03-17 | Amazon Technologies, Inc. | Optimizing performance for routing operations |
US9171030B1 (en) | 2012-01-09 | 2015-10-27 | Marvell Israel (M.I.S.L.) Ltd. | Exact match lookup in network switch devices |
GB2504112A (en) * | 2012-07-18 | 2014-01-22 | Ibm | Generating database sequences in a replicated database environment |
WO2014132136A2 (en) | 2013-02-27 | 2014-09-04 | Marvell World Trade Ltd. | Efficient longest prefix matching techniques for network devices |
US9537771B2 (en) | 2013-04-04 | 2017-01-03 | Marvell Israel (M.I.S.L) Ltd. | Exact match hash lookup databases in network switch devices |
US9906592B1 (en) | 2014-03-13 | 2018-02-27 | Marvell Israel (M.I.S.L.) Ltd. | Resilient hash computation for load balancing in network switches |
US9935831B1 (en) * | 2014-06-03 | 2018-04-03 | Big Switch Networks, Inc. | Systems and methods for controlling network switches using a switch modeling interface at a controller |
US10587516B1 (en) | 2014-07-15 | 2020-03-10 | Marvell Israel (M.I.S.L) Ltd. | Hash lookup table entry management in a network device |
US10467001B2 (en) | 2015-01-12 | 2019-11-05 | Microsoft Technology Licensing, Llc | Enhanced compression, encoding, and naming for resource strings |
US9467166B2 (en) | 2015-01-12 | 2016-10-11 | Microsoft Technology Licensing, Llc | Enhanced compression, encoding, and naming for resource strings |
US9886442B2 (en) | 2015-01-12 | 2018-02-06 | Microsoft Technology Licensing, Llc | Enhanced compression, encoding, and naming for resource strings |
US10430182B2 (en) | 2015-01-12 | 2019-10-01 | Microsoft Technology Licensing, Llc | Enhanced compression, encoding, and naming for resource strings |
EP3266166B1 (en) | 2015-03-06 | 2021-11-17 | Marvell World Trade Ltd. | Method and apparatus for load balancing in network switches |
US10904150B1 (en) | 2016-02-02 | 2021-01-26 | Marvell Israel (M.I.S.L) Ltd. | Distributed dynamic load balancing in network systems |
EP3279796B1 (en) * | 2016-08-02 | 2020-07-15 | NXP USA, Inc. | Resource access management component and method therefor |
US10243857B1 (en) | 2016-09-09 | 2019-03-26 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for multipath group updates |
US10540207B1 (en) * | 2018-07-18 | 2020-01-21 | International Business Machines Corporation | Fast, low memory, consistent hash using an initial distribution |
US11360983B2 (en) * | 2019-03-01 | 2022-06-14 | Hitachi Vantara Llc | Techniques for processing of data in motion |
CN113127921A (zh) * | 2019-12-31 | 2021-07-16 | 伊姆西Ip控股有限责任公司 | 数据管理的方法、电子设备和计算机程序产品 |
CN111475535B (zh) * | 2020-03-09 | 2024-02-06 | 咪咕文化科技有限公司 | 数据存储、访问方法及装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202971A (en) | 1987-02-13 | 1993-04-13 | International Business Machines Corporation | System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock |
US5060144A (en) | 1989-03-16 | 1991-10-22 | Unisys Corporation | Locking control with validity status indication for a multi-host processor system that utilizes a record lock processor and a cache memory for each host processor |
JPH0318935A (ja) | 1989-06-15 | 1991-01-28 | Hitachi Ltd | データリストに対するアクセスの直列化方式 |
US5161227A (en) | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
JP2533266B2 (ja) | 1991-06-14 | 1996-09-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用デ―タシステムにおけるデ―タ資源のロッキング方法及びシステム間のデ―タロック管理方法 |
US5408653A (en) | 1992-04-15 | 1995-04-18 | International Business Machines Corporation | Efficient data base access using a shared electronic store in a multi-system environment with shared disks |
US5403639A (en) | 1992-09-02 | 1995-04-04 | Storage Technology Corporation | File server having snapshot application data groups |
US5452447A (en) | 1992-12-21 | 1995-09-19 | Sun Microsystems, Inc. | Method and apparatus for a caching file server |
US5612865A (en) | 1995-06-01 | 1997-03-18 | Ncr Corporation | Dynamic hashing method for optimal distribution of locks within a clustered system |
CA2159269C (en) * | 1995-09-27 | 2000-11-21 | Chaitanya K. Baru | Method and apparatus for achieving uniform data distribution in a parallel database system |
US5892945A (en) * | 1996-03-21 | 1999-04-06 | Oracle Corporation | Method and apparatus for distributing work granules among processes based on the location of data accessed in the work granules |
US6026293A (en) * | 1996-09-05 | 2000-02-15 | Ericsson Inc. | System for preventing electronic memory tampering |
US5963960A (en) * | 1996-10-29 | 1999-10-05 | Oracle Corporation | Method and apparatus for queuing updates in a computer system |
US6023706A (en) * | 1997-07-11 | 2000-02-08 | International Business Machines Corporation | Parallel file system and method for multiple node file access |
US5893086A (en) * | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
GB9811574D0 (en) * | 1998-05-30 | 1998-07-29 | Ibm | Indexed file system and a method and a mechanism for accessing data records from such a system |
US6144983A (en) * | 1998-06-09 | 2000-11-07 | Oracle Corporation | Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system |
US6173313B1 (en) * | 1998-06-24 | 2001-01-09 | Oracle Corporation | Methodology for hosting distributed objects at a predetermined node in a distributed system |
-
1998
- 1998-12-21 US US09/218,864 patent/US6363396B1/en not_active Expired - Lifetime
-
1999
- 1999-12-06 EP EP07106281A patent/EP1830262B1/en not_active Expired - Lifetime
- 1999-12-06 AU AU24759/00A patent/AU770875B2/en not_active Expired
- 1999-12-06 CA CA002320307A patent/CA2320307C/en not_active Expired - Lifetime
- 1999-12-06 EP EP99968071A patent/EP1055172B1/en not_active Expired - Lifetime
- 1999-12-06 DE DE69937946T patent/DE69937946T2/de not_active Expired - Lifetime
- 1999-12-06 JP JP2000590054A patent/JP4475818B2/ja not_active Expired - Lifetime
- 1999-12-06 WO PCT/US1999/028701 patent/WO2000038062A1/en active IP Right Grant
- 1999-12-06 DE DE69939133T patent/DE69939133D1/de not_active Expired - Lifetime
-
2007
- 2007-12-03 HK HK07113185.1A patent/HK1104861A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
WO2000038062A1 (en) | 2000-06-29 |
EP1055172B1 (en) | 2008-01-09 |
EP1830262B1 (en) | 2008-07-16 |
AU770875B2 (en) | 2004-03-04 |
EP1055172A1 (en) | 2000-11-29 |
US6363396B1 (en) | 2002-03-26 |
DE69937946T2 (de) | 2009-01-02 |
HK1104861A1 (ja) | 2008-01-25 |
EP1830262A1 (en) | 2007-09-05 |
CA2320307C (en) | 2003-07-22 |
CA2320307A1 (en) | 2000-06-29 |
AU2475900A (en) | 2000-07-12 |
DE69939133D1 (de) | 2008-08-28 |
JP2002533809A (ja) | 2002-10-08 |
DE69937946D1 (de) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4475818B2 (ja) | 漸進変化を伴うオブジェクトハッシング | |
US6272491B1 (en) | Method and system for mastering locks in a multiple server database system | |
US6920454B1 (en) | Techniques for DLM optimization with transferring lock information | |
US6529906B1 (en) | Techniques for DLM optimization with re-mastering events | |
JP4515314B2 (ja) | 計算機システムの構成再現方法 | |
US5612865A (en) | Dynamic hashing method for optimal distribution of locks within a clustered system | |
US6751616B1 (en) | Techniques for DLM optimization with re-mapping responsibility for lock management | |
CA2377649C (en) | Dynamic cluster database architecture | |
JP2003022209A (ja) | 分散サーバーシステム | |
EP1829328A1 (en) | System and method for scalable data distribution | |
JP2004511854A (ja) | データ処理の方法及び装置 | |
JPH03158959A (ja) | 多重プロセッサコンピュータ・システムおよびコンピュータネットワークを動作させる方法 | |
CN114070822B (zh) | 一种Kubernetes Overlay IP地址管理方法 | |
US20060143178A1 (en) | Dynamic remastering for a subset of nodes in a cluster environment | |
CN115086330B (zh) | 跨集群负载均衡系统 | |
JPH096661A (ja) | システム資源管理装置および管理方法 | |
JP2000207370A (ja) | 分散ファイル管理装置及び分散ファイル管理システム | |
US20090100082A1 (en) | Replication and mapping mechanism for recreating memory durations | |
JPH06274394A (ja) | 分散データベース制御方法 | |
CN113259426B (zh) | 微服务中解决数据依赖的方法、系统、设备和介质 | |
US6912586B1 (en) | Apparatus for journaling during software deployment and method therefor | |
US20010023434A1 (en) | Computational data processing system and computational process implemented by means of such a system | |
JPH06243077A (ja) | 分散トランザクション処理方式 | |
US20040246910A1 (en) | Group synchronization by subgroups | |
CN117850968A (zh) | 一种指定numa节点实现虚拟机迁移的方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050913 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061026 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100201 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100223 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100309 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4475818 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130319 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130319 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140319 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |