深入理解RDBMS | 青训营笔记

119 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
对课程中学到的重要知识点做了笔记,方便后续的回顾

1. 经典案例

1.1 一致性(Consistency)

数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

1.2 隔离性(Isolation)

数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

1.3 持久性(Durability)

多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。

1.4 持久性(Durability)

在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。

1.5 高并发

1.6 高可靠、高可用

2. 发展历史

2.1 前DBMS时代-人工管理

结绳记事 清代钱庄账本 用于1890年人口普查的霍列瑞斯式的打孔机

2.2 前DBMS时代-文件系统

1950s,现代计算机的雏形基本出现。1956年IBM发布了第一个的磁盘驱动器--Model 305 RAMAC,从此数据存储进入磁盘时代。在这个阶段,数据管理直接通过文件系统来实现。

写到纸上变成写到文件里,变了个马甲

2.3 DBMS数据模型

1960s,传统的文件系统已经不能满足人们的需要,数据库管理系统(DBMS)应运而生。DBMS:按照某种数据模型来组织、存储和管理数据的仓库。

所以通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。

2.3.1 DBMS数据模型–网状模型

多对多的关系

2.3.2 DBMS数据模型–层次模型

每个子节点,只有一个父节点

2.3.3 DBMS数据模型-关系模型

2.3 SQL语言

  • 结构化语言,不是过程化语言
  • 只是说要去干什么样的事情,不用去说具体怎么去干这件事

2.4 历史回顾

3. 关键技术

万变归宗:无论RDBMS如何演变,其核心都是SQL引擎、存储引擎、事务引擎。

4. 企业实践

4.1 红包雨挑战

  • 活动统计

    • 共计发放红包20亿元
    • 总计发放卡券24亿
    • 张拜年红包补贴12.9亿
  • 流量统计

    • 活动钱包:400w/s
    • 发红包:300w/s
    • 发奖券:400w/s

4.2 大流量-Sharding

  • 问题背景
    1. 单节点写容易成为瓶颈
    2. 单机数据容量上限
  • 解决方案
    1. 业务数据进行水平拆分
    2. 代理层进行分片路由
  • 实施效果
    1. 数据库写入性能线性扩展
    2. 数据库容量线性扩展

4.3 流量突增-扩容

  • 问题背景
    1. 活动流量上涨
    2. 集群性能不满足要求
  • 解决方案
    1. 扩容DB物理节点数量
    2. 利用影子表进行压测
  • 实施效果
    1. 数据库集群提供更高的吞吐
    2. 保证集群可以承担预期流量

4.4流量突增一代理连接池

  • 问题背景
    1. 突增流量导致大量建联
    2. 大量建联导致负载变大,延时上升
  • 解决方案
    1. 业务侧预热连接池
    2. 代理侧预热连接池
    3. 代理侧支持连接队列
  • 实施效果
    1. 避免DB被突增流量打死
    2. 避免代理和DB被大量建联打死

4.5 高可用&高可靠

4.5.1 3AZ高可用

4.5.2 HA管理

课后个人总结

  1. 了解了RDBMS的发展历史
  2. 了解了在字节跳动内部怎样应对实际的流量突增问题

参考资料

MySQL-深入理解 RDBMS