導語:正在和打算使用MongoDB的開發者,需要了解MongoDB的一些限制。
Henrique Lobo Weissmann 是一位來自于巴西的軟件開發者,他是 itexto 公司的聯合創始人,這是一家咨詢公司。近日,Henrique 在博客上撰文談到了關于 MongoDB 的一些內容,其中有些觀點值得我們,特別是正在和打算使用 MongoDB 的開發者關注。
到目前為止,MongoDB 在巴西是最為流行的 NoSQL 數據庫(至少根據關于 MongoDB 的博客數量以及文章所判斷)。MongoDB 是個非常棒的解決方案,不過困擾我們的是很少有人了解過關于它的一些限制。這樣的事情正在不斷上演:人們看到 MongoDB 的限制,心里卻認為這些是它的 Bug。
本文列舉了頗讓作者困惑的一些 MongoDB 限制,如果你也打算使用 MongoDB,那么至少要提前了解這些限制,以免遇到的時候措手不及。
消耗磁盤空間
這是我的第一個困惑:MongoDB 會消耗太多的磁盤空間了。當然了,這與它的編碼方式有關,因為 MongoDB 會通過預分配大文件空間來避免磁盤碎片問題。它的工作方式是這樣的:在創建數據庫時,系統會創建一個名為[db name].0 的文件,當該文件有一半以上被使用時,系統會再次創建一個名為[db name].1 的文件,該文件的大小是方才的兩倍。這個情況會持續不斷的發生,因此 256、512、1024、2048 大小的文件會被寫到磁盤上。最后,再次創建文件時大小都將為 2048Mb。如果存儲空間是項目的一個限制,那么你必須要考慮這個情況。該問題有個商業解決方案,名字叫做 TokuMX,使用后存儲消耗將會減少 90%。此外,從長遠來看,repairDatabase 與 compact 命令也會在一定程度上幫到你。
通過復制集實現的數據復制效果非常棒,不過也有限制
MongoDB 中數據復制的復制集策略非常棒,很容易配置并且使用起來確實不錯。但如果集群的節點有 12 個以上,那么你就會遇到問題。MongoDB 中的復制集有 12 個節點的限制,這里是問題的描述,你可以追蹤這個問題看看是否已經被解決了。
主從復制不會確保高可用性
盡管已經不建議被使用了,不過 MongoDB 還是提供了另外一種復制策略,即主從復制。它解決了 12 個節點限制問題,不過卻產生了新的問題:如果需要改變集群的主節點,那么你必須得手工完成,感到驚訝?看看這個鏈接吧。
不要使用 32 位版本
MongoDB 的 32 位版本也是不建議被使用的,因為你只能處理 2GB 大小的數據。還記得第一個限制么?這是 MongoDB 關于該限制的說明。
咨詢費非常非常昂貴(至少對于巴西的開發者與公司來說如此)
我不清楚其他國家的情況,不過至少在巴西 MongoDB 的咨詢費是個天價。對于“Lightning Consult”計劃來說,每小時的價格是 450,00 美金,而你至少需要購買兩個小時的,換句話說,對于任何一家公司來說,每次咨詢的價格至少是 900,00 美金。相比于 RedHat 和 Oracle 來說,這個價格太高了。
差勁的管理工具
這對于初學者來說依然是個讓人頭疼的問題,MongoDB 的管理控制臺太差勁了。我所知道的最好的工具是 RoboMongo,它對于那些初次使用的開發者來說非常趁手。
了解官方的限制
讓我感到驚訝的是,很少有人會查詢關于他們將要使用的工具的限制。幸好,MongoDB 的開發人員發布了一篇 MongoDB 所有限制的博客,你可以提前了解相關信息,避免在使用過程中難堪。
各位讀者,現在使用 MongoDB 的公司也越來越多了,不妨與大家分享你在使用這個 NoSQL 數據庫時的一些經驗與教訓。