存储与数据库 | 青训营

65 阅读4分钟

存储系统的特点

对性能要求高

存储系统作为后端软件的基础和最后的防线,对于上层和下层之间的互动至关重要。在现代大型后端架构中,许多服务都离不开持久性数据的存储和交互。大量的用户带来了巨大的数据访问量,因此存储系统必须具备强大的性能,以处理如此高并发的数据操作。

简洁且高效

一方面,存储系统对性能的要求非常严格,这意味着在进行输入输出操作时,任何过于复杂的操作都可能严重影响数据访问的性能。处理业务逻辑的代码必须保持简洁高效,这就是所谓的“简”。另一方面,在进行输入输出或其他业务处理时,可能会出现各种错误或异常情况。考虑到存储系统涵盖了软件和硬件,因此在设计存储系统时必须考虑到两者都可能出现问题。即便墓志铭这样的铭文也会因风化和腐蚀而受损,更不用说现代高精度硬件了。因此,存储系统的设计必须能够处理各种异常情况,无论其复杂程度如何,这就是所谓的“繁”。

硬件至关重要

存储系统的软件架构容易受到硬件的影响。无论如何,硬件都是基础。即使上层的软件构建再华丽,没有坚实的硬件基础,所有的一切都是虚幻的,毫无意义。当存储结构的硬件发生变化时,软件必须相应地调整以适应新的硬件情况。当硬件变革巨大时,甚至可能需要从头开始重建整个软件架构。

单机关系型数据库

关系型数据库是一种将数据存储在表中的数据库,采用二维表作为数据结构。表与字段类型之间的关系被明确定义,操作指令使用SQL语句,因此也被称为SQL数据库。以下是一些常见的关系型数据库:

SQLServer:由微软公司开发的关系型数据库管理系统。它提供不同特性版本以适应不同用户需求。拥有丰富的用户界面,适用于大数据处理。多版本适配,用户界面丰富,处理大数据能力强。但传统数据库操作频繁容易中断,处理大量数据负载较大。

MySQL:于1995年发布。开源,拥有大量文档和在线支持。但规模相对较小,处理数据操作过于频繁时容易中断。

PostgreSQL:于1996年发布。开源,基于对象-关系模型,不仅是关系型数据库,还允许用户自行拓展功能。拓展功能操作复杂,对新手不太友好,相较于MySQL文档不如丰富。

单机非关系型数据库

非关系型数据库不同于关系数据库,不使用表格模式的行和列。它的存储模型针对特定数据类型进行优化,不仅使用SQL语句作为操作指令,还支持其他查询语言,因此被称为NoSQL(Not only SQL)数据库。它不需要预定义关键数据的模式,因此更加灵活。以下是常见的NoSQL数据库类型:

面向文档的数据库(Document-oriented databases):用于存储、管理和检索文档数据,适用于快速查询海量数据,如MongoDB、CouchDB。

键值存储数据库(Key-Value Stores):使用键来关联单个值的数据库,类似于字典。最简单的NoSQL类型,如Redis、Tokyo Cabinet。

分布式数据库(Wide-Column Stores**)**:使用表、行和列,但列的名称和格式在同一表中的不同行之间可能不同,补充了关系型数据库的拓展性不足。

图储存数据库(Graph Stores):使用图结构表示和存储具有节点、边和属性的数据,支持语义查询。

以下是一些常见的非关系型数据库:

MongoDB:一种文档存储数据库,也是目前最流行的NoSQL数据库引擎。使用类似于JSON的文档存储数据,支持多服务器运行,可自动分片,易于设置和使用。但不支持连接操作,不适合复杂查询。

Redis:一种远程字典服务器,用作键值存储。 支持多种数据结构,开源且易于安装。但不支持连接操作,需要掌握Lua编程语言。