这是我参与 [第三届青训营 -后端场]笔记创作活动的第1篇笔记
存储系统 or 数据库系统
简介
存储系统: 向用户提供操作文件内容的接口,控制文件(操作权限)的接口
数据库系统: 数据库系统是存储系统的pro版本. 不仅具有存储系统提供的接口,还支持事务,保证事务的原子性 ,一致性,隔离性,持久性(A C I D)
查询能力对比
查询数据方面,由于数据库系统集成了操作,于是其可用select,where等语句. 存储系统只能,使用 for,if实现
主流产品剖析
单机存储
- 特点: 不涉及网络交互
本地文件系统
- Linux文件系统
index node(记录文件元数据,文件唯一标识,存于磁盘)[inode]
Directory Entry( 记录文件名, inode指针,层级关系(linux文件系统树状组织文件,与inode关系为 N:1)
key-value存储
常用数据结构: LSM-Tree, 使用多层缓存,追求写入性能,牺牲读取性能.
单机关系型数据库
- 特点: 单个计算机节点上的数据库系统, 事务可单机完成,也可多级完成(分布式事务)
- 产品: Mysql, PostgreSQL
组件
- Query Engine: 解析查询语句,生成查询计划
- Txn Manager: 负责事务并发处理
- Lock Manager: 负责锁相关的策略
- Storage Engine: 负责组织内存/磁盘数据结构
- Replocation: 负责主备同步
关键内存数据结构
B-Tree, B+-Tree, LRU List等
关键磁盘数据结构
WriteAheadLog (RedoLog),Page等
单机非关系型数据库
- 产品
- 与关系型数据库区别
- 交互方式:千奇百怪
- 数据结构千奇百怪
- 不一定支持SQL(子集),事务
- 支持模糊搜索(Elastic Search)
分布式存储 (HDFS)
- 为什么要引入分布式存储? 数据量很大,单块大存储空间很贵.数据使用吞吐量很高.(单台计算机节点无法提供)
- 引入后要解决什么问题? 数据丢失(未使用专业存储设备)
解决: 多几台普通主机,存多几份备份
如何提高吞吐量?
解决: 多几台主机,存储事务所需文件的一部分.
分布式数据库
为什么要引入分布式结构?
单机容量不够用
解决:池化技术
无法弹性增加资源,
解决:池化技术
增加资源只能一整块打包增加
解决:池化技术