数据库基础 | 青训营笔记

91 阅读3分钟

存储系统

简介

提供了读写、控制类接口,能安全有效的将数据持久化的软件

  • 作为后端软件的底座,性能敏感
  • 存储系统代码,既简单又复杂
  • 存储系统软件架构,容易受硬件影响 image.png

数据从应用层到存储介质

image.png

  • 缓存很重要,贯穿整个存储体系
  • 拷贝很昂贵,应该尽量减少
  • 硬件设备五花八门,应该抽象统一的接口

RAID技术

R(edundant) A(rray) of I(nexpensive) D(isks)

将一个个单独的磁盘以不同方式形成一个逻辑硬盘,从而提高磁盘读取的性能与数据安全

数据库

关系型

  • 关系:任意元素组成的若干有序偶对
  • 关系型数据库:就是存储系统,但在存储之外,又有其他能力
    • 结构化数据友好
    • 支持事务ACID
      • Atomicity
      • Consistency
      • Isolation
      • Durability
    • 支持复杂查询语言SQL

非关系型

  • 非关系数据库:也是存储系统,但一般不要求严格结构化
    • 半结构化数据友好
    • 可能支持的事务ACID
    • 可能支持复杂的查询语言SQL
  • MongoDB、Redis、Elasticsearch三足鼎立
    • Elasticsearch面向文档存储,文档可以序列化为json,支持嵌套,存储和构建索引能力依赖于Lucene引擎
    • mongoDB面向文档存储,文档可序列化为json/bson,支持嵌套,存在collection,依赖于wiredTiger引擎
    • 数据结构丰富,超高性能,主要基于内存,但是支持AOF/RDB持久化
  • 非关系型数据库交互方式各不相同,数据结构千奇百怪,schema相对灵活
  • 都在尝试支持SQL子集和事务

单机到分布式

单机数据库挑战

  • 容量
  • 弹性
  • 性价比 存储节点池化,动态扩容应对上面的挑战

其他挑战

  • 多写
  • 从磁盘弹性到内存弹性
  • 分布式事务优化

新技术

  • 软件架构变更:bypass OS kernel
    • SPDK:storage performance development kit
      • 避免systemcall带来的性能损耗,直接从用户态访问磁盘
      • 磁盘性能提升后,中断次数上升,将终端处理改为轮询,提高性能
      • 无锁数据结构
  • AI增强:智能存储格式的转换(行存/列存/混存)
  • 新硬件革命:存储介质变更,计算单元变更,网络硬件变更

简单总结下,数据库这里的三个方向的新技术还是蛮有意思的; 无论从软件架构的角度,针对频繁IO做出相应针对性的调整。还是说从从AI角度,智能调整数据存储的底层格式,又或者是根据新的硬件和存储介质做出相应的设计。

感觉上确实能对数据库性能带来很大的提升,这里的优化能做的改进点也很多,只是出于性价比考虑,会不会有公司做就是另一回事了....