存储相关 | 青训营

70 阅读4分钟

存储

存储系统

  • 存储器层次结构
  1. register
  2. cache
  3. random access memory
  4. flash/USB memory
  5. hard drives
  6. tape backup
    1~6访问速度由快到慢,容量由小到大。
  • 数据从应用到存储介质 image.png
  • RAID技术
    全名Redundant Array Inexpensive Disks,将多块磁盘简单组合,一块磁盘对应一块额外镜像盘,并且数据条带化存储,进而达到容错能力强、写入带宽好的效果。

数据库

数据库包括关系型数据库非关系型数据库

关系相关知识:

  • 关系=集合=任意元素组成的若干有序偶对
  • 关系运算=对关系作运算的抽象查询语言
  • SQL(Structured Query Language)=一种DSL(Domain Specific Language)=关系代数表达形式

关系型数据库特点:

  • 结构化数据友好
  • 支持事务(ACID)
  • 支持复杂查询语言(SQL)

非关系型数据库特点:

  • 半结构化数据友好
  • 可能支持事务(ACID)
  • 可能支持复杂查询语言(SQL)

数据库的优势:

  • 结构化数据管理
  • 事务能力
  1. Atomicity,事务内的操作要么全做,要么不做,即一不做二不休。
  2. Consistency,事务执行前后,状数据状态保持一致。
  3. Isolation,并发事务互相隔离。
  4. Durability,事务一旦提交成功,数据保证持久性。
  • 复杂查询能力

数据库使用:

  • 数据操作相关。包括insert、delete、update、select、where、group by、order by等。
  • 数据定义相关。包括create user、create database、create table、alter table等。

存储架构

存储结构包括:

  • 单机存储
  1. 本地文件系统。
  2. Key-value存储。
  • 分布式存储
  1. HDFS。海量数据存储、高容错性、性价比高。
  2. Ceph。一切皆对象、写入使用主备复制模型、分布模型使用CRUSH算法。

单机数据库包括:

  • 关系型数据库
  1. Mysql
  • 非关系型数据库
  1. MongoDB
  2. Redis
  3. Elasticsearch

分布式数据库将单机数据库进行结合,解决了以下几个问题:

  • 容量问题
  • 弹性问题
  • 性价比问题

存储新技术:

  • 软件架构变革。如SPDK,内核态磁盘访问->用户态磁盘访问,中断->轮询,并采用无锁数据结构。
  • 人工智能与存储。AI带来推荐、风控、视觉等领域的改变,存储由行村、列村转变为行列混存。
  • 高性能硬件。RDMA(Remote Direct Memory Access)、Persistant Memory、可编程交换机、CPU/GPU/DPU等。

实例

Redis

  • 背景:数据量增长,读写数据压力不断增加,对性能要求提高,因此Redis出现,将数据分为冷热数据,热数据保存在内存保证读写效率,冷数据存入磁盘中持久化。
  • 基本工作原理:
  1. 数据从内存中读写。
  2. 持久化数据分两类,增量数据存储到AOF(Append Only File),全量数据存储到RDB(Redis Database Backup)中。
  3. 单线程处理所有工作命令。
  • Redis常用数据结构
  1. String image.png
  2. List image.png
  3. Listpack image.png
  4. Dict image.png
  5. zset、zskiplist image.png
  • 其他应用
  1. 限流。
  2. 分布式锁。利用单线程特性,结合setnx实现。
  • 注意事项
  1. 大Key。会造成读取成本高、慢查询、服务阻塞等危害,可以通过拆分、压缩等方式解决。
  2. 热Key。指单Key的QPS过高导致负载不均,可通过Localcache、拆分等方式解决。
  3. 慢查询。可能由key/value传入过多、zset大小过大、大Key等造成。
  4. 缓存穿透。热点数据查询绕过缓存直接查询数据库,如查询一个不存在的数据,可以通过缓存空值、布隆过滤器解决。
  5. 缓存雪崩。大量缓存同时过期,可以通过缓存空值、缓存集群等解决。

对象存储TOS

短视频架构: image.png 存储架构: image.png

对象存储的优势:

  • 海量
  1. 支持>EB海量存储。
  2. 对象数量无限。
  • 易用
  1. Restful http接口,开发简单。
  2. 云原生,按需申请使用。
  3. 视频/图片相关生态丰富
  • 便宜
  1. 使用普通x86服务器
  2. 具备冷热数据分级存储能力,成本更低。

TOS使用:

  • Restful接口 image.png
  • Multiupload接口(大文件传输) image.png
  • Listprefix接口 image.png

实践要考虑的因素:

  • 可扩展性——partition
  • 持久度——replication
  • 成本——erasure code
  • 成本——冷热转换
  • 高可用——镜像灾备