认识存储的本质 | 青训营笔记

103 阅读5分钟

认识存储的本质 | 青训营笔记

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

今天主要对认识存储的本质进行学习。

一、本堂课重点内容:

本次课程讲了以下几个方面:

  1. 经典案例

  2. 存储 & 数据库简介

  3. 主流产品剖析

  4. 新技术演进

二、详细知识点介绍:

1.经典案例

在我们日常使用各种系统/软件的时候,都会涉及到对数据的使用。例如:我们在使用App的时候注册一个新的账号,在我们填完相关信息之后,数据就此产生了,然后数据就通过网络等其他途径进行传输。如下图: image.png 与此同时,就会存在着以下问题:

  • 数据库怎么保证数据不丢?
  • 数据库怎么处理多人同时修改的问题?
  • 为什么用数据库,除了数据库还能存到别的存储系统吗?
  • 数据库只能处理结构化数据吗?
  • 有哪些操作数据库的方式,要用什么编程语言?

2.存储 & 数据库简介

2.1存储

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

  • 性能敏感,作为后端软件的底座,在性能上应该要能够有保障
  • 存储系统软件架构,容易受硬件影响
  • 存储系统代码,既“简单”又“复杂”

2.2数据库

我们可以将数据库分为关系型数据库非关系型数据库两类。这里所说的关系可以理解为:关系=集合=任意元素组成的若干有序偶对反应了事物间的关系。

关系型数据库的特点: 关系型数据库是存储系统,但是在存储之外,又发展出其他能力。

image.png

非关系型数据库的特点: 非关系型数据库也是存储系统,但是一般不要求严格的结构化。

image.png

下图是关系型数据库和非关系型数据库存储对比图:

image.png

数据库与经典存储数据相比,具有以下特点:

  • 事务能力:事务具有ACID的特征 image.png
  • 复杂的查询能力:在我们写入数据之后,数据库提供了SQL等数据查询语言,可以对其进行复杂的查询

3.主流产品剖析

3.1单机存储

单机存储=单个计算机节点上的存储软件系统,一般不涉及网络交互。在单机存储中又分为本地文件系统和key-value存储。我们平时使用的Windows系统或者Linux系统中,都会涉及文件

  • 文件系统的管理单元:文件
  • 文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口
  • Linux文件系统的两大数据结构: Index Node & Directory Entry 而在key-value存储中
  • 常见使用方式: put(k, v) &get(k)
  • 常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
  • 拳头产品: RocksDB

3.2分布式存储

分布式存储=在单机存储基础上实现了分布式协议,涉及大量网络交互。也可细分为分布式文件系统和分布式对象存储(如:Ceph)。分布式文件系统(HDFS)堪称大数据时代的基石,因为专用的高级硬件很贵,同时数据存量很大,要求超高吞吐,所以HDFS应运而生。HDFS具有以下特点:

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

3.3单机关系型数据库

单机数据库=单个计算机节点上的数据库系统。事务在单机内执行,也可能通过网络交互实现分布式事务。在关系型数据库中,商业产品Oracle称王,开源产品MySQL & PostgreSQL称霸。 image.png

3.4单机非关系型数据库

而在非关系型数据库中,MongoDB、Redis、Elasticsearch三足鼎立。 image.png

3.5分布式数据库

由于单机数据库会存在容量、弹性、性价比等问题,分布式数据库就此产生,用于解决单机数据库存在的不足。使用分布式数据库

  • 1.可以解决容量问题,将存储节点池化,动态扩缩容 image.png

  • 2.解决弹性问题 image.png

  • 3.解决性价比问题 image.png

4.新技术演进

随着技术的不断发展,软件架构的变更,AI技术的融合、又或者新硬件的不断革新,对于数据的各种存储也会受到其影响。 image.png

三、课后个人总结:

通过对认识存储的本质的学习,让我初步了解了数据是怎么产生,在后端系统里怎么流通,最后怎么写入到存储/数据库系统。同时,在我们开发系统或者软件的时候,数据是关键,对于数据的管理与维护也就是核心。最后,还了解到一些单机存储产品、分布式存储产品、单机数据库产品(MySQL、PostgreSQL、Redis、MongoDB等)和分布式数据库产品。随着技术的不断升级,越来越多的新技术也在不断产生,所以对于数据管理层面的产品或技术也会随着不断革新。