认识数据库和存储|青训营笔记

93 阅读2分钟

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

数据流动

用户->后端服务器->数据库

image-20230212103350043

数据持久化

校验合法性->修改内存->写入存储介质

潜在问题

如何保证数据不丢

如何处理 多人同时修改

除了数据库还能存到别的存储系统

数据库只能处理结构化数据吗

有哪些数据库操作方式,要用什么编程语言

存储系统

系统概览

  • 什么是存储系统

    • 提供了读写、控制类接口,能够安全有效地把数据持久化的软件就可以称为存储系统
  • 存储系统特点

    • 后端软件底座,性能敏感
    • 存储系统代码,既简单又复杂
    • 存储系统软件架构,容易受硬件影响
  • 储存器层级结构

    • image-20230212105518630

RAID技术

  • 背景

    • 单块大容量磁盘价格>多块小容量磁盘
    • 单块磁盘的写入性能<多块磁盘的并发写入性能
    • 单块磁盘容错能力有限,不够安全
  • RAID 0(性能设计极端)

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

    • 一块磁盘对应一块额外镜像盘
    • 真实空间利用率只有一半
    • 容错能力强
  • RAID 0 + RAID 1(安全性能兼顾型)

    • 结合RAID 0 和 RAID 1
    • 真实空间利用率仅50%
    • 容错能力强,写入带宽好

数据库

关系型数据库

结构化数据:可以用二维表来逻辑表达实现的数据

概览

  • 关系:反应了事物间的关系
  • 关系代数:对关系坐运算的抽象查询语言
  • SQL : 方便人类阅读的关系代数表达式

特点

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

非关系型数据库

特点

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

数据库 VS 经典存储

  • 事务ACID能力

  • 复杂查询能力支持

    • image-20230212114205911
  • 结构化数据管理

    • image-20230212113959467

主流存储产品剖析

单机存储

单机存储 = 单个计算机节点上的存储系统,不涉及网络交互

  • K-V存储

    • 常见数据结构,LSM-Tree,某种程度上牺牲读性能,追求写入性能
    • 产品:RocksDB
  • 本地文件系统

    • Linux
    • image-20230212131932757

    分布式存储系统

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

    分布式文件系统

    HDFS

    • 背景

      • 专业高级硬件贵,数据存量很大,要求超高吞吐
    • 特点

      • 支持海量数据存储
      • 高容错性
      • 弱POSIX语义
      • 使用普通X86服务器,性价比高

    分布式对象存储系统

    Ceph

    • 核心特点

      • 一套系统支持对象、块接口、文件接口,但是一切皆对象
      • 数据写入采用主备复制模型
      • 采用CRUSH算法,HASH+权重+随机抽签

单机数据库

通用组件

QueryEngine 负责解析query,生成查询计划

TxnManager 负责事务并发管理

LockManager负责锁相关策略

Storage Engine 负责组织内存、磁盘数据结构

Replication 负责主备同步

关键数据结构

  • B-Tree
  • B+-Tree
  • LRU List

关键硬盘数据结构

  • Page
  • WriteAheadLog(RedoLog)

引用

  1. 稀土掘金内部课 后端入门 - 存储与数据库