课程目录
01 经典案例
一条数据从产生,到数据流动,最后持久化的全生命周期
数据的产生
数据的流动
数据的持久化
为什么要做持久化? 一直把数据放在内存里面是不可能的,需要记忆的数据必须持久化存储写入硬件。
记得关注硬件的寿命
潜在的问题
02 存储 & 数据库简介
什么是存储系统, 什么是数据库系统?
存储系统
系统概览
四个关键点:用户、介质、内存、网络
系统特点
既简单(io不能有很多分支),有复杂(要考虑多种异常情况)
存储器层级结构
数据怎么从应用到存储介质
Disk : 代指任何存储设备
RAID技术
什么是条带化存储?
raid0 增速
raid1 增加可靠性
数据库
难道数据库和存储系统不一样吗?
概览
笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 。
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
DSL: domain specific language (领域专用语言)
关系型数据库特点
非关系型数据库
数据库 vs 经典存储
结构化数据管理
经典存储:就是自定义存储的数据结构,然后以byte为单位存储到文件中。
然后数据库也是建立在经典存储上面的,是经典存储一步一步的增加功能和升级从而陈给了现在的数据库。
事务能力
一致性:事务前后状态是统一的,例如A有1000块,给B转账500块,最终A(500)、B(500)。不一致举例:A(500),B(0)
复杂查询能力
经典存储:需要些代码去读取一个一个的数据,然后进行if-else 判断
数据库使用方式
sql是在数据库领域具有统治性的DSL
03 主流产品剖析
3.1 单机存储
概览
本地文件系统
VFS: Virtual File System
index node 和 文件关系是1:1的
系统的index node数量在初始化时基本就是固定的
Directory Entry是一个全内存的数据结构,并不会被持久化到磁盘
key-value 存储
常见的数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能(HDD-SSD) LSM-Tree是在HDD到SDD转变的节点创建的,当时HDD(顺序读写)在市场上是占统治地位的
LSM-Tree: Log Structured Merge Tree
左边:内存结构
右边:磁盘结构
两边都是顺序写入的pattern
黄色的MemTable中的记录会被一条一条地添加,当满了之后就会被加入灰色的Memtable 不可变的MemTable会被顺序写入到0 SSTable(有序的key value集合)
level 0 装满之后下刷到level1 ,会不断的往下刷,想要执行get(key), 需要将多层level合并
immutable 不可变的
3.2 分布式存储
概览
重点关注网络交互的有效性和性能
分布式文件系统
posix语义:是posix
NameNode: 保存了整个系统数据存储的拓扑结构,当读数据的时候先和NameNode进行交互,拿到数据存储在哪。在HDFS的基础上建立了Hadoop体系。
分布式对象存储系统
数据分布模型:副本怎么在物理服务器上存储。
3.3 单机关系型数据库
概览
关系型数据库
左边是数据结构,右边是数据存储结构(Page 、Redo Log、Temp file)
每个节点就是一个Page,对树或者节点的操作都会记录在redo log之中
temp data : 一些中间数据,例如在计算的过程中发现内存不够了,把一些join或者sorted 的结果写入临时文件,再需要用到的时候进行读取。
3.4 单机 非关系型数据库
ElasticSearch使用案例
搜索使用的是倒排索引
3.5 从单机到分布式数据库
解决容量问题
解决办法:设计存储池,存储池和数据之间使用网络进行交互,数据库不用担心存储容量够不够。存储池会自动完成存储资源的扩充和卸载。
解决存储设备的容量、弹性、性价比问题。
解决弹性问题
弹性:资源的动态扩展和卸载
最开始的Server 资源图后来业务扩张,更换Server设备,后来业务收缩又更换Server 设备,这是非常麻烦的。
解决办法:服务设备资源池化,使用cpu pool和storage pool
解决性价比问题
解决办法:服务设备资源池化
More to DO
- 现在的数据库不管是不是分布式都是单写架构,同一时间同一数据只有一个用户能够进行操作
- 怎么提升内存的单行
- 分时事务的优化
04 新技术演进
4.1 概览
4.2 新技术演进-SPDK
访问外设,一些外设速度很慢,需要中断,这个时候可以让cpu去干别的事。
SPDK提供的poller分两种:基于定时器的poller和非定时器的poller。谓Poller,其实就是用户定义函数的封装
减少cs: context switch
4.3 新技术演进 - al & storage
根据行存储和列存储各自的优势,再利用al实时分析(依据的数据有数据访问频度等)哪些数据行存储哪些数据列存储
4.4 新技术演进-高性能硬件
rdma网络参考网址:blog.csdn.net/bandaoyu/ar… rdma直接将数据映射到网卡,减少拷贝次数,减少cpu开销
persistent memory 结合了ssd和memory二者的特性。
可编程交换机在分布式数据库情况下,做一些缓存一致性协议,一些多副本协同的工作。
many-core 20核-->40核--->100核
workload: 工作量
总结
课后作业
引用
补充
世界是树型的
世间的一切都是key-value 例如key是你的标识,value是你的内涵