検索
特集/連載

mixiの生みの親“バタラ氏”が語るMySQLの意外な利用法DBMS導入事例:MySQL

サービス開始から3年余りで会員数が1000万人を超えたSNSの「mixi」。そのシステムはOSSで構築されており、データベース管理システム(DBMS)には「MySQL」を使う。急増するトラフィックをさばくために負荷分散を重ねた結果、現在ではサーバ1000台以上が連なる超分散システムへ。その中でMySQLが果たす役割とは。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

日記だけで4億件のデータ

 ミクシィが運営するSNS「mixi」は、2007年7月末段階でユーザー数が1110万人。人が12人集まれば、1人はmixiユーザーというわけだ。ユーザーのアクティブ率(ログイン間隔が3日以内)は約62%と高く、2007年4月から6月の月間平均ページビューは117.5億に達した。日記だけでも4億件以上に上るなど、蓄積するデータ量も莫大。2004年3月のサービス開始から、わずか3年半で現在の巨大コミュニティーへと発展したのだ。

 ミクシィは、「LAMP(OSのLinux、WebサーバのApache、DBMSのMySQL、開発言語のPerl、PHP、Python)」と呼ばれるWebシステム向けの標準的なオープンソースソフトウェア(以下、OSS)でシステムを自社開発し、安価なPCサーバを1000台以上連ねる超分散構成でmixiのサービスを支えている(広告配信など周辺機能では、パッケージ製品を採用している部分もある)。このmixiのケースは、MySQLを採用するWebシステムとして、間違いなく世界有数の規模といえる。


株式会社ミクシィ 取締役 最高技術責任者 衛藤 バタラ氏

 mixiの生みの親――事業企画をミクシィへ提案、当初は1人でシステムを構築していた――ともいえる取締役 最高技術責任者の衛藤 バタラ氏は、MySQL採用のいきさつを次のように振り返る。「当時は、SNSがビジネスとして成り立つかどうかも分からなかったので、コストが掛かる商用DBは頭にありませんでした。OSSとしてはPostgreSQLという選択肢もありましたが、MySQLは当時からレプリケーション機能が標準で付き、ユーザー事例などのドキュメントも豊富。サポート会社のMySQL ABも存在していたので安心でした」

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

標準機能では負荷分散できず

 mixiはサービスを開始してから2カ月後には、ユーザー数が1万人を突破した。早くもWebサーバとDBサーバが各1台という初期構成では負荷に耐えられなくなったが、Webサーバには「DNSラウンドロビン」(1つのホスト名に複数のIPアドレス=Webサーバを割り当て)という負荷分散技術があり、サーバを増設してスケールアウトすることで、容易に対応できた。そして、MySQL標準のレプリケーション機能を使い複数のDBサーバをマスター−スレーブ構成(マスターからスレーブのデータを非同期更新)とすることで、マスターは更新専用、スレーブは参照専用として負荷分散も行った。

 普通のWebサイトであれば、トラフィックの大半は参照処理のため、たとえトラフィックが増加しても参照専用のスレーブの追加で十分にスケールアウトするだろう。しかしmixiの場合、サービスの特性上、更新処理の多さが際立った。トラフィックの増加に伴い、更新処理が集中するマスターが過負荷になったほか、マスターで発生した更新を各スレーブが複製する際のオーバーヘッドで、参照処理にまで影響が出始めたのだ。

関連ホワイトペーパー

MySQL | サーバ | 負荷分散 | データベース | オープンソース | OSS


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る