经典案例
数据库本质:
校验数据的合法性 小明”是否已经存在
↓
修改内存 高效数据结构组织数据
↓
写入存储介质 以寿命、性能友好的方式写入硬件
存储&数据库简介
存储系统
定义
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件
user medium memory network
特点
- 性能敏感 大量并发性操作
- 代码既简单又复杂 I/O路径简单,非I/O路径错误处理考虑多种异常情况
- 容易受硬件影响
从应用到存储介质
- 缓存很重要,贯穿存储体系(跨层级之间交互)
- 拷贝很昂贵,应尽量减少(消耗CPU)
- 硬件设备五花八门,需要抽象统一的软件接口
RAID技术
高性能、高性价比、高可靠性
R(edundant)A(rray)I(nexpensive)D(isks)
数据库
关系
关系 = 集合 = 任意元素组成的若干有序偶对(反映事物之间的关系)
关系代数:对关系作运算
SQL:一种DSL 方便人类阅读的关系代数表达式
关系型数据库
是存储系统,存储外有其他能力
结构化数据,支持事物(ACID),支持复杂查询语言(SQL)
非关系型数据库
是存储系统,但一般不要求严格的结构化
半结构化数据,可能支持事物(ACID),可能支持复杂查询语言(SQL)
ACID事物能力
Atomicity 事务内的操作要么全做,要么不做
Consistency 事务执行前后,数据状态是一致的
Isolation 可以隔离多个并发事务,避免影响
Durability 事务一旦提交成功,数据保证持久性
使用方式
操作数据时,支持以下操作:
Insert Delete Select Where子句 GroupBy OrderBy
要对数据定义作修改时,支持以下操作:
CreateUser CreateDatabase CreateTable AlterTable
主流产品剖析
单机存储
单个计算机节点上的存储软件系统,一般不涉及网络交互
本地文件系统
管理单元:文件
系统接口:USB统一抽象接口
两大数据结构:IndexNode DirectoryEntry
IndexNode:记录文件元数据,id、大小、权限、磁盘位置等
DirectoryEntry:记录文件名、iNode指针、层级关系等
key-value存储
常见使用方式:put(k,v) get(k)
常见数据结构:LSM-Tree 某种程度上牺牲读性能,追求写入性能
分布式存储系统
在单级存储的基础上实现了分布式协议,涉及大量网络交互
HDFS
支持海量数据支持、高容错性、弱POSIX语义、使用普通x86服务器、性价比高
Ceph
一套系统支持对象接口、块接口、文件接口、数据写入采用主备复制模型,数据分布模型采用CRUSH算法
单机数据库
单个计算机节点上的数据库 事务在单机内执行,也可能通过网络交互实现分布式事务
分为关系型数据库和非关系型数据库
分布式数据库
问题、挑战:容量、弹性、性价比