2.1 存储器层级结构
Computer Memory Hierarchy
金字塔尖:容量极小,超高性能访问
金字塔底部:容量大,读写速度非常慢,访问方式不友好
想法:在我们的中间层,能不能存在一个坚固,持久化的新型存储器呢?
- Persistent Memory
数据怎么从应用到存储介质呢
- 如下链路图
缓存很重要,贯穿整个存储体系
- 存储介质访问有可能不是特别友好,比如有的硬件需要一个byte一个byte写入,但是软件不会这样写
- 软件去实现cache就很重要,帮助我们和硬件友好的方式去和硬件交互。
- 软件也是分层的,还能跨软件层
拷贝 是非常昂贵的
- 消耗CPU的操作
Disk 代指任何硬件, 需要抽象统一的接入层
RAID技术
Q: 单机存储系统怎么做到高性能,高性价比,高可靠性
A: RAID
RAID0
- 多款磁盘简单组合
- 数据条带化储存,提高磁盘带宽
- 没有额外的容错设计
- 没有对数据做冗余,备份。只是写进去会被切割
RAID1
- 一款磁盘对应一块额外镜像盘(克隆)
- 真实空间利用率50%
- 容错能力强
RAID 0 + 1
- 结合了0 和 1
- 真实空间利用率百分之50
- 容错能力强,写入带宽好
难道数据库和存储系统不一样么?
- 关系型数据库
- 非关系型数据库
2.2 数据库 - 概览
关系(relation)是什么?
- 关系 = 集合= 任意元素组成的若干有序偶对反应了事物间的关系
关系代数 = 对关系做运算的抽象查询语言
- 交, 并, 笛卡尔积。。。。。
SQL = 一种DSL = 方便人类阅读的关系代数表达式
- 去操作关系时用到的特定语言
- 人说人话,狗说狗话
2.2 数据库 - 关系型数据库的特点
关系型数据库是存储系统,但是在存储之外,又发展出其他能力
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂查询语言
2.2 数据库 - 非关系型数据库特点
非关系型数据库也是存储系统,但是一般不要求严格的结构化
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询语言
2.3 数据库 vs 经典存储 - 结构化数据管理
一条用户注册数据
{
"user_name": "xiaoming",
"password": "helloworld",
"password_hint": "coding",
.....
}
写入关系型数据库,以表形式管理,很简单自然
| use_name | password |
|---|---|
| xiaoming | helloworld |
写入文件,自行定义管理结构
第一个 4 byte 是这条数据的长度, 第二个就是描述第一个字段多长, 第四个就是描述password有多长
- 很痛苦,无时无刻都在和byte打交道,做byte级别运算
2.3 数据库 vs 经典存储 - 事务能力
ACID
- atomicity: 事务内操作要么全做,要么不做
- consistency: 事务执行前后,数据状态是一致的
- 转账: A的账上有1k, B没钱。 A给B转500,事务结束后。 A账户有500,B有500
- 不一致:A给B转钱,B没收到。数据库状态不一致了
- isolation: 可以隔离多个并发事务,避免影响
- 也取决于隔离级别
- durability: 事务一旦提交成功,数据保证持久性
经典存储没有事务这种概念
2.3 数据库 vs 经典存储 - 复杂的查询能力
2.4 数据库的使用方式
3. 主流产品剖析
- 3.1 单机存储
- 3.2 分布式存储
- 3.3单机关系型数据库
- 3.4单机非关系型数据库
- 3.5分布式数据库
3.1 单机存储 -- 概览
单机存储 = 单个计算机节点上的存储软件系统,一般不涉及网络交互
一个I node对应到一个文件。 一个文件夹下面有一个a文件,看另一个文件夹也有,他们的Inode不一样。
D Entry:不会被持久化存储
3.1 单机存储 - key value存储
世间一切皆key-value
-- key是你身份证,value是你的内涵
常见使用方式:put, get
参见数据结构: LSM-tree,牺牲读性能,追求写入性能
拳头产品: RocksDB
3.2 分布式存储 -- 概览
分布式存储 = 在单机存储基础上实现了分布式协议,涉及大量网络交互
- 用一些便宜的硬件
- 在这个之上,发明了Hadoop
3.3 单机数据库
单个计算机节点上的数据库系统
事务在单机内执行,也可能通过网络交互实现分布式事务
用户想要update我们数据,其实就是操作我们的page
redo log:保证操作不会丢失
others: 存我们的临时数据文件
3.4 单机数据库 -- 非关系型数据库
- elastic search :基于文档,对文档操作
- mongoDB: 灵活
- redis:数据结构丰富(没有尝试去支持DSL)
跟RDVMS相比,ES天然能做模糊搜索,还能自动算出关联程度
3.5 从单机到分布式数据库
4. 新技术演进
- 软件架构变更
- bypass OS kernerl
- AI增强
- 智能存储格式转换
- 新硬件革命
- 存储介质变更
- 计算单元变更
- 网络硬件变更