MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

吉岡 弘隆 - よしおか ひろたか

日本OSS推進フォーラム ステアリングコミッティ委員
OSDL Board of Directorsを歴任
カーネル読書会主宰

2000年6月、ミラクル・リナックスの創業に参加。
95年~98年、米国OracleにてOracle RDBMSの開発をおこなっていた。
98年にNetscapeのソースコード公開(Mozilla)に衝撃をうけ、オープンソースの世界に飛びこみ、ついには会社も立ち上げてしまう。
2008年6月取締役CTOを退任し一プログラマとなった。

ミラクル関連リンク

なかのひと

サイト検索

2009年6月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

« 500万倍のスケーラビリティ | メイン | ミラクルブログが微妙な味を出している件について »

LiveJournalのアーキテクチャ

先日、mixiのお話を書いた(500万倍のスケーラビリティ)が、幸いにも多くの方からブックマークをいただく。ブックマークのコメントを眺めているとmixiのアーキテクチャはkazuhookuさんとmiyagawaさんからLiveJournalと同様なアーキテクチャだとの指摘をいただく。早速Googleで検索してみた。

LiveJournal's Backend -- A history of scalling, August 2005, Brad Fitzpatrick,
4ページ目の図を見るとmod_perlやらmemcachedやらmixiのお話のとき出てきたおなじみのコンポーネントが見える。ふむふむ。ユーザが増えてくるとDBをマスター・スレーブ構成にしてマスターに書き込みそれをreplicate(複製)する。読み込みはスレーブから行なうので、スレーブを増やせば読み込みはスケールするが、マスターへの書き込みがボトルネックになる。ふむふむ。そこで、partition(分割)だ(24ページ)。分割するとジョインができなくなるが、気にしない。user idでパーティションを決定している。一つのテーブルを複数に分けているイメージである。キャッシュはmemcachedがつかさどっている。ロードバランシングにはPerlbalを利用する。分散ファイルシステムはMogileFSである。そのほかストレージ関連のTipsとしてイメージなどblob(バイナリーオブジェクト)は通常のファイルシステムに置く。RDBMSはMySQLのInnoDBで4.xを利用する。ところによってはMyISAMも使う。

memcachedというのはRDBMSのキュエリーをキャッシュする。本来ならRDBMSがやるべき仕事のような気がするがアプリケーションに特化して高速化するというのは一つの方法である。

mixiとの違いをあえて探すとmixiの場合は複数のテーブルをジョインするがLiveJournalはしない(ように見える)。そのためにmixiは複数のテーブルをジョインするためにアプリケーション側で対処している。

というようなことを、今回初めて知った無知なおじさんである。そんな無知なおじさんにもわざわざ教えてくれる元気のいい人たちがネットワークの向こう側にいる。ありがたいことである。ブログを書いて良かったなあと思う瞬間だ。

頭の固いおじさんからみれば、複数のテーブルをジョインするために、SELECT文を2回使って、それをアプリケーションで処理すると言うのは、リレーショナルデータベースの存在を否定(?)しているようなものだから、初めからそんなことはしない。そのような「常識」に凝り固まっていて到底思いつかない。memcachedみたいなものもそれはRDBMSの仕事だろう、RDBMSがキュエリーをキャッシュしないのだったらRDBMSを直せよとか思うのだが、OSSの世界ではまったく違ったレイヤーで軽やかに解決できるのなら、それでいいではないかという割りきりがある。テーブルの水平分割も垂直分割も、データベースのスケーラビリティもOracle RACでいいじゃんという発想からは到達しないアーキテクチャである。

今回のお話は本当にいろいろな意味で勉強になった。オープンソースの技術系カンファレンスは、わたしみたいな無知なおじさんを若者が教育する機会になる。それを世界中で一番必要としているのはわたしである。だから、どーにかして実現したいなあと妄想は膨らむのである。

蛇足だけど、memcachedやそれが利用しているlibeventの性能をoprofileで計測してチューニングしたいなあという遊び心がむくむくと芽生えてきている。わたしが作ったcache pollution aware patchが生きる応用かもしれないなどと思っていたりする。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/5837984

このページへのトラックバック一覧 LiveJournalのアーキテクチャ:

» [技術]LiveJournalのアーキテクチャ トラックバック ようの日記(へたれプログラマの日記)
よしおかさんのブログから id:yoosaki:20060707:1152237361で紹介したmixiの事例はLiveJournalでも同様のアーキテクチャでシステムを実現しているそうです。 なるほどー mixiでは力技で自力で解決していきましたが、そういったスキームを共有化できれば、エンタープライズな... [続きを読む]

» はてなブックマークの傾向 トラックバック 未来のいつか/hyoshiokの日記
先日会社のブログでLiveJournalのアーキテクチャについて書いた。そのサイトの注目エントリを見ていたちょっと気がついたことをいくつか。 LiveJournalのアーキテクチャを知るためにわたしがしたことは、Googleで”livejournal architecture”としただけである。で、http://... [続きを読む]

» NDD (Nomikai Driven Development) トラックバック ユメのチカラ
昨日、日本SGIソリューション・キュービック・フォーラムのOSS/Linux パ [続きを読む]

» mixiのスケーラビリティ トラックバック ユメのチカラ
mixiの生みの親“バタラ氏”が語るMySQLの意外な利用法サービス開始から3年 [続きを読む]

コメント

miyagawaさんのお名前を"miyagawa"と呼び捨てにしていたのを訂正しました。ごめんなさい。

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.