数据库和存储形式 | 青训营笔记

72 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

今天的课讲到数据库,记录一下数据库相关的部分.

数据的流动机制

数据的产生:来自用户的交互和程序的运行。
持久化:必要的数据保留在特定的地方。

数据的持久化流程
  • 校验数据合法性:校验写入方式
  • 修改内存:利用合适的方式组织数据
  • 写入存储介质:以寿命性能友好的方式
存储系统的特点
  • 性能敏感
  • 硬件相关
  • 编码需要全面
  • 需要【缓存】 减少【拷贝】
RAID

Redudant Array of Inexpensive Disks(廉价磁盘冗余阵列)

  • 单块大容量成本小于多块小容量
  • 多盘写入快于单盘
RAID0,RAID1,RAID0+1
  • RAID0:没有备份,多盘存储
  • RAID1:用一半备份一半
  • RAID (1+0)(0.5): 混着来

数据库

关系数据库

结构化数据处理逻辑是: 数据→以“表”形式存储管理进入关系型数据库 数据→以“自行定义的管理结构”写入程序

ACID
  • Atomicity: 原子性,内部不可分割
  • Consistency: 持久性, 执行前后数据一致
  • Isolation: 隔离性, 解决并发
  • Durability: 持久性, 结果可保存

主流产品

单机存储
  • 本地文件系统, Linux“一切皆文件”
  • Key-Value,RocksDB
单机关系型存储
  • MySQL
单机非关系型存储
  • MongoDB,“面向文档”
  • Redis,“数据结构多”,“基于内存,但支持持久化”
  • Elasticsearch,“面向文档”
分布式存储
  • HDFS
  • Ceph,“一切皆对象”

后面记一下有关Redis的部分. Redis的数据类型及主要特性

  • 哈希类型
  • 列表类型
  • 集合类型
  • 顺序类型
  • 动态字符串

缓存穿透 大量请求的 key 是不合理的,根本不存在于缓存中,也不存在于数据库中 。这就导致这些请求直接到了数据库上,根本没有经过缓存这一层,

缓存击穿 请求的 key 对应的是 热点数据 ,该数据 存在于数据库中,但不存在于缓存中(通常是因为缓存中的那份数据已经过期) 。这就可能会导致瞬时大量的请求直接打到了数据库上

缓存雪崩 缓存在同一时间大面积的失效,导致大量的请求都直接落到了数据库上,对数据库造成了巨大的压力。