Ⅰ.认识存储与数据库
存储与数据库往往是后端服务的最后一环,提供数据存储、查询能力
经典案例
- 数据的产生:首次使用一个APP时注册一个新的账号(数据从无到有的产生)
- 数据的流动:用户注册数据通过网络传输到后端服务器
- 数据的持久化:在后端服务器中对数据进行持久化处理,写入数据库
潜在问题
- 如何保证数据不丢失
- 如何处理多人修改问题
- 为什么使用数据库
- 只能处理结构化数据吗
- 有哪些操作数据的方式,要使用什么语言
Ⅱ.存储系统
什么是存储系统
一个提供了读写、控制类接口,能够安全、有效地把数据持久化的软件,即可称为存储系统
存储系统特点
- 性能敏感:作为后端软件的底座和后端服务的最后一环,需要频繁、高并发地进行大量数据的持久化操作,因此对于性能极其敏感
- 代码有繁有简: 由于存储系统对于性能要求苛刻,因此在I/O路径上的代码必须得做到简洁明了,以保证存储系统的高性能要求;而在非I/O路径上以及I/O中的错误处理上,必须周全地考虑到软件出错和硬件损坏的情况处理,因此在当今的存储系统设计中必须尽可能地考虑到所有异常情况的处理,因此代码繁琐。
- 软件架构易受硬件影响: 软件是基于现有的硬件进行适配的,硬件是系统的基石,如果硬件发生了变化,不出意外的话软件也得进行相应的变化以适配。由于硬件变革而使得软件架构从0开始重构也是很有可能的。
存储的层级结构
RAID技术
Redundan Array of Inexpensive Disk,简称RAID技术,意为独立磁盘冗余阵列,用于提高磁盘的可靠性、可用性,以实现单机存储系统的高性能/高性价比/高可靠性。
- 提供大容量的存储和提高带宽
- 更强的容错能力
- 写入/访问能力强
- 高可靠性、性价比
Ⅲ.数据库
关系型数据库
- 采用了关系模型来组织数据的数据库,以行和列的形式存储数据以形成表结构,更方便用户理解数据。
- 关系模型可以理解为二维表结构模型,而关系型数据库就是表结构及其之间的关系形成的一个数据组织
关系型数据库是存储系统,但除此之外,还有其他能力
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂查询语言(SQL)
非关系型数据库
- Not only SQL,简称NoSQL,意为不仅仅是结构化查询语言(Structured Query Language)
非关系型数据库也是存储系统,但一般不要求严格的格式化
- 半结构化数据友好
- 可能支持事务(ACID)
- 可能支持复杂查询语言(SQL)
Ⅳ.小结
数据库与存储系统作为当今后端工程中极为重要的一环,左右了后端服务的性能上限。在今天的学习中粗略认识了存储与数据库的概率知识,对于以后深入系统学习数据库知识打下了基础。