我需要幫助在mongo中建模我的數據。大多數我的經驗都在關係數據庫中,我剛開始使用w/mongo。我正在模擬不同事件的數據。Mongodb:多個集合或一個大集合w/index
- 每個'事件'具有相同的字段。
- 每個「事件」將有數百到數百萬個文檔/行
- 事件是動態的,即根據需要創建新事件。即 可能會創建一個新的'2016年夏季奧運'活動。
可能最重要的是,當處理事件(CRUD操作)時,用戶必須指定一個事件名稱。
到目前爲止,我可以看到幾種方法來完成此操作,但我不想在設置數據模型時出現「錯誤」方式的重大錯誤。
1)具有所有事件數據的「事件」集合。 「事件」名稱索引。查詢將如下所示:
db.events.find({event: 'Summer Olympics 2012');
{event: 'Summer Olympics 2012', attributes: [{name: 'joe smith', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'jane doe', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'john avery', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'ted williams', .... }
db.events.find({event: 'Summer Olympics 2013'})
{event: 'Summer Olympics 2016', attributes: [{name: 'steve smith', .... }
{event: 'Summer Olympics 2016', attributes: [{name: 'amy jones', .... }
2)每個新事件的集合,帶有集合以跟蹤所有事件名稱。事件名稱不需要索引,因爲每個事件都存儲在不同的集合中。
// multiple collections, create new as needed
db.summer2012.find() // get summer 2012 docs
db.summer2016.find() // get summer 2016 docs
//'events' collection
db.events.find() // get all events that I would have collections for
{name: 'summer2012', title: 'Summer Olympics 2012};
{name: 'summer2016', title: 'Summer Olympics 2016};
#1我有點擔心,一旦我達到每100個事件與百萬計的「事件」是查找記錄將是緩慢的,即使其中一個事件只有500個文件。
對於#2我每次都創建一個新的集合並在事件出現的時候,通過這裏'mingo'模式來模擬這個mongo模型?
歡迎任何意見/想法,因爲我真的不知道哪一個最終會表現更好,或者如果其中一個會讓我陷入更困難的道路。我環顧四周(包括蒙戈的網站),我真的找不到具體的答案。
這些屬性是什麼?人?那麼你有沒有參加過活動的人?這些人是否在您的系統中註冊?如果你剛剛開始在MongoDB,看看這個:https://code.google.com/p/morphia/wiki/QuickStart – rbento 2013-03-09 19:23:47
對不起壞例子:(真的是它的地理空間數據。所以我會有一個x ,y代表每個文檔,用戶可以很容易地在地圖上添加/刪除一個地圖的當前位置,並附上關於該地點的一些元數據,例如圖片/視頻,標題,天氣等等。所以想象一下,奧運會的一羣人添加新數據人員/地點相同差異問題是因爲每個「事件」可能有數百萬個文檔,如果每個獨立事件都存在於自己的集合中,或者將所有事件文檔放入同一個集合中?一個集合包含1000萬個文檔,每個文檔都有大約100萬個文檔 – lostintranslation 2013-03-09 19:31:05
也是剛開始使用Mongo,我認爲手冊的這一部分很重要:http://docs.mongodb.org/manual/applications/indexes/它讓我感受到了這種印象MongoDb db的設計可以,而且應該和db設計非常相似,所以我會的首先選擇脈搏,特別是如果你打算做「交叉事件」quesries – 2013-03-09 19:35:59