这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
RDBMS(关系型数据库)是目前使用最为广泛的数据库之一,同时也是整个信息化时代的基石。本节课程通过生活中常见的场景介绍了RDBMS的作用、发展历程及其核心技术,最后以字节为例,展示了RDBMS的企业级实践
1、经典案例-红包雨
SQL语言
1.1 RDBMS事务ACID
事务:由一组SQL语句组成的一个程序执行单元(Unit),满足ACID。两条更新操作不再是独立的,形成了一个整体,这个整体称为一个事务
1.2 红包雨与ACID
课上列举了四个例子生动形象地说明了ACID特性
原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
持久性(Durability):在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。
1.3 红包雨与高并发
高并发(Concurrency)
1.4 红包雨与高可靠
高可靠、高可用(High Reliability/Availability)
2、发展历史
2.1 前DBMS时代
2.1.1 人工管理
人工方式进行数据记录和管理
2.1.2 文件系统
数据管理直接通过文件系统实现
2.2 DBMS
数据库管理系统(DBMS):按照某种数据模型组织、存储和管理数据的仓库
根据数据模型的特点将传统数据库系统分成三类:网状数据库(网状原理和方法存储)、层次数据库(按记录存储)和关系数据库(以行和列的形式存储)
层次型、网状型、关系型数据库划分的原则是数据之间的联系方式
2.2.1 网状模型
网状数据模型是以记录类型为结点的网状结构,一个结点可以有一个或多个下级结点,也可以有一个或多个上级结点,两个结点之间可以有多种联系,如复合链。该模型能反映现实世界中信息的关联,是许多空间对象的自然表达形式
2.2.2 层次模型
树结构,每棵树有且仅有一个根节点,每个节点表示一个记录类型对应实体的概念,记录类型的各个字段对应的各个属性
2.2.3 关系模型
使用表格表示实体和实体之间。无论是实体还是实体之间的联系都是被映射成统一的关系,即二维表。借助表可实现多对多的关系
2.3 DBMS数据模型优缺点
网状模型:直接描述现实世界、存取效率较高;结构复杂、用户不易使用、访问程序设计复杂
层次模型:结构简单、查询效率高、提供较好的完整性支持;无法表示M:N的关系、插入删除限制多、遍历子节点必须经过父节点、访问程序设计复杂
关系模型:二维表结构表示、便于表示M:N关系、数据访问路径对用户透明;关联查询效率不高、关系必须规范化
2.4 SQL语言(Structured Query Language)
语法风格接近自然语言、高度非过程化、面向集合、语言简洁
3、关键技术
3.1 SQL引擎
查询解析:将文本结构化抽象语法树(AST)
查询优化:根据AST优化产生最优执行计划(Plan Tree)
查询执行:根据查询计划完成数据读取、处理、写入操作
事务引擎:处理事务一致性、并发、读写隔离等
存储引擎:内存中的数据缓存区、数据文件、日志文件
3.1.1 解析器(Parser)
词法分析:将SQL语句对应的字符串分割为一个个token
语法分析:词法分析的结构转为语法树。根据token序列匹配不同的语法规则匹配SQL语句中的关键字,输出一个结构化的数据结构
语义分析:对语法树中的信息进行合法性校验
3.1.2 优化器(Optimizer)
基于规则的优化(RBO):条件化简、表连接优化、Scan优化
基于代价的优化(CBO):时间代价
3.1.3 执行器(Executor)
火山模型:Plan Tree为基础,调用关系是由根到叶,数据流是从叶到根。每个算子独立抽象实现,相互之间没有耦合,逻辑结构简单。每计算一条数据有多次函数调用开销,CPU效率不高
向量化:适于大批量数据处理,对于很多单行数据处理并没有优势,搭配列式存储使用。调用次数降低为1/N,CPU cache命中率更高,可以利用CPU提供的SIMD机制
编译执行:LLVM动态编译执行技术
3.2 存储模型
3.2.1 InnoDB
3.2.2 Buffer Pool
淘汰已有页面:对数据进行冷热分离,将LRU链表分成两部分,一部分存放冷数据,另一部分存放热数据。淘汰时首先淘汰冷数据区
3.2.3 Page
3.2.4 B+树
3.3 事务引擎
3.3.1 Atomicity与Undo Log
逻辑日志(Undo Log):记录数据增量变化,保证事务原子性和事务并发控制,用于事务回滚,提供多版本机制(MVCC)
3.3.2 Lsolation与锁
锁机制保证多个并发事务同时访问同一行记录
3.3.3 Lsolation与MVCC
MVCC:读写互不阻塞、降低死锁概率、实现一致性读
3.3.4 Durability与Redo Log
Redo Log是物理日志,记录页面变化,保证事务持久化
4、企业实践
4.1 红包雨实战
4.2 大流量-Sharding
业务数据进行水平拆分、代理层进行分片路由
4.3 流量突增-扩容
扩容DB物理节点数量、利用影子表进行压测
4.4 流量突增-代理连接池
代理侧支持连接队列、代理侧预热连接池、业务预热连接池
4.5 稳定性&可靠性
4.5.1 3AZ高可用
三机房部署、Proxy、监控警报、HA
4.5.2 HA管理
HA服务监管、切换宕机节点、代理支持配置热加载、自动屏蔽宕机读节点
课后个人总结
RDBMS是目前使用最为广泛的数据库之一,是整个信息化时代的基石。通过本节课的学习,我了解了不少RDBMS作用、发展历程及其核心技术的知识,最后还认识到了RDBMS的企业级实践