首先搞明白数据在网络中的流动(这里不是指计算机网络中的传输),是先传送到后端服务器,然后紧接着到达数据库。
先来看个经典的案例:
数据的持久化(其实就是存储数据)
检验数据的合法性 -> 修改内存 -> 写入存储介质
存储&数据库介绍
存储系统(定义):一个提供了读写、控制类接口,能够安全有效地把数据库持久化的软件,就可以称为存储系统。
系统特点:作为后端软件的底座,性能敏感;存储系统软件架构,容易受硬件影响;存储系统代码,既“简单”又“复杂”。
存储系统-RAID技术: RAID 0:多块磁盘简单组合;数据条带磁化,提高磁盘带宽;没有额外的容错设计 RAID 1:一块磁盘对应一块额外镜像盘;真实空间利用率仅50%;容错能力强 RAID 2:结合了RAID 0和RAID 1;真实空间利用率仅为50%;容错能力强,写入带宽好
数据库(关系型数据库) 关系型数据库是存储系统,但在存储系统之外,又发展出其他能力 结构化数据友好 支持事务 支持复杂查询语言
非关系型数据库也是存储系统,但是一般不要求严格的结构化 半结构化数据友好 可能支持事务 可能支持复杂查询语言
(1)结构化数据管理:写入关系型数据库,以表的形式管理。
(2)事务能力:凸显出数据库支持事务的优越性 事务内的操作要么全做,要么不做 事务执行前后,数据状态是一致的 可以隔离多个并发事务,避免影响 事务一旦提交提交成功,数据保持持久性
(3)复杂查询能力:零活简洁
-- 含表达式的列:查询全体学生的姓名及年龄(年龄的列名是空)
SELECT Sname, YEAR(GETDATE()) - YEAR(Sbirthday) FROM Student
-- 查询全体学生的姓名、年龄、字符串“今年是”以及今年的年份(给列取别名)
SELECT Sname 姓名,
YEAR(GETDATE()) - YEAR(Sbirthday) 年龄,
'今年是' 今年是, YEAR(GETDATE()) 年份
FROM Student
但是非关系型数据库查询确实僵硬和复杂的,使用诸多if语句等等
数据库使用方法:
SQL语句
直接可视化视图进行操作
(以上就是字节跳动青训营讲解的存储与数据库的第一课)