一. 概述
MongoDB 是一个开源的文档数据库,提供了高性能、高可用和自动分片特性。
二. 文档数据库
在 MongoDB 中一条记录就是一个文档,就是一个键值对数据结构。MongoDB 文档和 JSON 对象相似。值可以包含其他文档、数组和数组文档。
使用文档的优点:
- 文档(即对象)对应于许多编程语言中的原生数据类型
- 值中还能包含文档和数组可以减少 Join 操作的性能开销
- 动态模式支持流畅的多态性
三. 核心特征
高性能
MongoDB 提供高性能数据持久化,特别在:
- 支持嵌套数据模型,以减少数据库的 I/O
- 索引支持快速查询并且包含嵌套的文档和数组
富查询语言
MongoDB 支持丰富的查询语句来支撑 CRUD 操作:
- 数据聚合
- 文本搜索和地理空间查询
高可用
MongoDB 复制工具,叫 relica set,提供:
- 自动故障转移
- 数据冗余
replica set 是一组 MongoDB 服务器,维护了相同的数据,提供冗余性并增加数据可用性
水平扩展
MongoDB 提供水平扩展作为它的核心功能:
- 分片数据到集群的各个机器中
- 标记感知分片允许将数据重定向到特定分片,例如考虑分片的地理分布
支持多存储引擎
MongoDB 支持多存储引擎,如:
- WiredTiger 存储引擎
- MMAPv1 存储引擎
此外,MongoDB提供可插入的存储引擎API,允许第三方为MongoDB开发存储引擎。
四. 参考资料: