質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

1回答

2101閲覧

P2Pネットワークを用いたNoSQLについて

kkkmokotan

総合スコア45

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

1クリップ

投稿2016/12/02 19:47

P2Pネットワークを使ったNoSQLとして有名なDynamoDBやCassandraですが、これらNoSQLと呼ばれるものについて疑問があり質問いたします。これらのシステムではハッシュを使って保存先の割り出しが行われていると思うのですが、一度ハッシュ値によって決まったサーバーから移動したい(ハッシュ値で割り当てられたところからの移動)という要求が一切ないものなのでしょうか(例えばこのデータとこのデータは同時に参照されるから等)? もしある場合は単なるハッシュのみでは保存先がわからなくなると思うのですがこれに対する解決法などは考えられているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一度ハッシュ値によって決まったサーバーから移動したい(ハッシュ値で割り当てられたところからの移動)という要求が一切ないものなのでしょうか

クラスタの構成が変わらないのならそういうことはありません。質問者さんの指摘どおり、それが起こるとキーに対してどのサーバに問い合わせればいいのかわからなくなってしまいます。しかしクラスタの構成が変わった場合はこの限りではありません。

説明のため、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やメールも「送る」と表現するものの、やってることは相手側への複製です。

投稿2016/12/03 04:52

sharow

総合スコア1149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kkkmokotan

2016/12/03 06:09

回答ありがとうございます。ノードの追加については確かにこのハッシュの担当箇所の変更による移動が起こると考えられますね。もしこの"移動"が要求として発生するのとを想定する場合、移動先のID(IP)を管理する方法はないかと考えています。
sharow

2016/12/03 08:21

実用的かどうかは置いといて、できるかもしれませんが、でもなにゆえに?? 昨今のHDDはみんなLBA(論理ブロックアドレス)で扱われています。私はファイルを保存しますが、HDDのどのシリンダ/セクタ/トラックに保存されるのかには興味はありません。たしかによく使うファイルをシリンダの外周に「移動」できると効率が良いかもしれません。でもそういう最適化をやっているのは一部のDBベンダーくらいです。 同じようにDynamo系のDBの場合、普通は論理的なハッシュ空間の中の特定の「キー」が「どのノードに」という事は関心の対象外です。関心はまず「よく分散させること」であって、あるノードに偏ったから移動させる、というようなテーブル設計の失敗を想定した上での救済策、みたいなものは用意されていません。そもそも失敗するな、という話になっているのです。 私には移動を要求する理由が分かりません。移動させる「理由」を突き詰めていくと疑問の解消につながるのではないでしょうか。
kkkmokotan

2016/12/03 12:14

回答ありがとうございます。P2Pネットワークを用いたNoSQLにおいて局所性の高いデータを同時に同じサーバにおいておくことによりデータに効果的にアクセスする方法はないかと考えておりました。その観点からみるとDHTではその局所性を考慮していないため、データ局所性を考慮したDHTなどが存在しないものかと疑問に思っていたのです。お答えしていただき本当にありがとうございます。
sharow

2016/12/03 13:59

なるほど。おそらく質問者さんの興味のあるところはNoSQL(DynamoDB)というよりP2P上の分散ストレージ、のようなものではないでしょうか。Cassandraに限った話をすると、人気のあるカラムだけ複製を増やす、ということはインデックス機能を捨てるということです。あるいはテーブル全体の複製(インデックス含む)を増やすということになってしまいデータベースとしてあまり現実的ではありません(結果整合性を得るためのコストが増大してしまう)。 私は立ち読み程度しか見たこと無いのですが、金子勇氏の「Winnyの技術 」という本は分散システムにおける局所性や遅いノードなど、実世界の問題の話が載っていてお勧めです。やりとりを見ていると、既にご覧になっているかもしれませんが。
kkkmokotan

2016/12/04 19:12

なんども回答いただきありがとうございました。とても楽しい話題なのでこのまま盛り上がってしまいそうですが、とりあえずBAとさせていただきます!本の方も見てみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問