@kyanny's blog

My thoughts, my life. Views/opinions are my own.

「MySQLによるタフなサイトの作り方」を読んだ (Ameba の MySQL 本)

Ameba の中のひとが書いた MySQL 本。出るって噂は聞いてて、気になるなーと思っていたらかぜぶろさんのところでレビューされてたので買ってみた。

某 4G 本よりお薦め(俺にとって某 4G 本の内容はさほど目新しくないので、目新しい内容の本のほうを薦めたくなるのは当然ではある)。仕事で MySQL をいじることがあるウェブアプリケーションプログラマやデータベースエンジニアの人は一読して損はないと思う。知れてよかった!と思えるノウハウがたくさん書いてある。

某 4G 本と同じソフトバンククリエイティブだし、なんとなく会社紹介的というか、技術カタログ・品評会的な構成になるのかなぁ・・・と、あまり期待せずに読み始めたんだけど、予想に反してかなり泥臭いというか、現場の人のキーボードのキートップが手垢でテカテカしてるのまで見えてきそうな詰め詰めな内容だったので、なんと届いたその日に一日かけて読んでしまった。技術書を一日で読み終えるなんてめったにないよ・・・。

内容はひたすら MySQL の話だけ。最初のほうはインストール方法とか、真面目に読んでたら眠くなりそうな内容だったので、そんなの一章割いて書く必要あるのか?とか思いつつすっ飛ばした。構成としては、インストールからはじまって基本的な SQL とか運用コマンドを覚えたりしつつ、徐々にデータベースエンジニアっぽい専門的な事柄に進んでいく、という感じで、後ろにいけばいくほど高度な内容に。でも割と序盤のほうでも、 mMeasure とかレプリケーションを任意の秒数遅延させるスクリプトとか、すげーこんなのあったんだ!と驚くようなツールの紹介などもあって読み応えがある (単に俺がものを知らなすぎるだけかもしれない) 。

後ろのほうの章にいくと、やっぱり CPU やらメモリやら HDD やらのハードウェア絡みの話とか、 OS に絡む話とかの低レイヤなところにフォーカスしていって、いよいよ大規模サイト運用で培ったノウハウがお披露目されてきてページをめくりたびに垂涎ものなのだけど、「よく研究してるなぁ・・・」と素直に驚いたのは、 OS の I/O スケジューラを変えると何割かパフォーマンスが改善するので当然データベースサーバはそのへん変えて使いますね、という話。正直、そんなの全く知りませんでした・・・。自分がいかに勉強不足かを思い知らされた。

「Ameba では InnoDB の現状に不満があるので MyISAM を使ってます」というのが読む前から疑問で、具体的に InnoDB のどこが不満だと考えているのか、どういうケースだと MyISAM のほうが優位になったりするのか、などが気になっていたのだけど、一通り読み終わった段階だとちょっとよくわからないままだった。けど、 InnoDB は独自のキャッシュ機構をもっているけど MyISAM の場合は OS のページキャッシュに載るだけ、というあたりが肝なのかな?と思っている。 OS レベルでのキャッシュとか、データベースサーバ全体での効率を最優先して、あえてそういう選択をしているのかなーと。とある人が「MyISAM を使ってるという人は、何もわかってない素人か、相当詳しい玄人かのどちらかだ」と言っていたことがあるのだけど、この本を書いた Ameba の中のひとたちは相当の玄人集団だな、と思った。

BtoCサイト (CGM サイト) のデータベースエンジニアというのも、かなり奥が深くて面白い仕事なんだなと改めて思い出させてくれる本だった。 MySQL を使い始めたけどあまり運用に慣れていなくて・・・という人にとっては、徐々にステップアップしていくための良い道しるべになると思うし、もうかなり自信があるぜ!という人は、さらにプラスアルファの tips を身につけられるかもしれない。「gihyo の Google, はてな本の二番煎じだか三番煎じでしょ?」と思ってる人も、本屋で立ち読みくらいしてみたらいいと思う。ちょっと有名な会社の名前出しとけばヒキが強かろう、っていうノリで作ったらこういう中身にはならないと思う。

あと、ディストリビューションの選択についての話で、「個人で楽しむなら Gentoo で云々」とか書いてあって、またマニアックな人がいるもんだなーと思った。あと、「Ameba のシステムは Java が多くて、一昔前は CentOS のが安定してたんだけど、今なら Debian 選びますね」とかさらっと注釈に書いてあったりして、いままで Ameba の中のひとって技術者だとあまり外から見えない感じがして、ちょっと得体の知れない感じを抱いていたんだけど、個人的にこの本を読んでぐっと親近感が沸いた。

MySQLによるタフなサイトの作り方

MySQLによるタフなサイトの作り方

あと、ちょっと MySQL にまつわる話からは外れるのだけど。文中のコラムか何かで、「二三年前のアメブロのシステムは、ビジネスロジックが書いてある数百から数千行くらいの PL/SQL の関数がたくさんあって、 FOSS なシステムに移行していくのは骨が折れた」なんてことが書いてあり、 PL/SQL なんて名前くらいしか聞いたことがない俺でも背筋がぞっとしたのだけど、そういえばアメブロがよくダウンしてたらしい頃ってサイバーエージェントの社長が「技術者の頭数が足りない」とブログに書いてギークな方々から袋だたきにされていた頃だよなーと、どうでもいいことを思い出したのだけど、あのとき二十人だか三十人だか採用します!って言って獲った人たちは、結構優秀だったんだろうなぁと、またどうでもいいことを思ったりした。