MongoDB 是由C++语言编写的,开源的、面向文档的 NoSQL 数据库管理系统。它使用类似 JSON 的 BSON(二进制 JSON)格式来存储数据,具有高度灵活性和可扩展性。
与传统的关系型数据库不同,MongoDB 是一个非关系型数据库,它不使用表格和固定模式来存储数据。相反,MongoDB 使用集合(Collections)来组织数据,每个集合可以包含不同结构的文档(Documents)。文档是以键值对的形式存储的,可以包含各种类型的数据,如字符串、数字、日期、数组和嵌套文档等。
下图就是 MongoDB 的一个集合:
上图中,在名为 myCollection 的集合中存储了三个文档 Document,用来记录三个用户的基本信息。其中,李四的文档多出了一个 page 字段,王五的文档多出了一个 pet 字段,导致三个文档的结构都不一样,这就是 MongoDB 的灵活性,不像传统关系型数据库那样,表中的所有记录的结构均是一致的。
高度可扩展:MongoDB 支持水平扩展,可以通过添加更多的服务器来处理更大的数据量和负载。
灵活的数据模型:MongoDB 的文档模型非常灵活,可以轻松地存储和查询各种类型的数据。
高性能:MongoDB 具有快速的读写操作,支持索引和复制等功能,可以满足高并发和低延迟的需求。
强大的查询语言:MongoDB 提供了丰富的查询语言,包括基本的 CRUD 操作(创建、读取、更新、删除),以及聚合管道和地理空间查询等高级功能。
自动分片:MongoDB 支持自动数据分片,可以将数据分散存储在多个服务器上,提高性能和可用性。
支持索引:MongoDB 可以在记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road") 来实现更快的排序。
Map/Reduce:Mongodb 中的 Map/reduce 可以用来对数据进行批量处理和聚合操作。
GridFS支持:GridFS 是 MongoDB 中的一个内置功能,可以用于存放大量小文件。
服务端脚本:MongoDB 允许在服务端执行脚本,可以用 Javascript 编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
MongoDB 支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
MongoDB 的历史可以追溯到 2007 年,由 Dwight Merriman、Eliot Horowitz 和 Kevin Ryan 共同创立。最初,他们是为了构建一个可扩展的、高性能的数据库系统来支持他们的在线广告业务需求。
2009 年,MongoDB 正式发布,并且开源。在发布初期,MongoDB 的目标是提供一个简单易用的数据库解决方案,同时具备高性能、可扩展性和灵活性。它的设计理念是基于文档存储模型,以满足当时Web 应用程序对数据存储的需求。
2012年05月23日,MongoDB2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强。
2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库。
2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。
2013年08月20日,MongoDB 2.4.6 发布。
2013年11月01日,MongoDB 2.4.8 发布。
....