带你认识储存&数据库
作者: 徐子霖
时间: 2023.05.23
参考: 字节第五届后端青训营
课程目录
1. 经典案例
数据的产生
某天,小明同学下载了新的app并且注册了账号
| 用户名 | 密码 | 密码提示问题 |
|---|---|---|
| 小明 | helloworld | coding |
就这样数据产生了,向app的后端服务器飞奔而去
数据的流动
一条用户的注册数据 --> 后端服务器 --> 数据库系统(才算持久化下来)-->其他系统(不展开说)
为什么要持久化呢?
我们需要带有记忆的,如果知识在内存时,那么每次用户都要注册。
数据的持久化
- 校验数据的合法性
- 小明是否已经存在
- 修改内存
- 用高效的数据结构组织数据
- 形成一个准备可以持久化的结果
- 写入存储介质
- 以寿命&性能友好的方式写入硬件
潜在的问题
- 数据库怎么保证数据不丢?
- 数据库怎么处理多人同时修改的问题?
- 为什么用数据库,除了数据库还能存到别的存储系统吗?
- 答案是可以的
- 数据库只能处理结构化数据吗?
- 答案是不一定的
- 有哪些操作数据库的方式, 要用什么编程语言?
2. 存储&数据库简介
什么是存储系统?
- 一个提供了读写、控制类接口,能够安全有效的把数据持久化的软件,就可以成为存储系统
其实就是用户和介质,但是可能也要和内存打交道,设计更好的性能。也有可能关注到网络编程。
系统特点
- 作为后端软件的底座,性能敏感
- 很多后端架构里面,都是持久化、有状态的服务,那就要设计大量频繁并发的服务,所以我们需要超高设计
- 存储系统代码,既简单又复杂
- 对性能要求高,在I/O(读写)路径上代码一定不能很复杂或者很多分支,搞得系统性能很差
- 在非I/O路径上,考虑很多异常情况,比如硬件损坏
- 存储系统软件架构,容易受硬件影响
- 存储系统往下,是直接和硬件打交道,比如磁盘。只要硬件发生变革,那么我们软件也需要做一定的变革,甚至不惜推倒重来。