2004-12-22

Class::DBI::Cacheable

 訪問者が多いうちに聞いてみよう*1

 Class::DBI::Cacheableは前の会社にいたときに使おうと思ってたんだけれど、Cache::FileCacheを使っているのでサーバが複数あるとupdateしたときに不整合が起こりそうな気がして使うのをやめた記憶があります。このあたりはどうなってるんでしょうかね?

 updateする可能性のあるカラムだけキャッシュしない設定があるとか、あるいはそういうテーブルには使うなってことなんでしょうか。

 この辺りが気持ち悪くて自前のCahce::FileCacheラッパを使ってたりするのですけれど。

 あと、MySQL*2を使ったCache::Cache*3ってないですよね? 上記みたいなケースでNFSを使うよりは良さげな気がするんですけれど。そうでもないのかな。

補足

 Class::DBIのパフォーマンスを気にしている方がいますが、まずはEssentialの設定を見直すことをオススメします。

 キャッシュなんかしなくても、数倍パフォーマンスが良くなりますから。

 Class::DBI::Plugin::Iteratorを使うならSELECT * にするのを推奨。

はてな開発の裏側

 個人的にはどうやってサーバを展開してるかが気になるのですが~。

 ハードじゃなくてソフトのほうね。

 例えばプログラムをバージョンアップさせるときに、某所のようにrsyncで散まいてるとは考えたくないのですけれど。

気になった点

 伊藤氏ははまぞうで利用したAWSのポイントとして「AWS正規表現でプログラムすること」を挙げた。はてなのようにページビューが多いサイトでは速度の問題がシビアであり、PerlXML関連モジュールはどうしても速度の面などで問題があるのだという。「Perl正規表現はとても優秀で、モジュールと比べても桁違いに早い。(速度という観点から)XMLモジュールよりも現実的なほうを実装している」。

 うーん。XMLモジュールでロジックをテストしてから正規表現による独自モジュールに変更、とかじゃないのか……。

 そもそもそんなにXMLを頻繁にパースする必要はない気もするんだけれど*4、2億PV/月=5,000PV/分*5だったりすると何かと問題があったりするのかもしれない。

 というか、90台のサーバって、どんな振り分けになってるんでしょ。

*1:もう少なくなってたりして。

*2:特にMySQLクラスタが良さそう。

*3:Cache::MySQLCacheかな?

*4AWSの結果はキャッシュしてるんでしょ?

*5:ピーク時はこの2~3倍くらい?