MerDy

16
Dyanmo と Mercury と ととととととととと KVS MerDy ととと ととと とととととと とととと

Transcript of MerDy

Page 1: MerDy

Dyanmo と Mercury を組み合わせた高機能 KVS

MerDy

発表者チーム パインテール 熊崎宏樹

Page 2: MerDy

これから話す事

MerDy の生まれた背景MerDy の仕組みMerDy に得意なこと・苦手なことデモ

Page 3: MerDy

MerDy の生まれた背景様々な業務の基盤にデータベースが活用

しかし高い性能を得るためのコストは大きい性能要求に堪えて低コストなデータストアが欲しい

キーバリューストアの台頭

Page 4: MerDy

キーバリューストアとは入力されたキーとバリューをペアで保持するデータストア複数の計算機に負荷分散をさせる事で合計スループットを高めることができる分散環境を前提とした様々なコンセプトのキーバリューストアが出現

しかし!

Page 5: MerDy

キーバリューストアには弱点がキーと計算機との紐づけにハッシュ関数を用いる物は範囲検索の効率がとても悪い

A B C

Page 6: MerDy

キーバリューストアには弱点がキーと計算機との紐づけにハッシュ関数を用いる物は範囲検索の効率がとても悪い

A~F はどこに保存したかな・・・?•A ~ F を全部ハッシュ関数にかける?•全部のキーを取ってきて A ~ F だけふるい分ける?

Page 7: MerDy

そこで MerDy !キーは Dynamo に保存

3 重に複製して保存するため紛失の危険が少ない

範囲検索のための情報を Mercury に保存範囲検索ができる!

Dynamo, Mercury 共に手作りして来ました

Page 8: MerDy

何が嬉しいの?Mercury は複数属性に対応しているものの、タプル情報の保持に無駄が多いDynamo はキーとバリューのペアを 1 次元の名前空間で保持するばかり

•Mercury は一貫したタプル保持を Dynamoに任せる事で高効率化•Dynamo は Mercury の複数属性対応によって高次元化

Page 9: MerDy

その仕組み

Dynamo は行方向のデータを保存Key: Hash 値  Value: タプル 1 列丸ごと

名前 ID 住所 年齢 性別 得点Tanaka 10 Tokyo.. 27 M 87

Suzuki 15 Tokyo.. 31 F 76

Yoshida 16 Tokyo.. 24 M 71

Yoshida 16 Kyoto.. 26 F 71

Hash

$#u3”;a

r#st6a

1)@jqc

3iux(3s

Page 10: MerDy

その仕組み

Mercury は列方向のデータを保存Key: 属性値   Value: ハッシュ値

名前 ID 住所 年齢 性別 得点Tanaka 10 Tokyo.. 27 M 87

Suzuki 15 Tokyo.. 31 F 76

Yoshida 16 Tokyo.. 24 M 71

Yoshida 16 Kyoto.. 26 F 71

Hash

$#u3”;a

r#st6a

1)@jqc

3iux(3s

Page 11: MerDy

ProxyProxy

その仕組み

Proxy

Client

Mercury Hubs

Dynamo

Select name Where Score > 10

Score

Name

Age

Score > 10

$#u3”;a

r#st6a

1)@jqc

Suzuki

Yoshida

Yoshida

Master

Page 12: MerDy

つまり

簡単な SQL が実行可能

従来のキーバリューストアに無かった柔軟性

Dynamo 由来の耐故障性

Page 13: MerDy

しかし弱点もあるトランザクションのような排他制御は不可能登録完了したデータが Mercury に反映されるまでに間がある

Eventual   Consistency使いどころが難しい?

Page 14: MerDy

Future Work

SQL のさらなるサポート現在は INSERT, SELECT, COUNT のみ

対故障の実装Master ノードが落ちても Proxy の一つを選出して代替させて復旧Mercury ノードが落ちても Dynamo のタプル情報から復旧

パフォーマンスの測定Mercury の動的負荷分散を改良したい

Page 15: MerDy

まとめ2 つのキーバリューストアを複合して汎用データベースっぽく動くデータストアを作りました

Eventual Consistency な列指向データベースです

用途募集中です

Page 16: MerDy

Demo