这是我参与「第三届青训营-后端场」笔记创作活动的第4篇笔记。内容主要涉及存储和数据库的基础介绍。
数据的一生
- 数据的产生
- 数据的流动
-
数据的持久化
- 校验数据的合法性
- 修改内存
- 写入存储介质
存储 & 数据库的简介
- 存储系统
一个提供了读写、控制类的接口,能够安全有效地把数据持久化的软件,即为存储系统。
-
数据库
-
分类
-
关系型数据库
-
“关系”的概念:关系描述了一种集合,即任意元素组成的若干有序偶对,反映了事物间的关系。
-
能力
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂的查询语言
-
-
非关系型数据库
-
能力
- 半结构化数据友好
- 可能支持事务(ACID)
- 可能支持复杂的查询语言
-
-
-
事务特性
- A(tomicity):事务内的操作要么全做,要么不做
- C(onsistency):事务执行前后,数据状态是一致的
- I(solation):可以隔离多个并发事务,避免并发事务带来的读写异常影响
- D(urability):事务一旦提交成功,数据保证持久性
-
主流产品剖析
单机存储
- 概念:不涉及网络交互
-
分类
- 本地文件系统
- key-value存储
分布式存储
- 概念:在单机存储的基础上实现了分布式协议,设计了大量的网络交互
-
分类
- 分布式文件系统
- 分布式对象存储
单机关系型数据库
-
代表
- Oracle
- MySQL
- PostgreSQL
-
优势
- 易于维护
- 使用方便
- 支持复杂操作
-
缺点
- 读写性能较差,尤其是对海量数据的读写
- 固定的表结构造成灵活性不足
- 在高并发读写需求面前,磁盘IO是很大的瓶颈
单机非关系型数据库
-
代表
- MongoDB
- Redis
- Elasticsearch
-
优势
- 格式灵活
- 速度快
- 拓展性强
- 成本低
-
缺点
- 不提供SQL支持
- 无事务处理
- 数据结构相对复杂,复杂查询操作不便
分布式数据库
- 原因:单机数据库在容量、弹性、性价比等方面遇到了一些挑战和需求,需要我们引入分布式架构来解决