MerDy

1,819 views

Published on

Published in: Technology, Health & Medicine
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,819
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

MerDy

  1. 1. DyanmoとMercuryを組み合わせた高機能KVSMerDy<br />発表者<br />チーム パインテール<br /> 熊崎宏樹<br />
  2. 2. これから話す事<br />MerDyの生まれた背景<br />MerDyの仕組み<br />MerDyに得意なこと・苦手なこと<br />デモ<br />
  3. 3. MerDyの生まれた背景<br />様々な業務の基盤にデータベースが活用<br />しかし高い性能を得るためのコストは大きい<br />性能要求に堪えて低コストなデータストアが欲しい<br />キーバリューストアの台頭<br />
  4. 4. キーバリューストアとは<br />入力されたキーとバリューをペアで保持するデータストア<br />複数の計算機に負荷分散をさせる事で合計スループットを高めることができる<br />分散環境を前提とした様々なコンセプトのキーバリューストアが出現<br />しかし!<br />
  5. 5. キーバリューストアには弱点が<br />キーと計算機との紐づけにハッシュ関数を用いる物は範囲検索の効率がとても悪い<br />A<br />B<br />C<br />
  6. 6. キーバリューストアには弱点が<br />キーと計算機との紐づけにハッシュ関数を用いる物は範囲検索の効率がとても悪い<br />A~Fはどこに保存したかな・・・?<br /><ul><li>A~Fを全部ハッシュ関数にかける?
  7. 7. 全部のキーを取ってきてA~Fだけふるい分ける?</li></li></ul><li>そこでMerDy!<br />キーはDynamoに保存<br />3重に複製して保存するため紛失の危険が少ない<br />範囲検索のための情報をMercuryに保存<br />範囲検索ができる!<br />Dynamo, Mercury共に手作りして来ました<br />
  8. 8. 何が嬉しいの?<br />Mercuryは複数属性に対応しているものの、タプル情報の保持に無駄が多い<br />Dynamoはキーとバリューのペアを1次元の名前空間で保持するばかり<br /><ul><li>Mercuryは一貫したタプル保持をDynamoに任せる事で高効率化
  9. 9. DynamoはMercuryの複数属性対応によって高次元化</li></li></ul><li>その仕組み<br />名前<br />ID<br />住所<br />年齢<br />性別<br />得点<br />Tanaka<br />10<br />Tokyo..<br />27<br />M<br />87<br />Suzuki<br />15<br />Tokyo..<br />31<br />F<br />76<br />Yoshida<br />16<br />Tokyo..<br />24<br />M<br />71<br />Yoshida<br />16<br />Kyoto..<br />26<br />F<br />71<br />Hash<br />$#u3”;a<br />r#st6a<br />1)@jqc<br />3iux(3s<br />Dynamoは行方向のデータを保存<br />Key:Hash値  Value: タプル1列丸ごと<br />
  10. 10. その仕組み<br />名前<br />ID<br />住所<br />年齢<br />性別<br />得点<br />Tanaka<br />10<br />Tokyo..<br />27<br />M<br />87<br />Suzuki<br />15<br />Tokyo..<br />31<br />F<br />76<br />Yoshida<br />16<br />Tokyo..<br />24<br />M<br />71<br />Yoshida<br />16<br />Kyoto..<br />26<br />F<br />71<br />Hash<br />$#u3”;a<br />r#st6a<br />1)@jqc<br />3iux(3s<br />Mercuryは列方向のデータを保存<br />Key:属性値  Value: ハッシュ値<br />
  11. 11. その仕組み<br />Mercury Hubs<br />Dynamo<br />Master<br />$#u3”;a<br />Score<br />r#st6a<br />Suzuki<br />1)@jqc<br />Yoshida<br />Yoshida<br />Name<br />Score > 10<br />Proxy<br />Proxy<br />Proxy<br />Age<br />Select name Where Score > 10<br />Client<br />
  12. 12. つまり<br />簡単なSQLが実行可能<br />従来のキーバリューストアに無かった柔軟性<br />Dynamo由来の耐故障性<br />
  13. 13. しかし弱点もある<br />トランザクションのような排他制御は不可能<br />登録完了したデータがMercuryに反映されるまでに間がある<br />Eventual Consistency<br />使いどころが難しい?<br />
  14. 14. Future Work<br />SQLのさらなるサポート<br />現在はINSERT, SELECT, COUNTのみ<br />対故障の実装<br />Masterノードが落ちてもProxyの一つを選出して代替させて復旧<br />Mercuryノードが落ちてもDynamoのタプル情報から復旧<br />パフォーマンスの測定<br />Mercuryの動的負荷分散を改良したい<br />
  15. 15. まとめ<br />2つのキーバリューストアを複合して汎用データベースっぽく動くデータストアを作りました<br />Eventual Consistencyな列指向データベースです<br />用途募集中です<br />
  16. 16. Demo<br />

×