这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。
1. 经典案例
一条数据从产生,到数据流动,最后持久化的全生命周期。
数据的产生
数据的流动
数据的持久化
潜在的问题
- 数据库怎么保证数据不丢?
- 数据库怎么处理多人同时修改的问题?
- 为什么用数据库?除了数据库还能存到别的存储系统吗?
- 数据库只能处理结构化数据吗?
- 有哪些操作数据库的方式,要用到什么编程语言?
2. 存储 & 数据库简介
什么是存储系统?什么是数据库系统?
2.1 存储系统
一个提供了读写,控制类接口,能够安全有效地把数据持久化地软件,就可以称为存储系统。
特点:
- 作为后端软件底座,性能敏感
- 存储系统软件架构,容易受硬件影响
- 存储系统代码,既简单又复杂
存储器层级结构
数据怎么从应用到存储介质
RAID技术
Q:单机存储系统怎么做到【高性能】/【高性价比】/【高可靠性】 A:Redundant Array of Inexpensive Disks
2.2 数据库
数据库分为关系型数据库和非关系型数据库。
关系型数据库特点
非关系型
2.3 数据库事务能力
3. 主流产品剖析
3.1 单机存储
本地文件系统
- 文件系统地管理单元:文件
- 文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs,但都遵守VFS统一抽象接口
- Linux文件系统两大数据结构:
key-value 存储
- 常见使用方式:
put(k,v)、get(k) - 常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
- 拳头产品:RocksDB
3.2 分布式存储
分布式存储 = 在单机存储基础上实现了【分布式协议】,涉及大量网络交互
HDFS:大数据时代地基石
时代背景:专用地高级硬件很贵,同时数据量存储很大,要求超高吞吐
HDFS特点:
- 支持海量数据存储
- 高容错性
- 弱POSIX性
- 使用普通x86服务器,性价比高
Ceph:开源分布式存储系统里地【万金油】
特点:
-
一套系统支持对象接口、块接口、文件接口,但是一切皆对象
-
数据写入采用主备复制模型
-
数据分布模型采用CRUSH算法,CRUSH -> HASH+权重+随机抽签