1. 实际案例 —— 数据的产生
小明注册一个APP,填入了用户名,密码。这里产生了两个数据(用户名和密码),数据根据一定的格式通过网络传输到服务器。服务器接收到数据后,根据业务进行处理,最后持久化到数据库中。持久化到数据库中,数据库还要做哪些事?
- 校验数据的合法性:比如说主键(唯一性),字段(是否匹配,长度是否符合)
- 修改内存:用高效的数据结构组织数据,例如B+数,红黑树
- 写入存储介质:以寿命 & 性能友好的方式写入硬件
数据大多以json形式传输
{
"username":"xiaoming",
"password":"123456"
}
2. 存储系统介绍
2.1 存储系统的定义
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。
这里强调的是软件,并不仅仅说的是用户和存储设备打交道,需要和一个整体的软件打交道。
2.2 存储系统的特点
- 作为后端软件的底座,性能敏感;
- 存储系统代码,“ 简单 ”(I/O操作要简单,性能要保证)又“ 复杂 ”(异常处理要考虑周全);
- 存储系统软件架构,容易受硬件影响。
2.3 从应用层到存储介质
1 buffer,cache(缓存很重要),因为传入时是内存数据,需要从内存写到硬盘中,速度上没有办法去匹配,所以buffer及cache很重要。也就是之前说的以寿命 & 性能友好的方式写入硬件。
2 拷贝的代价是昂贵的,拷贝会降低性能。
3 软件和硬件之间需要有一个抽象的统一接入层。
2.4 RAID技术
2.4.1 背景
- 单块大容量磁盘价格 > 多块小容量磁盘
- 单块磁盘写入性能 < 多块磁盘的并发写入性能
- 单块磁盘的容错能力有限