102. 什么是 MongoDB ?
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
- 它支持的数据结构非常松散,是类似 jSON 的 BSON 格式,因此可以存储比较复杂的数据类型。
- Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
综合来说,MongoDB 可以说是最棒的文档数据库。
? MongoDB的特点是什么?
面向集合的存储:适合存储对象及 JSON 形式的数据。
这个也是 MongoDB 和 MySQL 之间最基本的级别。
动态查询:MongoDB 支持丰富的查询表达式。查询指令使用 JSON 形式的标记,可轻易查询文档中内嵌的对象及数组。
完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
查询监视:MongoDB 包含一个监视工具用于分析数据库操作的性能。
复制及自动故障转移:MongoDB 数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
自动分片以支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器。
? 术语和概念?
MySQL 中的许多概念在 MongoDB 中具有相近的类比。本表概述了每个系统中的一些常见概念。
MySQL | MongoDB |
---|---|
库 Database | 库 Database |
表 Table | 集合 Collection |
行 Row | 文档 Document |
列 Column | 字段 Field |
joins | 嵌入文档或者链接 |
MongoDB 数据库,可以看成是一个电子化的文件柜,用户可以对文件中的数据运行新增、检索、更新、删除等操作。数据库是一个所有集合的容器,在文件系统中每一个数据库都有一个相关的物理文件。
MongoDB 集合,就是一组 MongoDB 文档。它相当于关系型数据库(RDBMS)中的表这种概念。集合位于单独的一个数据库中。一个集合内的多个文档可以有多个不同的字段。一般来说,集合中的文档都有着相同或相关的目的。
MongoDB 文档,由一组 key value 组成。文档是动态模式,这意味着同一集合里的文档不需要有相同的字段和结构。在关系型数据库中 Table 中的每一条记录相当于 MongoDB 中的一个文档。
不过一般情况下,相同 Collection 下的 Document 字段是统一的。
? MySQL 与 MongoDB 的功能对比?
MySQL | MongoDB | |
---|---|---|
丰富的数据模型 | 否 | 是 |
动态 Schema | 否 | 是 |
数据类型 | 是 | 是 |
数据本地化 | 否 | 是 |
字段更新 | 是 | 是 |
易于编程 | 否 | 是 |
复杂事务 | 是 | 否 |
审计 | 是 | 是 |
自动分片 | 否 | 是 |
- 这是一个比较老的比较。
- MySQL5.7 版本开始,也提供了 JSON 类型的数据格式。
- MongoDB4.0 版本开始,也提供了事务功能。
- 关于是否易于编程,这个看每个人的自己的想法,实际都还可以。