简介
存储系统
存储系统:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,称为存储系统
系统特点:
- 作为后端软件的底座,性能敏感
- 存储系统软件架构,容易受硬件影响
- 存储系统代码,既简单又复杂
存储器层次结构:
数据从应用到存储介质:
RAID技术
数据库
数据库分为关系型数据库和非关系型数据库
关系代数=对关系做运算的抽象查询语句
关系=集合=任意元素组成的若干有序偶对,反映了事物间的关系
SQL=一种DSL=方便人类阅读的关系代数的表达式
关系型数据库的特点:
- 结构化数据友好
- 支持事务
- 支持复杂语言查询
非关系型数据库的特点:
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂语言查询
主流产品
单机存储
单机存储=单个计算机节点上的存储管理系统,一般不涉及网络交互
本地文件系统
文件系统的管理单元:文件
文件系统接口:文件系统繁多,均遵循VFS的统一抽象接口
Linux两大数据结构:
-
Index Node
记录文件元数据
inode是一个文件的唯一标识,会被存储到磁盘上
inode的总数在格式化文件系统时已被固定
-
Directory Entry
记录文件名,inode指针,层级关系(parent)等
dentry是内存结构,与inode的关系是N:1
key-value存储
常见的使用方式:put(k,v)&get(k)
常见的数据结构:LSM-Tree,某种程度上,牺牲读性能,追求写入性能
分布式存储
分布式存储=在单机存储的基础上实现了分布式协议,涉及大量网络交互
HDFS
Ceph
单机数据库
单机数据库=单个计算机节点上的数据库系统
关系型数据库
关系型数据库通用组件:
- Query Engine:负责解析query,生成查询计划
- Txn Manger:负责事务并发管理
- Lock Manger:负责锁相关策略
- Storage Engine:负责组织内存/磁盘数据结构
- Replication:负责主备同步
关键内存数据结构:B-Tree,B+-Tree,LRU List等
关键磁盘数据结构:WriteAheadLog(RedoLog),Page
非关系型数据库
关系型数据库一般直接使用SQL语句交互,而非关系型数据库交互方式各不相同
非关系型数据库数据库的数据结构千奇百怪,没有关系约束后,schema相对灵活
不管是否关系型数据库,都在尝试支持SQL(子集)和事务
分布式数据库
解决容量问题
解决弹性问题
解决性价比问题