这是我参与「第五届青训营」伴学笔记创作活动的第 10 天
本文同步发布于博客(xblc.netlify.app),如果有更新博客会在第一时间更新
经典案例
数据产生 -> 流动 -> 数据的持久化
潜在的问题
存储 & 数据库简介
存储系统
定义:
- 提供了读写、控制类接口
- 能够安全可靠地将数据持久化
系统特点:
- 性能敏感
- 代码在读写上需要简单、内部需要复杂(错误处理,考虑出多种异常情况、甚至硬件的损坏)
- 软件架构比较容易受硬件影响
存储器层级结构:
- 容量
- 存活时期
- 成本
数据是怎么从 APP -> 存储介质 的?
- 缓冲区缓存很重要
- 拷贝很成本很高,需要尽量减少
- 硬件最好有抽象统一的接入层
RAID 技术
单机存储系统想同时做到高性能、高性价比、高可靠性
数据库
数据库和存储系统的区别?
关系数据库:是存储系统,但是也发展出了很多其他能力
- 结构化数据特别友好
- 支持事务 ACID
- 支持复杂查询语言(SQL)
非关系型数据库
- 半结构化数据友好
- 后两者都是可能支持
数据库 vs 经典存储
结构化数据管理
用户数据 -> 以表形式存入数据库 -> 写入文件由数据库组织管理结构
事务能力
ACID 的特性
- 原子性:事务内的操作,要么全做,要么不做
- 一致性:事务执行前后,数据状态是一致的
- 孤立性:在并发操作中,隔离多个并发事务,避免相互影响
- 持久性:数据持久