这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
经典案例
数据的产生
数据的流动
数据的持久化
经典案例存在的问题
数据库怎么保证数据不丢?
数据库怎么处理多人同时修改的问题?
为什么用数据库,除了数据库还能存到别的存储系统吗?
数据库只能处理结构化数据吗?
有哪些操作数据库的方式,要用什么编程语言?
存储&数据库简介
存储系统特点
- 性能敏感
- 既“简单”又“复杂”
- 容易受硬件影响
- 缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应该尽量减少
- 硬件设备五花八门,需要有抽象统一的接入层
RAID 技术
Redundant Array of Inexpensive Disks
RAID 出现的背景
单块大容量磁盘的价格>多块小容量磁盘
单块磁盘的写入性能<多块磁盘的并发写入性能
单块磁盘的容错能力有限,不够安全
关系型数据库
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂查询语言
非关系型数据库
非关系型数据库也是存储系统,但是一般不要求严格的结构化:
- 版结构化数据友好
- 可能支持事务(ACID)
- 可能支持复杂查询语言
事务特性
- (A)Atomicity,事务内的操作要么全做,要么不做
- (C)Consistency,事务执行前后,数据状态是一致的
- (I)Isolation,可以隔离多个并发事务,避免影响
- (D)Durability,事务一旦提交成功,数据保证持久性
Key-Value 单机存储系统
常见数据结构:LSM-Tree, 某种程度上牺牲读性能,追求写入性能。
分布式存储系统
HDFS 核心特点:
- 支持海量数据存储
- 高容错性
- 弱 POSIX 语义
- 使用普通 x86 服务器,性价比高
核心特点:
- 一套系统支持对象接口、块接口、文件接口、但一切皆是对象
- 数据写入采用主备复制模型
- 数据分布模型采用CRUSH(HASH+权重+随机抽签)算法
单机数据库-关系型数据库
常见的有 Oracle、MySQL、PostgreSQL 等
单机数据库-非关系型数据库
- MongoDB
- Redis
- Elasticsearch
分布式数据库
- 容量
- 弹性
- 性价比