reference: https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/gfs-sosp2003.pdf
- the google file system
 
cases
数据 - 产生-流动-持久化 - 生命周期
- 持久化 -> 校验数据的合法性 - 修改内存(用高效的数据结构组织数据) - 写入存储介质(以寿命&性能友好的方式写入硬件)
 
存储系统
- 提供了读写,控制类接口
 - 安全有效地把数据持久化
 - user - medium - memory - network
 
feature
- 后端软件的底座,性能敏感
 - 存储系统软件架构,容易受硬件影响
 - 代码-“简单”&“复杂”
 
存储器层级结构
- Computer Memory Hierarchy
 - size | capacity
 - 缓存 - 重要,贯穿整个存储体系
 - 拷贝 - 贵,尽量减少
 - 硬件设备五花八门,需要有抽象统一的接入层
 
RAID
- redundant array of inexpensive disks
 - 价格|写入性能|容错能力
 - 单块磁盘 vs 多块磁盘
 - RAID0|1|0+1
 
数据库
overview
- 关系 - relation
 - Edgar.F.Codd于1970年提出“关系模型”
 - 关系代数 - 对关系作运算的抽象查询语言(交,并,笛卡尔积)
 - 关系 - 集合 - 任意元素组成的若干有序偶对 反应了事物间的关系
 - SQL - 一种DSL - 方便人类阅读的关系代数表达形式
 
feature
- 关系型数据库是存储系统,但是在存储之外,又发展出其他能力
 - 结构化数据友好 | 支持事务ACID | 支持复杂查询语言
 - 非关系型数据库也是存储系统,但是一般不要求严格的结构化
 
数据库 vs 经典存储
- 结构化数据管理 (写入关系型数据库,以表形式管理 | 写入文件,自行定义管理结构)
 - 事务能力(突显出数据库支持事务的优越性)
 - 事务
- atomicity - 事务内的操作要么全做,要么不做
 - consistency - 事务执行前后,数据状态是一致的
 - isolation - 可以隔离多个并法事务,避免影响
 - durability - 事务一旦提交成功,数据保证持久性
 
 - 复杂查询能力
 
数据库使用方式
- everythining is domain specific language
 - maybe SQL
 
products
单机存储
- 单个计算机节点上的存储软件系统,一般不涉及网络交互
 - 本地文件系统 | key-value 存储
 - linux - 一切皆文件
 - 文件系统的管理单元:文件
 - 文件系统接口: ext2/3/4,sysfs,rootfs等,都遵循VFS的统一抽象接口
 - index node: inode 是一个文件的唯一标识,记录文件元数据,如id,大小,权限,磁盘位置等
 - directory entry: dentry是内存结构,与inode的关系是N:1(hardlink),记录文件名,inode指针,层级关系等
 - key-value: put(k,v) & get(k) | LSM-tree,某种程度上牺牲读写性能,追求写入性能 | RocksDB
 
分布式存储
- 在单机存储基础上实现了分布式协议,涉及大量网络交互
 - 分布式文件系统 | 分布式对象存储
 - HDFS - 大数据时代基石
 - Ceph - 开源分布式存储系统里的万金油
 
单机数据库
- 单个计算机节点上的数据库系统
 - 事务在单机内执行,也可能通过网络交互实现分布式事务
 - 关系型 - Oracle | MySql | PostgreSQL
1
2
3
4
5
6
7
8
9关系型数据库的通用组件
query engine - 负责解析query,生成查询计划
txn manager - 负责事务并发管理
lock manager - 负责锁相关的策略
storage engine - 负责组织内存/磁盘数据结构
replication - 负责主备同步
b-tree b+-tree LRU- list
WriteAheadLog(RedoLog) Page - 非关系型 - MongoDB | Redis | Elasticsearch
 - 不管是否关系型数据库,大家都在尝试支持SQL(子集)和“事务”
 
RDBMS 事务 ACID
- 事务 - transaction - 一组SQL语句组成的一个程序执行单元,需要满足ACID的特性
 - ACID
1
2
3
4atomicity - 事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生
consistency - 数据库事务不饿能破坏关系数据的完整性以及业务逻辑上的一致性
isolation - 多个事务并发访问时,事务之间是隔离带,一个事务不应该影响其他事务运行的效果
durability - 在事务完成以后,该事务对数据库所做的更改便持久的保存在数据库之中,并不会被回滚