简介
...大约 4 分钟
什么是 MongDB
MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源 NoSQL 数据库系统。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
这会让曾经使用过关系型数据库的人比较容易上手
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB 的查询功能非常强大
不仅支持大部分关系型数据库中的单表查询,还支持范围查询、排序、聚合、MapReduce 等
MongoDB 的查询语法类似于面相对象的程序语言
发展历史
- MongoDB 最初是在 2007 年由 10gen 公司开发的,该公司由 Dwight Merriman、Eliot Horowitz 和 Kevin Ryan 创立,他们当时正在寻找一种可扩展和灵活的数据库解决方案,用于他们的云计算平台 。
- 在 2009 年,经过近两年的开发,10gen 将 MongoDB 作为一个开源数据库服务器发布,并建立了一个开源社区来运营 MongoDB 。MongoDB 1.0 在 2009 年 2 月发布,提供了大部分基本的查询功能。
- 在 2010 年,10gen 发布了 MongoDB 1.6,这是第四个主要版本,它引入了分片(sharding),这是一种允许自动地在多个节点之间分配和平衡数据的特性。分片使得 MongoDB 能够处理大规模的数据集和高吞吐量的查询。
- 在 2014 年,MongoDB 收购了 WiredTiger,这是一个由 Keith Bostic 和 Michael Cahill 开发的存储引擎,并将其作为一个新的存储引擎集成到 MongoDB 3.0 中。WiredTiger 显著地提高了 MongoDB 的写入性能和并发性,并解决了之前 MMAP 存储引擎的一些性能瓶颈。
- 在 2015 年,MongoDB 发布了 MongoDB 3.2,它在聚合框架中添加了一个新的操作符 $lookup。这个操作符使得 MongoDB 能够在多个集合之间执行连接操作,这是一种之前只有在关系型数据库中才有的特性。
- 在 2017 年,MongoDB 在 NASDAQ 上市,成为 26 年来第一家上市的数据库公司。从那时起,MongoDB 的股价已经增长了四倍多。
- 在 2018 年,MongoDB 发布了 MongoDB 4.0,它支持多文档 ACID 事务,使其成为第一个支持强事务的 NoSQL 数据库。
- 在 2018 年,MongoDB 还将其开源许可证更改为 SSPL(Server Side Public License),这要求任何提供 MongoDB 作为服务的服务提供商必须开源其整个软件栈。
优点
- 它支持灵活和动态的模式,可以在类似 JSON 的文档中存储复杂和异构的数据类型。
- 它提供了丰富和强大的查询语言,支持 CRUD 操作、数据聚合、文本搜索、地理空间查询等。
- 它支持多种类型的索引,如地理空间索引、文本索引、TTL 索引等,以优化不同的查询场景。 <b
- 它支持复制和分片,以实现数据的高可用性和可扩展性。
- 它支持多种存储引擎,如 WiredTiger、MMAPv1 和 In-Memory 等,以适应不同的工作负载和性能要求。
缺点
- 它不支持跨多个文档或集合的复杂事务。
- 它不支持原生地在多个集合之间进行连接(除了聚合框架中的 $lookup 操作符),这可能需要多次查询或应用层逻辑来执行关系操作。
- 它由于其文档导向的模型和 BSON 格式,比关系型数据库消耗更多的磁盘空间。
- 它没有像关系型数据库那样成熟的维护工具。
应用场景
MongoDB 适用于各种需要高性能、高可用性、高可扩展性和灵活数据模型的应用场景。一些例子如下:
- 游戏应用:MongoDB 可以在嵌入式文档中存储游戏用户信息、装备、积分等,并且可以方便地查询和更新。
- 物流应用:MongoDB 可以在嵌入式数组中存储订单信息、订单状态、物流信息等,并且可以用一次查询来跟踪一个订单的所有变化。
- 社交应用:MongoDB 可以存储用户信息和用户生成的内容,如帖子和评论。它还可以使用地理空间索引来实现附近的人和地点等功能。
- 物联网应用:MongoDB 可以存储设备信息和设备报告的日志。它还可以使用聚合框架或 map-reduce 等方法对这些数据进行多维度的分析。
- 视频流应用:MongoDB 可以存储用户信息和互动信息,如点赞和礼物。
Powered by Waline v3.3.0