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
- RDMA 网络
ps:存储与数据库领域,硬件很有可能推动软件变革。