简介
MongoDB是一个开源文档数据库,提供高性能,高可用性和自动扩展。
什么是MongoDB
- 非关系型 (NoSQL) (NoSQL) :没有固定的行列组织模式
- 开源:由 C++ 语言 编写的,一个基于 分布式 文件存储的 开源 数据库系统
- 文档型数据库:并非 word word 和pdf 文档。 MongoDB MongoDB 将数据存储为一个文档, 数据结构由键值 (name=>value) (name=>value) (name=>value) 对组成类似于 JSON 对象。字段值可以包含其他
什么是文档数据库
文档数据库区别于传统的其它数据库,它是用来管理文档。在传统的数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的基本单位。一文档可以很长、很复杂、可以无结构,与字处理文档类似。一个文档相当于关系数据库中的一条记录。
MongoDB的中的一条记录就是一个文档,是一个数据结构,由字段和值对组成.MongoDB文档与JSON对象类似。字段的值有可能包括其它文档,数组以及文档数组。
例如
主要特征
- 高性能
- 丰富的查询语言
- 高可用性
- 水平拓展能力
- 多个存储引擎的支持
高性能
MongoDB中提供高性能的数据持久化。
- 对嵌入式数据模型的支持减少了数据库系统的I / O活动。
- 索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。
丰富的查询语言
MongoDB支持丰富的查询语言以及支持读写操作(CRUD)
-
聚合查询
-
地理位置索引
水平拓展能力
- 分片:一组计算机集群中分布数据
- Tag aware 分片运行直接将数据引导到特定的分片,例如,考虑分片的地理分布等
高可用性
MongoDB通过 复制集 <replication-introduction>提供自动的故障恢复以及数据冗余。
复制集
复制是在多台服务器之间同步数据的过程,由一组Mongod实例(进程)组成,包括一个主实例以及一个从实例,从实例同步主实例的数据,即主从复制。当主实例挂了之后,可以进行切换或者修复。
优点:高可用性;避免单点故障;可以读写分离;避免更新数据时,用户数据请求阻塞。
缺点:同步有一定的性能开销。