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