存储&数据库
1.存储系统
- 存储系统:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
- 系统特点:性能敏感、容易受硬件影响、代码既简单有复杂
- 存储器层级结构
-
数据怎么从应用到介质
-
RAID技术
RAID0:多块磁盘组合、数据条带化存储提高带宽、没有额外的容错设计
RAID1:真实利用率仅50%、容错率强
然后就是RAID 0+1两个结合起来
特点:高性能/高性价比/高可靠性
2.数据库
- 分为关系型数据库和非关系型数据库
-
关系型数据库是存储系统,但在存储之外,又发展出其它能力(结构化数据友好、支持事务ACID、SQL支持复杂查询语言)
-
非关系型数据库也是存储系统,但是一般不要求严格的结构化,(半结构化数据友好、可能支持事务、可能支持复杂查询语言)
-
数据库VS经典存储:
表形式 VS 自行定义、管理结构
数据库支持事务
数据库查询灵活、简单,经典存储僵化、复杂
3.主流产品剖析
1.单机存储
-
单机存储 = 单个计算机节点上的存储软件系统,一般不涉及网络交互
-
分类:本地文件系统,key-value存储
-
本地文件系统:
Linux经典哲学:一切皆文件
文件系统的管理单元:文件
文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口
Linux文件系统的两大数据结构:Index Node & Directory Entry
-
key-value存储:
世间一切皆key-value
常用使用方式:put(k,v) & get(k)
常用数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
拳头产品:RocksDB
2.分布式存储
- 分布式存储 = 在单机存储基础上实现了分布式协议,涉及大量网络交互
-
分类:分布式文件系统、分布式对象存储
-
分布式文件系统--HDFS
HDFS:堪称大数据时代的基石
时代背景:专用的高级硬件很贵,同时数据存量很大,要求超高吞吐
核心特点:支持海量数据存储、高容错性、弱POSIX语义、使用普通x86服务器,性价比高
-
分布式对象存储--Ceph
Ceph:开源分布式存储系统里的[万金油]
Ceph核心特点:一套系统支持对象接口、块接口、文件接口,但是一切皆对象,数据写入采用主备复制模型,数据分布模型采用CRUSH算法(HASH+权重+随机抽签)
3.单机关系型数据库
-
单机数据库 = 单个计算机节点上的数据库系统
事务在单机内执行,也可能通过网络交互实现分布式事务
4.单机非关系型数据库
4.分布式数据库
-
从单机到分布式解决了:
容量:可动态扩缩容
弹性:迁移到cpu、disk、memory配套的更大的设备
性价比:可在cpu利用率低下,但磁盘不够用,可弄一直存储池,disk~=0