为什么要选择MongoDB?

Posted 小象

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么要选择MongoDB?相关的知识,希望对你有一定的参考价值。

翻译:孙薇

原文链接:https://dzone.com/articles/why-mongodb-is-worth-choosing-find-reasons


小象科技原创作品,欢迎大家疯狂转发;

机构、自媒体平台转载务必至后台留言,申请版权。

为什么要选择MongoDB?

本文包括了那些罕见地可能会阻碍你选择MongoDB作为NoSQL数据库的可能,不过仍有一些很好的理由会促使你选择MongoDB。我们依次看一下现有的疑难问题,快速讨论一下使用MongoDB构建应用的利弊。

在软件开发领域,关系数据库管理系统(RDBMSes)不再是新项目唯一的备选方案了,更为持久稳妥且具有可扩展性的方案是那些通常被称为NoSQL数据库的产品。在这些产品中,其中一些具有可扩展性和更好的读写性能,而另一些则注重于更方便地展现数据。


MongoDB重点快速一览:


l 提供快速和敏捷开发的机会。协助部署基于web的应用程序,尤其是JS方面的。

l MongoDB集成了大多各类第三方函数库与框架的生态系统。

l MongoDB模式灵活,支持即席查询(ad hoc querying),同时保持低管理开销。

l MongoDB的文件编制十分优秀,支持保存在所有主流编程语言所写成的客户端库里。

l MongoDB比其他NoSQL数据库速度更快,同时可扩展性更强。


选择MongoDB的原因


1、 面向文档且架构更为灵活:不同于关系数据库,MongoDB使用了以JSON(JS对象表示法)为基础的文档存储模式,这种模式被称为BSON。在必须将应用与一些其他平台相集成的情况下,这种模式很有好处。比如YouTube的API就是以JSON格式输出数据的,因此MongoDB在处理这些请求时就会十分得心应手。同时,这种模式还简化了领域对象与数据库之间的映射关系。因此,对于那些开发时间总是很紧张,不能在数据库设计上花费大量时间的多态性数据领域快速软件开发来说,MongoDB就成为了很好的选择。

2、水平可扩展性与高可用性:数据库可以智能地水平扩展。数据库的可扩展性是通过其特有的分片(sharding)方式来实现的,使用MongoDB可以通过复制与分片技术构建集群拓扑(clustered topology)。为了增强可用性与一致性,MongoDB可以在创建副本集(replica set)的同时复制数据。这是因为复制过程提供了持续读取的可扩展性,分片功能让读写操作更容易,在结果一致的前提下智能处理复制中的故障。

3、基于位置的查询功能:如果你打算开发的应用包含位置追踪类、基于位置的事件追踪等位置功能的话,由于MongoDB是具有地理空间信息功能的NoSQL数据库,它会是很好的选择。

4、综合查询与聚合框架:MongoDB利用现有且合适的索引,提供强大的查询功能,并允许用户查询嵌套/植入对象与数组。MongoDB在压力下表现良好,尤其在处理实时更新的即席查询之时。聚合框架是一种新的机制,专为查询所设计,要求SQL实现任何MAX、AVG或者GROUP BY操作。无需累赘的Map-Reduce脚本,此框架允许用户运行某些即席聚合查询。

5、直观的架构:MongoDB每个副本只有单一的master,相对来讲,点对点架构由于并行写入或写入冲突而显得非常累赘。


用还是不用呢?


我们知道,MongoDB很出色,对于需要处理庞大数据库的项目来说非常不错,最适合开发博客平台、电子商务平台、元数据存储与基于位置的应用程序。不过在使用它之前,仍需考虑到MongoDB可能出现的故障:

l 可能会在运行大型、复杂的Map/Reduce工作上浪费大量的时间;

l 很多时候需要使用JOINs语句,或者得有使用“SUM”操作的计划;l 会被大量镜像或大段二进制数据所困扰;

l 可能需要排队系统。


在下结论之前,先将其与CouchDB进行一下对比。


如果已做好准备接受这些挑战的话,那么选用MongoDB作为NoSQL数据库吧。下面我们来看一下在选择CochDB或者MongoDB之前,开发人员必须决定的一些重要与次要问题。

1、如果你打算使用移动组件,或者需要允许桌面用户离线工作,稍候再同步到服务器的话,就选择CouchDB。

2、如果只需代码在服务器端运行,选MongoDB好了。

3、想要满足可用性与分区容错性,MongoDB更有优势。

4、想要满足一致性与分区容错性,CouchDB是正确的选择。

5、如果需要动态查询,或者更需要定义索引(并非map/reduce功能)的话,选MongoDB。

6、偶尔需要对运行预定义查询的数据进行改动的话,选CouchDB。


基本上作为总结,针对复制到移动或者桌面服务的需求,选择CouchDB;需要性能、社区与工具的话,MongoDB才是明智之选。本文到这里就结束了,读者们请继续多多阅读、多多coding吧!










下一个门徒就是你

赶快来报名吧

大数据专家在这里

高薪Offer等着你


详细了解、报名入口点击“阅读原文”



以上是关于为什么要选择MongoDB?的主要内容,如果未能解决你的问题,请参考以下文章

既然有MySQL了,为什么还要有MongoDB?

最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树

为什么我们选择了MongoDB?

我为什么放弃MySQL?最终选择了MongoDB

为什么要从MongoDB迁移到Elasticsearch?

MongoDB 初见指南