Upload
kentoku
View
3.787
Download
0
Embed Size (px)
DESCRIPTION
Introduce Spider Storage Engine and Vertical Partitioning Storage Engine.
Citation preview
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!!