这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
这里讲的主要是RDBMS(关系型数据库),RDBMS是目前使用最为广泛的数据库之一,同时也是整个信息化时代的基石。本节课程通过生活中常见的场景向大家介绍RDBMS的作用、发展历程等。
经典案例
从抖音红包雨抢了一个小目标hhhh
update account_table set balance = balance - '小目标' where name = '抖音';
update account_table set balance = balance + '小目标' where name = '兔老师';
事务ACID
-
ACID:
- 原子性(Atomicity): 事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
- 一致性(Consistency): 数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。(操作必须合法,从一个有效状态 -> 另一个有效状态)
- 隔离性(Isolation): 多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
- 持久性(Durability): 在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
-
具体调用:
BEGIN;
update account_table set balance = balance - '小目标' where name = '抖音';
update account_table set balance = balance + '小目标' where name = '兔老师';
COMMIT;
-
红包雨还遇见了别的问题:
- 高并发(Concurrency)-> 高并发顶得住
- 高可靠(High Reliability/Availability)-> 后台服务可靠,稳定
发展历史
前DBMS时代
- 人工管理时代:结绳记事 -> 钱庄账本 -> 打孔机(效率太低)
- 文件系统时代:磁盘驱动器(记事本)
DBMS时代
- 1960s,传统的文件系统已经不能满足人们的需要,数据库管理系统(DBMS)应运而生。DBMS:按照某种数据模型来组织、存储和管理数据的仓库。所以通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。
- 网状模型:
- 层次模型:
一对多,网状 -> 树状
- 关系模型:
所有数据都是表!!!
一对一,一对多,多对多的关系,都可以用表来描述,方便处理很多昂!!!
- 对比:
SQL语言
-
1974年IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。
- 语法风格接近自然语言;
- 高度非过程化;
- 面向集合的操作方式;
- 语言简洁,易学易用。
-
还是经常用的!!!
历史回顾
关键技术
一条SQL的一生
SQL引擎
Parser
解析器(Parser)一般分为:词法分析(Lexical analysis)、语法分析(Syntax analysis)、语义分析(Semantic analyzer)等步骤。
Optimizer
Why optimizer?
- 很多虽然有了Parser,知道了语义,但是实现有很多种。
- optimizer就是帮助我们从中选一种好的昂!!!
- Multiple choices:
- 实现:
基于规则的优化(RBO Rule Base Optimizer)
基于代价的优化(CBO Cost Base Optimizer)
现在用的很多都是基于代价的优化,例如考虑整体Time最少的方式,进行处理昂!
Executor
- 火山模型:
- 向量化:
- 编译的执行:
LLVM动态编译执行技术就是其中一种前沿技术昂!
存储引擎
InnoDB
Buffer Pool
- buffer pool结构:
- 管理空间:
Page
B+ Tree
事务引擎
Atomicity & Undo Log
Isolation & 锁
MVCC的概念就在这里昂!!!
Isolation & MVCC
Durability & Redo Log
企业实践
春节红包雨
大流量
Sharding
流量突增
扩容
代理连接池
稳定性&可靠性
3AZ高可用
3 Available Zone
不同的AZ之间,日志同步。
HA管理
High Availability