本来要写MongoDB的文章,为了对他有个全面的了解(大局观),就从数据库开始说起吧
文章概览
数据库与DMBS
数据库
是什么
按照数据结构组织、存储和管理数据的仓库
为什么用
计算机本身就是处理数据用的机器,我们知道应用程序(程序数据)需要运行在内存中,靠CPU运算。然鹅,如果把数据存储到内存,一旦程序结束或者计算机断电,程序数据自动丢失,所以把数据放到硬盘中。在硬盘中把数据组织起来,我们叫数据库
DBMS(数据库管理系统)
是什么
一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,说白了,管理数据库的软件
两者关系,见下图(图片来自百度百科)
如果不那么严格分明,人们通常把数据库管理系统就叫作数据库
RDBMS与NO SQL
DBMS(数据库管理系统)主要分为两种
- RDBMS
- NO SQL
两者区别与联系
RDBMS | NO SQL | |
---|---|---|
是什么 | 关系型数据库 | 非关系型. 分布式 不提供ACID 数据库设计模式(Not Only SQL) |
为什么用 | 解决统一当时复杂化 的数据模型如树型,星型等 |
超大规模数据存储不适用RDBMS |
存储形式 | 二维表 描述实体,及实体间的关系 |
没有预定义的模式 键值存储 列存储 文档存储 图形存储 |
优点 | 严格一致性(ACID属性) 结构简单 |
高可扩展性 架构灵活 |
缺点 | 不适合大规模数据 复杂查询功能差 |
没有标准化 最终一致是不直观的程序 |
NO SQL与MongoDB
MongoDB
- MongoDB是NO SQL中的一种,存储形式为文档,数据结构由键值对组成
- MongoDB文档类似于JSON对象,在这个里面叫BSON
- 字段值可以包含其他文档,数组及文档数组,见下图(来自菜鸟教程)