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

94 阅读9分钟

一、存储与数据库

1.存储系统

什么是存储系统

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

系统特点?

  • 高可靠性:存储系统需要具备高可靠性,保证数据的安全和持久性,避免数据丢失或损坏。为了实现高可靠性,通常需要采用数据冗余、备份、快照、审核等技术手段。

  • 高性能:存储系统需要具备高性能,保证数据的快速读写和处理能力,适应不同的负载和访问模式。为了实现高性能,通常需要采用高速缓存、多通道、高带宽、流水线等技术手段。

  • 高扩展性:存储系统需要具备高扩展性,支持横向扩展和纵向扩展,以适应不断增长的数据量和访问请求。为了实现高扩展性,通常需要采用分布式架构、云存储、对象存储等技术手段。

  • 灵活性:存储系统需要具备灵活性,可以根据不同的应用场景和需求配置和调整,支持多种数据类型和存储格式。为了实现灵活性,通常需要采用多层架构、API 接口、插件机制等技术手段。

  • 可管理性:存储系统需要具备可管理性,可以对数据进行管理和监控,提供数据分析和预警功能,保证运营和维护的效率和效果。为了实现可管理性,通常需要采用可视化界面、自动化管理、智能算法等技术手段。

存储器层级结构

计算机系统中各种不同速度和容量的存储设备按照层级分散布置的结构。它通常由以下几层构成:

  1. 寄存器:寄存器是位于 CPU 内部的最高速的存储设备,用于保存 CPU 执行指令时需要的数据或地址等信息,其访问速度非常快。

  2. 高速缓存:高速缓存是位于 CPU 和主存之间的一层存储设备,用于缓存 CPU 访问频率较高的数据或指令等信息,其访问速度比主存快得多。

  3. 主存:主存是计算机系统中最主要的存储设备,用于存储程序代码和数据等信息,其访问速度比寄存器和高速缓存慢,但容量较大。

  4. 辅助存储器:辅助存储器是计算机系统中容量最大的存储设备,包括硬盘、光盘、闪存等,用于长期存储程序和数据等信息,其访问速度比主存慢得多。

数据库和存储系统是两个不同的概念。

 数据库(Database)是一种组织数据的软件,用于收集、存储、管理和检索数据,并提供对数据的操作和查询等功能。数据库可以理解为一个信息管理系统,通常包括数据定义、数据存储、数据查询和数据安全四个方面。例如,Oracle、MySQL、SQL Server等都是常见的数据库软件。 

 存储系统(Storage System)则是一种硬件或软件系统,用于存储和管理数据,主要负责数据的物理存储和读写操作等功能。存储系统通常包括存储介质、存储控制器、存储网络等部分,用于实现数据的高速读写和可靠存储。例如,硬盘、固态硬盘、磁带库、SAN、NAS等都是常见的存储系统。 可以看出,数据库是一种软件系统,主要用于管理数据的逻辑组织和操作,而存储系统则是一种硬件或软件系统,主要用于管理数据的物理存储和读写操作。数据库需要通过存储系统将数据存储在物理存储介质上,而存储系统提供的存储空间则可以供数据库使用来存储数据。 因此,数据库和存储系统虽然有很多共同点,但是它们的功能和作用是不同的,分别用于处理数据的逻辑组织和物理存储。在实际应用中,数据库和存储系统往往是相互关联、相互依赖的,它们共同构成了一个完整的数据管理系统。

关系型数据库特点

结构化数据友好、支持事务、支持复杂查询语言

非关系型数据库特点

半结构化数据友好、可能支持事务、可能支持复杂查询语言

数据库的事务

数据库的事务是指一个或者多个数据库操作构成的逻辑执行单元,该单元中的所有操作要么全部成功执行,要么全部回滚(撤销),不存在部分执行的情况。事务通常包括一组对数据进行读写的操作,它们必须以原子方式执行,即在所有操作完成之前不允许中断或撤销其中的任何操作。 数据库的事务能力可以保证数据在执行过程中的一致性和完整性,防止因为程序错误、系统故障或者并发访问等原因导致数据出错、丢失或者损坏。 具体来说,数据库的事务具备四个特性(ACID): 

 1. 原子性(Atomicity):事务是一个不可分割的工作单元,事务中的所有操作,要么全部完成,要么全部撤销;

 2. 一致性(Consistency):事务完成后,数据的状态必须满足数据库的约束条件,不破坏数据完整性和业务逻辑的一致性;

 3. 隔离性(Isolation):事务的执行不能相互影响,即一个事务内部的操作与其他事务的操作是隔离的,不会相互干扰;

 4. 持久性(Durability):一旦事务提交,其结果就是永久性的,即使系统出现故障也不会丢失。 

 以上特性保证了数据库事务的高可靠性和一致性,是数据库管理系统设计和开发的核心问题之一。同时,事务的实现方式也有多种,如悲观锁、乐观锁、MVCC(多版本并发控制)等技术,在实际应用中需要根据业务需求选择合适的方案进行实现。

二、主流产品剖析

1.单机存储

数据库的单机存储一般指数据库在单个计算机上进行存储,而不是分布式存储在多台计算机上。单机存储的优点包括简单、易于管理、成本低等,适合于小型应用或者个人使用。 常见的单机存储方式有:

  •  文件存储:数据以文件的形式存储在硬盘上,例如CSV文件、XML文件等。这种方式简单可靠,但查询效率较低。
  •  关系型数据库:关系型数据库是一种基于关系模型的数据库,最常见的有MySQL和Oracle等。关系型数据库可以通过SQL语言进行管理和查询,具有良好的数据完整性、安全性和稳定性。 
  •  非关系型数据库:非关系型数据库是近年来流行起来的一种新型数据库,它们不遵循传统的表格结构,而是采用键值对(如Redis)、文档集合(如MongoDB)或图形数据库(如Neo4j)等存储方式。

非关系型数据库具有高并发、高扩展性等特点,适合于大型、高访问量的Web应用。 总体来说,单机存储的数据库类型丰富,根据不同的需求可以选择适合的存储方式。

2.分布式存储

数据库的分布式存储是指将数据分散存储于多台计算机上,通过网络相互连接,实现数据的共享和访问。分布式存储的优点包括数据可靠性高、扩展性好、容错性强、性能高等。 常见的分布式存储方式有: 

  •  分布式关系型数据库:例如MySQL Cluster、PostgreSQL、Oracle RAC(Real Application Cluster)等,这些数据库可以将数据分布在多个节点上,共同处理查询请求,并具备故障转移和负载均衡等特性。 
  •  非关系型数据库:例如MongoDB、Cassandra、HBase等,这些数据库采用分布式架构,可以通过数据自动分片技术将数据分散存储到多个节点上,提高数据的可靠性和查询效率。 
  •  分布式缓存:例如Redis、Memcached等,这些缓存系统可以将热点数据存储到多个节点上,共同处理查询请求,加速数据的读取。 

 总体来说,分布式存储的数据库具有高可靠性、高性能、高扩展性等优点,适合于大型、高并发的Web应用和企业级应用场景。

3.单机关系型数据库与单机非关系型数据库区别?

  • 数据存储方式不同:单机关系型数据库采用关系模型,将数据存储在表格中,每个表格包含多条记录,每条记录由一个或多个字段组成。单机非关系型数据库则采用键值对、文档集合或图形数据等非关系型模型,将数据存储为一个个独立的文档、键值对或图节点等形式。

  • 访问方式不同:单机关系型数据库通常使用SQL(Structured Query Language)进行数据查询和管理,通过SQL语句来执行操作。而单机非关系型数据库则通常使用特定的API或命令来进行数据操作和查询,如MongoDB使用的是面向文档的查询语言。

  • 数据一致性不同:单机关系型数据库支持基于ACID(原子性、一致性、隔离性、持久性)的事务处理,可以保证数据的完整性和一致性。而单机非关系型数据库通常只支持基于CAP(一致性、可用性、分区容错性)的事务处理,即不能同时保证数据的强一致性和高可用性。

三、总结

在本章节学习了很多新知识,了解很多主流产品和知识,在学习中……