一、MongoDB简介
MongoDB 始于 2007 年,由 Dwight Merriman、Eliot Horowitz 和 Kevin Ryan –(DoubleClick 的主理团队)共同创立。
DoubleClick 是一家互联网广告公司(现隶属于 Google),公司团队开发并利用多种自定义数据存储,来弥补现有数据库的短板。虽然该企业每秒钟服务 400,000 条广告,但可扩展性和敏捷性仍时常制约着业务发展。团队痛定思痛,潜心打造出一种数据库,完美解决 DoubleClick 所面临的问题。于是就有了 MongoDB。
1.1、MongoDB历史
MongoDB是一个开源的文档型数据库,它支持JSON格式的数据存储和查询。MongoDB的发展史可以分为以下几个阶段:
- 2007年,MongoDB的前身10gen公司成立,最初是一个云计算平台,后来决定自己开发一个适合海量数据的数据库。
- 2009年,MongoDB 1.0正式发布,作为一个开源的数据库项目,提供了文档模型、索引、复制等基本功能。
- 2010年,MongoDB 2.0发布,引入了自动分片的功能,实现了水平扩展和高可用性。
- 2015年,MongoDB 3.0发布,主要功能包括支持 WiredTiger 存储引擎、可插拔存储引擎 API等功能。
- 2018年,MongoDB 4.0发布,MongoDB 提供了针对副本集执行多文档事务的功能 。
- 2021年,MongoDB 5.0发布,MongoDB引入了时间序列集合,它可以有效地存储一段时间内的测量序列。
- 2022年,MongoDB 6.0发布,支持对加密数据进行丰富的查询。
- 2023年,MongoDB 7.0发布,在性能和可用性方面进行了改进。
MongoDB的发展历程体现了它不断创新和适应市场需求的能力,也证明了它作为一个流行的文档型数据库的地位。
1.2、MongoDB版本
MongoDB是一个开源的文档型数据库,它支持JSON格式的数据存储和查询。MongoDB有几个主要的版本:MongoDB Atlas, MongoDB Enterprise Advanced和MongoDB Community Edition。
- MongoDB Atlas是MongoDB的云服务,它提供了MongoDB Enterprise Advanced的所有功能,以及自动化的管理、安全和扩展性。您可以在AWS, Azure或Google Cloud上部署MongoDB Atlas,并选择多种实例配置和存储引擎。MongoDB Atlas还提供了免费的入门层,以及在线迁移和数据联合的功能。
- MongoDB Enterprise Advanced是MongoDB的商业版本,它提供了MongoDB Community Edition的所有功能,以及额外的安全、审计、加密、认证和监控功能。您需要自己部署和管理MongoDB Enterprise Advanced,并支付订阅费用。
- MongoDB Community Edition是MongoDB的免费版本,它提供了MongoDB的基本功能,包括服务器、数据库引擎、工具、复制和分片。您需要自己部署和管理MongoDB Community Edition,并遵守SSPL协议。
二、优势特点
在过去十年中,MongoDB一直是DB-Engines排名中增长最快的数据库之一,并且在Stack Overflow的年度开发人员调查中一直被评为开发人员最想使用的数据库之一。
MongoDB是一种流行的文档型NoSQL数据库,它具有以下几个优势:
- 高可用性:MongoDB采用了分布式架构,数据会自动分布在多台服务器上,从而实现高可用性和容错性。如果一个节点故障,系统会自动将其从集群中删除,并将数据迁移至其他节点上。
- 高扩展性:MongoDB可以轻松地进行水平扩展和垂直扩展。在水平扩展时,可以添加更多的服务器和节点,以增加处理能力和存储容量;在垂直扩展时,则可以升级硬件设备,以提高单机性能。
- 灵活性:MongoDB支持动态模式和动态查询,可以根据应用程序需求灵活调整文档结构和查询条件。此外,它还支持复杂的文档嵌套、数组类型和地理位置等特性。
- 性能优势:MongoDB使用了内存映射文件和快速索引等技术,具有较高的读写性能和查询效率。此外,MongoDB还支持分片和副本集等技术,以进一步提高性能和可靠性。
- Redis的数据存储主要依赖于内存,因此其存储容量受到物理内存的限制。虽然支持持久化机制,但主要是为了保障数据的持久性,存储量一般较小。
- Redis适合需要快速读写、对数据结构操作较多的场景,如缓存、实时计数等。
VS
- MongoDB的数据存储基于磁盘,可以存储比内存更大容量的数据。它更适合存储大规模数据集,数据可以超出物理内存容量。
- MongoDB适合需要复杂查询和大规模数据存储的场景,如Web应用、分析、内容管理等。
三、应用场景
MongoDB适合以下几种应用场景:
- 社交场景:使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。
- 物联网场景:使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
- 视频直播:使用MongoDB存储用户信息、点赞互动信息。
- 内容管理:使用MongoDB存储文章、评论、标签等内容,支持全文搜索、分类、排序等功能。
以下是一些使用MongoDB的企业:
超过 46,400 名客户选择在 MongoDB 上构建当今和未来的应用程序
在国内阿里巴巴、腾讯、360、百度等,这些都是一线互联网公司,它们都在尝试或者已经使用 MongoDB 来处理海量的数据和业务。