这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天,今天主要学习了存储和数据库的一些知识,重新回顾了RAID技术和linux文件系统的两个重要数据结构index node 和 directory entry。
存储与数据库
存储
存储:提供了读写、控制类接口,能安全有效数据持久化的软件
特点:性能敏感,易受硬件影响
数据到存储介质:缓存很重要,要用好;拷贝很昂贵,要减少。
RAID技术
全名:廉价冗余磁盘阵列
RAID0:最优读写性能,不提供数据冗余,至少需要两块盘
RAID1: 最佳安全性能,一块磁盘对另一块磁盘镜像,100%自动复制
RAID5:不对存储数据备份,把数据和对应的奇偶校验信息存储到各磁盘,且二者存在不同的磁盘上。
数据库
| 关系数据库 | 非关系数据库 | |
|---|---|---|
| 形式 | 表 | 文档、键值对、图 |
| 查询 | SQL复杂查询 | 复杂 |
| 事务 | 要求 | 不要求 |
主流存储产品剖析
单机存储:本地文件系统
linux文件系统:
- index node:文件元信息如数据在磁盘位置,是文件唯一标识,存在缓存。
- directory entry:记录文件名字、索引节点和其他关系,存在内存。
- 关系:n个directory entry : 1个inode(如硬链接)
mysql
操作日志redolog:记录那个page什么操作
临时数据文件:join或排序结果存在这里
非关系数据库:三足鼎立
elasticsearch:面向文档存储,模糊匹配
mongoDB:基于collection的存储
Redis:数据结构丰富,主要基于内存
分布式数据库
存储节点池化解决以下三个问题: 1.容量问题 2.解决弹性问题,扩容缩容 3.性价比问题
新技术展望
软件架构变更
bypass:减少系统调用的性能损耗,直接从用户态访问磁盘
中断到轮询:磁盘性能提升后,中断次数变多,不利于IO性能,绑定cpu不断轮询
AI增强
行列混存
硬件变更
RDMA网络:工作卸载到RDMA网卡 可编程交换机:缓存一致性协议
总结
存储数据库领域,硬件反推软件革命非常普遍