エンタープライズRails読書まとめ

エンタープライズ Rails ―企業ユーザのためのWebアプリケーション設計術

エンタープライズ Rails ―企業ユーザのためのWebアプリケーション設計術

10月頃に読み始めたこの本。
内容的には結構高度で読むのは結構しんどかったのですがわからないところは適当に飛ばし読み*1して何とか昨年のうちに読み終えることができました。
エンタープライズなシステム」をRailsでどのように書いたらいいのか、という内容の本ですが、Railsに限らず、大量のデータを扱うシステムを設計しようとしている人には有用な内容ではないかと思いました。

印象に残っている点をざっと箇条書きすると以下のような感じ。

  • データの整合性はDBの中でとるべき。制約、トリガー、ストアドをうまく使え
    • マイグレーションフレームワークの用意したバリデーションに頼ると、SQLを直接使ってデータを修正したときや、自分の書いたRailsのコードにバグがあるときに、データの整合性は簡単に崩れてしまう。あとで他のアプリがDBを書き換えてしまうこともあるかもしれない。
  • キャッシュは設計のはじめから考えておけ
    • キャッシュの整合性を維持するのは複雑なプロセスになる。キャッシュをいつ更新しなければならないか、しっかり把握しておかないと後で苦労する。
  • キャッシュはDBにマテリアライズド・ビューを使って作るべき。ページキャッシュ、クエリキャッシュに頼るな。
    • ほとんどのWEBアプリのボトルネックはDBにある。DB層におけるキャッシュはDBクエリを減らすので他の方法よりも効率的。
    • マテリアライズド・ビューはトリガーとストアドを使って実装できる。*2
  • PostgreSQL使え。MySQLはダメ。
    • PostgreSQLSQL標準により忠実でMySQLよりも優れたクエリプランナを備えている。*3

ほかにもテーブルの正規化のやり方とかRESTをどのように使ったら良いかとか。
正直、分からない部分もありましたが、設計で迷ったときに参照すると良いヒントが見つけられるかもしれません。
ただ、最初に書いたように最初から最後まで通して読むのはしんどいので最初は図書館や誰かから借りて読むのがいいのかもしれません。自分は借りて読みました(笑)。

*1:7〜10章はほとんど理解できませんでした

*2:Oracleには標準でマテリアライズド・ビューを作る機能があったような。

*3:そう書いてあるんだからしょうがない。