2012-03-30 134 views
11

我想更多地瞭解MongoDB的系統和數據庫體系結構。MongoDB數據庫體系結構

我想了解MongoDB如何存儲和檢索文檔。如果它全部在內存中等。

MongoDB和Oracle之間的比較分析將是一個獎金,但我主要關注於瞭解MongoDB體系結構本身。

任何指針都會有幫助。

+0

我不能宣稱自己是專家,但它肯定不會寫入到磁盤(不知道什麼時候/頻率/是否始終刷新/是否可以明確地衝洗)。事實上,它佔據了相當大的空間(可能會做它的索引,我猜測) – 2012-03-30 18:41:55

+0

作爲一般性的,真正意義上的比較,我聽到了它與傳統關係數據庫(如Oracle或MS SQL Server或MySQL)是交易性/可靠性與極端規模之一。如果你的一些數據被丟棄,你不會在晚上失去睡眠,像Mongo這樣的NoSQL選項是非常高性能的,並且可以擴展到很多併發用戶。如果您*需要*保證您的數據,但現在您可能更適合使用事務性數據庫。 – 2012-03-30 18:44:36

+0

這個問題可能比SO規定的問題準則稍寬。我建議你去mongodb文檔並閱讀他們提供的材料。特別感興趣的是: http://www.mongodb.org/display/DOCS/Architecture+and+Components, http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+圖表, http://www.mongodb.org/display/DOCS/Production+Notes 我希望這可以幫助。 – marr75 2012-03-30 22:00:31

回答

18

MongoDB內存映射數據庫文件。它允許操作系統控制這一點,並將最大數量的RAM分配給內存映射。當MongoDB更新並讀取數據庫時,它正在讀取和寫入RAM。數據庫中文檔的所有索引也保存在RAM中。 RAM中的文件每60秒刷新一次到磁盤。爲防止斷電時數據丟失,默認情況下打開日誌功能運行。日誌文件每隔100ms刷新一次磁盤,並且如果使用掉電來使數據庫恢復到一致狀態。 mongo的一個重要設計決定是RAM的數量。您需要計算出工作集的大小 - 即,如果您要讀取和寫入數據庫中最近10%的數據,那麼這10%是您的工作集,應該保存在內存中以獲得最佳性能。因此,如果您的工作集爲10GB,您將獲得10GB以獲得最佳性能 - 否則當內存頁從磁盤分頁到內存時,查詢/更新會運行得更慢。 mongoDB的其他重要方面是用於備份的複製和用於縮放的分片。 有很多偉大的在線學習資源。 MongoDB是免費的並且是開源的。

編輯: 這是一個好主意,檢查出的教程 http://www.mongodb.org/display/DOCS/Tutorial 和手動 http://www.mongodb.org/display/DOCS/Manual 和管理區是太有用 http://www.mongodb.org/display/DOCS/Admin+Zone ,如果你厭倦讀那麼發言都值得一試。 http://www.10gen.com/presentations

+0

感謝您的信息。我實際上是在尋找你的答案的信息。獲得類似的細節將會很棒。你能指出我有任何具有MongoDB內部設計/體系結構等的在線資源嗎? – Ayusman 2012-03-30 19:05:54

+0

用於讀取/查詢縮放的複製(不僅僅是備份)。 – 2012-03-30 19:07:48

+0

你認爲這回答你的問題還是需要更多幫助? – Gregor 2012-04-02 13:21:10