这是我参与[第五届青训营]伴学笔记创作活动的第14天
前言
假设有一个例子,我们去抖音注册了一个账号,那么我们思考一下,我们以后登入账号的时候电脑是怎么知道这个账号对应的密码是多少的?我这个账号里存储的数据,例如我的喜欢,我的作品,我的好友以及聊天记录是存放在哪里的呢?
其实这些数据都是存放在“数据库”里面的
什么是存储,什么是数据库
什么是存储系统?
一个只提供读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
存储系统特点
- 性能敏感
- 容易受硬件影响
- 存储系统代码,即“简单”又“复杂”
数据库
数据库又分为关系型数据库和非关系型数据库
关系型数据库
特点
- 结构化数据友好
- 支持事务
- 只是复杂的查询语句
非关系型数据库
特点
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询语句
数据库VS存储系统
结构化数据管理
写入关系型数据库,数据是以表的形式进行管理的。
写入文件,需要自定义管理结构
事务能力
凸显出数据库支持事务的优越性
事务的四大特性(ACID)
- 原子性(A):事务内的操作要么全部完成,要么全部失败,在Mysql数据库中通过回滚日志来完成(undo log)
- 一致性(C):事务执行前后,数据状态是一致的
- 隔离性(I):可以隔离多个并发事务,避免影响,在Mysql中通过锁机制以及MVCC来实现
- 持久性(D):事务一旦提交成功,数据保证持久,因为我们是对内存进行操作的,操作完后需要写入磁盘,如果此时电脑宕机,就会出现数据没有成功写入,那么为了保持事务的持久性,Mysql中采用redo log来保存操作,从而实现持久性