關於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資料庫時的一些經驗與教訓。
相關文章
- 學習swoole之前,你需要知道的幾件事
- 在使用Redux前你需要知道關於React的8件事ReduxReact
- 關於響應式佈局,你必須要知道關於響應式佈局的幾件事
- 關於跨域你需要知道的跨域
- 關於GDPR,你需要了解的的5件事
- 關於CSS Transition,你需要知道的事CSS
- 關於redis,你需要了解的幾點!Redis
- 關於Android模組化你需要知道的Android
- 2021年做資料分析需要關注的幾件事
- [譯] 關於 Angular 動態元件你需要知道的Angular元件
- 關於webpack優化,你需要知道的事(上篇)Web優化
- 你需要知道的關於 Go 包的一切Go
- 關於Service你所需要知道內容(一)
- 關於遠端辦公,每個企業都需要知道的5件事
- 7個關於"this"面試題,你知道幾個?面試題
- [譯] 關於 `ExpressionChangedAfterItHasBeenCheckedError` 錯誤你所需要知道的事情ExpressError
- 【ASK_ORACLE】關於Oracle索引分裂你需要知道的Oracle索引
- 關於SCN需要知道的事
- 關於神經網路:你需要知道這些神經網路
- 關於進入遊戲行業你需要知道的事遊戲行業
- 關於 v-model 你需要知道的這一切!
- 關於Vue v-model你需要知道的一切Vue
- 新手工程師需要知道的 7 件事工程師
- 關於MongoDB的幾點注意事項UMMongoDB
- 關於專案採購管理,這些你需要知道
- 關於 iOS 上的 PWA 應用,你需要知道些什麼?iOS
- [譯] 關於 Yarn 和 npm 你所需要知道的一切YarnNPM
- 關於理財你最應該知道幾個問題
- 關於Mysql事務,你必須知道的幾個知識點!MySql
- 你需要知道的幾類npm依賴包管理NPM
- 成功部署AIOps需要知道的7件事AI
- 需要提醒你關於 golang 中 map 使用的幾點注意事項Golang
- 關於 jwt ,你應該知道的JWT
- 關於註解我們需要知道的
- 關於 TDengine 3.0 資料訂閱,你需要知道這些
- [譯] 關於 Angular 的變化檢測,你需要知道的一切Angular
- React 效能最佳化,你需要知道的幾個點React
- 使用Mac便箋?你需要知道的幾個快捷鍵Mac
- 關於Go,你可能不注意的7件事Go