有沒有必要完全運行兩個應用程序只是爲了有兩種類型的數據庫的過度複雜的事情。這聽起來像你需要DataMapper。它將完全滿足您開箱即用的需求。獲得dm-rails gem將其與Rails集成。
在DataMapper中,與ActiveRecord不同,您必須提供有關底層數據存儲的所有詳細信息:它具有哪些字段,它們如何映射模型中的屬性,表名稱是什麼(如果在數據庫中),後端它使用等等。
閱讀文檔...有一桶代碼給你一個想法。
每個模型只是一個普通的舊Ruby對象。類定義只是混入DataMapper::Resource
,這使您可以訪問所有的DataMapper的功能:但是
class User
include DataMapper::Resource
property :id, Serial
property :username, String
property :password_hash, String
property :created_at, DateTime
end
你有大量的控制。例如,我可以指定此模型不存儲在我的默認數據存儲庫(存儲庫)中,並且存儲在其他配置的數據存儲區之一(如果您喜歡,可以是NoSQL存儲區)。
class User
include DataMapper::Resource
storage_names[:some_other_repo] = 'whatever'
# ... SNIP ...
end
大多數DM在類固醇上的行爲與ActiveRecord類似。你得到所有的基本知識,如發現記錄(除非你永遠不必使用原始字段名,如果你的模型抽象他們離開):
new_users = User.all(:created_at.gte => 1.week.ago)
你得到驗證,你觀察,你會得到總處理...然後獲得一堆其他的東西,如戰略性的急切加載(解決n + 1查詢問題),延遲加載大型文本/ blob字段,以及多個存儲庫支持。在我看來,查詢邏輯比AR好得多。只需閱讀文檔。他們是人性化的。不只是一個API參考。
缺點是什麼?那麼,許多寶石並沒有考慮到你可能沒有使用ActiveRecord,所以當你需要一些寶石時,有更多的搜索要做。不過隨着時間的推移,這會變得更好,因爲在Rails 3.x將DM與Rails無縫集成之前並不那麼容易。
...你能更具體嗎?我的意思是,我真的很舒服,mongoid,從Rails的角度來看也是如此。無論如何,我們還需要管理MySQL數據庫,以響應相同的應用程序。提前致謝。 – 2011-05-29 11:57:09
看到我的更新,並閱讀文檔...它都在那裏。內置多個數據庫/無SQL /無論你如何支持。 – d11wtq 2011-05-29 12:14:30
這裏是DataMapper的MongoDB適配器:https://github.com/solnic/dm-mongo-adapter – d11wtq 2011-05-29 12:18:25