数据库和存储相关 | 青训营笔记

64 阅读3分钟

RAID技术

高性能 高性价比 高可靠性

RAID 0

多块磁盘简单组合 数据条带化存储,提高磁盘带宽 没有额外的容错设计

RAID 1

容错 一块磁盘对应一块额外镜像盘 真实空间利用率仅50% 容错能力强

RAID 0 + 1

数据库 & 存储系统

关系型数据库

  • 关系 relation

  • 关系模型 - 1970

  • 关系 = 集合 = 任意元素组成的若干有序偶对

  • 关系代数 = 对关系做运算的抽象查询语言

  • SQL = 一种DSL = 方便人类阅读的关系代数表达式

  • 关系型数据库是存储系统,+其他

  • 结构化数据友好

  • 支持事物 ACID

  • 支持复杂查询语言 SQL

非关系型数据库

  • 也是存储系统,但不要求严格的结构化
  • 半结构化数据友好
  • 不一定支持事务
  • 不一定支持复杂查询语言,如SQL

数据库VS经典存储

数据库

  • 表形式管理
  • 事务能力
    • atomicity
    • consistency
    • isolation
    • durability
  • 复杂查询能力

经典存储

  • 自行定义管理结构

数据库使用方式

DSL - domain specific language

主流产品剖析

单机存储

单个计算机,不涉及网络交互

  • 本地文件系统 Linux: 一切皆文件 文件系统接口:Ext2/3/4, sysfs, rootfs, VFS统一抽象接口 Index Node - 文件的全局唯一标识 Directory Entry - 记录文件名、 inode指针,层级关系;内存结构,与inode的关系是N:1 hardlink的实现

  • key-value存储系统 常见使用方式:put & get 常见数据结构: LSM-Tree, somehow牺牲读性能,追求写入性能 RocksDB LevelDB

分布式存储

大量网络交互

  • 分布式存储 - HDFS 海量数据存储 高容错性 弱POSIX语义 使用普通X86服务器,性价比高

  • 分布式存储 - Ceph 一切皆对象:支持对象接口、块接口、文件接口 主备复制模型 - 数据写入 CRUSH算法 - 数据分布算法 HASH 权重 随机

单机关系型数据库

Oracle MySQL PostgreSQL Query Engine - 解析query,生成查询计划 Txn Manager - 事务并发管理 Lock Manager - 锁相关的策略 Storage Engine - 组织内存/磁盘数据结构 Replication - 主备同步

单机非关系型数据库

MongoDB Redis Elasticsearch

schema灵活 SQL子集、 “事务”

  • Elasticsearch
    • 面向文档
    • 文档可序列化为JSON
    • index = 文档的集合
    • 存储和构建索引的能力依赖Lucene引擎
    • 实现了大量搜索数据结构 & 算法
    • RESTFUL API 弱SQL
  • mongoDB
    • 文档
    • JSON / BSON
    • collection = 文档的集合
    • wiredTiger引擎:C
    • 事务 4.0之后
    • client/SDK交互,插件
  • Redis
    • 数据结构丰富
    • C语言实现,超高性能
    • 基于内存,AOF/RDB持久化
    • redis-cli / 多语言SDK交互

分布式数据库

问题:容量;弹性;性价比

  • 容量 - 存储节点池化,动态扩缩容
  • 弹性 - CPU核扩容,缩容
  • 性价比 - 容量不够、CPU利用率低

MORE 单写 / 多写 磁盘弹性 - 内存弹性 分布式事务优化

新技术的演进

架构 / 硬件 /理论 / AI 架构 - Bypass OS kernel AI增强 - 智能存储格式转换 新硬件革命 - 存储介质;计算单元;网络硬件

SPDK

  • user space
  • 中断 -> 轮询
  • 无锁数据结构

AI & Storage

  • 数据存储格式的转换:行存、列存、行列混存

高性能硬件

  • RDMA网络
  • persistent memory
  • 可编程交换机
  • CPU/GPU/DPU