这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
存储系统
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,性能敏感,软件架构容易受硬件影响。
存储链路上缓存很重要,拷贝很昂贵,硬件多样需要有抽象统一的接入层
RAID技术
Redundant Array of inexpensive Disks
- 单块大容量磁盘的价格>多块小容量磁盘
- 单块磁盘的写入性能<多块磁盘的并发写入性能
- 单块磁盘的容错能力有限,不够安全
数据库系统
关系型数据库 vs 非关系型数据库
关系型数据库是存储系统,首先对结构化数据友好,支持事务acid,支持复杂查询语言;非关系型数据库也是存储系统,对半结构化数据友好,可能支持事务,可能支持复杂查询语言
主流产品剖析
单机存储
单机存储 = 单个计算机中的存储软件系统,有本地文件系统和本地kv系统。
文件系统的管理单元:文件,都遵循vfs的统一抽象接口。Index Node记录文件元数据,如id、大小、权限、磁盘文章等,属于文件的唯一标识,会被存储到磁盘上;Directory Entry,记录文件名,inode指针,层级关系,dentry是内存结构,与inode的关系是N:1
k-v存储,常见数据结果LSM-Tree,追求写入性能,RocksDB
分布式存储-HDFS
HDFS核心特点:支持海量数据存储,高容错性,弱POXIS语义,使用普通的x86服务器,性价比高
分布式存储——ceph(万金油,源码可读)
ceph核心特点:一套系统支持对象接口、块接口、文件接口,一切皆对象;数据写入采用主备复制模型,数据分布模型采用CRUSH算法
单机型数据库
Oracle商用无敌,开源mysql和postgreSql称霸 Query Engine——负责解析query,生成查询计划,txn manager——负责事务并发管理;Lock Manager——负责锁相关的策略;Storage Engine——负责组织内存/磁盘数据结果;Replication——负责主备同步;关键内存数据结构,B-树,B+-树,LRU list;关键磁盘数据结果,WriteAheadLog、Page
非关系型数据库:MongoDb、Redis、Elasticsearch三足鼎立。
ES:面向文档存储,可序列化weijson,支持嵌套,存储index,index=文档的集合,粗糙和构建索引能力依赖lucene引擎(源码可读)
MongoDB:面向温江存储,存在[collection],支持事务,以来wiredTiger引擎
Redis:高性能,数据结构丰富
分布式数据库
容量问题:单点容量有限,受硬件限制——>存储节点池化,动态扩缩容
弹性问题
新技术
SPDK?AI Sorange?高性能硬件:RDMA网络,persistent Memory,可编程交换机,cpu/gpu/dpu