这是我参与「第五届青训营 」伴学笔记创作活动的第14天。
存储与数据库
经典案例
一条数据从产生,到数据流动,最后持久化的全生命周期。
数据库的流动:用户注册的数据发送到后端服务器然后存储到数据库之中,由其他系统从数据库中调用对应内容。
数据持久化:首先校验数据的合法性,然后进行内存修改,用搞笑的数据结构组织数据,然后以寿命与性能有好的方式写入硬件。
存储与数据库简介
概念
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,可以称为存储系统。
存储系统的系统特点:作为后端软件的底座,首先是性能敏感,然后存储系统软件架构,容易受到硬件影响,存储系统代码,是既“简单”又“复杂”的。
存储系统-RAID技术
单机存储系统实现高性能、高性价比、高可靠性的方法: Redundant Array of Inexpensive Disk
RAID出现的背景:
单块大容量磁盘价格>多块小容量磁盘
单块磁盘的写入性能<多块磁盘的并发写入性能
单块磁盘的容错能力有限,不够安全。
级别: RAID 0:
多块磁盘的简单组合;
数据条带化存储,提高磁盘带宽;
没有额外的容错设计;
RAID 1:
一块硬盘对应一块额外镜像盘
真实空间利用率仅为50%
容错能力很强
RAID 0+1:
结合了RAID 0和RAID 1
真实的空间利用率只有50%
容错能力很强,写入带宽高
关系型数据库与存储系统的区别
关系型数据库是存储系统,但是在存储之外,又展现出了其他的能力。
非关系型数据库也是存储系统,但是一般都不要求严格的结构化。
事务具有ACID属性:
- Atomicity:事务内的操作要么全做,要么不做。
- Consistency:事务执行前后,数据状态是一致的。
- Isolation:可以隔离多个并发的事务,避免影响。
- Durability:事务一旦提交成功,数据要保证持久性。
主流系统刨析
单机存储:
单机存储=单个计算机节点上的存储软件系统,一般不涉及网络交互。
实例:本地文件系统
文件系统的管理单元:文件
文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但是都遵循VFS的统一抽象接口。
分布式存储:
分布式存储=在单机存储基础上实现了分布式协议,涉及到大量的网络交互。
实例:HDFS
HDFS堪称大数据时代的基石。
HDFS的核心特点为:支持海量的数据存储;有高容错性;弱POSIX语义;使用普通X86服务器,性价比很高。
单机数据库是单个计算机节点上的数据库系统,事务在单机内执行,也可以通过网络交互实现分布式事务。
单机关系型数据库
Oracle、MySQL、PostgreSQL
关系型数据库的通用组件:
- Query Engine:负责解析query,生成查询计划。
- Txn Manager:负责事务并发管理。
- Lock Manager:负责锁相关的策略。
- Storage Engine:负责组织内存/磁盘数据结构。
- Replication:负责主备同步操作。
单机非关系型数据库
非关系型数据库中有:
MongoDB、Redis、Elasticsearch
关系型数据库一般直接使用SQL交互,非关系型数据库的交互方式各不相同。
非关系型数据库的数据结构千奇百怪,没有关系约束后,schema相对灵活。
不管是否是关系型数据库,大家都在尝试支持SQL和“事务“。
分布式数据库
分布式数据库主要是解决单机数据库的容量问题、解决弹性问题、解决性价比问题
分布式数据库:More to Do
新技术演进
新技术演进包括:软件架构变更、AI增强、新硬件革命
软件架构变更:Bypass OS kernel
AI增强:智能存储格式转换
新硬件革命:存储介质变更;计算单元变更;网络硬件变更