241126学习日志——[CSDIY] [ByteDance] 后端训练营 [19]

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!!

第一弹:Cpp零基础学习【30 DAYS 从0到1】

第二弹:Cpp刷题文档【LeetCode】

第三弹:Go开发入门【字节后端青训营】

第四弹:Cpp简单项目开发【黑马Rookie】

第五弹:数据结构绪论【数据结构与算法】

第六弹:Go工程实践【字节后端青训营】

第七弹:高质量编程和性能调优【字节后端青训营】

第八弹:Linux 基础知识【书生大模型训练营】

第九弹:Python 基础知识【书生大模型训练营】

第十弹:Git 基础知识【书生大模型训练营】

第十一弹:玩转HF/魔搭/魔乐社区【书生大模型训练营】

第十二弹:书生大模型全链路开源体系【书生大模型训练营】

第十三弹:玩转书生「多模态对话」与「AI搜索」产品【书生大模型训练营】

第十四弹:浦语提示词工程实践【书生大模型训练营】

第十五弹:HTTP 框架修炼之道【字节后端青训营】

第十六弹:打开抖音会发生什么【字节后端青训营】

第十七弹:将我的服务开放给用户【字节后端青训营】

第十八弹:InternLM + LlamaIndex RAG 实践【书生大模型训练营】

第十九弹:深入浅出 RPC 框架【字节后端青训营】

第二十弹:带你认识存储 & 数据库【字节后端青训营】

01. 经典案例

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

1.1 数据的产生

一条用户的数据

{​ 复制代码
{
	字段:值
}

1.2 数据的流动

用户数据 - 后端服务器 - 数据库 - 其它系统...

1.3 数据的持久化

  • 校验数据的合法性:"用户是否已经存在"

  • 修改内存:用高效的数据结构组织数据

  • 写入存储介质:以寿命 & 性能友好的方式写入硬件

1.4 潜在的问题

  • 数据库怎么保证数据不丢
  • 数据库怎样处理多人同时修改的问题?
  • 为什么用数据库,除了数据库还能存到别的存储系统吗?
  • 数据库只能处理结构化数据吗?
  • 有哪些操作数据库的方式 ,要用什么编程语言

02. 存储 & 数据库简介

什么是存储系统?什么是数据库?

  • 什么是存储系统?
    • 一个提供了读写控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。

2.1 存储系统 - 系统特点

  • 作为后端软件的底座,性能敏感

  • 存储系统代码,既"简单"又"复杂"

  • 存储系统软件架构,容易受硬件影响

2.2 存储系统 - 存储器层级结构

Computer Memory Hierarchy

2.3 存储系统 - 数据怎么从应用到存储介质

  • 缓存很重要,贯穿整个存储体系
  • 拷贝很昂贵,应该尽量减少
  • 硬件设备五花八门,需要有抽象统一的接入层(防止因为底层硬件改变而导致框架崩塌)

2.4 存储系统 - RAID 技术

单机存储系统做到高性能/高性价比/高可靠性

Redundant Array of Inexpensive Disk

单块磁盘的价格贵于多个小磁盘,写入性能却劣于多个小磁盘,且容错能力有限,不够安全。

RAID 0
  • 多块磁盘简单组合
  • 数据条带化存储,提高磁盘带宽
  • 没有额外的容错设计
RAID 1
  • 一块磁盘对应一块额外镜像盘
  • 真实利用率仅仅50%
  • 容错能力强
RAID 0 + 1 / 1 + 0
  • 结合 RAID 0 和 RAID 1
  • 真实利用率仅仅50%
  • 容错能力强,写入带宽大

2.5 数据库

难道数据库和存储系统不一样吗?

关系型数据库、非关系型数据库

2.6 数据库 - 概览

关系(Relation)是什么

关系 = 集合 = 任意元素组成的若干有序偶对

关系代数 = 对关系作运算的抽象查询语言

SQL = 一种 DSL = 一种方便人类阅读的表达形式

2.7 数据库 - 关系型数据库特点

关系型数据库是存储系统,但是在存储之外,又发展出其他能力

  • 结构化友好
  • 支持 ACID
  • 支持 SQL

2.8 数据库 - 非关系型数据库特点

非关系型数据库也是存储系统,但是一般不要求严格的结构化

2.9 数据库 VS 经典存储 - 结构化数据结构

写入文件,自行定义 管理结构

2.10 数据库 VS 经典存储 - 事务能力

事物具有 ACID 的特性。

凸显数据库支持 [事物] 的优越性

  • Atomicity,事务内的操作要么全做,要么不做
  • Consistency,事务执行前后,数据状态是一致的
  • Isolation,可以隔离多个并发事务,避免影响
  • Durability

2.11 数据库 VS 经典存储 - 复杂查询能力

灵活简洁的代码

2.12 数据库使用方式

Everything is DSL

03. 主流产品剖析

3.1 单机存储 - 概览

Linux 经典哲学:一切皆文件

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

文件系统接口:文件系统繁多

Linux文件系统的两大数据结构:Index Node & Directory Entry

Index Node

记录文件元数据

Directory Entry

记录文件名,inode指针,层级关系等

3.2 单机存储 - key - value 存储

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

常见数据结构:LSM - Tree,某种程度上牺牲读性能,追求写入性能

3.3 分布式存储 - 概览

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

3.4 分布式存储 - HDFS

堪称大数据时代的基石

核心特点:

  • 支持海量数据存储
  • 高容错性
  • 弱 POSIX 语义
  • 使用普通x86服务器,性价比高

3.5 分布式存储 - Ceph

开源分布式存储系统里的 万金油

核心特点:

  • 一套系统支持对象接口块接口文件接口,但是一切皆对象
  • 数据写入采用主备复制模型
  • 数据分布模型采用 CRUSH 算法

3.6 单机数据库 - 概览

关系型/非关系型

3.7 单机数据库 - 关系型数据库

Oracle、MySQL、PostgreSQL

3.8 单机数据库 - 非关系型数据库

Elasticsearch
  • 面向文档存储
  • 文档可序列化成JSON,支持嵌套
  • 存在 [index],index = 文档的集合
  • 存储和构建索引能力依赖 Lucene 引擎
  • 实现了大量搜索数据结构 & 算法
  • ...

3.9 从单机到分布式数据库

为什么引入分布式架构

  • 容量、弹性、性价比

3.10 分布式数据库 - 解决容量问题

~单点容量有限,受硬件影响

👇

~存储节点化,动态扩缩容

3.11 分布式数据库 - 解决弹性问题

可以随时扩容缩容等操作...

3.12 分布式数据库 - 解决性价比问题

3.13 分布式数据库 - More to Do

多写

内存弹性

分布式事务优化

04. 新技术演进

4.1 新技术演进 - 概览

软件架构变更

AI 增强

  • 智能存储格式转换

新硬件革命

  • 存储介质、计算单元、网络硬件

4.2 新技术演进 - SPDK

Bypass OS kernel 已经成为一种趋势

4.3 新技术演进 - AI & Storage

4.3 新技术演进 - 高性能硬件

  • RDMA 网络
  • Persistent Memory
  • 可编程交换机
  • CPU/GPU/DPU
相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习