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

81 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 12 天

本节课主要介绍:

三、主流产品剖析

3.1单机存储

文件系统的管理单元:文件

文件系统接口:如:Ext2/3/4,sysfs,rootfs等,但是都遵循VFS的统一抽象接口

Linux文件系统的两大数据结构:

1.Index Node:

记录文件元数据(id、大小、权限、磁盘位置等)

inode是文件的唯一标识,会被存储到磁盘上

inode的总数在格式化文件系统时就固定了

2.Directory Entry

记录文件名、inode指针,层级关系(parent)等

dentry是内存结构

key-value存储:

常见使用方式:put(k,v)&get(k)

常见数据结构:LSM-Tree,追求写入性能

3.2分布式存储:

在单机基础上实现分布式协议

3.2HDFS:

核心特点:

1.支持海量数据存储

2.高容错性

3.弱POSIX语义

4.使用普通x86服务器,性价比高

3.2Ceph

核心特点:

一套系统支持对象接口、块接口、文件接口(一切皆对象)

数据写入采用主备复制模型

数据分布模型采用CRUSH(hash+权重+随机抽签)

3.3单机数据库

Mysql:

关系型数据库的通用组件:

Query Engine——负责解析query,生成查询计划

Txn Manager——事务并发管理

Lock Manager——锁相关的策略

Storage Engine——组织内存/磁盘数据结构

Replication——主备同步

PostgreSQL:

1.关键内存数据结构:

B-Tree

B+-Tree

LRU List等

2.关键磁盘数据结构:

WriteAheadLog(ReddoLog)、Page

3.4非关系型数据库

关系型数据库一般直接使用SQL交互, 而非关系型数据库交互方式各不相同

非关系型数据库的数据结构千奇百怪, 没有关系约束后,schema相对灵活

不管是否关系型数据库,大家都在 尝试支持SQL(子集)和“事务”

Elasticsearch:

面向「文档」存储

文档可序列化成JSON,支持嵌套

存在「index」,index=文档的集合

存储和构建索引能力依赖Lucene引擎

实现了大量搜索数据结构&算法

支持RESTFUL API,也支持弱SQL交互

mongoDB:

面向「文档」存储

文档可序列化成JSON/BSON,支持嵌套

存在「collection.」,collection=文档的集合

存储和构建索引能力依赖wiredTiger引擎

4.0后开始支持事务(多文档、跨分片多文档等)

常用client/SDK交互,可通过插件转译支持弱SQL

redis:

数据结构丰富(hash表、set、Zset、list)

C语言实现,超高性能

主要基于内存,但支持AOF/RDB持久化

常用redis-cli/多语言SDK交互

四、新技术演进

4.1新技术演进一概览

软件架构变更:

Bypass OS kernel

AI增强:

智能存储格式转换

新硬件革命:

存储介质变更

计算单元变更

网络硬件变更

4.2新技术演进一SPDK

1.Kernel Space -User Space

避免syscall带来的性能损耗,直接从用户态访问磁盘

2.中断->轮询

磁盘性能提高后,中断次数随之上升,不利于IO性能

SPDK poller可以绑定特定的cpu核不断轮询,减少cs,提高性能

3.无锁数据结构

使用Lock-free queue,降低并发时的同步开销

4.3新技术演进一Al&Storage

AI领域相关技术,如Machine Learning在很多领域:如推荐、风控、视觉领域证明了有效性

4.4新技术演进一高性能硬件

O1.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

引用:

字节内部课-认识存储与数据库 - 掘金 (juejin.cn)