2011-11-13 192 views
0

我正在研究我的第一個mongodb項目,並且試圖在Mongodb和關係數據庫中圍繞模式設計進行思考。Mongodb模式設計建議

我想創建一個蔬菜數據庫從幾個RSS提要。這些Feed中的每一個都有一個蔬菜名稱標籤供我使用。

1)我得到2蔬菜的營養信息

2)3日益增長的飼料蔬菜/養殖信息

3)4博客文章

只有500種不同的蔬菜,飼料原料I獲取信息。

會在這種情況下最好的模式是:

A)有一個收集每個蔬菜,有子集營養,生長和博客文章? B)或者有一個用於營養信息的集合,一個用於農業信息,一個用於博客文章?

我設想用戶主要查詢蔬菜名稱,但也可以在其他字段上查詢。

+0

素食者的某種靜態信息(例如「萵苣每千克20kcal」)的營養信息,還是來自多個來源(例如,來自該來源的不同來源的12組營養信息)?增加信息的同樣的問題。如果它是靜態的,我會同意卡爾文。如果沒有,我會去選項B. – mnemosyn

+0

嗨它彙總了幾個來源。 – CodeMonkeyB

回答

0

MongoDB是無模式的 - 所以您不必像關係數據庫那樣思考這個問題。起初我知道它很混亂。此外,MongoDB不支持「子集合」 - 您擁有集合中的文檔(單個實體)。

我實際上會選擇這個:

C)兩個集合。蔬菜集合本質上是一個複雜的數組結構,不僅包含關於蔬菜的信息,還包含種植/營養信息。只需確保您需要搜索的每件作品create an index即可。如果您不能使用已存在的博客引擎,則爲博客文章單獨收集。

這就是NoSQL的美麗 - 只要您編制索引 - 您可以讓每個實體(在Mongo中稱爲文檔)非常複雜。希望這可以幫助。

+1

注意MongoDB索引:它可以在每個查詢中只使用一個索引**:如果僅僅稍微減少結果集,那麼單獨使用每個字段的索引不會有太大的幫助。 – mnemosyn