该博客将涵盖那些可能阻止您选择 MongoDB 作为 NoSQL 数据库的罕见可能性。但是,您还会发现一些非常好的理由说明您应该选择 MongoDB!让我们已经解决了这个悬念,并快速回顾一下使用 MongoDB 构建应用程序的优缺点。
在软件应用程序开发领域,您在开始一个新项目时不再需要选择 RDBMS。为了提供更持久和可扩展的方法,创建了许多通常称为“NoSQL”的产品。其中一些产品提供可扩展性和更好的读/写性能,而其他产品则专注于更方便地表示数据。
MongoDB 的快速亮点:
-
提供快速敏捷的开发机会。帮助部署基于 Web 的应用程序,尤其是在 JavaScript 上。
-
MongoDB 集成在最多样化的第三方库和框架生态系统中。
-
MongoDB 具有灵活的模式,具有临时查询和低管理开销。
-
具有出色文档的 MongoDB 包含在所有主要编程语言的客户端库中。
-
与其他 NoSQL 数据库相比,MongoDB 速度更快且可扩展性更强。
选择 MongoDB 的理由
1. 面向文档和无模式: 与关系型数据库不同,MongoDB 使用基于 JSON(JavaScript 对象表示法)的文档存储模式,称为 BSON。当您必须将您的应用程序与其他一些平台集成时,这很有用。例如 YouTube API 以 JSON 格式输出数据,因此 MongoDB 非常适合处理这些请求。这也简化了域对象和数据库之间的映射。因此,MongoDB 成为具有多态数据的领域的完美选择,可用于快速软件开发,在这种情况下,您的运行时间总是很短,而且您无力花费大量时间进行模式设计。
2.水平扩展和高可用: 数据库可以智能水平扩展。数据库可伸缩性是通过 s harding 处理的,它以自己的方式非常独特。使用 MongoDB,您可以构建具有 复制 和 分片的 集群拓扑。为了提高可用性和一致性,MongoDB 可以复制数据并创建副本集。发生这种情况是因为复制过程提供了一致的读取缩放,分片促进了读写操作,而数据库虽然仍然具有一致的值,但可以智能地处理副本操作失败。
3. 基于位置的查询功能: 如果您必须开发具有基于位置的功能(如位置跟踪、基于位置的事件跟踪等)的应用程序,MongoDB 是一个很好的选择。MongoDB 是仅有的具有地理空间功能的 NoSQL 数据库之一。
4. 全面的查询和聚合框架: MongoDB 为您提供了强大的查询工具,如果您已创建任何索引,它可以利用合适的索引,并允许您查询嵌套/嵌入的对象和数组。 MongoDB 在压力下表现出色,尤其是在处理实时更新的临时查询方面。 Aggregation Framework 是一种专门为查询而设计的新机制,它需要 SQL 中的 MAX、AVG 或 GROUP BY 中的任何一个。该框架允许您运行一些临时聚合查询,而无需编写繁琐的 Map-Reduce 脚本。
5. 直观的架构: 与对等架构相比,MongoDB 每个副本只有一个主控,后者由于并发写入/写入冲突而非常笨拙。
生存还是毁灭?
我们知道 MongoDB 很棒。它非常适合需要处理庞大数据库的项目。该数据库最适合开发博客平台、电子商务平台、元数据存储和基于位置的应用程序。但是在考虑它之前还是应该三思而后行,让我们看看 MongoDB 什么时候可以成为你的障碍:
-
您最终可能会浪费大量时间来运行大型复杂的 Map/Reduce 作业。
-
您可能需要 JOIN 或必须计划多次使用“SUM”操作。
-
您会为大量图像或大块二进制数据而烦恼。
-
您可能需要一个排队系统。
总结一下,但首先将其与 CouchDB 进行对比
如果您准备好迎接这些挑战,您应该选择 MongoDB 作为您的 NoSQL 数据库。下面让我们看看开发人员在 CouchDB 和 MongoDB 之间做出选择时必须做出的一些次要和主要选择。
1. 如果你打算有一个移动组件,或者如果你需要你的桌面用户离线工作然后将他们的工作同步到服务器你必须选择 CouchDB。
2. 如果你希望你的代码只在服务器端运行,那么使用 MongoDB
3. 对于可用性和分区容错性,选择 MongoDB。
4. 对于一致性和分区容错性,选择 CouchDB。
5. 如果您需要动态查询并且更喜欢定义索引(而不是 map/reduce 函数),请选择 MongoDB。
6. 对于偶尔更改要运行预定义查询的数据,请选择 CouchDB。
所以基本上总结一下,为了复制到移动和桌面服务,你需要 CouchDB,如果你正在寻找性能、社区和工具,那么 MongoDB 将是一个明智的选择。
目前为止就这样了。继续阅读,继续编码!