文章目录
MongoDB 基于分布式文件存储的数据库
Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。
Mongodb是一款非关系型数据库,区别于关系型数据库最显著的特征就是没有SQL语句,数据没有固定的数据类型,关系数据库的所使用的SQL语句自从 IBM 发明出来=,已经有 40 多年的历史了,但是时至今日,开发人员一般不太喜欢这个东西,因为它的基本理念和程序员编程的想法不一致。后来所谓的 NoSQL 风,指的就是那些不用 SQL 作为查询语言的数据存储系统,而文档数据库 MongoDB 正是 NoSQL 的代表。
MongoDB和关系型数据库的差异
- MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。MongoDB数据模型和你的对象在内存中的表现形式一样,一目了然的对象模型。
- 同一个集合中可以包含不同字段(类型)的文档对象:同一个集合的字段可能不同
- 线上修改数据模式(?猜测是切换关系和非关系模式),修改时应用与数据库都无须下线
关系型数据库和文档型数据库主要概念对应
关系型数据库 | 文档型数据库 | |
---|---|---|
模型实体 | 表 | 集合 |
模型属性 | 列 | 字段 |
模型关系 | 表关联 | 内嵌数组, 引用字段关联 |
文献数据库
MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。
使用文档的优点是
- 文档(即对象)对应于许多编程语言中的本机数据类型。
- 嵌入式文档和数组减少了对昂贵连接的需求。
- 动态模式支持流畅的多态性。
集合/视图/按需实例化视图
MongoDB将文档存储在集合中。集合类似于关系数据库中的表。
除集合外,MongoDB还支持:
- 只读视图(从MongoDB 3.4开始)
- 按需实例化视图(从MongoDB 4.2开始)。
主要功能
高性能
MongoDB提供高性能的数据持久性。特别是,
- 对嵌入式数据模型的支持减少了数据库系统上的I / O活动。
- 索引支持更快的查询,并且可以包括来自嵌入式文档和数组的键。
丰富的查询语言
MongoDB支持丰富的查询语言,以支持读写操作(CRUD)以及:
- 资料汇总
- 文本搜索和地理空间查询。
也可以看看
- SQL到MongoDB的映射图
- SQL到聚合的映射图
高可用性
MongoDB的复制工具(称为副本集)提供:
- 自动故障转移
- 数据冗余。
甲副本集是一组保持相同的数据集,从而提供冗余和提高数据可用性的MongoDB服务器。
水平可伸缩性
MongoDB提供水平可伸缩性作为其核心 功能的一部分:
- 分片在一组计算机集群分布数据。
- 从3.4开始,MongoDB支持基于shard键创建数据区域。在平衡的集群中,MongoDB仅将区域覆盖的读写定向到区域内的那些分片。有关 更多信息,请参见区域手册页。
支持多种存储引擎
MongoDB支持多个存储引擎:
- WiredTiger存储引擎(包括对静态加密的支持 )
- 内存中存储引擎。
此外,MongoDB提供可插拔的存储引擎API,允许第三方为MongoDB开发存储引擎。