这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
经典案例
数据由前端产生,数据的流动过程是前端->后端->数据库(内存->存储介质)
潜在的问题
- 数据库怎么保证数据不丢?
- 数据库怎么处理多人同时修改的问题?
- 为什么用数据库,除了数据库还能存到别的存储系统吗?
- 数据库只能处理结构化数据吗?
- 有哪些操作数据库的方式,要用什么编程语言?
存储&数据库简介
什么是存储系统
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。
特点
组我欸后端软件的底座,性能敏感;存储系统软件架构,容易受软件影响;存储系统代码,即简单又复杂
数据怎么从应用到存储介质
- 缓存」很重要,贯穿整个存储体系
- 「拷贝」很昂贵,应该尽量减少
- 硬件设备五花八门,需要有抽象统一的接入层
数据库
-
关系型数据库是存储系统,但是在存储之外,又发展出其他能力
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂查询语言
-
非关系型数据库也是存储系统,但是一 般不要求严格的结构化
- 半结构化数据友好
- 可能支持事务(ACID)
- 可能支持复杂查询语言
主流产品刨析
单机存储
单机存储 = 单个计算机结点上的存储软件系统,一般不涉及网络交互
本地文件系统
文件系统的管理单元:文件 文件系统接口:文件系统繁多,但都遵循VFS的统一抽象接口
Key-Value存储
常见使用方式:put(k, v) & get(k) 常见数据结构:LSM-Tree,以某种程度上牺牲读性能,追求写入性能
分布式存储
分布式存储 = 在单机存储基础上实现了分布式协议,涉及大量网络交互
分布式文件系统
HDFS核心特点:
- 支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用普通x86服务器,性价比高