存储的本质 | 青训营笔记

52 阅读2分钟

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

一. 重点内容

  • 存储 & 数据库

  • 主流产品剖析

二. 知识点介绍

1. 存储 & 数据库

  • 存储系统:提供了读写、控制类接口,能够安全有效地把数据持久化
  • 存储系统特点
    • 性能敏感
    • 容易受硬件影响
    • 代码既简单又复杂
  • 存储器层级架构image.png
  • RAID技术
    • 背景:
      • 单块大容量磁盘的价格 > 多块小容量磁盘
      • 单块磁盘的写入性能 < 多块磁盘的并发写入性能
      • 单块磁盘的容错能力有限,不够安全
    • 高性能、高性价比、高可靠性
    • Redundant Array of Inexpensive Disks
  • 关系:集合=任意元素组成的若干有序偶对,反应了事物间的关系
  • 关系型数据库:不单是存储系统,还展现出了其他能力
    • 结构化数据友好
    • 支持事务(ACID)
    • 支持复杂查询语言
  • 非关系型数据库:存储系统,一般不要求严格的结构化
    • 半结构化数据友好
    • 可能支持事务(ACID)
    • 可能支持复杂查询语言
  • 事务(ACID)
    • Atomicity:事务内的操作要么全做,要么不做
    • Consistency:事务执行前后,数据状态是一致的
    • Isolation:可以隔离多个并发事务,避免影响
    • Durability:事务一旦提交成功,数据保持持久性

2. 主流产品剖析

  • 单机存储
    • 本地文件系统:一切皆文件,如Linux文件系统两大数据结构,Index Node & Directory Entry
    • key-value存储:如RocksDB,常见数据结构如LSM-Tree,某种程度上牺牲读性能,追求写入性能
  • 分布式存储:在单机存储基础上实现了分布式协议,涉及大量网络交互
    • HDFS:
      • 支持海量数据存储
      • 高容错性
      • 弱POSIX语义
      • 使用普通x86服务器,性价比高
    • Ceph:
      • 支持对象接口、快接口、文件接口,一切皆对象
      • 数据写入采用主备复制模型
      • 数据分布模型采用CRUSH算法
  • 单机数据库
    • 关系型数据库:如MySQL、PostgreSQL等 image.png
    • 非关系型数据库:如MongoDB、Redis、Elasticsearch等
      • 交互方式各不相同
      • schema相对灵活,没有关系约束
      • 尝试支持SQL(子集)和“事务”
  • 分布式数据库:
    • 解决容量有限,受硬件限制的问题:存储节点池化,动态扩缩容
    • 解决弹性问题
    • 解决性价比问题
    • 单写 vs 多写
    • 从磁盘弹性到内存弹性
    • 分布式事务优化