存储与数据库 | 青训营笔记

133 阅读4分钟

经典案例

1.经典案例-数据的产生

注册

2.经典案例-数据的流动

一条用户注册数据(“user_name”:"小明")->后端服务器->数据库(->其它系统)

3.经典案例-数据的持久化

①校验数据的合法性?(小明是否存在)
②修改内存(用高效的数据结构组织数据)
③写入储存介质(寿命、性能友好的方式写入硬件)

4.经典案例-潜在的问题

保证数据不丢?
处理多人同时修改?
只能处理结构化数据?
还能存到别的存储系统吗?

存储系统

2.1 存储系统-系统概览

定义:一个提供读写、控制类接口,能够安全有效地把数据持久化的软件
User Medium Memory Network

2.1 存储系统-系统特点

性能敏感,容易受硬件影响,既简单又复杂

2.1 存储系统-存储器层级结构

2.1 存储系统-数据怎么从应用到存储介质

缓存贯穿整个存储体系
拷贝尽量减少
接入层要统一

2.1 存储系统-RAID技术

redundant array inexpensive disks
①RAID 0
②RAID 1
③RAID 0+1

2.2 数据库

①关系型数据库 ②非关系型数据库

2.2 数据库-关系型数据库特点

①结构化数据友好 ②支持事务 ③支持复杂查询语言

2.2 数据库-非关系型数据库特点

①半结构化数据友好 ②可能支持事务 ③可能支持复杂查询语言

2.3 数据库 vs 经典存储 - 结构化数据管理

一条用户注册数据{“user_name”:“xiaoming”}
①写入关系型数据库,以表形式管理。
②写入文件,自行定义管理结构。

2.3 数据库 vs 经典存储 - 事务能力

事务具有: Atomicity,操作要么全做,要么不做
Consitency,事务执行前后,数据状态是一致的
Iolation,隔离多个并发事务,避免影响
Durability,事务一旦提交成功,数据保证持久性

2.3 数据库 vs 经典存储 - 复杂查询

2.4 数据库使用方式

增删改查

主流产品剖析

3.1单机存储

单机存储=单个计算机节点上的存储软件系统

3.1单机存储- 本地文件系统

linux:一切皆文件
管理单元:文件
linux文件系统两大数据结构:index node & directory entry

3.1单机存储- key-value存储

世间一切皆key-value
常用方式:put(k,v) get(k)
常见数据结构:LSM-tree,牺牲读性能,追求写入性能
拳头产品:RocksDS

3.2 分布式存储-概览

分布式存储=在单机存储基础上实现了分布式协议,涉及大量网络分布

3.2 分布式存储-HDFS

HDFS:大数据时代的基石
核心特点:
支持海量数据存储、高容错性、弱POSIX语义、性价比高

3.2 分布式存储-Ceph

开源分布式存储系统的万金油 核心特点:一切皆对象、数据写入主备复制模型、数据分布模型crush算法

3.3 单机数据库-概览

单机数据库= 单个计算机节点上的数据库,事务可单机执行,也可能通过网络交互

3.3 单机数据库-关系型数据库

Oracle,Mysql,PostgreSQL

3.4 单机数据库-非关系型数据库

MongoDB、Redis、Elasticsearch

Elasticsearch
面向文档存储
json,支持嵌套
存在index
存储和构建索引能力依赖lucene引擎
大量搜索数据结构&算法
RETFUL API,弱SQL
MongoDB
面向文档存储
json,支持嵌套
存在collection
存储和构建索引能力依赖wiredTiger引擎
4.0后支持事务
client/sdk,弱SQL
Redis
数据结构丰富
C语言实现,超高性能

3.4 单机数据库 - Elasticsearch案例

模糊搜索,关联分析

3.5 从单机到分布式存储

容量、弹性、性价比

3.5 分布式数据库-解决容量问题

单点容量有限,受硬件限制
存储节点池化,动态扩缩容

3.5 分布式数据库-解决弹性问题

3.5 分布式数据库-解决性价比问题

新技术演进

4.1 新技术演进-概览

软件架构变更
AI增强2
新硬件革命

4.2 新技术演进-SPDK

4.3 新技术演进-AL & Storage

4.4 新技术演进-高性能硬件