存储与数据库 | 青训营

145 阅读4分钟

1. 数据存储案例

用户注册数据的产生与传输过程
数据产生——>后端服务器——>数据库——>其他存储系统
image.png 数据到达数据库入口

  1. 校验数据的合法性:如用户是否存在?
  2. 修改内存:用高效的数据结构组织数据
  3. 写入存储介质:以寿命且性能友好的方式写入硬件。

2. 存储、数据库简介

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

  1. 性能敏感:超高性能。
  2. 代码“简单”又“复杂”:“简单”是针对IO读写路径方面的代码要简单,“复杂”是只针对非IO读写路径或异常处理情况要全面,要完善。
  3. 存储系统软件 架构受硬件影响。

存储体系中缓存是非常重要的,能够友好地降低软件和硬件之间在读写性能上的差异。
存储体系中减少拷贝,拷贝很昂贵,在关键路径减少。

RAID技术

出现的背景: 单块大容量的磁盘价格>多块小容量磁盘;单块磁盘的写入性能<多块磁盘的并发写入;单块磁盘的容错能力有限,不够安全。
RAID技术的主要功能:  (redundant array of independent disks)技术,独立磁盘冗余阵列,是提高磁盘可靠性和可用性的一种技术,RAID技术出现的初衷是把多个小容量的硬盘组合起来,以获得更大的存储容量。通过对硬盘上的数据进行条带化,实现对数据成块存取,减少硬盘的机械寻道时间,提高了数据存取速度。通过对一阵列中的几块硬盘同时读取(并行访问),减少了硬盘的机械寻道时间,提高了数据存取速度。通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。

数据库 VS 经典存储

  1. 结构化数据管理:对数据库来说,存储数据时是高度化的结构来管理数据,比如关系型数据库是用二维表格形式来管理。而经典存储可能通过文件来存储,对于数据格式的定义相比较更麻烦,读写操作复杂。
  2. 事务能力:数据库支持事务能力,关系数据库严格支持ACID特点,并且非常安全。而经典存储中没有事务概念,若想达到事务特点,需要更多的代码逻辑来控制。
  3. 复杂查询能力:数据库能够灵活、简洁地进行复杂查询,通过多个条件进行筛选;而经典存储系统不够灵活、僵化、复杂。

3. 主流产品剖析

3.1 单机存储系统

单个计算机节点上的存储软件系统,一般不涉及网络交互。
本地文件系统: 文件系统的管理单元是文件,Linux文件系统的两大数据结构为Index Node 和 Directory Entry。
key-value存储系统: 常见的数据结构为LSM-Tree,某种程度上牺牲读写性能,追求写入性能。
单机数据库: 单个计算机节点上的数据库系统。
关系型数据库:有Oracle、MySql和PostgreSQL等数据库,一般直接使用SQL交互。
非关系型数据库:MongoDB、Redis、Elasticsearch数据库,交互方式各不同,数据结构多种多样。
单机数据库存在问题:

  1. 容量问题:受硬件限制,单点容量有限;因此引入存储池概念,将存储节点池化,动态扩缩容。
  2. 弹性问题:CPU资源紧张,不够使用。
  3. 性价比问题:随着数据增长,容量不够,但cpu利用率低。

3.2 分布式存储系统

在单机存储基础上实现了分布式协议,涉及大量的网络交互。
分布式存储系统——HDFS
HDFS支持海量的数据存储、高容错性、高吞吐、弱POSIX语义。
HDFS使用Master和Slave结构对集群进行管理,一般一个 HDFS 集群只有一个 Namenode 和一定数目的Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。
1.png

分布式存储系统——Ceph
Ceph是一个开源的、统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
Ceph的核心特点:

  1. 一套系统支持对象接口、块接口、文件接口。
  2. 数据写入采用主备复制模型。
  3. 数据分布模型采用CRUSH算法。

4. 总结

本文记录了存储与数据库相关的知识,通过一条数据存储案例,呈现了数据的整个存储过程中,了解了RAID技术出现的背景及其主要功能。同时,对主流产品进行剖析,认识了分布式存储系统HDFS和Ceph。