Rails, ActiveRecord, ORM
最近幾日來閱讀 ActiveRecord 的心得:
1. relational database 非常低階,恐怕只比 file system 好?
我想這大概是為了高效率 look up 與 update 之故。
2. relational database 是 static typing 且不支援 OO,
就算使用 ORM 頂多也只有半套 static OO, 別妄想能用高階 OO 技巧,
如 composite pattern. 硬要做恐怕只會導致不必要的複雜度。
3. 在 ActiveRecord 裡,由於 Ruby 是高度 dynamic 的,
關於 model 間的連結卻依然有很大一部份由於 relational database 之故,
只能使用 static typing, 而且是用一些特殊技巧來辦到,非常不自然。
有種用 C 實做 OO 的感覺,與 Ruby 非常不對稱,讓我感到詭異。
也許正是因為如此,ActiveRecord 才把 migration 和 model 分離?
使得 model 裡不要直接看到如此詭異的東西。這樣我就些許能理解為什麼
要把 attribute 從 model 中抽離,使得要閱讀 model 時仍然得去看
migration 裡面的東西。
4. 還是等 OO database 吧 :o
反正我只是想要能有更方便更抽象的操作,效率問題在實驗上根本不是那麼重要。
不如去看看 nitro 的 Og (Object graph) 要怎麼用,聽說這可以直接
把 ruby object 存到 database 中,這樣就真的完全不用
relational database 的相關知識了 :D
relational database sucks...
ORM 並不能改變這一點,來個 SQL++ 吧!
0 retries:
Post a Comment
Note: Only a member of this blog may post a comment.