以下に紹介する「 O/R マッパーによるトラブルを未然に防ぐ」というスライドが大変勉強になったのでご紹介

O/Rマッパーによるトラブルを未然に防ぐ
http://www.slideshare.net/kwatch/how-topreventorm-troubles

O/R マッパーって何?

リレーショナルデータベースとオブジェクト指向の橋渡しをするものです。

データベースのデータ一つ一つをプログラムレベルでのオブジェクトに置き換えたり、
オブジェクトの構造からデータベースのテーブル構造を生成したりと、エンジニアの負担を減らすためのものです。


  • O:オブジェクト
  • R:リレーショナル
  • M:マッピング

で、ORM という略し方もありますね。

O/R マッパーの何がいけないの?

ヒトコトでいうと「パフォーマンス」に影響が出るからと解釈しています。

細かいクエリを書かずに、メソッドチェーンで DB を操作できるという便利さがある反面、実際にどんな SQL が実行されるか不透明なところがあります。

そのなかで、最適化されない SQL が実行されて、遅くなっていたということがあります。

パフォーマンス!?

はい、パフォーマンスです。

データベースでデータの一元管理をしているプロジェクトがほとんどだと思います。

そのため、データベースにキャパシティを超える負荷がかかると一気にレスポンスが悪くなってしまいます。

たとえば、、、どんな?

N+1 問題など。

具体的に「1回でできるじゃん」というものをループでやってしまうような、「実装が悪くてパフォーマンスが低下する」ものが特に NG です。
「ぐるぐる系」と表現していますね。

たとえば 1 万レコードヒットしたら 1 万回 Select が発生してしまいますが、
1 回の Select が 0.0002 秒だとしても、 1 万回が積み重なると単純に 2 秒かかってしまうわけです。

これは最低限知ってもらいたいです。