存储系统与数据库系统初识 | 青训营

84 阅读5分钟

from: 字节跳动-内部课程(掘金)( bytedance.feishu.cn/file/boxcn7… )
author: June
created: 2023-08-09 16:51
tags: #course


1. 经典案例

引入:一条数据从产生,到数据流动,最后持久化的全生命周期。

产生:eg. 注册一个新账户,用户名-密码 流动:客户端(用户注册信息)->后端服务器->数据库<->其他系统
持久化:校验数据合法->修改内存(高效数据结构)->写入存储媒介(寿命&性能)

问题:数据不丢失?多人同时修改?别的存储系统?结构化数据还是其他?数据库的操作编程语言?

2. 存储系统 & 数据库简介

Q:什么是存储系统
A:提供读写、控制类接口,可以安全有效得把数据持久化的软件。

系统特点:性能敏感 + 硬件影响 + 代码既简又繁
理解计算机内存层次结构:存取速度与价格的平衡 -> 多层次结构:缓存 与 拷贝

存储系统的 RAID (Redundant Array of Inexpensive Disks)技术,可以参考百度百科了解 baike.baidu.com/item/%E7%A3… ,其思想是利用多块廉价的冗余磁盘实现高可靠性。ps:RAID10不是⑩,而是1+0。

  • 块存储: 存储软件栈里的底层系统,接口过于朴素
  • 文件存储: 日常使用最广泛的存储系统,接口十分友好,实现五花八门
  • 对象存储: 公有云上的王牌产品,immutable 语义加持
  • key-value 存储: 形式最灵活,存在大量的开源/黑盒产品

数据库≠存储系统,数据库又分为 关系型数据库 和 非关系型数据库,关系型数据库相比于存储系统,会有表格形式管理;具有事物能力,即 ACID 特性;复杂的查询能力。

数据库的使用 Domain Specific Language,比如部分关系数据库的 SQL 语句,可细分为 DDL 和 DML 等进行操作。

3. 主流产品

3.1 单机存储

单个计算机节点上的存储软件系统,一般不涉及网络交互。

  • 本地文件系统
    • Linux 经典哲学:一切皆文件。
    • Linux 文件系统的两大数据结构:Index Node 与 Directory Entry。
  • key-value 存储
    • put (k, v);get (k)
    • 数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
    • 代表产品:RocksDB。

3.2 分布式存储

在单机存储基础上实现了分布式协议,涉及大量网络交互。

  • HDFS
    • 大数据时代的基石
    • 海量数据存储,高容错性,弱 POSIX 语义,普通服务器性价比高
  • Ceph
    • 开源分布式存储系统里的万金油
    • 支持对象,主备复制模型,分布采用 CRUSH 算法(Hash+权重+抽签)

3.3 单机数据库

单机数据库 = 单个计算机节点上的数据库系统。
事务在单机内执行,也可能通过网络交互实现分布式事务。

单机关系型数据库

  • 代表产品:商业产品 Oracle;开源产品 MySql,PostgreSQL
  • 通用组件:
    • Query Engine
    • Txn Manager
    • Lock Manager
    • Storage Manager
    • Replication
  • 关键结构:
    • 内存结构:B-Tree,B+Tree,LRU List
    • 磁盘结构:WriteAheadLog(RedoLog),Page

单机非关系型数据库

MongoDB、Redis、Elasticsearch 三足鼎立
相对于关系型数据库,交互方式多样、schema 更灵活、SQL 和事务目前支持不太完整。

Elasticsearch 数据库( github.com/elastic/ela… ),简称 ES,是个分布式搜索引擎,相比与关系型数据库,可以“模糊搜索”,计算关联程度。

3.4 分布式数据库

  • 问题驱动进步:容量 + 弹性 + 性价比

    • 容量:存储节点池化
    • 弹性:计算资源变化,扩容缩容
    • 性价比:存算分离,不会浪费计算资源或存储资源
  • 还在进步:多写 + 内存弹性 + 分布式事务

  • 特性技术

    • 数据分布策略: 决定了数据怎么分布到集群里的多个物理节点,是否均匀,是否能做到高性能
    • 数据复制协议: 影响 IO 路径的性能、机器故障场景的处理方式
    • 分布式事务算法: 多个数据库节点协同保障一个事务的 ACID 特性的算法,通常基于2pc 的思想设计

4. 新技术演进

  • 新架构 - SPDK(Storage Performance Development Kit),bypass kernel 内核旁路技术
    • kernel space->User space,避免 syscall
    • 中断->轮询,SPDK piler 绑定 cpu 不断轮询
    • 无锁数据结构,lock-free queue
  • 新理论 - AI 赋能
    • AI 决策行列混存
  • 新硬件
    • RDMA 网络
      • 传统的网络协议栈,需要基于多层网络协议处理数据包,存在用户态&内核态的切换,足够通用但性能不是最佳
      • RDMA 是 kernel bypass 的流派,不经过传统的网络协议栈,可以把用户态虚拟内存映射给网卡,减少拷贝开销,减少 cpu 开销
    • Persistent Memory
      • 在 NVMe SSD 和 Main Memory 间有种全新的存储产品: Persistent Memory
      • IO 时延介于 SSD 和 Memory 之间,约百纳秒量级
      • 可以用作易失性内存(memory mode),也可以用作持久化介质(app-direct)
    • 可编程交换机
      • P4 Switch,配有编译器、计算单元、DRAM,可以在交换机层对网络包做计算逻辑。在数据库场景下,可以实现缓存一致性协议等
    • CPU/GPU/DPU
      • CPU: 从 multi-core 走向 many- core
      • GPU: 强大的算力&越来越大的显存空间
      • DPU: 异构计算,减轻 CPU 的 workload

ps:存储与数据库领域,硬件很有可能推动软件变革。