存储与数据库 | 青训营

110 阅读3分钟

一、数据

1.数据的流动

用户填写数据后去向开发app的公司的后端服务器,之后再到数据库系统,这样就做到了数据的持久化(后面解释),还可能会流向其它系统。

2.数据的持久化

持久化数据是为了保存数据,如果仅仅只是存储在服务器内存里,那所有的服务便是没有记忆的,数据不能被保存。
如何持久化数据呢?
①数据库校验数据的合法性
②修改内存(用高效的数据结构组织数据,做一系列运算,在内存中形成一个准备可以去持久化的数据结构)
③写入存储介质(以寿命和性能友好的方式写入硬件)
注:数据库不仅要追求高性能、高稳定,还要考虑寿命,因为最终都会到硬件,而硬件有寿命。

二、存储和数据库简介

1.存储系统

(1) 存储系统的定义
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,称为存储系统。
(2) 存储系统的特点
①作为后端软件的最后一道门槛,对性能极其敏感。
②存储系统软件架构,容易受硬件影响(存储系统之下与硬件密切联系,硬件的变化会一定程度上影响存储系统,代码也会要做出一些改变来适应变化后的硬件)
③存储系统代码既“简单”又“复杂”。
注:“简单”是因为存储系统对性能要求高,所以在IO路径(读和写的路径)上,分支要少,代码必须要简单;而“复杂”是因为在非IO路径上,必须要考虑异常情况(如:硬件损坏),所以在代码上就要写得复杂一些,才能覆盖所有的异常场景。
(3) 存储系统的存储器层级结构
存储系统的存储器层级结构为金字塔结构,顶尖存储容量小,性能高,而底部存储容量大,性能低。
(4) 存储技术之RAID技术
①RAID 0:
多块磁盘简单组合;
数据条带化存储,提高磁盘带宽;
没有额外的容错设计;
②RAID 1:
一块磁盘对应一块额外镜像盘;
真实空间利用率仅50%;
容错能力强;
③RAID 0+1:
结合了RAID 0和RAID 1;
真实空间利用率仅50%;
容错能力强,写入带宽好;

2.数据库

(1) 关系型数据库
关系型数据库是存储系统,但是在存储之外,又具有其他能力。
关系型数据库对结构化数据友好、支持事务(ACID)、支持复杂查询语言。
(2) 非关系型数据库
非关系型数据库也是存储系统,但一般不要求严格的结构化。
非关系型数据库对半结构化数据友好、可能支持事务(ACID)、可能支持复杂查询语言。
(3) 数据库 vs 经典存储
数据库相较于经典存储,结构化数据管理更优、事务能力更强,在复杂查询能力上,前者代码灵活简洁,后者代码僵化复杂。
(4) 数据库使用方式
以SQL为例,要操作数据时,支持Insert、Update、Select、Delete等操作;要修改数据定义时,支持Create user、Create table等操作。