这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
一、课程内容
- 存储系统
- 数据库
二、详细知识点
1、存储系统
概念
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
特点:
- 性能敏感
- 系统软件架构容易受硬件影响
从应用到存储介质
- 缓存
- 拷贝
RAID技术
让单机存储做到高性能、高性价比、高可靠性
2、数据库
关系型数据库
- 结构化数据友好
- 支持事务
- 支持复杂查询语言
非关系型数据库
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询语言
与经典存储对比
结构化数据管理
- 写入关系型数据库以表形式管理
- 写入文件自行定义管理结构
事务能力
- A(tomicity):事务内操作要么全做,要么不做
- C(onsistency):事务执行前后,数据状态是一致的
- I(solation):可以隔离多个并发事务,避免影响
- D(urability):事务一旦提交成功,数据保证持久性
复杂查询能力
3、单机存储
单个计算机节点上的存储软件系统,一般不涉及网络交互
本地文件系统
文件系统的管理单元:文件
文件系统接口:遵循VFS的统一抽象接口
Linux文件系统的两大数据结构:Index Node & Directory Entry。其中Index Node记录文件元数据,是一个文件的唯一标识,存储到磁盘上时inode的总数在格式化文件系统时就固定了。Directory Entry记录文件名、inode指针、层级关系等,是内存结构。
key-value存储
常见使用方式:put(k,v) & get(k)
常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
拳头产品:RocksDB
4、分布式存储
HDFS
特点:
- 支持海量存储
- 高容错性
- 弱POSIX语义
- 使用普通x86服务器,性价比高
Ceph
特点:
- 一切皆对象
- 数据写入采用主备复制模型
- 数据分布模型采用CRUSH算法