这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
一、本堂课重点内容:
1. 经典案例
2. 储存&数据库简介
3. 主流产品剖析
4. 新技术演进
二、详细知识点介绍:
1. 经典案例
通过一个模拟案例,描述了数据是怎么产生,在后端系统里怎么流通,最后怎么写入到存储/数据库系统。
潜在问题:
- 数据库怎么保证数据不丢?
- 数据库怎么处理多人同时修改的问题?
- 为什么用数据库,除了数据库还能存到别的存储系统吗?
- 数据库只能处理数据化数据吗?
- 有哪些操作数据库的方式,要用什么编程语言?
2. 储存&数据库简介
-
存储系统概览
-
存储系统特点
① 作为后端软件的底座,性能敏感
② 存储系统软件架构,容易受硬件影响
③ 存储系统代码,既“简单”又“复杂”
-
存储器层级结构
-
单机存储栈
-
RAID技术
出现背景:
① 单块大容量磁盘的价格 > 多块小容量磁盘
② 单块磁盘的写入性能 < 多块磁盘的并发写入性能
③ 单块磁盘的容错能力有限,不够安全
-
-
数据库系统概览
-
关系型数据库特点
① 结构化数据友好
② 支持事务
③支持复杂查询语言
-
非关系型数据库特点
① 半结构化数据友好
② 可能支持事务
③ 可能支持复杂查询语言
-
数据库 vs 经典存储
① 结构化数据管理
② 事务能力
事务具有: A(tomicity),事务内的操作要么全去做,要么不做 C(onsistency),事务执行前后,数据状态是一致的 I(solation),可以隔离多个并发事务,避免影响 D(urability),事务一旦提交成功,数据保证持久性③ 复杂查询能力
-
数据库使用方式
-
3. 主流产品剖析
-
单机存储产品
- 单机文件系统
- 单机key-value存储
-
分布式存储产品
-
HDFS
① 支持海量数据存储
② 高容错性
③ 弱POSIX语义
④ 使用普通x86服务器,性价比高
-
Ceph
① 一套系统支持对象接口、块接口、文件接口,但是一切皆对象
② 数据写入采用主备复杂模型
③ 数据分布模型采用CRUSH算法
-
-
单机数据库产品
- 关系型数据库 —— PG(PostgreSQL)、MySQL
- 非关系型数据库 —— ES、MongoDB、Redis
- Elasticsearch使用案例
-
分布式数据库产品
-
问题与挑战
① 容量问题:单点容量有限,受硬件限制
② 弹性问题:资源利用不均匀
③ 解决性价比
-
解决方案
存储节点池化,动态扩缩容
-
-
More to Do
- 单写VS多写
- 从磁盘弹性到内存弹性
- 分布式事务优化
4. 新技术演进
- SPDK
- 人工智能
- 新硬件加速
三、实践练习例子
无
四、课后个人总结:
经过本次课程的学习,我了解了储存和数据库的概念,回顾了一下之前学习到的关系型数据库和非关系型数据库的区别,了解了不同的主流存储产品,在今后的学习中,我将学习更多的知识,积极运用所学的知识,创造更好的系统,提高自己的学习意识。
五、引用参考:
-
参考字节跳动青训营基础班学习资料PPT
-
参考文献