《带你认识存储 & 数据库》课程笔记 | 青训营

67 阅读3分钟

一、经典案例

  • 数据的产生
  • 数据的流动:提交 -> 后端服务器 -> 数据库 -> 其它系统
  • 数据的持久化:检验数据的合法性 -> 修改内存 -> 写入存储介质

二、存储 & 数据库简介

2.1 存储系统

  • 系统概览:提供读写、控制类接口,能够安全有效地把数据持久化的软件
  • 系统特点:性能敏感、代码既“简单”又“复杂”、容易受硬件影响
  • 存储器层级结构
  • 数据怎么从应用到存储介质缓存贯穿整个存储体系、应该尽量减少拷贝、硬件需要有抽象统一的接入层
  • RAID技术:高性能、高性价比、高可靠性

2.2 数据库

关系型数据库

  • 关系:集合,任意元素组成的若干有序偶对,反映事物间的关系
  • 关系代数:对关系做运算的抽象查询语言
  • SQL:一种DSL,方便人类阅读的关系代数表达形式
  • 关系型数据库特点:关系型数据库是存储系统,并且扩展出其他能力,例如支持结构化数据事务、支持复杂语言

非关系型数据库

  • 非关系型数据库特点:非关系型数据库也是存储系统,但一般不要求严格的结构化,对半结构化数据友好、可能支持事务、可能支持复杂查询语言

2.3 数据库 vs 经典存储

  • 结构化数据管理更强
  • 事务能力更强
  • 复杂查询能力更强

2.4 数据库使用方式

DSL:SQL

三、主流产品剖析

3.1 单机存储

  • 概览:单个计算机节点上的存储软件系统,一般不涉及网络交互
  • 举例:本地文件系统、key-value存储系统等
  • 本地文件系统:以文件为管理单元,Linux系统中两大数据结构Index Node记录文件元数据、Directory Entry则是内存结构
  • key-value存储:常见数据结构LSM-Tree,某种程度上牺牲读性能、追求写入性能

3.2 分布式存储

  • 概览:在单机存储基础上实现了分布式协议涉及大量网络交互
  • 举例:分布式文件系统、分布式对象存储
  • HDFS:支持海量数据存储、高容错性、弱POSIX语义、性价比高
  • Ceph:一套系统支持对象接口、块接口、文件接口,一切皆对象,数据写入采用主备复制模型、数据分布模型采用CRUSH算法

3.3 单机关系型数据库

  • 概览:事务在单机内执行,也可能通过网络交互实现分布式事务
  • 关系型数据库通用组件:Query Engine、Txn Manager、Lock Manager、Storage Engine、Replication
  • 关键内存数据结构:B-Tree、B+-Tree、LRU List
  • 关键磁盘数据结构:WriteAheadLog、Page

3.4 单机非关系型数据库

  • 非关系型数据库交互方式各不相同
  • 数据结构千奇百怪,schema相对灵活
  • 尝试支持SQL和事务
  • Elasticsearch:面向文档存储;文档可序列化为JSON;index为文档的集合;存储和构建依赖Lucene引擎;实现大量搜索数据结构、算法;支持RESTFUL API,也支持SQL交互
  • MangoDB:面向文档存储;文档可序列化为JSON/BSON;collection为文档集合;存储和构建依赖wiredTiger引擎;4.0后开始支持事务;常用client/SDK交互,通过插件转译支持弱SQL
  • Redis:数据结构丰富(hash表、set、zset、list);超高性能;基于内存,支持AOF/RDB持久化;常用redis-cli/多语言SDK交互

3.5 分布式数据库

  • 单机数据库问题:容量有限、弹性差、性价比
  • 解决方法:存储节点池化,动态扩缩容

四、新技术演进

  • 软件架构变更:Bypass OS kernel
  • AI增强:智能存储格式转换
  • 新硬件革命:存储介质变更、计算单元变更、网络硬件变更