JP2002533809A - 漸進変化を伴うオブジェクトハッシング - Google Patents
漸進変化を伴うオブジェクトハッシングInfo
- Publication number
- JP2002533809A JP2002533809A JP2000590054A JP2000590054A JP2002533809A JP 2002533809 A JP2002533809 A JP 2002533809A JP 2000590054 A JP2000590054 A JP 2000590054A JP 2000590054 A JP2000590054 A JP 2000590054A JP 2002533809 A JP2002533809 A JP 2002533809A
- Authority
- JP
- Japan
- Prior art keywords
- node
- bucket
- resource
- nodes
- buckets
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Peptides Or Proteins (AREA)
- Multi Processors (AREA)
Abstract
Description
テム内の資源を支配するための技術に関する。
とえ資源がデータベースサーバ間で共有可能であったとしても、多くの資源はあ
る種の態様では任意の所与の時間で2つ以上のプロセスによってアクセス不可能
であることがある。たとえば、記憶媒体のデータブロックまたは記憶媒体上に記
憶されるテーブルなどの資源は、ある態様では(たとえば読出)複数のプロセス
によって同時的にアクセス可能であるが、他の態様では(たとえば書込)一度に
1個のプロセスによってしかアクセスされ得ない。したがって、資源へのアクセ
スを制御するメカニズムが開発されてきた。
源に関してある種の権利を与えられたことを示すデータ構造である。ロックには
多くのタイプがある。多くのプロセスによって同じ資源上で共有可能であるタイ
プのロックもあれば、他のロックが同じ資源上に与えられることを防ぐタイプの
ロックもある。
ノードのデータシステムでは、ロックマネージャは典型的には、ノード上の1つ
以上のプロセスからなるものである。マルチプロセッシングマシンまたはローカ
ルエリアネットワークなどの、複数ノードのシステムでは、ロックマネージャは
、多数のノードに分散したプロセスを含むであろう。2つ以上のノード上に存在
する構成要素を含むロックマネージャを分散ロックマネージャと呼ぶ。
ードは、そこにデータベースサーバおよび分散ロック管理システム132の一部
を備えている。具体的には、例示のシステムは、3つのノード102、112お
よび122を含み、その上に、それぞれデータベースサーバ104、114およ
び124と、それぞれロックマネージャユニット106、116および126と
が存在する。データベースサーバ104、114および124は、同じデータベ
ース120へのアクセスを有する。データベース120は、データの複数ブロッ
クを含むディスク118上に存在する。一般的に、ディスク118は1つ以上の
永続的記憶装置を表わし、これはノード102、112および122を含むマシ
ンを含むがこれに限定されるものではない、任意の数のマシン上にあってもよい
。
相互にかつデータベース120の一部を含むディスクと通信可能である。ノード
とディスク118との間の特定の通信メカニズムは、システム100の性質によ
って異なる。たとえば、ノード102、112および122がネットワーク上の
ワークステーションに対応する場合、通信メカニズムは、ノード102、112
および122がマルチプロセッシングマシン内のメモリおよびプロセッサのクラ
スタに対応する場合とは異なるであろう。
スサーバと共有される資源にアクセス可能となる前に、これは資源の適切なロッ
クを分散ロック管理システム132から獲得しなければならない。そのような資
源は、たとえば、データベース120からのデータが格納されているディスク1
18の1つ以上のブロックであってもよい。
4によって保持される、データベースサーバが共有する資源に対するロックを示
すデータ構造を記憶する。もしあるデータベースサーバが資源のロックを有して
いる一方で別のデータベースサーバがその資源へのロックを要求すれば、分散ロ
ック管理システム132は、要求されたロックが許可されたロックと一致してい
るかどうかを決定しなければならない。もし要求されたロックが許可されたロッ
クと一致していなければ、要求者は、許可されたロックを保持しているデータベ
ースサーバが許可されたロックを解放するまで、待たなければならない。
132によって管理されるいずれの資源についても1つのマスタ資源オブジェク
トを維持し、かつ、データベースサーバを含む各ノードごとに1つのロックマネ
ージャユニットを含む。特定の資源のマスタ資源オブジェクトはとりわけ、特定
の資源について許可されたまたは要求されたすべてのロックの表示を記憶する。
各資源に対するマスタ資源オブジェクトは、ロックマネージャユニット106、
116および126の1つ内にのみ存在する。
たは単に「マスタ」)と呼び、そのマスタ資源オブジェクトはロックマネージャ
ユニットによって管理される。したがって、資源R1のマスタ資源オブジェクト
がロックマネージャユニット106によって管理されれば、ノード102が資源
R1のマスタとなる。
として働く特定のノードを選択する。具体的には、ハッシュ関数を資源名に適用
して値を生成する。同じ値にハッシュされる資源名はすべて、同じ「バケット」
に属する。次に、所与のバケットにその名前が属するすべての資源のマスタとな
るよう、各ノードが割当てられる。
び2を生成する3バケットハッシュ関数を採用するであろう。各バケットは3つ
のノードの1つに関連付けられる。システム100での特定の資源のマスタとし
ての役割を果たすノードは、資源の名前にハッシュ関数を適用することによって
決定される。値0に関連付けられるバケットにハッシュされる名前を有する資源
はすべて、ノード102上で支配される。値1に関連付けられるバケットにハッ
シュされる名前を有する資源はすべて、ノード112上で支配される。値2に関
連付けられるバケットにハッシュされる名前を有する資源はすべて、ノード12
2上で支配される。
に適用されて資源のマスタを決定し、ロック要求がその資源のマスタノードに送
信される。資源のマスタノード上のロックマネージャは、関連付けられた資源の
ロックの割当および割当解除を制御する。
許可すると、その別のノードがそのプロセスが保持する資源のロックについての
情報を維持する。資源に関心のある(すなわち、そのロックを保持する)非マス
タノードによって維持されるロック情報は、マスタノードに障害が発生した場合
、復旧の間に、利用可能である。ローカルプロセスによって保持される、資源の
ロックを追跡するために、資源のマスタでないノードによって使用されるデータ
構造を、シャドー資源オブジェクトと呼ぶ。いずれのマスタ資源オブジェクトに
ついても、最大N−1個のシャドー資源オブジェクトが存在し得る(Nはシステ
ム内のノードの数に等しい)。というのも、すべての非マスタノード上のプロセ
スが、同じ資源に対して非排他的ロックを同時に保持することが可能であるから
である。
資源を「リマスタする」と言う。資源をリマスタするプロセスは、典型的には、
資源のマスタ資源オブジェクトを新しいマスタ上に再構築することを伴う。資源
がリマスタされている間、一般的には資源は利用不可能である。
ードのその組が変わるとき、「エポック変更」が起こると言う。
たは必要となることがある。たとえば、ノードに障害が発生するかまたはこれが
シャットダウンすると、これらのノードによって現在支配されている資源の支配
権は、他のノードに移動されなければならない。同様に、新しいノードがシステ
ムに加えられると、資源のいくつかの支配権を新しく加えられたノードに移動し
て、資源管理に関連するロードをすべてのノード間で均一に分散することが望ま
しいであろう。
て資源をリマスタすると、典型的には、ハッシュ関数を変更し、さらに、新しい
ハッシュ関数によって生成される資源からマスタへの対応付に基づいて支配権責
任を再分散する必要がある。具体的には、システムがN個のノードからなる場合
、Nバケットハッシュ関数(N個の値を生成するハッシュ関数)を用いてマスタ
ノード割当を実行する。(ノードの付加、除去または障害によって)Nが変わる
と、ハッシュ関数も変更されなければならない。資源からマスタへの対応付のた
めの新しいハッシュ関数が選択された後、マスタ資源オブジェクトはその新しい
マスタに移動されなければならない。任意の所与の資源の新しいマスタは、新し
いハッシュ関数を資源の名前に適用することによって決定される。
って、システム内の資源をいずれも、リマスタリングしなければならない可能性
がある。したがって、システム全体が、リマスタリングが完了するまで、実際上
利用不可能となることがある。これは、システム構成の変更が比較的小さいもの
であったとしても当てはまる。たとえば、もし51番目のノードが50ノードの
システムに加えられるならば、システム内のすべての資源が51個のノード間で
のロードバランスをとるよう選択された新しいハッシュ関数によって、新しいマ
スタに割当てられる可能性がある。同様に、50ノード上での1つのノードに障
害が発生したときにも、大規模なリマスタリング動作が起こることがある。
リングオーバーヘッドを低減するリマスタリング技術を提供することが明らかに
望まれる。さらに、新しいノードがシステムに加えられたときにもノードがシス
テムから取除かれたときにも、比較的バランスのとれたロード分散がエポック変
更後にも維持されることを可能にするリマスタリング技術を提供することが望ま
れる。リマスタリング動作の持続時間の間、システム全体を実際上利用不可能に
しないようなリマスタリング技術を提供することも望まれる。
能性を低減するよう、エポック変更後に複数ノードのシステムを再構成するため
の方法およびシステムが提供される。この発明のある局面に従うと、資源からマ
スタへの対応付は、資源からバケットへのハッシュ関数と、バケットからノード
へのハッシュ関数とを組合せることによって確立される。
変更に応答して変更されないが、バケットからノードへのハッシュ関数はエポッ
ク変更に応答して変更する。したがって、資源からバケットへのハッシュ関数は
「静的」であるが、バケットからノードへのハッシュ関数は「動的」である。
しい数のノード間でロードバランスをとるよう、エポック変更後に調整される。
さらに、バケットからノードへの割当に対する変更は、リマスタされなければな
らない資源の数を最小限にするよう行なわれる。
ったもののみが、初期再構成の間に新しいマスタを割当てられる。ロードバラン
スは、システムが利用可能になった後に、資源を移動することによって徐々に達
成される。一旦資源の古いマスタが要求された資源のマスタ資源オブジェクトを
転送すると、これはアクセス要求を資源の新しいマスタに転送する。加えて、ノ
ードの計画されたシャットダウンを見込んで、資源をノードから移動するための
技術が開示される。
されるが、これに限定されるものではない。
以下の説明では、説明のため、この発明を完全に理解するために、多くの具体的
詳細が述べられる。しかしながら、この発明はこれらの具体的な詳細なしに実施
され得ることが当業者には明らかである。他の例では、この発明を不要にわかり
にくくすることを避けるため、周知の構造および装置がブロック図で示される。
すブロック図である。コンピュータシステム200は、情報を受け渡しするため
のバス202または他の通信メカニズムと、バス202に結合され情報を処理す
るためのプロセッサ204とを含む。コンピュータシステム200はまた、ラン
ダムアクセスメモリ(RAM)または他のダイナミック記憶装置などの主メモリ
206を含み、これはバス202に結合されプロセッサ204によって実行され
るべき命令および情報を記憶する。主メモリ206はまた、プロセッサ204に
よって実行されるべき命令の実行の間、一時的変数または他の中間情報を記憶す
るために使用され得る。コンピュータシステム200は、リードオンリメモリ(
ROM)208または他の静的記憶装置をさらに含み、これはバス202に結合
され静的情報およびプロセッサ204のための命令を記憶する。磁気ディスクま
たは光学ディスクなどの記憶装置210が設けられこれはバス202に結合され
情報および命令を記憶する。
のディスプレイ212に結合されてもよく、これはコンピュータユーザに情報を
表示する。英数字および他のキーを含む入力デバイス214は、バス202に結
合されプロセッサ204に情報およびコマンド選択を与える。ユーザ入力デバイ
スの別のタイプは、マウス、トラックボールまたはカーソル方向キーなどのカー
ソルコントロール216であって、これは方向情報およびコマンド選択をプロセ
ッサ204に与え、かつ、ディスプレイ212上のカーソルの動きを制御する。
この入力デバイスは典型的には、第1の軸(たとえばx)および第2の軸(たと
えばy)の、2軸での2自由度を有し、これによってデバイスは画面での位置を
特定することが可能となる。
200の使用に関する。この発明のある実施例に従うと、資源管理は、プロセッ
サ204が主メモリ206に含まれる1つ以上の命令の1つ以上のシーケンスを
実行することに応答して、コンピュータシステム200によって与えられる。そ
のような命令は、記憶装置210などの、別のコンピュータ読出可能媒体から主
メモリ206に読出されてもよい。主メモリ206内に含まれる命令のシーケン
スを実行することによって、プロセッサ204はここに記載するプロセスステッ
プを実行する。代替の実施例では、ハードワイア回路をソフトウェア命令の代わ
りにまたはこれと組合せて使用してこの発明を実現してもよい。したがって、こ
の発明の実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限定
されない。
に命令を与えて実行させることに関与する任意の媒体を指す。そのような媒体は
、不揮発性媒体、揮発性媒体および伝送媒体を含むがこれに限定されるものでは
ない、多くの形態を取ってもよい。不揮発性媒体は、たとえば、記憶装置210
などの、光学ディスクまたは磁気ディスクを含む。揮発性媒体は、主メモリ20
6などの、ダイナミックメモリを含む。伝送媒体は、バス202を含むワイアを
含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体はまた、電波およ
び赤外データ通信の間生成されるものなど、音波または光波の形態を取ってもよ
い。
シーケンスをプロセッサ204に搬送して実行することにかかわり得る。たとえ
ば、命令は最初に、遠隔コンピュータの磁気ディスク上に担持されてもよい。遠
隔コンピュータは、命令をそのダイナミックメモリにロードし、モデムを使用し
て電話線を介して命令を送信することができる。コンピュータシステム200に
ローカルなモデムは、電話線上のデータを受信し、赤外送信器を使用してデータ
を赤外信号に変換することができる。赤外検出器は赤外信号で搬送されるデータ
を受信可能であり、適切な回路がデータをバス202上に与えることができる。
バス202は、データを主メモリ206に搬送し、プロセッサ204はそこから
命令を取出し実行する。主メモリ206によって受取られた命令は、プロセッサ
204によって実行される前またはその後に、記憶装置210上にオプションと
して記憶されてもよい。
ェイス218を含む。通信インターフェイス218は、双方向のデータ通信を与
え、これはネットワークリンク220に結合し、ネットワークリンクはローカル
ネットワーク222に接続される。たとえば、通信インターフェイス218は、
統合サービスデジタル網(ISDN)カードまたはモデムであってもよく対応す
るタイプの電話線にデータ通信接続を与える。別の例として、通信インターフェ
イス218は、互換性のあるLANにデータ通信接続を与えるローカルエリアネ
ットワーク(LAN)カードであってもよい。ワイアレスリンクが実現されても
よい。いかなるそのような実現化例でも、通信インターフェイス218は、さま
ざまなタイプの情報を表わすデジタルデータストリームを搬送する電気信号、電
磁波信号または光学信号を送信し受信する。
他のデータデバイスにデータ通信を与える。たとえば、ネットワークリンク22
0は、ローカルネットワーク222を介してホストコンピュータ224またはイ
ンターネットサービスプロバイダ(ISP)226によって動作するデータ装置
に接続してもよい。ISP226は、現在通常「インターネット」228と呼ば
れるワールドワイドパケットデータ通信ネットワークを介して、データ通信サー
ビスを提供する。ローカルネットワーク222とインターネット228とはどち
らも、デジタルデータストリームを搬送する電気信号、電磁波信号または光学信
号を使用する。さまざまなネットワークを通る信号と、ネットワークリンク22
0上および通信インターネット218を通る信号とは、デジタルデータをコンピ
ュータシステム200へかつそこから搬送するものであるが、情報を転送する搬
送波の例示的形態である。
よび通信インターフェイス218を介して、プログラムコードを含め、メッセー
ジを送信しデータを受信することが可能である。インターネットの例では、サー
バ230は、インターネット228、ISP226、ローカルネットワーク22
2および通信インターフェイス218を介して、アプリケーションプログラムの
ために要求されたコードを伝送可能である。
もよいし、かつ/または記憶装置210または他の不揮発性装置に記憶されて後
に実行されてもよい。このようにして、コンピュータシステム200は、搬送波
の形でアプリケーションコードを獲得可能である。
て資源からマスタへの対応付を確立するための技術をここに記載する。Mは、N
よりも大きいがLよりも小さい。実際には、LはMよりも大きい3から4のオー
ダの大きさであり、MはNよりも大きい1または2のオーダの大きさである。た
とえば、1000バケットハッシュ関数を用いて、6ノードシステムでの100
万個の資源について資源からバケットへの対応付を確立することができる。バケ
ットの数はノードの数よりも大きいので、各ノードは、第2のバケットからノー
ドへのハッシュ関数を用いて1つ以上のバケットを割当てられる。
いられるハッシュ関数は、エポック変更に応答して変更されない。名前からバケ
ットへのハッシュ関数と異なって、バケットからノードへのハッシュ関数はエポ
ック変更に応答して変わる。したがって、資源からバケットへのハッシュ関数は
「静的」であり、一方、バケットからノードへのハッシュ関数は「動的」である
。
しい数のノード間でロードバランスをとるよう、エポック変更後に調整される。
好ましくは、バケットからノードへの割当の変更は、リマスタされなければなら
ない資源の数を最小限にするようにして行なわれる。
ノードへの対応付情報を用いて実行され、この情報はどのバケット範囲がどのノ
ードに対応するかを示すよう維持される。エポック変更に応答して、バケット範
囲からノードへの対応付情報は、1組の再対応付規則に基づいて修正される。再
対応付規則は、ロードを均等に分散し、かつ、リマスタされなければならない資
源の数を最小限にしようとする。
も小さいので、バケット範囲からノードへの対応付情報は典型的には、資源が個
別にノードに対応付けられた場合必要であろう情報の量よりもかなり少なくてす
む。
対応付ける複数ノードのシステムを例示するブロック図である。このシステムは
、ハッシュ関数302を用いて、資源名300を1000個のハッシュバケット
304に対応付ける。システムは、どのハッシュバケットがどのノードに対応す
るかを示す、バケット範囲からノードへの対応付情報318を維持する。このバ
ケット範囲からノードへの対応付情報318は、第2のハッシュ関数として動作
し、比較的大きい数のバケットをより小さい数のノードに対応付ける。バケット
がノードに対応付けられると、そのバケットにハッシュされる資源名を有する資
源は、そのノードで支配される。
囲1〜500はノード306に対応付けられ、バケット範囲501〜1000は
ノード308に対応付けられる。したがって、ノード306は、バケット1〜5
00に名前がハッシュされるすべての資源のマスタであり、ノード308は、バ
ケット501〜1000に名前がハッシュされるすべての資源のマスタである。
図である。この例では、エポック変更は、新しいノード402がシステムに導入
されてノードの数が3個に増えたために起きた。資源からバケット関数302へ
の変更はエポック変更に応答してなされない。したがって、ハッシュバケットの
数は同じままであり、すべての資源名が同じバケットにハッシュされ続けれてい
る。
するために、バケット範囲からノードへの対応付情報318に修正が加えられる
。具体的には、ノード306に対応付けられるバケット範囲は、1〜500から
1〜333に変更される。同様に、ノード308に対応付けられるバケット範囲
は、501〜1000から501〜833に変更される。残りのバケット範囲(
334〜500と834〜100)はこのため、新しいノード402に対応付け
られる。
すべては、新しいノードでリマスタされなければならない。しかしながら、先行
技術のリマスタリング技術と異なって、新しく導入されたノードに対応付けられ
ない資源は、一般的には、その現在のマスタで支配され続ける。この例では、バ
ケット1〜333にハッシュされる資源はすべて、ノード306で支配され続け
、バケット501〜833にハッシュされる資源はすべて、ノード308で支配
され続けた。したがって、リマスタに関連するオーバーヘッドは、これらの資源
については全く起きない。さらに、これらの資源はリマスタされないので、これ
らの資源は、資源のリマスタに関連する利用不可能の期間を被ることがない。
ドの間でマスタリング負担を均等に分散し、かつ、(2)リマスタされる資源の
数を低減するようにして、エポック変更に応答して調整される。さまざまな対応
付調整技術を用いてこれらの目的を達成することができる。以下の説明では、具
体的な技術を詳細に記載する。しかしながら、この発明は、特定の対応付調整技
術に限定されるものではない。
的である。したがって、任意の特定の初期バケットからノードへの対応付および
任意の特定のシステム構成変更が与えられれば、対応付調整規則によって、バケ
ットからノードへの対応付は1回の修正ですむ。対応付調整規則の確定的な組を
用いることによって、システム内のどのノードも、他のノードとの不必要な連係
メッセージなしに、リマスタリング動作においてその役割に対する責任を果たす
ことができる。
の支配に等しく関与することが望ましいと仮定する。しかしながら、ノードすべ
てが関与するわけでなくかつ/またはノードが異なったレベルで関与するような
システム(たとえば、あるノードが、別のノードで支配される資源の半数を支配
することが望ましいようなシステム)に合わせて適合するよう、バケット割当技
術を調整してもよい。
変更後にシステムに属するノードの数を示すメッセージを送信される。各ノード
は、ハッシュ関数によって生成されるバケットの総数がわかっているので、バケ
ットが既存のノード間で均等に分散されるためには、いくつのバケットをノード
のいずれもが持たなければならないかを計算することができる(「ターゲットバ
ケット数」)。
ちの1つに属する。すなわち、現在割当てられている範囲がターゲットバケット
数より大きい数のバケットに及ぶノード(「過剰ノード」)と、現在割当てられ
ている範囲がターゲットバケット数より少ない数のバケットに及ぶノード(「不
足ノード」)とである。均等バケットアプローチに従うと、過剰ノードは、その
範囲がターゲットバケット数にのみ及ぶまで、その範囲を削減する。一方で、不
足ノードは、過剰ノードが行なった範囲削減によって「より合わされて」いない
ままのバケットまで及ぶよう、その範囲を増大させる(またはさらなる範囲を割
当てる)。この範囲の増大は、不足ノードの範囲がターゲットバケット数の数の
バケットに及ぶようになるよう、不足ノード間で分散される。
ク変更の際、第3のノード402が2ノードシステムに加えられた。均等バケッ
トアプローチを用いると、例示のシステム変更後のバケットのターゲット数は、
1000/3=333.3となる。エポック変更後当初、ノード306に割当て
られた範囲は500個の資源を含み、ノード308に割当てられた範囲は500
個の資源を含み、ノード402に割当てられた範囲は資源を全く含まない(ノー
ド402には範囲がまだ割当てられていない)。したがって、ノード306およ
び308は過剰ノードであり、ノード402は不足ノードである。
果その範囲はバケットのターゲット数(333)に削減される。例示の例では、
ノード306に割当てられた範囲は、1〜500から1〜333に削減され、ノ
ード308に割当てられた範囲は501〜1000から501〜833に削減さ
れる。過剰ノードがこの範囲削減を経た後、範囲334〜500および834〜
1000に属するバケットはもはや、いかなるノードにも割当てられていないの
で、「より合わされたバケットプール」に属するようになる。
が割当てられ、これによって、割当てられたバケットのその数はバケットのター
ゲット数に増える。この例では不足ノード402にのみ、より合わされたバケッ
トプールに属する範囲のすべて(この場合では、範囲334〜500および範囲
834〜1000)が割当てられる。エポック変更後のバケット範囲再割当に応
答して、バケット範囲からノードへの対応付情報318は修正される。図4に示
すバケット範囲からノードへの対応付情報318は、均等バケットアプローチに
従って範囲が調整された後に、バケット範囲割当を反映する。
わされたバケットプールに解放するべき範囲を選択する。たとえば、ノード30
8がより合わされたバケットプールにバケットを解放しようとする時点で、ノー
ド306が既に、より合わされたバケットプールに範囲224〜500を解放し
ていたとする。範囲834〜1000をより合わされたバケットプールに解放す
る代わりに、ノード308は、より合わされたバケットプールに既にある範囲に
連続する範囲を選択してもよい。この例では、ノード308は、範囲500〜6
66を解放するよう決定してもよい。範囲500〜666を解放した後、ノード
308には範囲667〜1000が残され、より合わされたバケットプールは、
単一の範囲334〜666を含む。
ード402に割当てるだけでよい。しかしながら、不足ノードが既に、これに割
当てられている1つ以上のバケット範囲を有する場合、可能であれば、不足ノー
ドは、その現在割当てられている範囲と連続する範囲を、より合わされたバケッ
トプールから選択する。たとえば、ノード402がシステムから取除かれると仮
定する。これによって、ノードの数が3から再び2に減るというエポック変更が
起きる。ノード402には範囲334〜666が割当てられていたとすると、こ
の範囲がより合わされたバケットプールに与えられるであろう。残りのノード3
06および308は、その現在の範囲が含むのは333個のバケットのみであり
新しいターゲットバケット数は1000/2=500となるので、このどちらも
不足ノードとなるであろう。
合わされたバケットプールから範囲334〜500を取る。この範囲が選択され
るのは、これがノード306に現在割当てられている範囲1〜333と連続する
からである。次に、ノード308は、より合わされたバケットプールから残りの
範囲501〜666を取る。これらの範囲調整の結果、ノード306および30
8に関連付けられる範囲はそれぞれ、再び、1〜500および501〜1000
となる。
ベクトルアプローチと呼ぶ。ノードベクトルアプローチに従うと、M長ベクトル
が維持される。Mは、資源からバケットへのハッシュ関数のハッシュバケットの
数である。ノードベクトルへの各エントリは、ハッシュバケットに対応し、ノー
ド識別子を記憶する。ベクトルエントリのノード識別子によって識別されるノー
ドが、ベクトルエントリに関連付けられるバケットに名前がハッシュされるすべ
ての資源のマスタとしての役割を果たす。たとえば、ベクトルをMASTER(
)と名付けるとする。ノードN1の識別子がMASTER(5)に記憶されてい
るとすれば、バケット5にハッシュされる資源はすべて、ノードN1上で支配さ
れる。
々に割当てることによって初期的に配置される。この割当を実行する簡単な方法
は、第1のベクトルエントリに始まって、各ノードごとにX個のノード識別子を
記憶することである。Xは、ノードの数で除算されるハッシュバケットの数に等
しい。たとえば、100個のハッシュバケットおよび10個のノードがあるとす
れば、第1のノードでの識別子は、ベクトルエントリ1〜10に記憶され、第2
のノードの識別子は、ベクトルエントリ11〜20に記憶され、等々である。
。加えて、ターゲットバケット数が、エポック変更後のシステムでのノードの数
に基づいて上述のとおり計算される。NEWMASTER()ベクトルは、初期
的に、以下の2つの条件を満たすMASTER()ベクトルの各エントリに記憶
される識別子をNEWMASTER()にコピーすることによって配置される。
この条件とは、(1)識別子がシステム内になおもあるノードについてのもので
あることと、(2)ノードに既に割当てられているエントリの数がターゲットバ
ケット数よりも少ないこととである。NEWMASTER()のこの初期配置の
後、MASTER(i)=NEWMASTER(i)などの、値iにハッシュさ
れる資源はすべて、即座に利用可能となるであろう。この次に、NEWMAST
ER()への残っている割当てられていないエントリは、Xがターゲットバケッ
ト数である、各ノードのX個の識別子の合計を記憶するようにして、ノード識別
子に割当てられる。
i)<>NEWMASTER(i)である値iにハッシュされる資源はすべて、
リマスタされなければならない。このリマスタリング動作の間、MASTER(
i)=Na、NEWMASTER(i)=Nbとなるよう、各ノードNaは、バ
ケットiにハッシュされる資源のマスタ資源オブジェクトを別のノードNbに転
送する。加えて、MASTER(i)=エポック変更の間失われたノードの識別
子、NEWMASTER(i)=Naとなるよう、各ノードNaは、バケットi
にハッシュされる資源のマスタ資源オブジェクトを再構築する。
ノード間で均等に分散される。さらに、再構成の間、ロードを均等に分散するの
に必要な最小限の数の資源のみが移動される。しかしながら、ロードの均等なバ
ランスをとるために必要な最小限の数の資源をリマスタするとしても、再構成プ
ロセスは、かなりの量のオーバーヘッドを伴い、不当に長い時間期間の間、シス
テムの一部を利用不可能にしてしまう可能性がある。
ロードバランスを達成する必要があるすべての資源より少ない資源を初期的にリ
マスタすることによって、低減される。したがって、エポック変更後に起きる初
期再構成は、均等にロードのバランスがとれていない。代わりに、初期再構成が
行なわれ、システムが一般的に利用可能となった後に、過剰ノードから不足ノー
ドへとバケットを徐々に再割当して、これによって資源を「移動」して、やがて
より均等に分散されたロードバランスが達成される。
リングとの、2つの一般的なタイプがある。ロストマスタリマスタリングが必要
とされるのは、エポック変更の間エポック変更前のそのマスタがシステムから取
除かれた資源についてである。資源のロストマスタリマスタリングは、一般的に
は、既存のノードで資源のマスタ資源オブジェクトを再構築することを伴う。
スタがエポック変更後もシステム内に存在し続ける資源についてである。マスタ
資源オブジェクトはエポック変更の間に失われていないため、転送マスタリマス
タリングは、資源のマスタ資源オブジェクトが再構築されることを必要としない
。
らないもののみが、エポック変更後初期的にリマスタされる。具体的には、エポ
ック変更に応答してバケットからノードへのハッシュ関数を修正して、エポック
変更中に失われたノードに対応付けられるバケットのみを初期的に再割当する。
好ましくは、現在マスタリングロードが最も低いエポック変更後のノードにこれ
らのバケットを対応付けるようにして、バケットからノードへのハッシュ関数は
修正される。これらのバケットが再割当されたノードは、典型的には、エポック
変更中にシステムに新しく加えられたいかなるノードをも含む。
ザに利用可能となる。システムが利用可能となった後に、さらなる資源を過剰ノ
ードから不足ノードに徐々に移動させてよりバランスのとれたロード分散を達成
する。さらに、転送マスタリマスタリング動作は、初期エポック変更後再構成の
後に行なわれるものであるが、これはシステムが再び利用不可能とならないよう
にして行なわれる。
リマスタするステップを例示するフローチャートである。ステップ502で、エ
ポック変更が起きる。ステップ504で、エポック変更中に失われたノードに割
当てられたバケット(「マスタレスバケット」)を支配するよう不足ノードが選
択される。ある実施例に従うと、割当てられたバケットの数が最小である、エポ
ック変更後システムの1つ以上のノードが選択される。典型的には、選択された
バケットは、エポック変更中にシステムに加えられたいかなるノードも含むであ
ろう。
ケットに、ステップ504で選択されたノードが割当てられる。ステップ508
で、ロストマスタリマスタリングが実行される。具体的には、再対応付されたバ
ケットにハッシュされる名前を有する資源のマスタ資源オブジェクトが、その新
しいマスタノード上で再構築される。たとえば、資源名R1が、ノードN1に再
対応付されたバケットB1にハッシュされるならば、R1のマスタ資源オブジェ
クトはN1上で再構築される。
変更後に実行された初期再構成を構成する。ステップ510〜518は、再構成
後資源移動に関わるステップを例示し、これは、エポック変更後に存在するノー
ド間でのより均等なロードバランスのために、初期再構成後に行なわれる。多く
の過剰ノードが、再構成後資源移動に同時的に関与し得る。さらに、そのような
再構成後移動は、徐々に起こればよく、初期再構成後に直ちに始まるかまたは起
きる必要はない。
現在属しているバケットの1つ以上が再割当されるようになる。説明のために、
単一の「ターゲット」バケットが、選択された不足ノードに再割当されるものと
仮定する。ステップ512で、過剰ノードは、バケット転送メッセージを、選択
された不足ノードに送信して、ターゲットバケットが不足ノードに再割当される
ことを不足ノードに知らせる。ステップ514で、過剰ノードは、選択された不
足ノードに、ターゲットバケットに属する資源のマスタノードオブジェクト情報
を送信する。
がターゲットバケットの新しいマスタとなったことを示すメッセージをブロード
キャストする。ステップ518で、ノードは、そのバケットからノードへの対応
付を更新し、ターゲットバケットがメッセージを送信した不足ノードに割当てら
れたことを示すことによって応答する。
能なままであり得る。ある実施例に従うと、移動されている資源へのアクセスを
要求するプロセスさえも実行し続けることが可能である。たとえば、ノードN1
上のプロセスがノードN2からノードN3へと移動されつつある資源を要求する
と仮定する。資源名は、バケットからノードへの対応付に従えばN3であるが依
然としてN2になおも割当てられているバケットにハッシュされる。したがって
、プロセスはアクセス要求をN2に送信する。もしN2が当該資源のマスタ資源
オブジェクトをまだ転送していなければ、N2は通常どおり要求をサービスし得
る。もしN2がマスタ資源オブジェクトをN3に既に転送していれば、N2は要
求をN3に転送する。資源のマスタ資源オブジェクトがN3にまだ到着していな
かったとしても、要求は、マスタ資源オブジェクトの後にN3に到着するであろ
う。なぜなら、N2からのデータは、これがN2から送信されるのと同じ順でN
3に到着するからである。マスタ資源オブジェクトと要求とのどちらもがN3に
到着すると、N3は要求をサービスし得る。
の例ではN2)は、それが転送しているマスタ資源オブジェクトの自己のバージ
ョンを引続き維持可能である。転送ノードで維持されるマスタ資源オブジェクト
のバージョンは、バックアップとして機能する。したがって、もしマスタ資源オ
ブジェクトがそこに転送されつつあるノードに障害が発生しても、バックアップ
マスタ資源オブジェクトを使用して資源へのアクセスを制御することが可能であ
る。受信ノードが、それが新しいマスタであるということをブロードキャストす
るまで、転送ノード上にバックアップマスタ資源オブジェクトを維持することに
関連するオーバーヘッドは低減されるが、これはすべてのアクセス要求がいずれ
にせよ転送ノードに到着し(かつこれによって転送される)ことによるものであ
る。受信ノードが、それが新しいマスタであるということをブロードキャストし
た後、転送ノードは、バックアップマスタ資源オブジェクトの維持を停止しても
よいし、マスタ資源オブジェクトを維持し続けてもよい。もし転送ノードがマス
タ資源オブジェクトのバックアップバージョンを維持し続ければ、これは、新し
いマスタノードが、正確にバックアップを維持する目的で古いマスタノードにア
クセス要求を転送することに関連するさらなるオーバーヘッドを招くことになる
。
ード間で移動されている間にエポック変更が起きると、そのバケットはマスタレ
スバケットとして扱われる。したがって、バケットにマスタが再割当され、エポ
ック変更後の初期再構成の間、マスタ資源オブジェクトは再構築される。
ンする予定とわかっているとき、図5に示すステップ510〜518がエポック
変更前に行なわれる。たとえば、ノードN2がシャットダウンする予定とわかれ
ば、ノードN2は、N2に現在割当てられているバケットに関連付けられたマス
タ資源オブジェクトを、シャットダウンされない予定の1つ以上の他のノードに
転送する。
る資源に関連付けられるアクセス要求を受信すれば、N2はその要求を適切なノ
ードに転送する。N2は、先にN2に割当てられていたバケットのすべてに関連
付けられるマスタ資源オブジェクトを転送した後、N2は、すべての受信ノード
がその新しいバケット割当を示すメッセージをブロードキャストするのを待つ。
すべてのブロードキャストメッセージが送信された後、N2はもはやいかなるバ
ケットをも割当てられていないので、N2はシャットダウンしてもよい。この状
況下でのN2のシャットダウンは、ロストマスタリマスタリングに関連するオー
バーヘッドを招くことはない。
。しかしながら、この発明のより広い精神および範囲から逸脱することなしに、
これにさまざまな変形および変更をなし得ることは明らかであろう。したがって
、この明細書および図面は、限定的なものではなく例示的なものとみなされるべ
きである。
図である。
ック図である。
こに支配されるべきかを決定するシステムを例示するブロック図である。
ステップを例示するフローチャートである。
Claims (24)
- 【請求項1】 複数ノードのシステムでのノードに対する資源を支配するた
めの方法であって、 1組の資源の中の各資源について、 第1のハッシュ関数を用いて特定のハッシュバケットに資源を対応付けるステ
ップと、 第2のハッシュ関数を用いて特定のノードに特定のハッシュバケットを対応付
けるステップと、 前記資源のマスタとなるよう前記特定のノードを選択するステップとによって
資源を支配するノードを選択するステップと、 前記第1のハッシュ関数を変更することなしに前記第2のハッシュ関数を変更
することによってエポック変更に応答するステップとを含む、方法。 - 【請求項2】 エポック変更前に、第1の数のノードを用いて前記資源の組
からの資源を支配し、 エポック変更後に、第2の数のノードを用いて前記資源の組からの資源を支配
し、 前記方法は前記第1のハッシュ関数を用いてある数のバケットに資源をハッシ
ュするステップを含み、前記ある数のバケットは前記第1の数および前記第2の
数のどちらよりも大きい、請求項1に記載の方法。 - 【請求項3】 前記第2のハッシュ関数はバケットからノードへの対応付情
報を用いて実現され、 前記第2のハッシュ関数を変更するステップは、前記バケットからノードへの
対応付情報のうち1つ以上のバケットからノードへの対応付を変更するステップ
を含む、請求項1に記載の方法。 - 【請求項4】 複数個のノードの各ノードがバケットからノードへの対応付
情報のローカルコピーを維持し、 前記バケットからノードへの対応付情報のうち1つ以上のバケットからノード
への対応付を変更するステップは、前記複数個のノードの各々で並列に実行され
る、請求項3に記載の方法。 - 【請求項5】 前記1つ以上のバケットからノードへの対応付を変更するス
テップは、エポック変更前のバケットからノードへの対応付およびいくつのノー
ドがエポック変更後に資源を支配するよう利用可能であるかに基づいて確定結果
を生成する1組の規則を適用することによって実行される、請求項4に記載の方
法。 - 【請求項6】 1つ以上のバケットからノードへの対応付を変更するステッ
プは、 いくつのハッシュバケットが前記第1のハッシュ関数に関連付けられるかおよ
びいくつのノードがエポック変更後に資源を支配するよう利用可能であるかに基
づいてターゲットバケット数を決定するステップと、 もし特定のノードがエポック変更後に資源を支配するよう利用可能であれば、
エポック変更後に、 もしターゲットバケット数よりも多いバケットがエポック変更前に特定のノー
ドに対応付けられていたならば、バケットからノードへの情報を修正してエポッ
ク変更前に特定のノードに対応付けられていた1つ以上のバケットを異なったノ
ードに対応付けるステップと、 もしターゲットバケット数より少ないバケットがエポック変更前に特定のノー
ドに対応付けられていたならば、バケットからノードへの情報を修正してエポッ
ク変更前に異なったノードに対応付けられていた1つ以上のバケットを特定のノ
ードに対応付けるステップとを実行するステップとを含む、請求項3に記載の方
法。 - 【請求項7】 前記第2のハッシュ関数を変更するステップは、 前記エポック変更後に初期再構成を実行するステップを含み、前記初期再構成
は、エポック変更後に存在するノードにエポック変更中に取除かれたノードに対
応付けられた1組のバケットを再対応付するステップを含み、さらに、 前記初期再構成を実行した後、 複数ノードのシステムを一般的に利用可能にするステップと、 複数ノードのシステムが一般的に利用可能である一方で、過剰ノードに現在対
応付けられている1つ以上のバケットを不足ノードに移動するステップとを実行
するステップを含む、請求項1に記載の方法。 - 【請求項8】 移動するステップは、 過剰ノードが前記1つ以上のバケットに対応付けられる資源を支配するために
必要な資源情報を不足ノードに送信するステップと、 前記資源情報を送信した後に、過剰ノードが前記1つ以上のバケットに対応付
けられる前記資源に関する前記過剰ノードによって受信された要求を前記不足ノ
ードに転送するステップとを含む、請求項7に記載の方法。 - 【請求項9】 不足ノードは、前記不足ノードが前記1つ以上のバケットに
対応付けられる前記資源のマスタであることを示すメッセージをノードの組にブ
ロードキャストするステップと、 前記ノードの組のノードは、前記第2のハッシュ関数を変更して前記1つ以上
のバケットを前記不足ノードに対応付けることによって前記メッセージに応答す
るステップとを含む、請求項8に記載の方法。 - 【請求項10】 エポック変更中に複数ノードのシステムから取除かれる予
定のノード上に現在支配されている資源をリマスタするための方法であって、 ノードは前記資源を支配するために必要な資源情報を別のノードに送信するス
テップと、 前記資源情報を送信した後に、ノードは前記資源に関する前記ノードによって
受信された要求を前記他のノードに転送するステップとを含む、方法。 - 【請求項11】 資源は、第1の関数に関連付けられるハッシュバケットに
対応付けられ、 ハッシュバケットは、第2のハッシュ関数に基づいて前記ノードに対応付けら
れ、 前記資源情報を受信した後に、前記他のノードは前記他のノードが前記資源の
マスタであるというメッセージを送信し、 前記メッセージに応答して、前記第2のハッシュ関数は前記ハッシュバケット
を前記他のノードに対応付けるよう変更される、請求項10に記載の方法。 - 【請求項12】 他のノードは前記メッセージを複数個のノードにブロード
キャストし、 第2のハッシュ関数は、前記複数個のノードの各ノードが前記各ノードで維持
されるバケットからノードへの対応付情報を変更するようになることによって変
更される、請求項11に記載の方法。 - 【請求項13】 複数ノードのシステムでのノードに対する資源を支配する
ための命令のシーケンスを担持するコンピュータ読出可能媒体であって、命令の
シーケンスは、 1組の資源の中の各資源について、 第1のハッシュ関数を用いて特定のハッシュバケットに資源を対応付けるステ
ップと、 第2のハッシュ関数を用いて特定のノードに特定のハッシュバケットを対応付
けるステップと、 前記資源のマスタとなるよう前記特定のノードを選択するステップとによって
資源を支配するノードを選択するステップと、 前記第1のハッシュ関数を変更することなしに前記第2のハッシュ関数を変更
することによってエポック変更に応答するステップとを実行する命令を含む、コ
ンピュータ読出可能媒体。 - 【請求項14】 エポック変更前に、第1の数のノードを用いて前記資源の
組からの資源を支配し、 エポック変更後に、第2の数のノードを用いて前記資源の組からの資源を支配
し、 コンピュータ読出可能媒体は、前記第1のハッシュ関数を用いてある数のバケ
ットに資源をハッシュするステップを実行する命令を含み、前記ある数のバケッ
トは前記第1の数および前記第2の数のどちらよりも大きい、請求項13に記載
のコンピュータ読出可能媒体。 - 【請求項15】 前記第2のハッシュ関数はバケットからノードへの対応付
情報を用いて実現され、 前記第2のハッシュ関数を変更するステップは、前記バケットからノードへの
対応付情報のうち1つ以上のバケットからノードへの対応付を変更するステップ
を含む、請求項13に記載のコンピュータ読出可能媒体。 - 【請求項16】 複数個のノードの各ノードがバケットからノードへの対応
付情報のローカルコピーを維持し、 前記バケットからノードへの対応付情報のうち1つ以上のバケットからノード
への対応付を変更するステップは、前記複数個のノードの各々で並列に実行され
る、請求項15に記載のコンピュータ読出可能媒体。 - 【請求項17】 前記1つ以上のバケットからノードへの対応付を変更する
ステップは、エポック変更前のバケットからノードへの対応付およびいくつのノ
ードがエポック変更後に資源を支配するよう利用可能であるかに基づいて確定結
果を生成する1組の規則を適用することによって実行される、請求項16に記載
のコンピュータ読出可能媒体。 - 【請求項18】 1つ以上のバケットからノードへの対応付を変更するステ
ップは、 いくつのハッシュバケットが前記第1のハッシュ関数に関連付けられるかおよ
びいくつのノードがエポック変更後に資源を支配するよう利用可能であるかに基
づいてターゲットバケット数を決定するステップと、 もし特定のノードがエポック変更後に資源を支配するよう利用可能であれば、
エポック変更後に、 もしターゲットバケット数よりも多いバケットがエポック変更前に特定のノー
ドに対応付けられていたならば、バケットからノードへの情報を修正してエポッ
ク変更前に特定のノードに対応付けられていた1つ以上のバケットを異なったノ
ードに対応付けるステップと、 もしターゲットバケット数より少ないバケットがエポック変更前に特定のノー
ドに対応付けられていたならば、バケットからノードへの情報を修正してエポッ
ク変更前に異なったノードに対応付けられていた1つ以上のバケットを特定のノ
ードに対応付けるステップとを実行するステップとを含む、請求項15に記載の
コンピュータ読出可能媒体。 - 【請求項19】 前記第2のハッシュ関数を変更するステップは、 前記エポック変更後に初期再構成を実行するステップを含み、前記初期再構成
は、エポック変更後に存在するノードにエポック変更中に取除かれたノードに対
応付けられた1組のバケットを再対応付するステップを含み、さらに、 前記初期再構成を実行した後、 複数ノードのシステムを一般的に利用可能にするステップと、 複数ノードのシステムが一般的に利用可能である一方で、過剰ノードに現在対
応付けられている1つ以上のバケットを不足ノードに移動するステップとを実行
するステップを含む、請求項13に記載のコンピュータ読出可能媒体。 - 【請求項20】 移動するステップは、 過剰ノードが前記1つ以上のバケットに対応付けられる資源を支配するために
必要な資源情報を不足ノードに送信するステップと、 前記資源情報を送信した後に、過剰ノードが前記1つ以上のバケットに対応付
けられる前記資源に関する前記過剰ノードによって受信された要求を前記不足ノ
ードに転送するステップとを含む、請求項19に記載のコンピュータ読出可能媒
体。 - 【請求項21】 不足ノードは、前記不足ノードが前記1つ以上のバケット
に対応付けられる前記資源のマスタであることを示すメッセージをノードの組に
ブロードキャストするステップと、 前記ノードの組のノードは、前記第2のハッシュ関数を変更して前記1つ以上
のバケットを前記不足ノードに対応付けることによって前記メッセージに応答す
るステップとを実行する命令をさらに含む、請求項20に記載のコンピュータ読
出可能媒体。 - 【請求項22】 エポック変更中に複数ノードのシステムから取除かれる予
定のノード上に現在支配されている資源をリマスタするシーケンスを担持するコ
ンピュータ読出可能媒体であって、命令のシーケンスは、 ノードが前記資源を支配するために必要な資源情報を別のノードに送信するス
テップと、 前記資源情報を送信した後に、ノードは前記資源に関する前記ノードによって
受信された要求を前記他のノードに転送するステップとを実行する命令を含む、
コンピュータ読出可能媒体。 - 【請求項23】 資源は、第1の関数に関連付けられるハッシュバケットに
対応付けられ、 ハッシュバケットは、第2のハッシュ関数に基づいて前記ノードに対応付けら
れ、 前記資源情報を受信した後に、前記他のノードは前記他のノードが前記資源の
マスタであるというメッセージを送信し、 前記メッセージに応答して、前記第2のハッシュ関数は前記ハッシュバケット
を前記他のノードに対応付けるよう変更される、請求項22に記載のコンピュー
タ読出可能媒体。 - 【請求項24】 他のノードは前記メッセージを複数個のノードにブロード
キャストし、 第2のハッシュ関数は、前記複数個のノードの各ノードが前記各ノードで維持
されるバケットからノードへの対応付情報を変更するようになることによって変
更される、請求項23に記載のコンピュータ読出可能媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/218,864 | 1998-12-21 | ||
US09/218,864 US6363396B1 (en) | 1998-12-21 | 1998-12-21 | Object hashing with incremental changes |
PCT/US1999/028701 WO2000038062A1 (en) | 1998-12-21 | 1999-12-06 | Object hashing with incremental changes |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002533809A true JP2002533809A (ja) | 2002-10-08 |
JP2002533809A5 JP2002533809A5 (ja) | 2006-12-14 |
JP4475818B2 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009532807A (ja) * | 2006-04-03 | 2009-09-10 | セキュア64・ソフトウェア・コーポレイション | 計算資源を管理するための方法およびシステム |
JP2021530060A (ja) * | 2018-07-18 | 2021-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 初期分散を使用する高速、低メモリのコンシステント・ハッシュ |
JP2022522214A (ja) * | 2019-03-01 | 2022-04-14 | アイオー タホ エルエルシー | 移動中のデータの処理技術 |
Families Citing this family (44)
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 |
US6751616B1 (en) * | 2000-01-28 | 2004-06-15 | Oracle International Corp. | Techniques for DLM optimization with re-mapping responsibility for lock management |
US7246120B2 (en) | 2000-01-28 | 2007-07-17 | Oracle International Corporation | Techniques for achieving higher availability of resources during reconfiguration of a cluster |
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 |
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 |
GB2469226A (en) * | 2008-01-08 | 2010-10-06 | 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 |
CN105122745B (zh) | 2013-02-27 | 2019-06-28 | 马维尔国际贸易有限公司 | 用于网络设备的高效最长前缀匹配技术 |
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 |
US10430182B2 (en) | 2015-01-12 | 2019-10-01 | Microsoft Technology Licensing, Llc | Enhanced compression, encoding, and naming for resource strings |
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 |
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 |
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 |
US5893086A (en) * | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US6023706A (en) * | 1997-07-11 | 2000-02-08 | International Business Machines Corporation | Parallel file system and method for multiple node file access |
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 WO PCT/US1999/028701 patent/WO2000038062A1/en active IP Right Grant
- 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 DE DE69937946T patent/DE69937946T2/de not_active Expired - Lifetime
- 1999-12-06 JP JP2000590054A patent/JP4475818B2/ja not_active Expired - Lifetime
- 1999-12-06 DE DE69939133T patent/DE69939133D1/de not_active Expired - Lifetime
- 1999-12-06 CA CA002320307A patent/CA2320307C/en not_active Expired - Lifetime
- 1999-12-06 EP EP99968071A patent/EP1055172B1/en not_active Expired - Lifetime
-
2007
- 2007-12-03 HK HK07113185.1A patent/HK1104861A1/xx not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009532807A (ja) * | 2006-04-03 | 2009-09-10 | セキュア64・ソフトウェア・コーポレイション | 計算資源を管理するための方法およびシステム |
JP2021530060A (ja) * | 2018-07-18 | 2021-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 初期分散を使用する高速、低メモリのコンシステント・ハッシュ |
JP7219330B2 (ja) | 2018-07-18 | 2023-02-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 初期分散を使用する高速、低メモリのコンシステント・ハッシュ |
JP2022522214A (ja) * | 2019-03-01 | 2022-04-14 | アイオー タホ エルエルシー | 移動中のデータの処理技術 |
Also Published As
Publication number | Publication date |
---|---|
JP4475818B2 (ja) | 2010-06-09 |
WO2000038062A1 (en) | 2000-06-29 |
EP1830262A1 (en) | 2007-09-05 |
AU770875B2 (en) | 2004-03-04 |
HK1104861A1 (ja) | 2008-01-25 |
CA2320307A1 (en) | 2000-06-29 |
DE69939133D1 (de) | 2008-08-28 |
EP1830262B1 (en) | 2008-07-16 |
AU2475900A (en) | 2000-07-12 |
CA2320307C (en) | 2003-07-22 |
EP1055172A1 (en) | 2000-11-29 |
DE69937946D1 (de) | 2008-02-21 |
US6363396B1 (en) | 2002-03-26 |
DE69937946T2 (de) | 2009-01-02 |
EP1055172B1 (en) | 2008-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002533809A (ja) | 漸進変化を伴うオブジェクトハッシング | |
US5970488A (en) | Real-time distributed database system and method | |
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 | |
CN108833503B (zh) | 一种基于ZooKeeper的Redis集群方法 | |
US6751616B1 (en) | Techniques for DLM optimization with re-mapping responsibility for lock management | |
US7340522B1 (en) | Method and system for pinning a resource having an affinity to a user for resource allocation | |
US8959144B2 (en) | System and method for scalable data distribution | |
US6928459B1 (en) | Plurality of file systems using weighted allocation to allocate space on one or more storage devices | |
US8055902B2 (en) | Method, system, and computer program product for data upload in a computing system | |
US20040250248A1 (en) | System and method for server load balancing and server affinity | |
JP2003022209A (ja) | 分散サーバーシステム | |
US20100138540A1 (en) | Method of managing organization of a computer system, computer system, and program for managing organization | |
JPH10301873A (ja) | 通信システムで比較的大きなデータ・オブジェクトの伝送を制御するシステムと方法 | |
CN114070822B (zh) | 一种Kubernetes Overlay IP地址管理方法 | |
US20060143178A1 (en) | Dynamic remastering for a subset of nodes in a cluster environment | |
JPH096661A (ja) | システム資源管理装置および管理方法 | |
US8707318B2 (en) | Partitioning system including a generic partitioning manager for partitioning resources | |
CN112565475A (zh) | 容器集群业务层添加新节点的ip地址分配方法 | |
US6912586B1 (en) | Apparatus for journaling during software deployment and method therefor | |
CN113568749B (zh) | 基于Elasticsearch集群的shard分配方法 | |
CN113055448B (zh) | 一种元数据管理方法及装置 | |
CN110597809B (zh) | 一种支持树状数据结构的一致性算法系统及其实现方法 | |
JPH06243077A (ja) | 分散トランザクション処理方式 |
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 |