这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
存储与数据库 | 青训营笔记
经典案例
数据持久化
三步走: 校验数据合法性->修改内存->写入存储介质
潜在问题
- 为什么用数据库?还能存储到别的存储系统吗?
- 如何保证数据不丢?
- 如何处理多人修改?
- 有哪些操作数据库的方式?
- 数据库只能存储结构化数据吗?
一些意识
- 缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应该尽量减少
- 硬件设备五花八门,需要有统一的接入层
存储&数据库简介
RAID (Redunant Array of Inexpensive Disks)
- RAID 0:多块磁盘简单组合、数据条带化存储、没有额外容错设计
- RAID 1:一块磁盘对应额外一块额外镜像盘,真实空间利用率仅50%,容错能力强
- RAID 0+1:结合二者
数据库
关系型数据库
- 是一个存储系统
- 结构化数据友好
- 支持事务
- 支持复杂查询语言
非关系型数据库
- 是存储系统
- 半结构化数据友好,一般不要求严格地结构化
- 可能支持事务
- 可能支持复杂查询语言
数据库vs经典存储
- 结构化数据管理
- 事务能力
- 复杂查询
主流产品剖析
单机存储
本地文件系统
linux文件系统两大数据结构:
- idex node:记录文件元数据,如id、大小、权限等,是一个文件的唯一标识,总数在格式化文件系统时已确定
- directory entry:记录文件名、层级关系等,与index node关系为N:1
分布式存储
分布式文件系统 -HDFS
HDFS特点:
- 支持海量数据存储
- 高容错性
- 弱POSIX语义(可移植操作系统接口Portable Operating System Interface of UNIX)
- 性价比高
分布式文件系统 - Ceph
Ceph特点:
- 一套系统支持对象接口、块接口、文件接口,但是一切皆对象
- 主备复制模型
- 数据分布模型采用CRUSH算法
单机数据库
关系型数据库:MySQL
非关系型数据库: Elasticsearch、MongoDB、Redis
分布式数据库
- 解决容量问题:存储节点池化,动态扩缩容,数据库不需要感知存储池的容量
- 解决弹性问题:存储节点池化