2012-02-17 63 views
1

我有一個收藏品名爲訪問,其中我保存包含訪問推薦人,頁面,關鍵字,日期等信息的文檔。如何在Mongo中使用收藏品

我認爲關鍵字可以被認爲是它自己的一個集合,相同的頁面。 這將迫使我創建不同的收藏,但我不確定這是否是正確的方式。

在傳統的數據庫模型中,它們將顯然存儲在與FK連接的單獨表中。

  • 但是mongo呢?
  • 鍵是不同的文件一遍又一遍地重複相同的值,並在這種情況下創建一個集合是一個很好的做法?
+0

需要運行什麼類型的查詢?你會不會更新文件?什麼數據是「關鍵字」和「頁面」。如果這只是一個訪問日誌類型的表,那麼一個集合「訪問」看起來很好(關鍵字和頁面兩個字符串字段,關鍵字可能是一個數組)。 – Thilo 2012-02-17 08:56:57

+0

我將根據關鍵字名稱,頁面名稱等進行報告。我不會更新。關鍵字是唯一的訪問。 – danidacar 2012-02-17 09:02:55

+0

從你的答案我明白數據重複允許在noSQL? – danidacar 2012-02-17 09:03:27

回答

3

MongoDB的好處之一是它能夠嵌入文檔。

訪問集合中的文檔包含關鍵字和頁面子文檔是完全合理的。

經驗法則是嵌入文件的速度,規範文件的一致性。

如果您在訪問文檔中嵌入了關鍵字和頁面文檔,那麼您的應用程序只需進行一次查詢即可檢索所有相關信息。 (速度)

但是,缺點是如果更新了關鍵字和/或頁面信息,則必須在每個出現的其他訪問文檔中對其進行更新。如果許多不同的訪問文檔將依賴於相同的關鍵字和頁面文檔,最好將它們保存在單獨的集合中,尤其是如果它們將經常更改。 (一致性)

這當然是一個泛化,最終由您決定,應用程序開發人員可以決定哪一種最適合您的獨特情況。有上嵌入與在蒙戈文件名爲「架構設計」 http://www.mongodb.org/display/DOCS/Schema+Design

您也可以在文章「MongoDB的數據建模和Rails」是有益的鏈接附加信息: http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails 的例子Rails中給出,但文檔設計理論適用於任何語言。

祝你好運!