一、经典案例:一条数据从产生,到数据流动,最后持久化的全生命周期是什么样的。
以用户注册数据流动为例:数据(含username、password等数据)传递给后端服务器,服务器往数据库中存入数据。
1.1数据的持久化过程:
校验数据的合法性:username:小明是否已存在?
修改内存:用高效的数据结构组织数据
写入存储介质:以寿命&性能友好的方式写入硬件
1.2潜在问题:
数据库怎么保证数据不丢?
数据库怎么处理多人同时修改的问题?
为什么用数据库,除了数据库还能存到别的存储系统吗?
数据库只能处理结构化数据吗?
有哪些操作数据库的方式,要用什么编程语言?
二.存储&数据库简介
2.1数据库和存储系统背景知识,它们是什么,有哪些特点?
存储系统概念:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
系统特点:
- 作为后端软件的底座,性能敏感;
- 存储系统代码,即“简单”又“复杂”;
- 存储系统软件架构,容易受硬件影响;
数据怎么从应用到存储介质?
- 「缓存」很重要,贯穿整个存储体系;
- 「拷贝」很昂贵(要使用CPU资源),应该尽量减少;
- 硬件设备五花八门,需要有抽象统一的接入层。
2.2RAID技术
Q:单机存储系统怎么做到高性能/高性价比/高可靠性?
A : R(edundant) A(rray) of l(nexpensive) D(isks)
2.2RAID出现的背景:
单块大容量磁盘的价格>多块小容量磁盘;
单块磁盘的写入性能<多块磁盘的并发写入性能;
单块磁盘的容错能力有限,不够安全。
2.3为解决以上问题,采用RAID容错
方法一:RAID 0
- 多块磁盘简单组合;
- 数据条带化存储,提高磁盘带宽;
- 没有额外的容错设计。
方法二:RAID 1
- 块磁盘对应一块额外镜像盘;
- 真实空间利用率仅50%;
- 容错能力强。
方法三:RAID0+1
- 结合了RAID0和RAID1
- 真实空间利用率仅50%
- 容错能力强,写入带宽好
2.4难道数据库和存储系统不一样吗?先了解关系型数据库和非关系型数据库。
2.4.1关系型数据库是存储系统,但是在存储之外,又发展出其他能力。
- 1.结构化数据友好;
- 2.支持事务(ACID)
- 3.支持复杂查询语言
2.4.2非关系型数据库也是存储系统,但是一般不要求严格的结构化。
- 1.半结构化数据友好
- 2.可能支持事务(ACID)
- 3.可能支持复杂查询语言
2.4.3数据库具有支持事务的优越性。事务有:
- A(tomicity),事务内的操作要么全做,要么不做
- C(onsistency),事务执行前后, 数据状态是一致的
- I(solation),可以隔离多个并发事务, 避免影响
- D(urability),事务- -旦提交成功, 数据保证持久性