Azure DocumentDB對比MongoDB


(此文章同時發表在本人微信公眾號“dotNET每日精華文章”)

今天推薦的文章對Azure DocumentDB和MongoDB的進行了比較,也給出了一些使用建議。

我想很多朋友都應該知道Azure,不過估計也有很多人不知道微軟還推出了自己的NoSQL數據庫產品。當然這個產品僅限以PaaS的方式來在Azure中提供。DocumentDB去年秋天開始預覽,這個正式上線(按照Azure的說法是Generally Available)。當然,在NoSQL市場上,混戰激烈,尤其MongoDB占了將近一半的市場份額。本文作者David Green特意拿DocumentDB同MongoDB進行了比較。

相同點

他首先分析了兩者的相同點。NoSQL數據庫通常分為如下幾種:Key-Value存儲,列存儲,圖存儲,文檔存儲,或者混合模型。而DocumentDB和MongoDB都同屬文檔存儲類別,都具備如下特點:使用分區來容錯,反范式組織數據集合來避免傳統關系結構,模仿面向對象編程中的實體對象來突出人可讀的數據格式。

除了上面的這些共同特點外,兩者都具備一些特別的優勢。首先,兩者都支持多種編程語言的客戶端SDK,DocumentDB支持主流的.NET、Node.js、JavaScript、Python和Java,當然MangoDB的支持更為豐富。其次,兩者都使用了類似的數據格式——JSON(MongoDB使用的是JSON的擴展BSON)。最后,兩者使用的通用語都是JavaScript。

不同和優勢

David在談完兩者的相同點之后,着重介紹了不同之處和DocumentDB的某些優勢。

  • PaaS:DocumentDB是直接以PaaS提供的。這樣帶來的好處是配置、管理、維護都更為簡單。MongoDB則需要自行部署到VM中,需要花費成本運維。由於PaaS有諸多好處,作者都建議即使要使用MongoDB都最好使用第三方搭建好的現成PaaS。
  • 伸縮能力:由於DocumentDB是PaaS驅動的架構,所以其處理水平擴展的方式和MongoDB完全不同。DocumentDB分區后無需管理復制,MongoDB還需同時處理復制。這點也是得利於DocumentDB后台依賴於Azure的伸縮能力。
  • 原生REST接口:雖然兩者都為開發人員提供了多種語言的SDK,但是DocumentDB是原生提供REST接口的,其實SDK也是REST接口的包裝。相反,MongoDB沒有原生REST接口,不過其有Wire協議和元數據驅動(基於TCP),可以語言無關的訪問到數據。不過在有些情況下基於HTTP的REST接口顯然更加方便(比如物聯網)。
  • 數據交換格式:DocumentDB使用JSON更加標准(RFC 7159ECMA-404)。
  • 索引處理:兩者雖然都是基於B-Tree來進行索引,不過DocumentDB提供了兩類索引Hash和Range,Range暫時不支持時間字段的索引,DocumentDB也不支持地理位置信息的索引而是依靠Azure Search來解決這個問題。從產品的角度看,在這點上MongoDB具備優勢,不過實際使用過程中不會有太大的問題。
  • 異步處理:由於DocumentDB原生提供REST接口,而這些接口或者.NET SDK都提供了async/await的支持,以提供並發處理能力。
  • 定價:雖然MongoDB是開源免費,不過運維的費用也不會少。DocumentDB是基於使用量付費,不過費用不高,且可以通過DreamSpark和BizSpark來獲取Azure免費訂閱。
  • 一致性:MongoDB的一致性可以配置來是否啟用一致性,DocumentDB可以配置4級一致性等級。
  • 二進制大對象存儲:MongoDB依賴GridFS來實現Blob的存儲,DocumentDB依賴Azure Blob Storage。
  • 監控:Azure為DocumentDB提供了豐富的監控指標,MongoDB通過Mongo Monitoring Service (MMS)來跟蹤宿主主機的情況。
  • 可編程性:兩者都支持JavaScript,DocumentDB的.NET SDK對LINQ支持更好,不過對debug支持不好(主要沒有本地模擬器)。
  • 其他的不同:DocumentDB對聚合操作暫時有一定限制,無服務端排序,工具還不夠豐富。MongoDB情況要稍好些。

最后,作者給出了一些使用上的建議:DocumentDB可以滿足NoSQL的基本需求,不過文檔和應用案例都還需要繼續改善。不管怎么樣,DocumentDB可以讓你(在使用Azure的情況)很快進入NoSQL的世界。

由於原文信息量巨大,更多詳情還是“閱讀原文”。

原文地址:http://justazure.com/mongodb-vs-azure-documentdb/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM