Spider Shibuya.pm #12

4,218 views
4,123 views

Published on

Introduce Spider Storage Engine and Vertical Partitioning Storage Engine.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,218
On SlideShare
0
From Embeds
0
Number of Embeds
1,186
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Spider Shibuya.pm #12

  1. 1. Spider Storage Engine 作ってみた MySQLのストレージエンジンによる 「RDBMS sharding」
  2. 2. はじめに MySQLのストレージエンジンで、 shardingを実装してみました。
  3. 3. はじめに アプリケーションからは、MySQLの テーブルとして利用できるので、 使用感がshardingする前と変わらな いのが特徴です。
  4. 4. 構成例 col_a%3=0 col_a%3=1 col_a%3=2 tbl_a tbl_a tbl_a DB1 DB2 DB3 3.Choose a connection and get data tbl_a tbl_a tbl_a DB DB DB 2.Request 4.Response AP1 from application AP2 to application AP3 1.Request 5.Response from client to client tbl_a.col_a = 1 の部分にSpiderのテーブルがあります。
  5. 5. 動作イメージ tbl_a tbl_b tbl_c DB1 DB2 DB3 SPIDER 2.Just connect to spider AP 1.Request 3.Response select tbl_b
  6. 6. Vertical Partitioning
  7. 7. Vertical Partitioning MySQLのストレージエンジンとして、 Spiderストレージエンジンのほかに Vertical Partitioning ストレージエンジン というものを作ってみました。
  8. 8. Vertical Partitioning 今年の初めに、 「FriendFeed では MySQL を使いどのように スキーマレスのデータを保存しているのか」 http://hyuki.com/yukiwiki/wiki.cgi?HowFriendFeedUsesMySqlToStoreSchemaLessData という記事が話題になったかと思いますが、
  9. 9. Vertical Partitioning Vertical PartitioningとSpiderを 組み合わせて利用すると これを、DBの中で、RDBの機能は そのままに、実現できるようになります。
  10. 10. Spider + Vertical Partitioning構成例 col_a%3=0 col_a%3=1 col_a%3=2 col_b%3=0 col_b%3=1 col_b%3=2 tbl_a1 tbl_a1 tbl_a1 tbl_a2 tbl_a2 tbl_a2 DB1 DB2 DB3 DB4 DB5 DB6 tbl_a1 tbl_a2 Vertical Partitioning テーブル このケースでは同一カラムを持ち、 tbl_a 異なるルールでパーティションさ れたtbl_a1、tbl_a2を子テーブル に持っている DB select ~ from tbl_a select ~ from tbl_a where col_a = 1 where col_b = 1 AP の部分にSpiderのテーブルがあります。
  11. 11. Spider + Vertical Partitioning また、Vertical Partitioningストレージエンジンは、 子テーブルのデータをサービス停止なしで、 別の子テーブルにコピーすることができるので、 (vp_copy_tablesというUDFを利用します) スキーマの変更やreshardingを動的に行うことが 可能です。
  12. 12. Spider + Vertical Partitioning これで、データベースのテーブルの構造・データを 外からは何も変わっていないように見せながら、 DB内で柔軟に分解再構築できるようになります。 (サービス停止の必要はありません)
  13. 13. まとめ 以上、「RDBをRDBのままshardingするために、 SpiderとVertical Partitioningを作ってみた」という お話でした。 Amazon RDSの限界越え用にも是非使って みてください。
  14. 14. おまけ 今、Spiderのクラスタ機能を実装中です。 Spiderのクラスタは、テーブル(パーティション) レベルクラスタリングを採用しており、テーブル (パーティション)単位で異なる監視サーバを 割り当てられます。
  15. 15. おまけ このため、独特な可用性設計が可能で、 「Webサーバ2台、DBサーバ2台で、とりあえず 冗長化はしておくか」という環境から、 大災害にあっても稼動し続けられる (もしくは、高速復旧できる)システムの 構築まで、利用できるようになる予定です。 ご期待下さい。
  16. 16. Any Questions? Thank you for taking your time!! 斯波健徳 http://wild-growth-ja.blogspot.com/ http://spiderformysql.com

×