グラフといっても、円グラフとか、そういうものではなくて、数学のグラフ理論とか、データ構造のグラフの話。

twitterとか、facebookみたいなSNSはフォロワーやフレンドというモデルを使ってソーシャルグラフを作っている。でも、データストアとして使っているのはRDBだったり、key-value storeだということを、どっかで見た気がする。

PHPもPostgreSQLもやったことないのに、そんなシステムを作り直すことになり、運用し始めたら、パフォーマンスがどんどん低下していくというワナにはまったので、ちゃんとメモしておく。PostgreSQLのチューニングには、postgres.confで設定値を変更する方法や、定期的にVACUUMする方法などがあるらしい。今回作ったシステムは、参照よりも更新レコード数が多い場合なので、一日一回VACUUM、REINDEXするという方法が効果的だった。これでも遅くなるようならダンプ&リストアしかないかもしれない。