MongoDB 简介

本页索引:

MongoDB 是一个提供了高性能、高可用以及自动伸缩(auto scaling)功能的开源的文档数据库 (Document Database).

文档数据库

在 MongoDB 中一条记录 (record) 就是一个文档 (document), 文档本身类似 JSON 对象, 其数据结构是组合的键值对. 值可以是其他文档, 数组或者一个文档的数组等.

简介 - 图1

文档的优势在于:

  • 文档 (如 Object) 可以对应到许多编程语言内置的数据类型.
  • 内嵌的文档和数组结构减少了昂贵的跨表 (join) 查询.
  • 自由的表结构 (Dynamic schema) 支持流畅的多态.

关键特性

高性能

MongoDB 提供了高性能的数据持久化. 特别是,

  • 通过嵌入式的数据模型来减少 I/O 操作.
  • 索引可以支持快速的查询, 还可以通过通过深层结构的 (embedded) 文档和数组作为 key.

丰富的查询语句

MongoDB 拥有丰富的查询语句来进行 读写操作 (CRUD) 以及:

高可用

MongoDB 的备份功能, 名为复制集 (replica set), 提供:

  • 自动 熔断 (failover)
  • 数据冗余

一个复制集是一组维护相同数据集的 MongoDB 实例, 提供了冗余和新增数据的可用性.

水平拓展

MongoDB 将水平拓展性作为它的 核心 功能:

  • 分片 (Sharding)
    将数据分布在一个集群的机器上.
  • MongoDB 3.4 支持根据 shard key 创建
    数据区域 (zones). 在一个均衡的集群中, MongoDB 根据分区直接读写区域中的节点. 阅读
    区域
    手册了解更多.

支持多种存储引擎

MongoDB 支持多个存储引擎, 如:

此外, MongoDB 还提供了允许第三方的人员为 MongoDB 开发的插件 API.