这是我参与「第五届青训营」伴学笔记创作活动的第14天
一、课程内容
- 经典案例介绍:一条数据从产生到数据流动,最后持久化的生命周期;
- 存储&数据库简介:数据库和存储系统背景知识,它们是什么,有哪些特点;
- 主流产品剖析:主流的存储&数据库系统架构,经典产品剖析;
- 新技术演进:老系统结合新技术,如何持续演进走向新生;
二、详细知识罗列
- 假如小明作为一个APP的新用户注册了自己的账号,并填写了相应的账户信息,这些信息是如何流动的呢?首先这些结构化的信息会从小明的手机传输到后端服务器,再从后端服务器传输到数据库里,并且还有其他系统对这些数据进行使用;
- 数据的持久化:首先校验数据的合法性(小明是否已经存在?);接着会修改内存(用高效的数据结构组织数据);最后会写入存储介质(以寿命&性能友好的方式写入硬件)。
- 以上过程一些需要解决的问题:数据库怎么保证数据不丢?数据库怎么处理多人同时修改的问题?为什么用数据库,除了数据库还能存到别的存储系统吗?数据库只能处理结构化数据吗?有哪些操作数据库的方式,要用什么编程语言?
- 一个提供了读写接口、控制类接口,能够安全有效地把数据持久化的软件,就可以成为存储系统。另外存储系统还需要与内存和网络打交道。作为后端软件的底座,性能敏感;存储系统软件架构,容易受硬件影响;存储系统代码,既“简单”又“复杂”。
- 存储器金字塔!前段时间刚学习过,从上到下速度越来越慢,容量越来越大,价格越来越便宜;
- 在把数据写到硬件的过程中,会发现经过很多缓存(buffer、cache),缓存很重要;拷贝这一操作很昂贵,应该尽量减少。
- RAID技术是啥:为了解决对存储系统的各项指标的追求,高性能/高性价比/高可靠性,就产生了RAID技术(redundant array of inexpensive disks)。RAID技术出现的背景:单块大容量磁盘的价格>多块小容量磁盘;单块磁盘的写入性能<多块磁盘的并发写入性能;单块磁盘的容错能力有限,不安全。
- RAID0:多块磁盘简单组合;数据条带化存储,提高磁盘带宽;没有额外的容错设计;RAID1:一块磁盘对应一块额外的镜像盘;真实空间利用率仅50%;容错能力强;RAID0+1:结合了RAID0和RAID1;真实空间利用率仅50%;容错能力强,写入带宽好。
- 关系模型=集合=任意元素组成的若干有序偶对,就是反映了事物间的关系;关系代数=对关系做运算的抽象查询语言(交、并、笛卡尔积);SQL=方便人类阅读的关系代数表达形式;
- 关系型数据库是存储系统,但在存储之外,又发展出其他能力:结构化数据友好、支持事务、支持复杂查询语言;非关系型数据库也是存储系统,但一般不要求严格的结构化:半结构化数据友好、可能支持事务、可能支持复杂查询语言。
- 数据库支持事务的优越性,比经典存储的优势体现在:
- 单机存储——>分布式存储——>单机关系型数据库——>单机非关系型数据库——>分布式数据库
- 单机存储系统是单个计算机节点上的存储软件系统,一般不涉及网络交互,比如本地文件系统和key-value存储;
- 分布式存储是在单机存储基础上实现了分布式协议,涉及大量网络交互。两个经典的例子分布式文件系统和分布式对象存储。HDFS堪称大数据时代的基石。Ceph是开源分布式系统里的万金油;
- 单机数据库:事务在单机内执行,也可能通过网络进行事务交互。关系型数据库商业产品Oracle称王,开源产品MySQL和PostgreSQL称霸;MongoDB,Redis,Elasticsearch三足鼎立。关系型数据库一般使用SQL交互,而非关系型数据库交互方式各不相同;非关系型数据库的数据结构千奇百怪,schema相对灵活;不管是否关系型数据库,都在尝试支持SQL和事务。Redis数据结构非常丰富,支持hash表、set等,是由纯c语言实现的,超高性能;主要基于内存,但支持AOF持久化。
- 单机数据库遇到了很多挑战包括但不限于容量、弹性(业务的扩容和缩容问题)、性价比,所以要引入分布式数据库来解决
- 新技术演进:软件架构变更,AI增强(智能存储格式转换),新硬件革命(存储介质变更、计算机单元变更、网络硬件变更)
- AI领域相关技术,比如可以通过决策实现实时的存储格式的转换;
- 高性能硬件:RDMA网络、persistent memory、可编程交换机、GPU(玛德什么时候可以下山)
- 在存储&数据库领域,硬件反推软件变革十分常见
三、课程小结
打卡2023.2.12,快开学了。本节课围绕了存储系统、数据库系统和分布式架构,非常非常全面的讲述了数据的存储方式和数据库的变迁,每种数据库的特点,具体的产品特点,新技术的演进。老师本就是专注于数据库方向的人员,在一些方面比如产品的介绍非常细致。整节课偏理论,虽然没有代码的实践,但是在知识方面有很好的讲述和补充。作为记录,加油。
四、参考引用
字节内部课程-认识存储与数据库 马浩翔
字节内部课程-主流存储产品剖析 马浩翔
字节内部课程-存储与数据库的新技术演进 马浩翔