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

news2024/11/27 15:33:28

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习—迁移学习:使用其他任务中的数据

对于一个没有那么多数据的应用程序,迁移学习是一种奇妙的技术,它允许你使用来自不同任务的数据来帮助你的应用程序,迁移学习是如何工作的? 以下是迁移学习的工作原理,假设你想识别手写的数字0到9,但是你没…

LeetCode 3206.交替组 I:遍历

【LetMeFly】3206.交替组 I:遍历 力扣题目链接:https://leetcode.cn/problems/alternating-groups-i/ 给你一个整数数组 colors ,它表示一个由红色和蓝色瓷砖组成的环,第 i 块瓷砖的颜色为 colors[i] : colors[i] …

如何通过高效的缓存策略无缝加速湖仓查询

引言 本文将探讨如何利用开源项目 StarRocks 的缓存策略来加速湖仓查询,为企业提供更快速、更灵活的数据分析能力。作为 StarRocks 社区的主要贡献者和商业化公司,镜舟科技深度参与 StarRocks 项目开发,也为企业着手构建湖仓架构提供更多参考…

25A物联网微型断路器 智慧空开1P 2P 3P 4P-安科瑞黄安南

微型断路器,作为现代电气系统中不可或缺的重要组件,在保障电路安全与稳定运行方面发挥着关键作用。从其工作原理来看,微型断路器通过感知电流的异常变化来迅速作出响应。当电路中的电流超过预设的安全阈值时,其内部的电磁感应装置…

目标检测,图像分割,超分辨率重建

目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。 语义分割(Semantic Segmentation)&…

16 —— Webpack多页面打包

需求&#xff1a;把 黑马头条登陆页面-内容页面 一起引入打包使用 步骤&#xff1a; 准备源码&#xff08;html、css、js&#xff09;放入相应位置&#xff0c;并改用模块化语法导出 原始content.html代码 <!DOCTYPE html> <html lang"en"><head&…

《PH47 快速开发教程》发布

PDF 教程下载位于CSDN资源栏目&#xff08;网页版本文上方&#xff09; 或Gitee&#xff1a;document ss15/PH47 - 码云 - 开源中国

腾讯云OCR车牌识别实践:从图片上传到车牌识别

在当今智能化和自动化的浪潮中&#xff0c;车牌识别&#xff08;LPR&#xff09;技术已经广泛应用于交通管理、智能停车、自动收费等多个场景。腾讯云OCR车牌识别服务凭借其高效、精准的识别能力&#xff0c;为开发者提供了强大的技术支持。本文将介绍如何利用腾讯云OCR车牌识别…

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

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

[网安靶场] [更新中] UPLOAD LABS —— 靶场笔记合集

GitHub - c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场一个想帮你总结所有类型的上传漏洞的靶场. Contribute to c0ny1/upload-labs development by creating an account on GitHub.https://github.com/c0ny1/upload-labs 0x01&#xff1a;UPLOAD LABS 靶场初识…

安装python拓展库pyquery相关问题

我采用的是离线whl文件安装, 从官方库地址: https://pypi.org/, 下载whl文件, 然后在本地电脑上执行pip install whl路径文件名.whl 但是在运行时报错如下图 大体看了看, 先是说了说找到了合适的 lxml>2.1, 在我的python库路径中, 然后我去看了看我的lxml版本, 是4.8.0, 对…

春秋云境 CVE 复现

CVE-2022-4230 靶标介绍 WP Statistics WordPress 插件13.2.9之前的版本不会转义参数&#xff0c;这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下&#xff0c;具有管理选项功能 (admin) 的用户可以使用受影响的功能&#xff0c;但是该插件有一个设置允许低权限用…

图论入门编程

卡码网刷题链接&#xff1a;98. 所有可达路径 一、题目简述 二、编程demo 方法①邻接矩阵 from collections import defaultdict #简历邻接矩阵 def build_graph(): n, m map(int,input().split()) graph [[0 for _ in range(n1)] for _ in range(n1)]for _ in range(m): …

Jackson库中JsonInclude的使用

简介 JsonInclude是 Jackson 库&#xff08;Java 中用于处理 JSON 数据的流行库&#xff09;中的一个注解。它用于控制在序列化 Java 对象为 JSON 时&#xff0c;哪些属性应该被包含在 JSON 输出中。这个注解提供了多种策略来决定属性的包含与否&#xff0c;帮助减少不必要的数…

鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)

文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多&#xff0c;跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时&#xff0c;需要解决设备发现、设备认证、设备连接、数据同步等技术难题&#xff0c;不但开发成本高&#xff0c;还存…

【论文复现】融入模糊规则的宽度神经网络结构

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 融入模糊规则的宽度神经网络结构 论文概述创新点及贡献 算法流程讲解核心代码复现main.py文件FBLS.py文件 使用方法测试结果示例&#xff1a…

网上蛋糕售卖店管理系(Java+SpringBoot+MySQL)

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装网上蛋糕售卖店管理系统软件来发挥其高效地信息处理的作用…

Vue.js基础——贼简单易懂!!(响应式 ref 和 reactive、v-on、v-show 和 v-if、v-for、v-bind)

Vue.js是一个渐进式JavaScript框架&#xff0c;用于构建用户界面。它专门设计用于Web应用程序&#xff0c;并专注于视图层。Vue允许开发人员创建可重用的组件&#xff0c;并轻松管理状态和数据绑定。它还提供了一个虚拟DOM系统&#xff0c;用于高效地渲染和重新渲染组件。Vue以…

从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中

文章目录 前言构建一个 hello world web 应用项目结构项目核心文件启动项目 检查项目是否构建成功 容器化我们的应用编写 Dockerfile构建 docker 镜像推送 docker 镜像仓库 使用 labs.play-with-k8s.com 构建 Kubernetes 集群并部署应用构建 Kubernetes 集群环境编写部署文件 总…

数据结构 【二叉树(上)】

谈到二叉树&#xff0c;先来谈谈树的概念。 1、树的概念及结构 树是一种非线性的数据结构&#xff0c;它的逻辑关系看起来像是一棵倒着的树&#xff0c;也就是说它是根在上&#xff0c;而叶子在下的&#xff0c; 在树这种数据结构中&#xff0c;最顶端的结点称为根结点。在树的…