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/

时间: 2024-10-11 23:07:10

Azure DocumentDB对比MongoDB的相关文章

Azure DocumentDB 正式发布

DocumentDB 简介 一种 NoSQL JSON 数据库 Azure DocumentDB 提供完全托管的 NoSQL 数据库服务,高度可用,自动缩放,开发简易,可以加速并预测性能.它适合诸如 Web.Mobile.Gaming 和 IoT 等需无缝缩放的应用程序. 本篇探讨问题如下: 什么是 DocumentDB? DocumentDB 如何管理数据? 如何使用 DocumentDB 进行开发? 后续步骤有哪些? 什么是 Azure DocumentDB? DocumentDB 是真正无

Azure CosmosDB (11) MongoDB概念

<Windows Azure Platform 系列文章目录> Azure Cosmos DB兼容MongoDB的API,下表将帮助我们更容易理解MongoDB中的一些概念: SQL概念 MongoDB概念 说明 Database Database 数据库 Table Collection 数据表/集合 Row Document 数据记录行/文档 Column Field 数字字段 Index Index 索引 Table Join   表连接,MongoDB不支持 Primary Key P

上手DocumentDB On Azure (一)

什么是Document? DocumentDB基于PaaS(Platform-as-a-Service),是Microsoft配置在Azure上的一个数据服务 它通过:数据库账户,数据库,数据集来发挥作用.一个数据库账户下可以拥有多个数据库,每个数据库有可以拥有多个数据集合. 如何配置 DocumentDB 中的一致性级别:DocumentDB配置中有这个设置,暂且不管它是干什么的,先用默认再说. DocumentDB 中的一致性级别 来自 <https://www.azure.cn/docum

上手DocumentDB On Azure(四)

因为同时学习python crawler,所以临时决定把asp.net app的部分先拿出来,顺便学习和熟练DoucmentDB相关知识. 本节教程参考: ASP.NET MVC 教程:使用 DocumentDB 开发 Web 应用程序 来自 <https://www.azure.cn/documentation/articles/documentdb-dotnet-application/> 准备工作包括: 确保你已经有了Azure账户; 在你的Azure上已经有可供使用的DocumentD

上手DocumentDB On Azure (二)

无需像传统的JsonDataSerializer一样将每一个属性标上[DataMember]Attribute,只需重写Tostring方法,Newtonsoft.Json.JsonConvert.SerializeObject(this)会自动将Object属性写成Json文档,但需为键属性指定 [JsonProperty(PropertyName = "id")]. 注意: 当DataObject存在继承关系时,JsonConvert只会序列化当前类的属性,而忽略其父类的属性,因此

Azure上找不到MongoDB?不妨试试Azure Cosmos DB

最近被问到Azure上的MongoDB在哪里? 答:Azure上目前没有Paas层的Mongo DB可用,但仍有两种方式使用Mongo DB, 1是使用Iaas层的虚拟机构建MongoDB集群,2.是使用更强大的Paas层的Cosmos DB. Azure Cosmos DB是多区域  分布式  多模型数据库服务. 您可以观看以下视频内容了解Azure Cosmos DB或者跳过视频阅读文章: https://v.qq.com/x/page/r3050khlbou.html 多区域: 可以一键将

MongoDB资料汇总(转)

原文:MongoDB资料汇总 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希望能对大家有用. 最后更新时间:2013-04-22 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoDB的介绍PPT MongoDB:下一代MySQL? 写给Python程序员的MongoDB介绍 又一篇给Python程序员的

MongoDB随笔基本操作

一.MongoDB数据结构与关系型数据库比较 逻辑结构对比MongoDB              关系型数据库文档(document)        行(row)集合(collection)         表(table)数据库(database)    数据库(database) 二.mongod 参数说明最简单的,通过执行 mongod 即可以启动 MongoDB 数据库服务,mongod 支持很多的参数,但都有默认值,其中最重要的是需要指定数据文件路径,或者确保默认的/data/db

MONGODB全面总结

关于Mongodb的全面总结,学习mongodb的人,可以从这里开始! 分类:            MongoDB2013-06-08 09:5610213人阅读评论(0)收藏举报 目录(?)[+] BSON 效率 传输性 性能 写入协议 数据文件 名字空间和盘区 内存映射存储引擎 其他 MongoDB的架构 MongoDB的特点 MongoDB的功能 MongoDB的局限性与不足 适用范围 MongoDB的不适用范围 要点 MongoDB分布式复制 MongoDB语法与现有关系型数据库SQL