存储 & 数据库 | 青训营笔记

63 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记

问题

  • 数据合法性、数据丢失
  • 高效利用内存
  • 关注存储介质的寿命和性能
  • 别的存储系统能用吗?
  • 多人同时修改怎么办?
  • 非结构化数据能用吗?

存储系统

是一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件

  • 性能敏感,多用缓存,减少拷贝
  • 与各种硬件打交道,需要有抽象统一的接入层
  • 需要足够简单,方便易用,又要能够处理各种异常状况

RAID技术:Redundant Array of Inexpensive Disks,为单机存储系统提供高性能、高性价比、高可靠性

  • RAID 0:多块磁盘简单组合,能提高磁盘带宽但无额外容错设计
  • RAID 1:一块磁盘一块镜像,真实空间利用率只有50%,容错能力强
  • RAID 0 + 1:复合,综合两者优点

数据库

  • 可以分关系型数据库和非关系型数据库两种
  • 关系可以认为是集合,是任意元素组成的若干有序偶对,反映了事物之间的关系。
  • 关系代数:对关系作运算的抽象查询语言,包括交、并、笛卡尔积等。
  • SQL:一种DSL,本质是关系代数,但是方便人类阅读

关系型数据库、非关系型数据库都是存储系统,前者对结构化数据友好,支持事物(ACID),支持复杂查询语言,后者一般不要求严格的结构化。对半结构化数据友好,可能支持事物,可能支持复杂查询语言

主流产品剖析

  • 单机存储:单个计算机节点,一般不涉及网络交互。如Linux文件系统,key-value存储RocksDB
  • 分布式存储:在单机存储基础上实现了分布式协议,涉及大量网络交互。如分布式文件系统HDFS、分布式对象存储Ceph
  • 单机数据库:单个计算节点上的数据库系统,事务在单机内执行,也可能通过网络交互实现分布式事务,例如关系型数据库Oracle、MySQL、PostgreSQL,非关系型数据库MongoDB、Redis、Elasticsearch
  • 分布式数据库:分布式架构,解决容量问题(池化与动态扩缩容)、弹性问题(资源适配)、性价比问题(提高资源利用率)。

新技术演进

  • 软件架构变更,Bypass OS kernel
  • AI增强,智能存储格式转换
  • 新硬件革命,包括存储介质、计算单元、网络硬件