JP2012174020A - 分散データベースの制御方法 - Google Patents
分散データベースの制御方法 Download PDFInfo
- Publication number
- JP2012174020A JP2012174020A JP2011035822A JP2011035822A JP2012174020A JP 2012174020 A JP2012174020 A JP 2012174020A JP 2011035822 A JP2011035822 A JP 2011035822A JP 2011035822 A JP2011035822 A JP 2011035822A JP 2012174020 A JP2012174020 A JP 2012174020A
- Authority
- JP
- Japan
- Prior art keywords
- node
- storage
- message
- storage node
- data
- 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.)
- Withdrawn
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
【課題】データの挿入処理や検索処理のアクセス時に送受されるトラヒック量を抑制し、常に正当が検索結果を得られる分散データベースの制御方法を提供する。
【解決手段】制御ノード1から受信したメッセージを各ストレージノードNへマルチキャストで転送する中継ノード2を備え、各ストレージノードは、自ノードのマルチキャストグループアドレスを中継ノード2へ予め登録し、制御ノード1は、メッセージの宛先となるストレージノードのマルチキャストグループアドレスを識別して、このマルチキャストグループアドレス宛にメッセージを送信し、中継ノード2は、メッセージを受信して前記マルチキャストグループアドレスと対応付けられている複数のストレージノードを識別して前記メッセージを転送する。
【選択図】図1
【解決手段】制御ノード1から受信したメッセージを各ストレージノードNへマルチキャストで転送する中継ノード2を備え、各ストレージノードは、自ノードのマルチキャストグループアドレスを中継ノード2へ予め登録し、制御ノード1は、メッセージの宛先となるストレージノードのマルチキャストグループアドレスを識別して、このマルチキャストグループアドレス宛にメッセージを送信し、中継ノード2は、メッセージを受信して前記マルチキャストグループアドレスと対応付けられている複数のストレージノードを識別して前記メッセージを転送する。
【選択図】図1
Description
本発明は、分散データベースの制御方法に係り、特に、データ転送にIPマルチキャストを採用する分散データベースの制御方法に関する。
検索対象のデータをテーブル形式で保存する従来のRDB (Relational Data Base) に対して、KVS (Key Value Store) と呼ばれるデータベースが提案されている。KVSは、キー(KEY)と値(VALUE)とのペア形式でデータが各ノードに保持され、多くの場合、データは分散データベースの形式で管理される。このようなKVSは、シンプルなデータ構造であるが故に拡張性/可用性が高く、運用コストが低いという利点がある。KVSの主なものとしては、Amazon社がウェブストレージシステムとして採用するDynamoがある(非特許文献1,2)。
図6は、従来のKVSの構成を示したブロック図であり、ここで、KVSは一般的なConsistent Hashing(非特許文献3)を利用しているもとする。KVSは、多数のデータを分散保持する複数のストレージノードNと、各ストレージノードNへのデータの挿入/検索/削除を管理する制御ノードとから構成される。このような制御ノードは複数台存在しても良いし、ストレージノードNと物理的に同一であっても良いが、ここでは、1台の制御ノードがストレージノードとは別に独立して設けられている場合を例にして説明する。
各ストレージノードNiには、予め固有のノードIDiが割り当てられており、ノードIDの値域は0≦ID≦ID_MAXであって整数値をとるものとする。各ストレージノードNは、ノードID順かつID=0のストレージノードN0とID=ID_MAXのストレージノードNmaxとが連結される環状に配置されていると考える。ここでは、あるストレージノードNiから見て時計回り方向に隣接するストレージノードNi+1を後ノード、反時計回り方向に隣接するストレージノードNi-1を前ノードと表現する。また、各ストレージノードNならびに制御ノードは、他の全てのストレージノードNのIDと通信に必要な情報(IPアドレス)を知っているものとする。
各ストレージノードNに分散配置されるデータは、キー(KEY)と値(VALUE)とのペアで構成され、キーの値をノードIDの値域にマッピングするハッシュ関数HASH(KEY)が定義されている。各データは、KEYの値をHASH関数で変換した値(ハッシュ値)で一意に定義される前記IDの円上の位置に配置されている。
各ストレージノードNiは、自ノードよりも1つ前のストレージノードNi-1から自ノードNiまでの間に配置されたデータを保持する。ただし、ストレージノードNiが故障などの理由で動作しなくなった場合にデータが紛失してしまう事を防ぐため、前後の各ストレージノードNi+1,Ni-1にデータのコピーが保持される。すなわち、各ストレージノードNiは、実質的に2つ前のノードのID-2から1つ後ろのノードのIDi+1までのデータを保持することになる。
次いで、図6を参照してデータ挿入時の処理手順について説明する。なお、削除処理は空の値を持つデータを挿入する事と等価なので、ここでは説明を省略する。
(1)制御ノードは、KEYのハッシュ値HASH(KEY)を算出し、データを保持するべきストレージノードNiにアクセスしてデータの挿入メッセージを送信する。挿入メッセージを受信したストレージノードNiは、当該メッセージに記述されているデータを保持する。
(2)ストレージノードNiまたは制御ノードは、ストレージノードNiの前後の各ストレージノードNi-1,Ni+1へデータのコピーメッセージを送信する。コピーメッセージを受信した各ストレージノードNi-1,Ni+1は、当該コピーメッセージに記述されているデータを保持する。
次いで、図7を参照してデータ検索時の処理手順について説明する。
(1)制御ノードは、検索要求されたKEYのハッシュ値HASH(KEY)を算出することでデータを保持しているストレージノードNiを識別し、当該ストレージノードNiおよびその前後の各ストレージノードNi-1,Ni+1へ検索要求メッセージを送信する。
(2)検索要求メッセージを受信した各ストレージノードNi,Ni-1,Ni+1は自ノードのストレージを検索し、前記KEYと対応付けられているVALUEの記述された検索応答メッセージを制御ノードへ返信する。
(3)制御ノードは、各ストレージノードNi,Ni-1,Ni+1から検索結果を受信し、同一の検索結果が2つ以上返信されると、それを検索結果として処理する。
http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
"NoSQLの世界",電子情報処理学会会誌, Vol. 51, No. 10, pp.1327-1331.
D. Karger他 "Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web" 29th annual ACM Symposium on Theory of Computing.
従来のKVSには、ストレージノードの障害などに対応するため、同一データを複数のノードにコピーして保持する複製処理が実装されているが、この複製処理が全てユニキャストで行われ、制御ノードから各ストレージノードNへメッセージが別々に送信されるので、メッセージ数が増加によりトラヒック量が増えてしまう。
また、データの複製処理が挿入処理の後で行われ、各処理に時差が生じるので、図8に一例を示したような不都合が生じ得る。
すなわち、時刻t1において制御ノードがストレージノードNiへアクセスして挿入要求メッセージを送信すると、ストレージノードNiは、受信データを自ノードのストレージに保持した後、時刻t2,t3において、コピー用の挿入要求メッセージをストレージノードNi+1,Ni-1へそれぞれ転送する。各ストレージノードNi+1,Ni-1は、ストレージノードNiから転送されたデータを自ノードのストレージにそれぞれ保持する。
その後、制御ノードにおいて、「KEY」に対応付ける値を「VALUE1」から「VALUE2」に変更する更新要求が検知されると、時刻t4では、制御ノードからストレージノードNiへ更新用の挿入要求メッセージが送信される。
しかしながら、隣接する各ストレージノードNi+1,Ni-1へ前記コピー用の挿入要求メッセージが転送(時刻t11t,12)されるよりも前に、時刻t5,t6,t7において、制御ノードから各ストレージノードNi,Ni+1,Ni-1へ検索要求メッセージが送信されてしまうと、ストレージノードNiは、時刻t8において、更新後の検索結果(KEY,VALUE2)を応答できるものの、ストレージノードNi+1,Ni-1は、時刻t9,t10において、それぞれ更新前の検索結果(KEY,VALUE1)を応答することになる。その結果、制御ノードでは更新前のデータ(KEY,VALUE1)が検索結果として処理されてしまう。
本発明の目的は、上記した従来技術の課題を全て解決し、データの挿入処理や検索処理の際に送受されるメッセージのトラヒック量を抑制し、常に正当な検索結果を得られる分散データベースの制御方法を提供することにある。
上記の目的を達成するために、本発明は、複数のストレージノードにノードIDと対応付けられたデータが分散保持され、各ストレージノードは、制御ノードから受信したメッセージに応答してデータを処理する分散データベースの制御方法において、制御ノードから受信したメッセージを各ストレージノードへマルチキャストで転送する中継ノードを備え、各ストレージノードが、自ノードおよび他の一部のノードの各マルチキャストグループアドレスを中継ノードへ通知して同一のマルチキャストグループへ参加する手順と、制御ノードが、メッセージの宛先となるストレージノードのマルチキャストグループアドレスを識別する手順と、制御ノードが、前記マルチキャストグループアドレス宛にメッセージを送信する手順と、中継ノードが、前記メッセージを受信して前記マルチキャストグループアドレスに対応するグループに参加しているストレージノードを識別する手順と、中継ノードが、前記識別されたストレージノードへ前記メッセージを転送する手順とを有することを特徴とする。
本発明によれば、以下のような効果が達成される。
(1)中継ノードは、一のストレージノード宛のメッセージを受信すると、当該一のストレージノードアドレスと同一のマルチキャストグループへ参加している他のストレージノードへも当該メッセージをマルチキャストアドレスで同位に送信するので、複数のストレージノードへ同一メッセージを少ないトラヒック量で同時に転送できるようになる。
(2)同一のマルチキャストグループへ参加している複数のストレージノードへはメッセージが同時に送信され、各ストレージノードに保持されているデータが同時に更新されるので、挿入処理の直後に検索処理が要求された場合でも、常に正当な検索結果を提供できるようになる。
以下、図面を参照して本発明の実施の形態について詳細に説明する。図1,2は、本発明が適用されるKVSのネットワーク構成を模式的に表現した図であり、多数のデータを分散保持する複数のストレージノードNと、各ストレージノードNへのデータの挿入/検索/削除を管理する制御ノード1と、制御ノード1から受信したメッセージをIPマルチキャストで各ストレージノードNへ転送する中継ノード2からと構成され、本実施形態では、前記中継ノード2としてIPマルチキャストルータが用いられている。
前記制御ノード1は複数台存在しても良いし、ストレージノードNと物理的に同一であっても良いが、ここでは、1台の制御ノード1がストレージノードNとは別に独立して設けられている場合を例にして説明する。
各ストレージノードNには、予め固有のIDが割り当てられており、IDの値域は0≦ID≦ID_MAXであって整数値をとるものとする。各ストレージノードNは、ID順かつID=0のストレージノードN0とID=ID_MAXのストレージノードNmaxとが連結されて環状に配置されていると考える。ここでは、あるストレージノードNiから見て時計回り方向に隣接するストレージノードNi+1を後ノード、反時計回り方向に隣接するストレージノードNi-1を前ノードと表現する。また、各ストレージノードN、制御ノード1および中継ノード2は、他の全てのストレージノードNとの通信に必要な情報(IPアドレス)を知っているものとする
[JOIN処理]
図3のタイムチャートを参照し、各ストレージノードNiは、自ノードに割り当てられているノードIDiから生成されるマルチキャストグループアドレスGroup(IDi)、および前後に隣接する2つのストレージノードNi+1,Ni-1に割り当てられるノードIDi+1,IDi-1から生成される2つのマルチキャストグループアドレスGroup(IDi+1),Group(IDi-1)への参加(JOIN)を、時刻t21において中継ノード2へ通知する。
図3のタイムチャートを参照し、各ストレージノードNiは、自ノードに割り当てられているノードIDiから生成されるマルチキャストグループアドレスGroup(IDi)、および前後に隣接する2つのストレージノードNi+1,Ni-1に割り当てられるノードIDi+1,IDi-1から生成される2つのマルチキャストグループアドレスGroup(IDi+1),Group(IDi-1)への参加(JOIN)を、時刻t21において中継ノード2へ通知する。
同様に、時刻t22ではストレージノードNi+1が、自ノードおよび各隣接ノードの3つのマルチキャストグループアドレスGroup(IDi),Group(IDi+1),Group(IDi+2)へのJOINを中継ノード2へ通知し、時刻t23ではストレージノードNi-1が、自ノードおよび各隣接ノードの3つのマルチキャストグループアドレスGroup(IDi-2),Group(IDi-1),Group(IDi)へのJOINを中継ノード2へ通知する。
図4は、本実施形態におけるマルチキャストグループアドレスGroup(ID)の生成方法を示した図であり、32ビットのGroup(ID)の下位24ビットには、ノードIDの上位24ビットが採用され、上位8ビットには、マルチキャストグループアドレスに固有の固定値(ここでは、"239(10進数)")が採用される。
[挿入処理]
図1,3を参照し、制御ノード1においてデータの挿入要求が検知されると、そのKEYのハッシュ値に基づいて、当該データが挿入されるストレージノードNiのIDiが一意に特定される。次いで、前記IDiに基づいてマルチキャストグループアドレスGroup(IDi)が上記と同様に生成され、時刻t24において、当該マルチキャストグループアドレスGroup(IDi)に対して、前記挿入メッセージ(KEY,VALUE1)がIPマルチキャストパケットで送信される。
図1,3を参照し、制御ノード1においてデータの挿入要求が検知されると、そのKEYのハッシュ値に基づいて、当該データが挿入されるストレージノードNiのIDiが一意に特定される。次いで、前記IDiに基づいてマルチキャストグループアドレスGroup(IDi)が上記と同様に生成され、時刻t24において、当該マルチキャストグループアドレスGroup(IDi)に対して、前記挿入メッセージ(KEY,VALUE1)がIPマルチキャストパケットで送信される。
前記挿入メッセージを受信した中継ノード2は、そのマルチキャストグループアドレスGroup(IDi)にJOINしているグループのストレージノードN(図3ではNi,Ni+1、Ni-1)を識別し、時刻t25において、各ストレージノードNへ前記挿入メッセージを転送する。
各ストレージノードNは、受信メッセージに記述されている挿入データを自ノードが保持すべきか否かを判定し、保持すべきデータと判定されれば自ノードのストレージに保持する。これにより、前記挿入データはストレージノードNiに保持されると同時に、隣接する2つのノードNi-1,Ni+1にもバックアップされることになる。
[検索処理]
図2,3を参照し、制御ノード1においてデータの検索要求が検知されると、そのKEYのハッシュ値に基づいて、検索対象のデータを保持するストレージノードNiのIDiが一意に特定される。次いで、前記IDiに基づいてマルチキャストグループアドレスGroup(IDi)が算出され、時刻t26において、当該マルチキャストグループアドレスGroup(IDi)に対して、前記検索メッセージ(KEY)がIPマルチキャストパケットで送信される。
図2,3を参照し、制御ノード1においてデータの検索要求が検知されると、そのKEYのハッシュ値に基づいて、検索対象のデータを保持するストレージノードNiのIDiが一意に特定される。次いで、前記IDiに基づいてマルチキャストグループアドレスGroup(IDi)が算出され、時刻t26において、当該マルチキャストグループアドレスGroup(IDi)に対して、前記検索メッセージ(KEY)がIPマルチキャストパケットで送信される。
前記メッセージを受信した中継ノード2は、そのマルチキャストグループアドレスGroup(IDi)にJOINしているグループのストレージノードN(図3ではNi,Ni+1、Ni-1)を識別し、時刻t27において、各ストレージノードNへ前記検索メッセージを転送する。
前記検索メッセージを受信した各ストレージノードNは、自ノードのストレージを前記検索キーで検索し、時刻t28,t29,t30において、検索結果の値をそれぞれ制御ノード1へ応答する。制御ノード1は、検索結果のうち同じ結果が2つ以上あれば、その値を検索結果として処理する。
ところで、上記のように各ストレージノードNiが、自ノードに割り当てられているノードIDiから生成されるマルチキャストグループアドレスGroup(IDi)、および前後に隣接する2つのストレージノードNi+1,Ni-1に割り当てられるノードIDi+1,IDi-1から生成される2つのマルチキャストグループアドレスGroup(IDi+1),Group(IDi-1)へJOINすると、複数の異なるストレージノードNに同一のマルチキャストグループアドレスが割り当てられてしまう「衝突」が生じ得る。これは、マルチキャストグループアドレスの値域がノードIDの値域よりも狭いことに起因する。
図5は、マルチキャストグループアドレスが衝突する例を示した図であり、ストレージノードNi-1,Ni+2およびNi+3には、それぞれのノードID(IDi-1,IDi+2およびIDi+3)の上位ビットを利用して生成された固有のマルチキャストグループアドレスGroup(IDi-1)=Gj-1、Group(IDi+2)=Gj+1、Group(IDi+3)=Gj+2が割り当てられている。
これに対して、ストレージノードNiおよびNi+1は、それぞれのノードID(IDiおよびIDi+1)の上位ビットを利用して生成されたマルチキャストグループアドレスが同値Group(IDi)=Group(IDi+1)となるために共通のグループアドレスGjが割り当てられている。
したがって、例えばデータの挿入処理において、そのKEYのハッシュ値に基づいてストレージノードNiのIDiが一意に特定され、当該IDiから生成されたマルチキャストグループアドレスGroup(IDi)=Gjに対して挿入メッセージがIPマルチキャストパケットで送信されると、前記データは4つのストレージノードNi-1,Ni,Ni+1およびNi+2に保持されることになる。
このため、マルチキャストグループアドレスの衝突時であっても、本実施形態では、ノードIDの上位ビットがマルチキャストグループアドレスの下位ビットであり、衝突するグループアドレス同士は必ずID空間で隣接することが保障されているので、マルチキャストグループアドレスの衝突処理が不要である。
1…制御ノード
2…中継ノード
2…中継ノード
Claims (6)
- 複数のストレージノードにノードIDと対応付けられたデータが分散保持され、各ストレージノードは、制御ノードから受信したメッセージに応答してデータを処理する分散データベースの制御方法において、
制御ノードから受信したメッセージを各ストレージノードへマルチキャストで転送する中継ノードを備え、
各ストレージノードが、自ノードおよび他の一部のノードの各マルチキャストグループアドレスを中継ノードへ通知して同一のマルチキャストグループへ参加する手順と、
制御ノードが、メッセージの宛先となるストレージノードのマルチキャストグループアドレスを識別する手順と、
制御ノードが、前記マルチキャストグループアドレス宛にメッセージを送信する手順と、
中継ノードが、前記メッセージを受信して前記マルチキャストグループアドレスに対応するグループに参加しているストレージノードを識別する手順と、
中継ノードが、前記識別されたストレージノードへ前記メッセージを転送する手順とを有することを特徴とする分散データベースの制御方法。 - 前記各ストレージノードは、自ノードのノードIDの上位のビット列に基づいて自ノードのマルチキャストグループアドレスを生成することを特徴とする請求項1に記載の分散データベースの制御方法。
- 前記各ストレージノードに保持されるデータが、KEYとVARUEとのペアであることを特徴とする請求項1または2に記載の分散データベースの制御方法。
- 前記中継ノードが、IPマルチキャストルータであることを特徴とする請求項1ないし3のいずれかに記載の分散データベースの制御方法。
- 前記制御ノードから中継ノードへ送信されるメッセージが、各ストレージにデータを保持させる挿入メッセージであることを特徴とする請求項1ないし4のいずれかに記載の分散データベースの制御方法。
- 前記制御ノードから中継ノードへ送信されるメッセージが、各ストレージに保持されているデータから検索キーに対応したデータを検索させる検索要求メッセージであることを特徴とする請求項1ないし4のいずれかに記載の分散データベースの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011035822A JP2012174020A (ja) | 2011-02-22 | 2011-02-22 | 分散データベースの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011035822A JP2012174020A (ja) | 2011-02-22 | 2011-02-22 | 分散データベースの制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012174020A true JP2012174020A (ja) | 2012-09-10 |
Family
ID=46976872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011035822A Withdrawn JP2012174020A (ja) | 2011-02-22 | 2011-02-22 | 分散データベースの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012174020A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017091248A (ja) * | 2015-11-11 | 2017-05-25 | 日本電信電話株式会社 | ノードおよびグラビテーション抑止方法 |
US10397029B2 (en) | 2015-07-08 | 2019-08-27 | Toshiba Memory Corporation | Relay apparatus |
-
2011
- 2011-02-22 JP JP2011035822A patent/JP2012174020A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10397029B2 (en) | 2015-07-08 | 2019-08-27 | Toshiba Memory Corporation | Relay apparatus |
JP2017091248A (ja) * | 2015-11-11 | 2017-05-25 | 日本電信電話株式会社 | ノードおよびグラビテーション抑止方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5016063B2 (ja) | 整合性のとれた耐障害性分散ハッシュテーブル(dht)オーバレイネットワーク | |
JP5227955B2 (ja) | 自己統制ネットワークのための分散ハッシュメカニズム | |
US7859992B2 (en) | Router redundancy in data communication networks | |
JP5498594B2 (ja) | フェデレーションインフラストラクチャ内の一貫性 | |
US7984127B2 (en) | Data matrix method and system for distribution of data | |
JP2009543447A (ja) | ランデブーフェデレーション内の近傍域間通信 | |
JP2009543447A5 (ja) | ||
CN104509073A (zh) | 在软件定义的网络中发现ip多播组成员 | |
CN101729425B (zh) | Vrrp组网中流量发送的方法及设备 | |
JP4459999B2 (ja) | 投票を活用した無停止サービスシステム及びそのシステムにおける情報更新及び提供方法 | |
US8208418B1 (en) | Methods, systems, and computer readable media for conserving multicast port list resources in an internet protocol (IP) packet forwarding device | |
US20070091828A1 (en) | Registration, look-up, and routing with flat addresses at enormous scales | |
US9935880B2 (en) | Systems and methods for scalable and resilient load balancing | |
CN109525678B (zh) | 区块链网络系统以及相应的节点设备发现方法 | |
US20220272038A1 (en) | Data routing method and related apparatus | |
JP2018014049A (ja) | 情報処理システム、情報処理装置、情報処理方法及びプログラム | |
US10742431B2 (en) | Centralized database based multicast converging | |
JP4335907B2 (ja) | ピアツーピアルックアップシステムに対するモビリティチャーン処理のための方法および装置 | |
JP2012174020A (ja) | 分散データベースの制御方法 | |
CN101420327B (zh) | 平滑重启过程中避免路由振荡的方法及平滑重启设备 | |
JP6102214B2 (ja) | 転送プログラム、設定プログラム、送信プログラム、転送装置、設定装置、送信装置、転送方法、設定方法および送信方法 | |
CN101026537A (zh) | 对等网络及其网络资源查询方法 | |
CN108632125B (zh) | 一种组播表项管理方法、装置、设备及机器可读存储介质 | |
Zghaibeh et al. | d-SHAM: a constant degree-scalable homogeneous addressing mechanism for structured P2P networks | |
Varis et al. | Dbridges: Flexible floodless frame forwarding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140513 |