質問: P2Pネットワークを使ったNoSQLとして有名なDynamoDBやCassandraですが、これらNoSQLと呼ばれるものについて疑問があり質問いたします。これらのシステムではハッシュを使って保存先の割り出しが行われていると思うのですが、一度ハッシュ値によって決まったサーバーから移動したい(ハッシュ値で割り当てられたところからの移動)という要求が一切ないものなのでしょうか(例えばこのデータとこのデータは同時に参照されるから等)? もしある場合は単なるハッシュのみでは保存先がわからなくなると思うのですがこれに対する解決法などは考えられているのでしょうか?
回答: > > 一度ハッシュ値によって決まったサーバーから移動したい(ハッシュ値で割り当てられたところからの移動)という要求が一切ないものなのでしょうか > > > クラスタの構成が変わらないのならそういうことはありません。質問者さんの指摘どおり、それが起こるとキーに対してどのサーバに問い合わせればいいのかわからなくなってしまいます。しかしクラスタの**構成が変わった場合**はこの限りではありません。 説明のため、0~15の4bitのハッシュ空間で例をあげます。 ノード4台あって、 Aが0~3、Bが4~7、Cが8~11、Dが12~15 のハッシュ領域を担当しているとします(ConsistencyLevelは1とします)。ここでノードEを追加したとき、それがDの後ろに入ったとします。 Aが0~3、Bが4~7、Cが8~11、Dが12~13、Eが14~15 実際はもっともキー数の多い場所や管理者が指定した場所にノードが追加されたりしますが、この例でもノードDにあったハッシュ空間14~15のキー/データがノードEに移動した、と言うことができます。ここでは4bitの狭いハッシュ空間でしたが、これはCassandraでは64bitあります。 でもこの「移動」という言葉には少し注意してください。詳細に立ち入らない場合は「移動」で済むのですが、コンピュータの場合、移動している瞬間を見ると「**あっちに複製して、確認したらこっちを削除**」であることがわかります。FAXやメールも「送る」と表現するものの、やってることは相手側への複製です。