这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
数据流动
用户->后端服务器->数据库
数据持久化
校验合法性->修改内存->写入存储介质
潜在问题
如何保证数据不丢
如何处理 多人同时修改
除了数据库还能存到别的存储系统
数据库只能处理结构化数据吗
有哪些数据库操作方式,要用什么编程语言
存储系统
系统概览
-
什么是存储系统
- 提供了读写、控制类接口,能够安全有效地把数据持久化的软件就可以称为存储系统
-
存储系统特点
- 后端软件底座,性能敏感
- 存储系统代码,既简单又复杂
- 存储系统软件架构,容易受硬件影响
-
储存器层级结构
RAID技术
-
背景
- 单块大容量磁盘价格>多块小容量磁盘
- 单块磁盘的写入性能<多块磁盘的并发写入性能
- 单块磁盘容错能力有限,不够安全
-
RAID 0(性能设计极端)
- 多块磁盘简单组合
- 数据条带化存储,提高磁盘带宽
- 没有额外的容错设计
-
RAID 1(容错设计极端)
- 一块磁盘对应一块额外镜像盘
- 真实空间利用率只有一半
- 容错能力强
-
RAID 0 + RAID 1(安全性能兼顾型)
- 结合RAID 0 和 RAID 1
- 真实空间利用率仅50%
- 容错能力强,写入带宽好
数据库
关系型数据库
结构化数据:可以用二维表来逻辑表达实现的数据
概览
- 关系:反应了事物间的关系
- 关系代数:对关系坐运算的抽象查询语言
- SQL : 方便人类阅读的关系代数表达式
特点
- 结构化数据友好
- 支持事务
- 支持复杂查询语言
非关系型数据库
特点
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询语言
数据库 VS 经典存储
-
事务ACID能力
-
复杂查询能力支持
-
结构化数据管理
主流存储产品剖析
单机存储
单机存储 = 单个计算机节点上的存储系统,不涉及网络交互
-
K-V存储
- 常见数据结构,LSM-Tree,某种程度上牺牲读性能,追求写入性能
- 产品:RocksDB
-
本地文件系统
- Linux
分布式存储系统
分布式存储 = 在单机存储基础上实现了分布式协议,涉及大量网络交互
分布式文件系统
HDFS
-
背景
- 专业高级硬件贵,数据存量很大,要求超高吞吐
-
特点
- 支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用普通X86服务器,性价比高
分布式对象存储系统
Ceph
-
核心特点
- 一套系统支持对象、块接口、文件接口,但是一切皆对象
- 数据写入采用主备复制模型
- 采用CRUSH算法,HASH+权重+随机抽签
单机数据库
通用组件
QueryEngine 负责解析query,生成查询计划
TxnManager 负责事务并发管理
LockManager负责锁相关策略
Storage Engine 负责组织内存、磁盘数据结构
Replication 负责主备同步
关键数据结构
- B-Tree
- B+-Tree
- LRU List
关键硬盘数据结构
- Page
- WriteAheadLog(RedoLog)
引用
- 稀土掘金内部课 后端入门 - 存储与数据库