2011-02-08 84 views
2

我真的在尋找什麼類型的數據庫我應該使用的建議。如果我能舉一個例子APP,希望你能告訴我你認爲什麼是正確的方法。MongoDB或MySQL或兩者都在一個Rails應用程序

因此,可以說我想創建一個牀&早餐(B &乙)的預訂系統。因此,在傳統的RBDMS中,我會擁有擁有多個位置的業主類。每個位置都有功能,並且還會有可用性日曆。另外每個地點都有自己的預訂等等。

我喜歡MongoDB的想法,你可以擁有自己的功能位置,預訂等自己的記錄,因爲他們只屬於那個位置。但是,在我認爲這種情況下,例如每個預訂都會有發票,這些記錄也屬於預訂的人等等。爲這樣的應用程序構建管理區域會是一場噩夢嗎?

對於這種類型的應用程序以及使用何種類型的數據庫,您會採取什麼措施?

期待您的建議。

回答

0

聽起來像是一個非常棒的MongoDB應用程序。看起來這個決定主要取決於你和你最熟悉的數據庫。

您不應該害怕在您的應用程序中混用和匹配MongoDB和MySQL。在構建模型時,如果希望在MongoDB中存儲對象時希望將對象存儲在MySQL和MongoMapper或MongoID中,則可以使用ActiveRecord :: Base。要小心你如何管理這兩種模式之間的關係。

完整免責聲明:我爲10gen工作。但是我會開始使用MongoDB,我想你會發現,與你一起工作會很快樂,你很快就會忘記MySQL。

+0

謝謝賈裏德,但即使你採取更簡單的方法可以說一個博客的評論。也許在網站上您可能想列出最新的評論,而不管博客。你可以用MongoDB做這樣的任務嗎? – Lee 2011-02-08 16:26:17

+0

絕對是。這取決於你如何設計你的模式。這裏有一篇關於這個主題的精彩文章:http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails#MongoDBDataModelingandRails-ModelingComments – jared 2011-02-08 16:43:04

1

我不會推薦在同一個應用程序中使用MySQL和MongoDB - 比它的價值更麻煩。 MongoDB能夠處理任何像你提到的那樣簡單的Rails應用程序,我認爲它比MySQL更適合這種應用程序。

只要注意MongoID和MongoMapper不是ActiveRecord的確切端口 - 它們有相似之處,但根本不同,因爲它們背後有根本的數據庫。你可以創建一個與MySQL有關係的應用程序,因此一個帶有評論或預訂應用程序的博客將不成問題。例如,使用MongoID,您會希望使用'references_many,referenced_in'方法而不是'embeds_many,embedded_in'(http://mongoid.org/docs/associations/)。

2

我已經寫了幾個混合和匹配關係數據庫和非關係數據庫(MySQL,Mongo,PostGRES和Riak)的應用程序。 Rails實際上並不難,我甚至寫了一個庫來創建不同類型的數據庫之間的關係(因此你的Ripple模型可以在用戶表在MySQL中的「belongs_to:user」)。

您應該始終讓您的需求推動決策。如果你更願意將它們保存在關係數據庫中,或試圖將可能未規範化的報告信息推送到MySQL表中,那麼不要浪費時間讓用戶進入Mongo。分析你存儲的實體以及它們之間的關係將推動你的實現。

相關問題