认识存储的本质 | 青训营笔记

69 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天

经典案例

  • 数据的持久化:校验数据的合法性 -> 修改内存 -> 写入存储介质

存储&数据库简介

存储系统

  • 一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件
    • 系统特点:作为后端软件的底座,性能敏感;存储系统软件架构,容易受硬件影响;存储系统代码,IO路径简单,非IO路径例如异常处理复杂。
    • 层级结构:金字塔
    • 数据从应用到存储介质:缓存很重要,贯穿整个存储体系;拷贝很昂贵,应该尽量减少;需要有抽象统一的接入层。
  • RAID技术:R(edundant) A(rray) of I(nexpensive) D(isks)
    • RAID0:多块磁盘简单组合;数据条带化存储,提高磁盘带宽;没有额外的容错设计
    • RAID1:一块磁盘对应一块额外镜像盘;真实空间利用率仅50%;容错能力强
    • RAID 0 + 1

数据库

  • 关系型数据库:是存储系统,但在存储之外又发展出其他能力
    • 结构化数据友好
    • 支持事务(ACID)
    • 支持复杂查询语言(SQL)
  • 非关系型数据库:也是存储系统,但是一般不要求严格的结构化
    • 半结构化数据友好
    • 可能支持事务(ACID)
    • 可能支持复杂查询语言

主流存储产品剖析

  • 单机存储:单个计算机节点上的存储软件系统,一般不涉及网络交互
    • 本地文件系统:Index Node(文件元数据 唯一标识),Directory Entry(内存结构)
    • key-value存储:LSM-Tree
  • 分布式存储:在单机存储基础上实现了分布式协议,涉及大量网络交互
    • HDFS(分布式文件系统):支持海量数据存储,高容错性,弱POSIX语义,使用普通x86服务器性价比高
    • 分布式存储(Ceph -- 开源分布式存储系统里的万金油):一套系统支持对象接口、块接口、文件接口,但一切皆是对象,数据写入采用主备复制模型,数据分布模型采用CRUSH算法。
  • 单机关系型数据库:MySQL & PostgreSQL
  • 单机非关系型数据库:MongoDB、Redis、Elasticsearch三足鼎立。交互方式各不相同,schema相对灵活。
  • 分布式数据库
    • 单机问题:容量、弹性、性价比
    • 存储节点池化,动态扩缩容
    • 使用共享存储池,不需要扩CPU