主流存储产品剖析 | 青训营笔记

99 阅读4分钟

主流存储产品剖析 | 青训营笔记

3.1 单机存储

概览

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

本地文件系统

Linux经典哲学 : 一切皆文件Linux经典哲学 : 一切皆文件。

文件系统的管理单元: 文件。

文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口Linux文件系统的两大数据结构 : Index Node & Directory Entry。

Index Node:

    记录文件元数据,如id、大小、权限、磁盘位置等。inode是一个文件的唯一标识,会被存储到磁盘上inode的总数在格式化文件系统时就固定了。

Directory Entry:

    记录文件名、inode指针,层级关系(parent)等。

    dentry是内存结构,与inode的关系是N:1(hardlink的实现)。

key-value存储

世间一切皆key-value。 —— key是你身份证,value是你的内涵

常见使用方式 : put(k, v) & get(k)。

常见数据结构 : LSM-Tree,某种程度上牺牲读性能,追求写入性能。

拳头产品: RocksDB。

3.2 分布式存储

概览

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

HDFS

堪称大数据时代的基石。

时代背景 : 专用的高级硬件很贵,同时数据存量很大,要求超高吞吐。

HDFS核心特点:

    (1)支持海量数据存储。

    (2)高容错性。

    (3)弱POSIX语义。

    (4)使用普通x86服务器,性价比高。

Ceph

开源分布式存储系统里的“万金油”。

Ceph的核心特点:

    (1)一套系统支持对象接口、块接口、文件接口。

    (2)但是一切皆对象。

    (3)数据写入采用主备复制模型。

    (4)数据分布模型采用CRUSH算法。

3.3 单机数据库

概览

单机数据库 = 单个计算机节点上的数据库系统。

事务在单机内执行,也可能通过网络交互实现分布式事务。

关系型数据库

商业产品Oracle称王,开源产品MySQL & PostgreSQL称霸。

关系型数据库的通用组件:

    Query Engine:负责解析query,生成查询计划。

    Txn Manager:负责事务并发管理。

    Lock Manager:负责锁相关的策略。

    Storage Engine:负责组织内存/磁盘数据结构。

    Replication:负责主备同步。

关键内存数据结构:B-Tree、B+-Tree、LRU List等。

关键磁盘数据结构:WriteAheadLog (RedoLog) 、Page。

非关系型数据库

MongoDB、Redis、Elasticsearch三足鼎立。

关系型数据库一般直接使用SOL交互,而非关系型数据库交互方式各不相同。非关系型数据库的数据结构千奇百怪没有关系约束后,schema相对灵活。不管是否关系型数据库,大家都在尝试支持SQL(子集)和“事务”。

Elasticsearch:

    (1)面向“文档”存储。

    (2)文档可序列化成JSON,支持嵌套。

    (3)存在“index”,index = 文档的集合。

    (4)存储和构建索引能力依赖Lucene引擎。

    (5)实现了大量搜索数据结构 & 算法。

    (6)支持RESTFUL API,也支持弱SQL交互。

MongoDB:

    (1)面向“文档”存储。

    (2)文档可序列化成JSON/BSON,支持嵌套。

    (3)存在“collection”,collection = 文档的集合。

    (4)存储和构建索引能力依赖wiredTiger引擎。

    (5)4.0后开始支持事务 (多文档、跨分片多文档等)。

    (6)常用client/SDK交互,可通过插件转译支持弱SQL。

Redis:

    (1)数据结构丰富(hash表、set、zset、list)。

    (2)C语言实现,超高性能。

    (3)主要基于内存,但支持AOF/RDB持久化。

    (4)常用redis-di/多语言SDK交互。

3.5 单机 —> 分布式数据库

引入分布式架构可解决的问题 & 挑战:

    (1)容量

    (2)弹性

    (3)性价比

其他优点:

    (1)单写 —> 多写

    (2)磁盘弹性 —> 内存弹性

    (3)分布式事务优化

学习总结:

本次课程对单机存储、分布式存储、单机数据库和分布式数据库等主流存储产品进行了剖析。单机存储指的是在单个计算机节点上的存储软件系统,主要包括本地文件系统和key-value存储。分布式存储在单机存储的基础上实现了分布式协议,常见的如HDFS和Ceph。单机数据库指的是在单个计算机节点上的数据库系统,包括关系型数据库和非关系型数据库。引入分布式架构会带来许多好处。