什么是MongoDB
- 存储文档(BSON)的非关系型数据库
- MongoDB和MySQL一样都是数据库,都是存储数据的仓库
- 不同的是MySQL是关系型数据库,而MongoDB是非关系型数据库
什么是非关系型数据库
- 在
关系型数据库
中,数据都是存储在表中的,对存储的内容有严格的要求,因为在创建表的时候我们就已经规定了表中有多少个字段,已经规定了每个字段将来要存储什么类型数据,已经规定了每个字段将来是否可以为空,是否必须唯一等等 - 在
非关系型数据库
中,没有表概念,所以存储数据更加灵活,因为不需要创建表,所以也没有规定有哪些字段,也没有规定每个字段数据类型,也没有规定每个字段将来是否可以为空,是否必须唯一等等 -
关系型数据库
由于操作的都是结构化的数据,所以我们需要使用结构化语言SQL来操作 -
非关系型数据库
由于数据没有严格的结构要求,所以无需使用SQL来操作
例如在MySQL中
|--------------------------------------------------------|
| name(varchar(255) not null) | age(int unique) |
|--------------------------------------------------------|
我们可以把 'zs', 33 保存到表中
但是我们不能将 33, 'zs' 保存到表中
但我们不能能将 null, 33 保存到表中
但是我们不能将 'zs', 33, '男' 保存到表中
但是我们不能再次将 'zs', 33 保存到表中
例如在MongoDB中
我们可以把 {name: 'zs', age: 33}; 保存到集合中
我们也可以把 {name: 33, age: 'zs'}; 保存到集合中
我们也可以把 {name: null, age: 33}; 保存到集合中
我们也可以把 {name: 'zs', age: 33, gender:'男'}; 保存到集合中
但是我们可以再次将 {name: 'zs', age: 33}; 保存到集合中
-
非关系型数据库
可以看做是关系型数据库
功能的阉割版本,通过减少用不到或很少用的功能,从而提升数据库的性能
MongoDB是如何存储文档的
- MySQL中所有的数据都是存储在表中的,而MongoDB中所有的数据都是存储在集合中的
MySQL
|--行1
|--表1--|--行2
数据库--| |--行3
|--表2
|--... ...
MongoDB
|--文档1
|--集合1--|--文档2
数据库--| |--文档3
|--集合2
|--... ...
企业开发如何选择
- 关系型数据库和非关系型数据库之间并不是
替代
关系,而是互补
关系,所以在企业开发中大部分情况是结合在一起使用 - 对于数据模型比较简单、数据性能要求较高、数据灵活性较强的数据,我们存储到非关系型数据库中,相反则存储到关系型数据库中