1.2-认识数据库
Create by fall on:2020-11-10 Recently revised in:2021-08-27
数据库
关系型数据库
RDBMS(Relational Database Management System)
关系型数据库遵循 ACID 规则
- A(Atomicity)原子性:事务要么全做完,要么都不做,成功条件是所有都操作成功,只要有一个失败就要回滚。
- C(Consistency)一致性:事务一直处于一致状态,a+b=10,现在a+=2,10也要改变。
- I(Isolation)独立性:一个事务和另一个事物之间不会影响,只要事务未提交,就看不到修改。
- D(durability)持久性:事务一旦提交,所做的修改将永久保存在数据库上,宕机也不会消失。
数据特点
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
非关系型数据库
NoSQL(not only sql)
这类数据库不需要固定的格式,无需多余的操作就可以进行横向扩展。
使用NoSQL的原因是,关系型数据库的局限性:
- 数据量总大小一个机器放不下
- 数据的索引(B+tree)一个机器的内存放不下
- 访问量(读写混合)一个实力不能接受
只要上述满足一个,就要对数据库整体架构进行重构。
- 存储方式:虚拟内存+持久化。
- 查询语句:是独特的Mongodb的查询方式。
- 适合场景:事件的记录,内容管理或者博客平台等等。
- 架构特点:可以通过副本集,以及分片来实现高可用。
- 数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
- 成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。
RDBMS vs NoSQL
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
- 严格的一致性
NoSQL
- 没有声明性查询语言
- 没有预定义的模式
- 键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性
分布式系统
分布式系统(distributed system):多台计算机和通信的软件组件通过计算机网络连接。
- 优点:
- 可靠性,一台服务器崩溃也不会影响其余服务器
- 可扩展性,当前的服务器数量不够,继续添加新的数据库
- 资源共享,资源大家都可以互相调用。
- 灵活性,也不知道咋灵活
- 更快的速度,利用多台计算机的算力,处理速度更快
- 开放系统,本地和远程都可以访问
- 缺点
- 故障排除:困难,那个设备出现问题,要一个个排除
- 软件:更少的软件支持
- 网络:网络负载,信息丢失,传输问题
- 安全性:数据共享带来的风险
CAP定理
对于一个分布式系统来说,不可能同时满足三点
- 一致性(Consistency)所有节点在同一时间具有相同的数据
- 可用性(Availability)保证每个请求不管成功或者失败都有响应
- 分隔容忍(Partutuib tolerance)系统中任意信息的丢失或者失败不会影响系统的继续工作。
该原理的核心是,分布式系统不可能同时满足一致性,可用性,和分区容错。最多只能较好满足两个。
所以将数据库分为三大类
- CA 单点集群,满足一致性,可用性,可扩展性往往不大好
- CP 满足一致性,分区容忍,性能不是特别好
- AP 可用性,通常对一致性的要求低一点
常用术语
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
- **行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- **外键:**外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- **索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。