存储与数据库 | 青训营笔记

82 阅读3分钟

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

存储系统

  • 存储系统特点
  • 存储器层级结构
  • 单机存储栈
  • RAID技术

什么是存储系统?

存储系统是提供了读写接口的,能把数据安全有效持久化的软件。

存储系统特点:

性能敏感、容易受硬件影响

RAID技术

存储系统通过 RAID磁盘阵列 实现 高性能 / 高性价比 / 高可靠性

RAID的背景:

  • 单块大磁盘价格 > 多块小磁盘价格
  • 单块大磁盘写入性能 < 多块小磁盘写入性能
  • 单块磁盘有错有限

数据库系统

  • 关系型数据库特点
  • 非关系型数据库特点
  • 数据库 vs 经典存储
  • 数据库使用方式

数据库和经典存储的对比

  • 结构化数据管理 - 自行定义管理结构
  • 具有支持事务的优越性 - 深度代码实现
  • 支持SQL复杂查询语言

主流分析

  • 单机存储
  • 分布式存储
  • 单机数据库
  • 分布式数据库产品

单机存储

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

本地文件系统

  • 管理单元:文件
  • 文件系统接口:统一遵循VFS的统一抽象接口
  • Linux文件系统两大数据结构:Index Node & Directory Entry
  • Index Node:记录文件的元数据,文件的唯一标识
  • Directory Entry:记录文件名、inode指针、层级关系
K-V存储
  • 使用方式:put & get
  • 常见数据结构:LSM-Tree,牺牲读性能,追求写入性能
  • 产品:RocksDB

分布式存储

  • 产品:HDFS - 大数据时代基石 核心特点:廉价硬件-支持海量数据存储、高容错性

  • 产品:Ceph - 开源分布式文件存储 核心特点:基于对象接口、主备复制模型、CRUSH算法

单机数据库

关系型数据库 Oracle、MySQL、PostgreSQL

通用组件

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

内存数据结构:B-Tree、B+Tree、LRU List 磁盘数据结构:RedoLog、Page

非关系型数据库 MongoDB、Redis、Elasticsearch

交互方式各不相同,没有关系约束 schema 灵活,尝试支持SQL和事务

Elasticsearch

index = 文档的集合

面向文档存储,序列化JSON,支持嵌套,依赖Lucene引擎,实现大量搜索数据结构,支持RESTFUL API,弱SQL

MongoDB

collection = 文档的集合

面向文档存储,序列化JSON,支持嵌套,依赖wiredTiger引擎,4.0后支持事务,支持弱SQL

Redis

高性能,基于内存、支持持久化

分布式数据库

单机数据库的问题:

  • 容量问题 - 单点容量有限,受硬件限制
  • 弹性问题
  • 性价比问题

解决方案:存储节点池化,同态扩缩容

新问题

  • 多个同时写入
  • 内存弹性
  • 分布式事务优化

新技术

  • SPDK
  • 人工智能
  • 新硬件加速