16
Spider Storage Engine 作ってみた MySQLのストレージエンジンによる RDBMS sharding

Spider Shibuya.pm #12

  • Upload
    kentoku

  • View
    3.787

  • Download
    0

Embed Size (px)

DESCRIPTION

Introduce Spider Storage Engine and Vertical Partitioning Storage Engine.

Citation preview

Page 1: Spider Shibuya.pm #12

Spider Storage Engine 作ってみた

MySQLのストレージエンジンによる「RDBMS sharding」

Page 2: Spider Shibuya.pm #12

MySQLのストレージエンジンで、

shardingを実装してみました。

はじめに

Page 3: Spider Shibuya.pm #12

アプリケーションからは、MySQLの

テーブルとして利用できるので、

使用感がshardingする前と変わらな

いのが特徴です。

はじめに

Page 4: Spider Shibuya.pm #12

構成例

の部分に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

Page 5: Spider Shibuya.pm #12

動作イメージ

DB1tbl_a

1.Requestselect tbl_b

2.Just connect to spider

3.Response

DB2tbl_b

DB3tbl_c

AP

SPIDER

Page 6: Spider Shibuya.pm #12

Vertical Partitioning

Page 7: Spider Shibuya.pm #12

MySQLのストレージエンジンとして、

Spiderストレージエンジンのほかに

Vertical Partitioningストレージエンジンというものを作ってみました。

Vertical Partitioning

Page 8: Spider Shibuya.pm #12

今年の初めに、

「FriendFeed では MySQL を使いどのように

スキーマレスのデータを保存しているのか」http://hyuki.com/yukiwiki/wiki.cgi?HowFriendFeedUsesMySqlToStoreSchemaLessData

という記事が話題になったかと思いますが、

Vertical Partitioning

Page 9: Spider Shibuya.pm #12

Vertical PartitioningとSpiderを組み合わせて利用すると

これを、DBの中で、RDBの機能は

そのままに、実現できるようになります。

Vertical Partitioning

Page 10: Spider Shibuya.pm #12

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

Page 11: Spider Shibuya.pm #12

また、Vertical Partitioningストレージエンジンは、

子テーブルのデータをサービス停止なしで、

別の子テーブルにコピーすることができるので、

(vp_copy_tablesというUDFを利用します)スキーマの変更やreshardingを動的に行うことが

可能です。

Spider + Vertical Partitioning

Page 12: Spider Shibuya.pm #12

これで、データベースのテーブルの構造・データを

外からは何も変わっていないように見せながら、

DB内で柔軟に分解再構築できるようになります。

(サービス停止の必要はありません)

Spider + Vertical Partitioning

Page 13: Spider Shibuya.pm #12

以上、「RDBをRDBのままshardingするために、

SpiderとVertical Partitioningを作ってみた」という

お話でした。

Amazon RDSの限界越え用にも是非使って

みてください。

まとめ

Page 14: Spider Shibuya.pm #12

今、Spiderのクラスタ機能を実装中です。

Spiderのクラスタは、テーブル(パーティション)レベルクラスタリングを採用しており、テーブル

(パーティション)単位で異なる監視サーバを

割り当てられます。

おまけ

Page 15: Spider Shibuya.pm #12

このため、独特な可用性設計が可能で、

「Webサーバ2台、DBサーバ2台で、とりあえず

冗長化はしておくか」という環境から、

大災害にあっても稼動し続けられる

(もしくは、高速復旧できる)システムの

構築まで、利用できるようになる予定です。

ご期待下さい。

おまけ

Page 16: Spider Shibuya.pm #12

http://wild-growth-ja.blogspot.com/http://spiderformysql.com

斯波健徳

Any Questions?

Thank you for taking

your time!!