DB Shardingについて1 #16
こんにちわ!nekokakです!
十六日目はDB ShardingとShardingしたDBにどのようにDBIx::Skinnyからアクセスするかについてです。
DBのShardingの方法は色々あります。
RDBMS側で提供される機能をつかうのも良いでしょう。
アプリケーションがわで任意の方法でShardingするのも良いでしょう。
ご自分の得意分野を活かしてShardingするといいと思います。
私は普段MySQLしか使わないので、今回はMySQLに限ったお話になりますが、参考にしていただければと思います。
テーブルパーティショニング
MySQL5.1から使えるようになったテーブルパーティショニングの場合、
MySQLが内部でデータファイルを分割しており、アプリケーショ側は特に意識する必要はありません。
MySQL5.1のテーブルパーティショニングについては
http://itpro.nikkeibp.co.jp/article/COLUMN/20080710/310540/
こちらを参考にするとよいでしょう。
Spider
他には、斯波さんが作られている、SpiderというMySQLのストレージエンジンを使えば
MySQL5.1のテーブルパーティショニングとは異なり、
物理的に異なるサーバをつかってshardingすることが可能です。
この場合でも、アプリケーション側は特に意識する必要がありません。
Spiderについては
http://wild-growth-ja.blogspot.com/
http://labs.unoh.net/2009/07/mysqlspider.html
を参考にするとよいと思います。
上記2つはアプリケーション側では特に意識しなくてもRDBMSがわ(MySQL側)で勝手にshardingしてくれて、
データへのアクセスも特に意識することなく利用することができます。
このようなミドルウェアを使いこなせる方は試してみると良いと思います。
Incline
次に奥一穂さんが作られているInclineというMySQLのプラグインを使う手もあります。
Inclineについては
http://www.slideshare.net/kazuho/ss-2620503
を参考にすると良いと思います。
InclineはMySQLのテーブルパーティショニングやSpiderとはことなり、
データへのアクセスはアプリケーション側で管理する必要があります。
InclineでshardingしたDBへのアクセス管理は
奥さんが作られているDBIx::ShardManagerをつかうとよいでしょう。
http://svn.coderepos.org/share/lang/perl/DBIx-ShardManager/
今日は特別DBIx::Skinnyの話はでてきませんでしたが、
ミドルウェアを有効に使ってアプリケーション側で楽をすることで、
DBIx::Skinny側で特別なにかしなくても良い方法を考えるもの一つの手でしょう。
明日はミドルウェアに頼らないDB Shardingについてやろうとおもいます。
have a nice skinny days!:)