ORMについてのメモ
ORM(Object Relational Mapping)とは
- DBを抽象化してオブジェクトとして扱う方法
- プログラム上ではオブジェクトとして扱うけど、裏でORMが働いてDBと同期してくれるみたいな
メリット
- SQL書かなくてもいい
- プロダクトが各種DBに対応していれば、コードを変更せずにDBを変更できる
デメリット
- 性能に影響する(処理速度、消費メモリ)
- 生成するクエリの質が問題になることもあるらしい
他にもちゃんと理解していないところだと、ORMを使うことでデータベース設計が難しくなったり、モデリングが難しくなったりするらしい。
設計方面は知識が足りてない。
ORMのパターン2つ
- ActiveRecord
- DataMapper
どちらもPofEAAという本に書かれているパターンだそうだ。ActiveRecordってRailsのORMの事かと思ってたら、パターンの名前そのまま使ってるだけなんだね。
PythonではActiveRecordのORMは、SQLObject / Elixir / Storm、DataMapperではSQLAlchemyが代表的ぽい。(ElixirはSQLAlchemyの上に構築されてる)