经典案例
数据产生 -> 流动 -> 数据的持久化
潜在的问题
存储 & 数据库简介
存储系统
定义:
- 提供了读写、控制类接口
- 能够安全可靠地将数据持久化
系统特点:
- 性能敏感
- 代码在读写上需要简单、内部需要复杂(错误处理,考虑出多种异常情况、甚至硬件的损坏)
- 软件架构比较容易受硬件影响
存储器层级结构:
- 容量
- 存活时期
- 成本
数据是怎么从 APP -> 存储介质 的?
- 缓冲区缓存很重要
- 拷贝很成本很高,需要尽量减少
- 硬件最好有抽象统一的接入层
RAID 技术
单机存储系统想同时做到高性能、高性价比、高可靠性
数据库
数据库和存储系统的区别?
关系数据库:是存储系统,但是也发展出了很多其他能力
- 结构化数据特别友好
- 支持事务 ACID
- 支持复杂查询语言(SQL)
非关系型数据库
- 半结构化数据友好
- 后两者都是可能支持
数据库 vs 经典存储
结构化数据管理
用户数据 -> 以表形式存入数据库 -> 写入文件由数据库组织管理结构
事务能力
ACID 的特性
- 原子性:事务内的操作,要么全做,要么不做
- 一致性:事务执行前后,数据状态是一致的
- 孤立性:在并发操作中,隔离多个并发事务,避免相互影响
- 持久性:数据持久
复杂查询能力
主流产品剖析
单机存储
本地文件系统 (Linux)
-
管理单元
-
系统接口
-
两大数据结构
- INODE
- Dir Entry
Key-value 存储
-
常见使用方式
put(k, v)&get(k) -
常见数据结构 LSM-Tree
- 原理听不懂
-
拳头产品
分布式存储
单机存储 + 分布式协议,涉及大量网络交互
分布式文件存储系统 —— HDFS
-
大数据时代的基石
-
核心特点
- 海量数据
- 高容错
- 弱 POSIX
- 性价比高
-
原理
- Management Node
- Storage Node
分布式对象存储系统 —— Ceph
-
核心特点
-
开源,万金油
-
一切皆对象,有很多
-
写入采用主备复制模型
-
数据分析模型CRUSH
- HASH + 抽签 + 随机权重
-
-
原理
单机数据库
关系型数据库
-
主流产品
- 商业产品
- 开源产品
-
通用组件
-
关键数据结构;原理听了个寂寞
- 磁盘
- 内存
非关系行数据库
-
三足鼎立
-
特点
- 不基于 SQL 查询
- scheme 相对灵活