经典案例
数据的产生
登陆注册时所要填写的个人信息
数据的流动
注册信息-->后端服务器-->数据库-->其他系统
数据的持久化
校验数据的合法性(数据是否存在)--> 修改内存(用高效的数据组织数据)-->写入存储介质(以寿命&性能友好的方式写入硬件)
潜在的问题
- 怎么保证数据不丢?
- 怎么处理多人同时修改?
- 还能存到别的存储系统吗?
- 数据库只能处理结构化数据吗?
- 有哪些操作方法,要用什么编程语言?
存储&数据库简介
存储系统概念
提供读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
存储系统特点
- 作为后端软件的底座,性能敏感
- 存储系统软件架构,容易受硬件影响
- 系统存储代码,既“简单”又“复杂”
数据怎么从应用层到存储介质
- 缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应该尽量减少
- 硬件设备五花八门,需要有抽象统一的接入层
RAID技术
单机存储系统怎么能做到高性能/高性价比/高可比性? RAID RAID出现的背景:
-
- 单块大量容量磁盘的价格>多块小容量磁盘
-
- 单块磁盘写入性能<多块磁盘的并发写入性能
-
- 单块磁盘的容错能力有限,不够安全
- RAID 0
-
- 多块磁盘简单组合
-
- 数据条带化存储,提高磁盘带宽
-
- 没有额外的容错设计
- RAID 1
-
- 一块磁盘对应一块额外镜像盘
-
- 真实空间利用率仅50%
-
- 容错能力强
- RAID 0+1
-
- 结合了RAID 0和RAID 1
-
- 真实空间利用率仅50%
-
- 容错能力强,写入带宽好
关系型数据库
关系型数据库是存储系统,但是在存储之外又发展出其他能力
- 结构化数据友好
- 支持事务
- 支持复杂查询语言(SQL)
非关系型数据库
非关系型数据库也是存储系统,但是一般不要求严格的结构化
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询语言(SQL)
事务能力
凸显出数据库支持「事务」的优越性 事务具有:
- • A(tomicity),事务内的操作要么全做,要么不做
- • C(onsistency),事务执行前后,数据状态是一致的
- • I(solation),可以隔离多个并发事务,避免影响
- • D(urability),事务一旦提交成功,数据保证持久性