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

111 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记。

存储系统

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

存储器层级结构

image.png

数据从应用到存储介质

image.png

单机存储系统怎么做到高性能/高性价比/高可靠性?RAID

关系型数据库和非关系型数据库都是存储系统

单机存储

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

  • 本地文件系统

    • Linux文件系统两大数据结构:Index Node & Directory Entry
  • key-value存储

    • 常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能。
    • RocksDB
  • 分布式存储

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

    HDFS核心特点

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

image.png

Ceph核心特点

-  一套系统支持对象接口、块接口、文件接口,但是一切皆对象
- 数据写入采用主备复制模型
- 数据分布模型采用CRUSH算法

image.png

常见关系型数据库:Oracle、MySql、PostgreSQL 非关系型数据库:MongoDB、Redis、ElasticSearch

image.png

跟RDBMS相比,ES能够实现模糊搜索,还能算出关联程度

SPDK

Storage Performance Development Kit

  • Kernel Space -> User Space

      避免syscall带来的性能损耗,直接从用户态访问磁盘
    
  • 中断 -> 轮询

    • 磁盘性能提高后,中断次数随之上升,不利于IO性能
    • SPDK poller可以绑定特定的CPU核不断轮询,减少cs,提高性能
    • 无锁数据结构 使用Lock-free queue,降低并发时的同步开销