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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923661.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++初阶学习第十三弹——容器适配器和优先级队列的概念

目录 一.容器适配器 1.2deque的原理介绍 1.3deque与vector和list的比较,以及deque的缺陷 1.4为什么选择deque作为stack和queue的底层默认容器? stack的模拟实现 queue的模拟实现 二.优先级队列 2.1priority_queue的使用 三、总结 一.容器适配器 s…

C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)

目录 题目: 无重复字符的最长子串 1. 题目解析 2. 算法原理 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口(同向双指针) 3. 代码实现 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口 题目: 无重复字符的最长子串 1. 题目解析 题目截图: 此题所说的…

easyui combobox 只能选择第一个问题解决

easyui combobox 只能选择第一个问题解决 问题现象 在拆分开票的时候,弹出框上面有一个下拉框用于选择需要新增的明细行,但是每次只能选择到第一个 选择第二条数据的时候默认选择到第一个了 代码如下 /*新增发票编辑窗口*/function addTicketDialog…

机器学习周志华学习笔记-第6章<支持向量机>

机器学习周志华学习笔记-第6章<支持向量机> 卷王&#xff0c;请看目录 6支持向量机6.1 函数间隔与几何间隔6.1.1 函数间隔6.1.2 几何间隔 6.2 最大间隔与支持向量6.3 对偶问题6.4 核函数6.5 软间隔支持向量机6.6 支持向量机6.7核方法 6支持向量机 支持向量机是一种经典…

111. UE5 GAS RPG 实现角色技能和场景状态保存到存档

实现角色的技能存档保存和加载 首先&#xff0c;我们在LoadScreenSaveGame.h文件里&#xff0c;增加一个结构体&#xff0c;用于存储技能相关的所有信息 //存储技能的相关信息结构体 USTRUCT(BlueprintType) struct FSavedAbility {GENERATED_BODY()//需要存储的技能UPROPERT…

ArcGIS pro中的回归分析浅析(加更)关于广义线性回归工具的补充内容

在回归分析浅析中篇的文章中&#xff0c; 有人问了一个问题&#xff1a; 案例里的calls数据貌似离散&#xff0c;更符合泊松模型&#xff0c;为啥不采用泊松而采用高斯呢&#xff1f; 确实&#xff0c;在中篇中写道&#xff1a; 在这个例子中我们为了更好地解释变量&#x…

从 HTML 到 CSS:开启网页样式之旅(二)—— 深入探索 CSS 选择器的奥秘

从 HTML 到 CSS&#xff1a;开启网页样式之旅&#xff08;二&#xff09;—— 深入探索 CSS 选择器的奥秘 前言一、CSS基本选择器1. 通配选择器2. 元素选择器3. 类选择器4. id选择器5.基本选择器总结 二、CSS复合选择器1. 后代选择器2. 子选择器3. 相邻兄弟选择器4.交集选择器5…

【机器学习chp7】SVM

参考1&#xff0c;笔记 SVM笔记.pdf 参考2&#xff1a;王木头视频 什么是SVM&#xff0c;如何理解软间隔&#xff1f;什么是合叶损失函数、铰链损失函数&#xff1f;SVM与感知机横向对比&#xff0c;挖掘机器学习本质_哔哩哔哩_bilibili 目录 一、SVM模型 二、构建决策函…

【C++】读取数量不定的输入数据

读取数量不定的输入数据 似乎是一个很实用的东西&#xff1f; 问题&#xff1a; 我们如何对用户输入的一组数&#xff08;事先不知道具体有多少个数&#xff09;求和&#xff1f; 这需要不断读取数据直至没有新的输入为止。&#xff08;所以我们的代码就是这样设计的&#x…

HarmonyOS4+NEXT星河版入门与项目实战(20)------状态管理@ObjectLink @Observed

文章目录 1、用法图解2、案例实现1、任务类改造2、参数改造变量3、完整代码4、运行效果4、总结1、用法图解 2、案例实现 上一节的案例中,一直有一个功能没有生效,就是任务完成后对应的任务行变灰,任务字体出现中划线删除的效果。而该功能一直不生效的原因就是要改变的数据值…

2024年工信部大数据分析师证书报考条件是怎样的?有什么用

大数据分析师&#xff0c;乃是这样一类专业人才&#xff0c;他们凭借着先进且高效的数据分析技术以及各类实用工具&#xff0c;对规模庞大、纷繁复杂的海量数据展开全面而细致的清洗、处理、分析以及解读工作。其工作的核心目标在于为企业的决策制定提供有力依据&#xff0c;推…

基于vite创建的react18项目的单元测试

题外话 最近一个小伙伴进了字节外包&#xff0c;第一个活就是让他写一个单元测试。 嗯&#xff0c;说实话&#xff0c;在今天之前我只知道一些理论&#xff0c;但是并没有实操过&#xff0c;于是我就试验了一下。 通过查询资料&#xff0c;大拿们基本都说基于vite的项目&…

探秘嵌入式位运算:基础与高级技巧

目录 一、位运算基础知识 1.1. 位运算符 1.1.1. 与运算&#xff08;&&#xff09; 1.1.2. 或运算&#xff08;|&#xff09; 1.1.3. 异或运算&#xff08;^&#xff09; 1.1.4. 取反运算&#xff08;~&#xff09; 1.1.5. 双重按位取反运算符&#xff08;~~&#xf…

SpringBoot - 优雅的实现【账号登录错误次数的限制和锁定】

文章目录 Pre需求实现步骤简易实现1. 添加依赖2. 配置文件3. 自定义注解4. AOP切面5. 使用自定义注解&#xff1a;6. 测试 附总结 Pre SpringBoot - 优雅的实现【流控】 需求 需求描述&#xff1a; 登录错误次数限制&#xff1a;在用户登录时&#xff0c;记录每个账号的登录错…

SRIO DRP动态速率配置说明(详细讲解)

目录 一、SRIO IP时钟结构 1、时钟内部结构 2、时钟直接的关系 3、时钟计算原理 ​二、SRIO DRP介绍 ​1、MMCM DRP配置(xapp888) 2、CPLL DRP配置(ug476) 关于CPLL DRP配置详细介绍&#xff1a; GTX中CPLL、QPLL DRP动态配置方法&#xff08;详解&#xff09;-CSDN博客…

动态规划之背包问题

0/1背包问题 1.二维数组解法 题目描述&#xff1a;有一个容量为m的背包&#xff0c;还有n个物品&#xff0c;他们的重量分别为w1、w2、w3.....wn&#xff0c;他们的价值分别为v1、v2、v3......vn。每个物品只能使用一次&#xff0c;求可以放进背包物品的最大价值。 输入样例…

推荐一款龙迅HDMI2.0转LVDS芯片 LT6211UX LT6211UXC

龙迅的HDMI2.0转LVDS芯片LT6211UX和LT6211UXC是两款高性能的转换器芯片&#xff0c;它们在功能和应用上有所差异&#xff0c;同时也存在一些共同点。以下是对这两款芯片的详细比较和分析&#xff1a; 一、LT6211UX 主要特性&#xff1a; HDMI2.0至LVDS和MIPI转换器。HDMI2.0输…

深度学习模型:循环神经网络(RNN)

一、引言 在深度学习的浩瀚海洋里&#xff0c;循环神经网络&#xff08;RNN&#xff09;宛如一颗独特的明珠&#xff0c;专门用于剖析序列数据&#xff0c;如文本、语音、时间序列等。无论是预测股票走势&#xff0c;还是理解自然语言&#xff0c;RNN 都发挥着举足轻重的作用。…

[STM32]从零开始的STM32 FreeRTOS移植教程

一、前言 如果能看到这个教程的话&#xff0c;说明大家已经学习嵌入式有一段时间了。还记得嵌入式在大多数时候指的是什么吗&#xff1f;是的&#xff0c;我们所说的学习嵌入式大部分时候都是在学习嵌入式操作系统。从简单的一些任务状态机再到复杂一些的RTOS&#xff0c;再到最…

《操作系统 - 清华大学》5 -4:虚拟技术

文章目录 0. 虚拟存储的定义1. 目标2.局部性原理3. 虚拟存储的思路与规则4. 虚拟存储的基本特征5. 虚拟页式存储管理5.1 页表表项5.2 示例 0. 虚拟存储的定义 1. 目标 虚拟内存管理技术&#xff0c;简称虚存技术。那为什么要虚存技术&#xff1f;在于前面覆盖和交换技术&#…