这是我参与「第三届青训营-后端场」笔记创作活动的第四篇笔记
经典案例
数据的产生
用户在注册时填写的信息和其他信息组合成结构化的数据
数据的流动
一条结构化的用户注册数据会通过后端服务器处理并发送至数据库。
数据的持久化
首先,对数据合法性进行校验。例如用户是否已经存在,时间戳是否合法等等。通过数据校验后,在数据库的内存里用数据结构进行组织。最后通过数据库写入硬件。
潜在的问题
- 数据库怎么保证数据不会丢失?
- 怎么处理多人同时修改的问题?
- 除了数据库以外,有没有其他的储存系统?
- 数据库只能处理结构化数据吗?
- 有哪些操作数据库的方式?使用什么语言?
- ...
储存系统概览
什么是储存系统?
提供了读写、控制类接口,能够安全有效的把数据持久化的软件。
存储系统做为后端的基石,对性能极其敏感。而且软件架构容易受到硬件影响
RAID 技术
- RAID O
- 多块磁盘简单组合
- 数据条带化存储,提高磁盘带宽
- 没有额外的容错设计
- RAID 1
- 一块磁盘对应一块额外镜像盘
- 真实空间利用率仅50%
- 容错能力强
- RAID 0+1
- 结合了RAIDO和RAID 1
- 真实空间利用率仅50%
- 容错能力强,写入带宽好
数据库
关系型数据库
关系=集合=任意元素组成的若干有序偶对反应了事物间的关系。
关系代数=对关系作运算的抽象查询语言.例如:交、并、笛卡尔积……
SQL =一种DSL=方便人类阅读的关系代数表达形式。
关系型数据库对结构性数据非常友好。支持事物(ACID),支持复杂查询语言。
非关系型数据库
非关系型数据库不要求严格的结构化 非关系型数据库对半结构化数据友好,可能支持事物(ACID),可能支持复杂查询语言。
事物
- A(tomicity),事务内的操作要么全做,要么不做。原子性
- C(onsistency),事务执行前后,数据状态是一致的。一致性
- I(solation),可以隔离多个并发事务,避免影响。隔离性
- D(urability),事务一旦提交成功,数据保证持久性。持久性