这是我参与「第五届青训营 」笔记创作活动的第12天。
一、本堂课重点内容:
先从经典案例中介绍事务需要满足的特性;接着介绍RDMS的发展历史;学习和理解RDBS的关键技术;最后通过企业的案例来深入理解RDMS的功能。
二、详细知识点介绍:
(1)经典案例
抖音红包雨的更新操作是一个事务,事务是由一组SQL语句组成的一个程序执行单元,他需要满足ACID。
原子性(atomicity):抖音的账户上扣了一个亿之后,假设服务器挂了,还没来得及给羊老师账户上加一个亿。
一致性(consistency):假设抖音的账户上只有0.5个亿,但是扣减1个亿成功了。
隔离性(isolation):羊老师从抖音抢了一个亿红包,从头条抢了一个亿,两个转账同时进行,假设他们都以为是从零开始更新羊老师的账户余额,羊老师最后得了一个亿。(两个账户对同一账户进行操作时,应该是相互不影响,表现的像是串行操作。)
持久性(durability):操作成功之后,更新的结果应该永久的保存下来,不会因为宕机等问题而丢失。
高并发(concurrency):10亿人同时抢红包,每秒需要处理1000W条数据。
高可靠性(availability):防止服务器挂了。
(2)发展历史
1960s,传统的文件系统已经不能满足人们的需求,数据库管理系统(DBMS)应运而生。
DBMS:按照某种数据模型来组织、存储和管理数据的仓库。所以通常按照数据模型的特点将传统数据库系统分为网状数据库、层次数据库和关系数据库。
1974年IBM的Ray Boyce和Don Chamberlin关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。它的优点为:语法风格接近自然语言;高度非过程化;面向集合的操作方式;语言简洁,易学易用。
(3)关键技术
1、SQL引擎
解析器(parser)一般分为词法分析、语法分析、语义分析等步骤。
数据库索引:是数据库管理系统中辅助数据结构,以协助快速查询、更新数据库表中数据。目前数据库中最常用的索引是通过B+树实现的。
2、存储引擎
InnoDB;Buffer Poll;Page;B+Tree。
3、事务引擎
Atomicity与Undo Log;Isolation与MVCC。
(4)企业实践
1、大流量
问题:单节点写容易成为瓶颈;单机数量容量上限。
解决方案:业务数据进行水平拆分;代理层进行分片路由。
2、流量突增
问题:活动流量上涨;集群性能不满足要求。突增流量导致大量建联。
解决方案:扩容DB五里界店数量;利用影子表进行压测。代理连接池。
3、稳定性&可靠性
三机房部署;proxy;监控报警;HA。
三、课后个人总结:
常用的数据库软件有Oracle、SQL Server等。RDBMS中的数据存储在被称为表的数据库对象中。表是相关的数据项的集合,它由列和行组成。