一. 经典案例
一条数据从产生,到数据流动,最后持久化的全生命周期。
1.经典案例——数据产生
某天,小明同学下载了一个新的APP.因为第一次登陆,所以进入APP后需要注册一个新的账号
用户名:小明 密码: hlloworld 密码提示问题: coding 于是小明同学三下五脉二地填好了资料。按下了「注册」按钮 数据就从无到有地产生了,并且在数十/数百毫秒内向APP的后端服务器飞奔而去……
2.经典案例——数据流动
------------>后端服务器
----------------------------->数据库
3.经典案例——数据的持久化
4.经典案例——潜在的问题
数据库怎么保证数据不丢?
数据库怎么处理多人同时修改的问题?
为什么用数据库,除了数据库还能存到别的存储系统吗?
数据库只能处理结构化数据吗?
有哪些操作数据库的方式,要用什么编程语言?
二. 存储系统
1.存储系统——系统概览
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。
2.存储系统——系统特点
- 作为后端软件的底座,性能敏感
- 存储系统代码,既“简单”又“复杂”
- 存储系统软件架构,容易受硬件影响
2.存储系统——存储器层级结构
3.存储系统——数据怎么从应用到存储介质
-
「缓存」很重要,贯穿整个存储体系
-
「拷贝」很昂贵,应该尽量减少
-
硬件设备五花八门,需要有抽象统一的接入层
4.存储系统——RAID技术 R(edundant) A(rray) of l(nexpensive) D(isks)
4.1 RAID出现的背景:
- 单块大容量磁盘的价格>多块小容量磁盘
- 单块磁盘的写入性能<多块磁盘的并发写入性能
- 单块磁盘的容错能力有限,不够安全
4.2发展
RAID 0
- 多块磁盘简单组合
- 数据条带化存储,提高磁盘带宽
- 没有额外的容错设计
RAID 1
- 一块磁盘对应一块额外镜像盘
- 真实空间利用率仅50%
- 容错能力强
RAID 0+1
- 结合了RAID 0和RAID 1
- 真实空间利用率仅50%
- 容错能力强,写入带宽好
三. 数据库
1.数据库—分类
- 关系型数据库
- 非关系型数据库
2.数据库——关系型数据库特点
关系型数据库是存储系统,但是在存储之外,又发展出其他能力
3.数据库——非关系型数据库特点
非关系型数据库也是存储系统,但是一般不要求严格的结构化
4.数据库与经典存储有什么区别
-
1.结构化数据管理方面
-
2.事务能力方面
-
3.复杂查询能力方面
5.数据库——数据库使用方式
Everything is D(omain) S(pecific) L(anguage) --->以SQL为例,要操作数据时,支持以下操作:
- 1. Insert
- 2. Update
- 3. Select
- 4. Delete
- 5. Where子句
- 6. GroupBy
- 7. OrderBy
要对数据定义做修改时,支持以下操作:
- 1. Create user
- 2. Create database
- 3. Create table
- 4. Alter table
四. 个人感悟
1.不要混淆数据库与存储结构的概念
2.可以通过例子来理解抽象概念
3.多敲代码