MongoDB 最佳實務

來源:互聯網
上載者:User

已經有很多關於 NoSQL 選擇的文章了。影響你選擇資料庫的因素有:讀/寫操作的輸送量,持久性,一致性,延遲性等等。Nathan Hurst 的文章“Visual Guide to NoSQL System”  很好的總結了這一點。

選擇合適的NoSQL資料庫並不是本文要討論的內容,但是請你在使用NoSQL前做一些調查。沒有一個資料庫可以適合所有情況。這篇文章假設你選擇了MongoDB。


NoSQL 通用的最佳實務

1. 徹底的測試

類比你的生產環境,包括流量來進行測試。假如你的測試環境不能達到生產環境的壓力,你將無法發現效能瓶頸和架構缺陷。

2. RDBMS 並不一定能遷移到 NoSQL

任何在RDBMS上工作的好好的東西並不一定能在MongoDB上工作。所以請你做好心理準備,仔細對比資料庫的功能。為了更好的效能,你應該根據 10gen 的建議來設計你的文檔和查詢。你的應用也許需要重新架構以便於遷移到非關係型資料庫。

3. 考慮你的資料的一致性和持久性需求

這一點很重要!MongoDB通過多執行個體備份來提解決資料持久性問題。我們不推薦你在生產環境中只使用一個MongoDB執行個體。你必須理解為什麼要這麼做。

MongoDB 最佳實務

1. 始終啟用備份

備份能保證你應用的高可用性。假如你的一個節點down了,第二節點可以迅速啟用,你的應用不會中斷。

2. 使用最新版本

10gen在不斷的發布更新,特別是2.0.x包含了很高的效能提升和並行改進,索引改進和bug修複。如果你還在使用 1.6.3的話,你應該儘快升級。

3. 不要在32位的系統上跑MongoDB

MongoDB在32位系統上有“2.5GB資料限制”。它的儲存引擎使用記憶體映射來讀取檔案以獲得更好的效能。這個功能依賴於記憶體定址,而32位系統的記憶體不能超過4GB。

4. 預設開啟日誌

MongoDB支援資料庫操作的提前日誌(write-ahead journaling)。這個功能有助於災難恢複。

5. 注意你資料檔案的位置

你應該保證你的MongoDB的資料檔案是儲存在物理磁碟機上,例如 /data/mongodb。當然你也可以使用虛擬磁碟機,但是必須非常小心。因為它有可能會影響到你的叢集架構。我們建議你使用 Amazon EBS 來存放你的資料庫檔案。

6. 保證足夠大的記憶體

為了保證整個叢集的效能,你要確保整個所有MongoDB的工作執行個體(working set)包括索引可以完全裝入記憶體。如果你發現“page faults”的機率在增加,很有可能mongoDB的資料量超出了你的記憶體。在這種情況下你有兩種選擇:加記憶體,或者建立分區叢集(Sharding)。我們建議你先考慮加記憶體。

7. 保持 65% 以內的壓力

如果你發現你的叢集壓力達到了65%,那麼你應該考慮擴大你的叢集了。通常,你應該保證資料庫壓力低於65%。

8. 特別小心分區叢集

分區叢集需要你充分理解你應用的資料訪問方式。你應該充分瞭解MongoDB的分區工作方式,並且確認你確實需要這個功能。還有,選擇一個分區鑰匙(sharding key)是對於效能也是很重要的。

設定管理員對於一個叢集的健康也是很重要的。在分區叢集的環境中,你必須有三台設定管理員。永遠不要刪除設定管理員的資料,時常備份這些資料。這些設定管理員也需要64位的環境。還有,不要把三台設定管理員放在同一台機器上!

9. 使用 Mongo MMS 來圖形化的監控你的資料庫

如果你還沒有使用 Mongo MMS的話,我強烈推薦這個工具。10gen 正在大力開發這個產品。它提供了一個非常友好的可視化的介面來監控你的MongoDB叢集。

10. MongoDB 資源

技術總是在不斷進步,你需要市場關注這些資訊:
Documentation: http://www.mongodb.org/display/DOCS/Home
Google Group: http://groups.google.com/group/mongodb-user
Bugs: https://jira.mongodb.org
Blog: http://blog.mongodb.org/

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.