mixiの生みの親“バタラ氏”が語るMySQLの意外な利用法という記事より。

もちろん開発当初は、誰もが現在のような急展開を想定できるわけがなく、この3年半、急激に増え続けるトラフィックへどのように対応するのか、バタラ氏をはじめ開発スタッフの苦労は並々ならぬものがあった。特に、MySQLのスケールを高めるのに苦労したという。

MySQLの導入事例ということで、mixiの最高技術責任者である衛藤バタラ氏がインタビューに答えています。

最初のウェブサーバ1台、DBサーバ1台という構成から、いかにしてシステムが“進化”していたかが分かります。成長といっても良いかもしれませんね。

第一段階 マスター−スレーブ構成

マスターは更新専用、スレーブは参照専用として負荷分散も行った。

第二段階 データクラスタ

日記/メッセージなどのサービス別に分かれていたテーブルを1つのデータベースに格納していたが、それをサービスごと水平に分割し、複数のDBサーバへ分散

第三段階

サービスごとで水平に分割されたテーブルを、さらに各種ID別で垂直に分割する

その後は分割マップが複雑になり、MySQLの設定ファイルでは管理できなくなったことから、いろいろな手法が考えられたようです(難しい)。

もはや、

「“JOIN”などもアプリケーション側で行っており、パーティションやクラスタの選択、フェイルオーバーの機能もアプリケーション側に持たせています。実は、MySQLのリレーショナル機能を使っていません。RDBMSといっても実態は、ほとんどDBMSとして使っています」

ということで、MySQLでなくても大丈夫な状態のようではありますが、信頼性の問題から今のところ「MySQLかなと思います」ということだそうです。

なんというか「MySQLを採用するWebシステムとして、間違いなく世界有数の規模」ということですし、急激にユーザ数も増加したので、技術者の苦労が忍ばれる話だな、と思いました。

DBの仕組みはあまり理解していなかったのですが、ちょっと分かりました。