简介
MongoDB是一个开源的文档数据库,提供了高性能、高可用性、自动调节的能力。
文档数据库
MongoDB中的一项纪录是一个文档,它是一个由一系列键值对组成的数据结构。MongoDB文档和JSON对象很像,对应字段的值可以包括其他文档、数组以及文档的数组。
一个典型的文档结构如下:
{
Name: "sue",
Age: 26,
Status: "A",
Groups: [ "news", "sports" ]
}
使用文档的优点有:
- 文档(即对象)与大多数变成语言的本地对象相对应
- 嵌入的文档和数组可以减少对昂贵的链接操作的需求
- 动态数据表支持流畅的多态性
核心特点:
- 高性能
MongoDB提供高性能的数据之久。特别的有:
- 支持嵌入式的数据模型减少数据库系统上I/O活动
- 索引支持更加快速的查询并且可以包括从嵌入的文档或者数组中的键
- 丰富的查询语言
MongoDB支持一种富查询语言用来支持基本的读写操作(CRUD)以及:
- 数据聚集
- 文本搜索和空间查询(?)
- 高可用性
MongoDB复制机制,被称为复制集,提供了:
- 自动失效备援和
- 数据冗余
一个复制集是一组MongoDB服务器,这些服务器保持相同数据集,提供了冗余的数据并且提高了数据可用性
- 水平伸缩性
MongoDB提供了水平伸缩性作为其核心功能:
- 在机器集群中分片分布数据
- 从3.4开始,MongoDB支持创建基于分片键的数据区域。在一个平衡集群中,MongoDB直接读写在区域内的碎片片(shard)
- 支持多种读取引擎
MongoDB支持多种存储引擎:
- WiredTiger Storage Engine
- In-Memory Storage Engine
- MMAPv1 Storage Engine(MongoDB 4.0起废弃)
除此之外,MongoDB提供了可插接存储引擎API允许第三方为MongoDB开发存储引擎。