这是我参与「第五届青训营 」笔记创作活动的第14天
经典案例
用户注册,按下注册按钮,于是数据从无到有产生,向后端飞去
数据流动
一条注册数据:
{
"username":"小明",
"password": "hello",
}
然后发送给服务器,服务器再存储到数据库
数据持久化
- 校验数据合法性: "小明"是否已经存在
- 修改内存: 用高效的数据结构组织数据
- 写入存储介质: 以寿命&性能友好的方式写入硬件
潜在问题
- 数据库怎么保证数据不丢
- 数据库怎么处理多人同时修改
- 为什么用数据库,可以用别的存储系统吗?
- 数据库只能处理数据化结构
- 有哪些操作数据库的方式?
存储系统
什么是存储系统
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件
系统特点
- 作为后端软件底座,性能敏感
- 存储系统代码,既"简单"又"复杂" (I/O简单,错误处理复杂)
- 存储系统软件架构,容易受硬件影响
存储器层级结构
数据怎么从应用到存储介质
- 缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应该尽量减少
- 硬件设备五花八门,需要有抽象同一的接入层
RAID技术
R(edundant)A(rray) of I(nexpensive) D(disks)
背景:
- 单块大容量磁盘价格>多块小容量磁盘
- 单块磁盘写入性能>多块磁盘的并发吸入性能
- 单块磁盘的容错能力有限,不够安全
RAID 0
- 多块磁盘简单组合
- 数据条带化存储,提高磁盘贷款
- 没有额外容错设计
RAID 1
- 一块磁盘对应一块额外的镜像盘
- 真实空间率仅50%
- 容错能力强
RAID 0+1
- 结合RAID 0 和 RAID 1
- 真实空间利用率50%
- 容错能力强,写入带宽好