这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记。
本篇笔记对青训营课程“带你认识存储&数据库”进行一个总结整理,并梳理一些自己之前不清楚的数据库概念。
1. 数据持久化案例:
潜在的问题:
- 数据库怎么保证数据不丢失?
- 数据库怎么处理多人同时修改的问题?
- 为什么用数据库?除了数据库还有别的存储系统吗
- 数据库只能处理结构化数据吗
- 有哪些操作数据库的方式?要用什么编程语言?
2. 存储&数据库简介
2.1 存储系统
2.2 数据库
关系型数据库
- 关系是什么?
- 关系型数据库也是存储系统 但是在存储之外 又发展处其他能力
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂查询语言SQL
非关系型数据库
- 非关系型数据库也是存储系统 但是一般不要求严格的结构化
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询语言
2.3 数据库 VS 经典存储
- 结构化数据管理
- 事务能力
- 复杂查询能力
面试过程中,面试官更多想考察的并不是SQL操作以及数据库框架的使用等等,而更喜欢问:
- 数据库技术的演进过程 过程中出现的各种技术是为了解决什么问题 产生的原因是什么?
- 计算机领域的很多知识 从底层原理和思想出发 都是相通的
- 对于应届生来说 计算机基础还有计算机思想里面的哲学是最重要的
3. 主流产品剖析
3.1 单机存储
- 文件存储
- key-value存储
3.2 分布式存储
分布式存储 = 在单机存储基础上实现了分布式协议 涉及大量网络交互
- 分布式文件系统
- HDFS
- Ceph
3.3 单机数据库
关系型数据库
非关系型数据库
- Elasticsearch作为一款搜索引擎,使其在作为数据库使用时,天生具有支持模糊搜索,还能自动算出关联度的特点
3.4 分布式数据库
- 单机数据库存在什么问题 导致需要引入分布式数据库?
- 容量
- 弹性
- 性价比
- (也是现在大厂基础架构部门最头疼的三个问题)
解决容量问题
- 池化
解决弹性问题
- 单机情况:
- 分布式:池化技术 动态扩缩容