这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天.
存储&数据库简介
存储系统概述
存储系统特点
- 数据结构化
- 数据的共享性高,冗余度低,易扩充
- 数据独立性高
- 数据由DBMS统一管理和控制
存储器层次结构
- L0:寄存器
- L1:高速缓存(SRAM)
- L2:高速缓存(SRAM)
- L3:高速缓存(SRAM)
- L4:主存(DRAM)
- L5: 本地二级存储(本地磁盘)
- L6: 远程二级存储(分布式文件系统、Web服务器)
单机存储栈
- VFS:对用户屏蔽各种文件系统的不同实现,对上层提供统一的接口
- 单机文件系统(ext4/xfs等):向下管理块设备,向上对接vfs 非direct io:写到page cache,之后由内核定期write back
- direct io:将用户io提交到通用块层
- page cache:文件系统高速缓存,用于加速读写过程,Page cache由内存中的物理page组成,其内容对应磁盘上的block。
- block layer:处理所有对块设备的请求,核心struct bio,主要是io scheduler和block mq两大模块
数据库系统概览
关系型数据库特点
- 一旦数据表中存储数据后,修改表结构变得特别困难。
- 如果我们想扩展字段时,会对表结构产生影响。
- 即使某一行中的某个字段没有赋值,也要使用null填充
- 一旦涉及到多张表,因为数据表存在着复杂的关系,管理非常不方便。
- 一旦面对海量数据的处理时,读写性能特别差,尤其在高并发这一块。
非关系型数据库特点
- 扩展数据之间无关系,这样就非常容易扩展。
- 大数据量,高性能:SQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。
- 灵活的数据模型:NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
数据库vs经典存储
相较于经典存储,数据库有以下优点
- 数据共享
- 减少数据的冗余度
- 数据的独立性
- 数据实现集中控制
- 数据一致性和可维护性