存储的本质|青训营笔记

81 阅读5分钟

存储的本质|青训营笔记

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

在后面会依次倒叙回顾之前的学习课程,便于复习~

一、课程重点内容

  • 存储与数据库简介
  • 分布式系统理论

下面是对课程重点内容的思考与总结,有问题或者错误,可以批评指正呐~

二、基本概念

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

存储系统特点

存储系统作为后端软件的底座,性能敏感,容易受硬件影响,其中较为明显的影响是不断地拷贝与IO操作。

在设计上需要明确一下几个要点:

  • 缓存:很重要,应该贯穿整个存储体系
  • 拷贝:很昂贵,应该尽量减少
  • 硬件设备五花八门,需要抽象统一的接口

数据库特点

背景:现代计算系统每天在网络上都会产生庞大的数据量。这些数据有很大一部分是由关系型数据库管理系统(RDBMSs)来处理,其严谨成熟的数学理论基础使得数据建模和应用程序编程更加简单。

  • 关系型数据库

    • 关系型数据库中的关系=集合=任意元素组成的若干有序偶对反应了事物间的关系。
    • 关系型数据库是存储系统,但是在存储之外,又发展出其他能力非关系型数据库也是存储系统,但是一般不要钱严格的结构化

但随着信息化的浪潮和互联网的兴起,传统的RDBMS在一些业务上开始出现问题。

首先,对数据库存储的容量要求越来越高,单机无法满足需求,很多时候需要用集群来解决问题,而RDBMS由于要支持join,union等操作,一般不支持分布式集群。

其次,在大数据大行其道的今天,很多的数据都“频繁读和增加,不频繁修改”,而RDBMS对所有操作一视同仁,这就带来了优化的空间。

另外,互联网时代业务的不确定性导致数据库的存储模式也需要频繁变更,不自由的存储模式增大了运维的复杂性和扩展的难度。

由此诞生非关系型数据库,NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。

这类数据库主要有这些特点:非关系型的、分布式的、开源的、水平可扩展的。最初的目的是为了大规模web 应用。

NoSQL 的拥护者们提倡运用非关系型的数据存储,通常的应用如下特点:模式自由、支持简易复制、简单的API、最终的一致性(非ACID)、大容量数据等。

image-20230210220658824.png

  • 非关系型数据库

    • 非关系型数据库也是存储系统,但是一般不要钱严格的结构化

三、分布式理论

  • 基本理论

    • 分布式系统的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。分布式是NoSQL数据库的必要条件。
    • 分布式系统每个节点一般不采用高性能的服务器,而是使用性能相对一般的普通PC服务器。提升分布式系统的整体性能是通过横向扩展(增加更多的服务器),而不是纵向扩展(提升每个节点的服务器性能)实现。
    • 分布式系统最大的特点是可扩展性,它能够适应需求变化而扩展。
  • CAP问题

    在可用性和一致性之间永远无法存在一个两全其美的方案。由于NoSQL的基本需求就是支持分布式存储,严格一致性与可用性需要互相取舍,由此延伸出了CAP理论来定义分布式存储遇到的问题。

    CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)、分区容错性(P:Partitiontolerance)这三个基本需求,并且最多只能满足其中的两项。

    • 概念:

      • 对于一个分布式系统来说,分区容错是基本需求,否则不能称之为分布式系统。因此需要在C和A之间寻求平衡。
    • 权衡一致性与可用性 - BASE理论

      • Base = Basically Available + Soft state + Eventuallyconsistent 基本可用性+软状态+最终一致性,由eBay架构师DanPritchett提出。
      • Base是对CAP中一致性A和可用性C权衡的结果,源于提出者自己在大规模分布式系统上实践的总结。核心思想是无法做到强一致性,但每个应用都可以根据自身的特点,采用适当方式达到最终一致性。
  • 分布式存储算法

    • 一致性算法 – Paxos
    • 分区(Partitioning)
    • 分片(Replication)
    • 一致性哈希(Consistent Hashing)

五、课程总结

存储作为一个后端底层的服务,需要不断地随着时代的脚步,不断地进步与发展,新的硬件、人工智能等新技术地加入,后面应该又会有新的存储介质出现!