[ 存储与数据库的新技术演进 | 青训营笔记 ]

78 阅读3分钟

一. 新技术演进

1.1 新技术演进——概览

1. 软件架构变更

Bypass OS kernel

2. AI增强

智能存储格式转换

3. 新硬件革命
  • 存储介质变更
  • 计算单元变更
  • 网络硬件变更

1.2 新技术演进——SPDK

SPDK Storage Performance Development Kit

1. Kernel Space -> User Space
  • 避免syscal带来的性能损耗,直接从用户态访问磁盘
2. 中断->轮询
  • 磁盘性能提高后,中断次数随之上升,不利于I0性能
  • SPDK poller可以绑定特定的cpu核不断轮询,减少cs, 提高性能
3. 无锁数据结构
  • 使用ock- free aueue,
  • 降低并发时的同步开销

1.3 新技术演进——AI & Storage

AI领域相关技术,如Machine Learning在很多领域:如推荐、风控、视觉领域证明了有效性 AI决策:行存or列存(动态变换、实时分析)

1.4 新技术演进——高性能硬件

01 .RDMA网络
  • 传统的网络协议栈,需要基于多层网络协议处理数据包,存在用户态&内核态的切换,足够通用但性能不是最佳
  • RDMA是kernel bypass的流派,不经过传统的网络协议栈,可以把用户态虚拟内存映射给网卡,减少拷贝开销,减少cpu开销
02 .Persistent Memory

在NVMe SSD和Main Memory之间有一种全新的存储产品: Persistent Memory

  • IO时延介于SSD和Memory之间,约百纳秒量级
  • 可以用作易失性内存(memory mode),也可以用作持久化介质(app-direct)
03 .可编程交换机
  • P4 Switch, 配有编译器、计算单元、DRAM,可以在交换机层对网络包做计算逻辑。在数据库场景下,可以实现缓存一致性协议等
04 .CPU/GPU/DPU
  • CPU :从multi-core走向many-core
  • GPU:强大的算力&越来越大的显存空间
  • DPU:异构计算,减轻CPU的workload

总结

存储系统
  • 块存储:存储软件栈里的底层系统,接口过于朴素
  • 文件存储:日常使用最广泛的存储系统,接口十分友好,实现五花八门
  • 对象存储:公有云上的王牌产品,immutable语 义加持
  • key-value存储:形式最灵活,存在大量的开源/黑盒产品
数据库系统
  • 关系型数据库:基于关系和关系代数构建的,一般支持事务和SQL访问,使用体验友好的存储产品
  • 非关系型数据库:结构灵活,访问方式灵活,针对不同场景有不同的针对性产品
分布式架构
  • 数据分布策略:决定了数据怎么分布到集群里的多个物理节点,是否均匀,是否能做到高性能
  • 数据复制协议:影响I0路径的性能、机器故障场景的处理方式
  • 分布式事务算法:多个数据库节点协同保障一个事务的ACID特性的算法,通常基于2pc的思想设计

在存储和数据库领域,硬件反推软件变革十分常见。

二. 实现一个(分布式) key-value 存储系统

要求:

  1. 基于本地文件系统实现,支持常用的put(k, v)、 get(k, v)、scan_by_prefix(prefix)接口
  2. 支持存 储server独立进程部署,支持跨进程或者网络访问
  3. I0操作做到低时延
  4. *可选 :支持扩展成分布式架构,多 台存储server组成一个 分布式key-value存储系统,并保证全局的数据一致性

三.个人感悟

  1. 存储和数据库是两个概念,不能混淆
  2. 时刻学习新技术,紧跟时代步伐
  3. 多敲代码