跳过导航

纵向扩展与横向扩展

云计算中的数据库可伸缩性简介

数据,无处不在的数据 - 即当我们提及可伸缩性时所讨论的内容

通过云计算中的可伸缩性功能,可快速轻松地增加或减少 IT 解决方案或资源的大小或能力。虽然术语“可伸缩性”可以指任何系统处理不断增长的工作的能力,但当我们讨论是否进行纵向扩展和横向扩展时,我们经常指的是数据库和数据(大量数据)。

对于新式应用开发人员而言,数据库可伸缩性是最重要的。假设一个新的应用推出,全球范围内对它的需求从少数用户增长到数百万用户。帮助应用开发人员跟上需求并最大限度地减少停机时间的最重要能力之一是高效缩放的能力。

这篇关于横向扩展与纵向扩展的讨论侧重于可伸缩性如何帮助我们适应和处理庞大的数据量、不断变化的数据量和不断变化的工作负载模式 - 所有这些都是从云、移动设备、社交媒体和大数据产生的。

横向扩展与纵向扩展

在最基本的层面上,数据库可伸缩性可分为两种类型:

垂直缩放(纵向扩展或缩减):通过更改性能级别或使用弹性数据库池自动调整工作量需求,根据需要增加或减少计算能力或数据库

水平缩放(横向扩展或缩减):使用一种称为分片的数据分区方法,添加更多数据库或将大型数据库划分为更小的节点,使得它们可在服务器之间更快、更容易地进行管理

垂直纵向扩展

当你需要快速响应以修复使用经典数据库优化技术(如查询更改或索引)无法解决的性能问题时,请使用垂直缩放。在当前性能水平无法满足所有需求的情况下,纵向扩展有助于处理工作负载中的峰值。纵向扩展可让你添加更多资源,以轻松处理峰值工作负载。然后,当不再需要资源时,纵向缩减会让你回到原来的状态,从而节省云成本。

在以下情况下进行纵向扩展:

  • 你发现你的工作负载即将达到某些性能限制,如 CPU 或 I/O 限制。
  • 你需要快速响应,以解决无法通过经典数据库优化解决的性能问题。
  • 你需要一个解决方案,使你能够更改服务层以适应不断变化的延迟要求。

水平横向扩展

当应用开发人员无法获得足够的资源来处理工作负载时,即使是在最高的性能水平上运行,他们也会开始考虑横向扩展或水平缩放。通过水平缩放,数据在服务器中被分成多个数据库或分片,每个分片可以独立横向扩展或缩减。

分区数据如何提高可伸缩性?当你通过添加虚拟机 (VM) 等资源来纵向扩展单个数据库时,它最终会达到物理硬件限制。由于每个数据分区都托管在一个单独的服务器上,因此如果你将数据划分到多个分片,则几乎可以无限横向扩展系统。

某些类型的数据库技术(最值得注意的是非关系型或 NoSQL 数据库)具有独特的功能,能够通过分片水平横向扩展数据,使它们能够处理大型、不相关、不确定或快速变化的数据。

一些最初提供纵向扩展和缩减的服务的关系 (SQL) 数据库服务开始提供令人兴奋的选项,以匹配非关系型数据库的可伸缩性优势。超大规模服务(如 Microsoft Azure SQL 数据库超大规模Azure Database for PostgreSQL 超大规模)使用户能够快速将存储纵向扩展至 100 TB,提供允许存储根据需要增长的灵活的云原生体系结构,并在仅仅几分钟内实现几乎即时的备份和快速数据库还原。

在以下情况下进行横向扩展:

  • 你拥有地理分布式应用程序,其中每个应用都应访问该区域的部分数据。每个应用将只访问与该区域相关的分片,而不会影响其他分片。
  • 你有一个全局分片场景(例如负载均衡),其中你有大量地理分布式客户端,这些客户端将数据插入到它们自己的专用分片中。
  • 即使在服务的最高性能层中,或者如果你的数据无法放入单个数据库,你也已达到性能要求的最大值。

自动扩展

自动缩放是自动且动态地匹配资源以满足系统性能要求的过程。随着工作量的增长,应用可能需要额外的资源来保持必要的性能水平或满足不断增长的需求。如果需求放缓,不再需要额外资源,你可以通过提供自动服务来解除对未使用资源的分配,从而节省云支出。

自动缩放利用云托管环境的弹性。它减少了系统操作员不断做出添加/删除资源或检查系统性能的决策的需要,从而减轻了管理开销。

虽然应用有两种主要的垂直或水平缩放方式,但自动化垂直缩放不太常见,因为纵向扩展往往需要在重新部署时使系统暂时不可用。

自动缩放在水平缩放时更为常见,因为进行横向扩展或缩减意味着仅添加或删除资源实例,并且你的应用在预配新资源时继续不间断地运行。如果需求下降,资源可以无缝关闭,无需停机和解除分配。

许多基于云的系统(如 Microsoft Azure)的提供商支持自动水平缩放。

常见问题解答

  • 数据库是任何相关信息的集合,这些信息被存储和组织起来,以便于管理和访问。随着新数据和数据类型以极快的速度生成,保持数据的组织性、可访问性和安全性成为一项挑战。数据库管理系统 (DBMS)(包括一个管理工具层)通常用于处理大量数据。

    新的数据库类型和技术不断涌现,以适应云、移动设备、社交媒体和大数据产生的庞大数据量。

    详细了解数据库
  • NoSQL 数据库(通常被称为非关系型 SQL 或“不限于 SQL”)是一套多样化的数据库技术,处理数据存储和检索的方式与传统的关系 (SQL) 数据库不同。

    NoSQL 数据库不需要预先定义的架构,并且能够使用多个数据模型,使得它们在处理大量非结构化数据和缩放大数据数据库项目方面非常有效。

    详细了解 NoSQL 数据库
  • PostgreSQL 是一个可靠的开源数据库,可处理关系型和非关系型查询,以其可靠性和数据完整性而闻名。PostgreSQL 广泛应用于金融服务、制造业、政府地理信息系统和 Web 技术等领域。开发人员使用 PostgreSQL 创建应用,而管理员则信任它来保护其数据。

    详细了解 PostgreSQL
  • 缓存是开发人员和 IT 专业人员用于提高系统性能和可伸缩性的常用技术。缓存的工作原理是将经常访问的数据暂时复制到位于应用附近的快速存储。如果这种快速数据存储比原始源更靠近应用,则缓存可以通过更快速提供数据,大幅改善客户端应用的响应时间。开发人员通常会设计应用来缓存已处理的数据,然后重新利用已缓存的数据来以比标准数据库查询更快的速度处理请求。

    详细了解缓存
  • 数据分片是一种水平数据分区,可将大型数据库划分为更小的数据库,从而更快、更轻松地跨服务器进行管理。

    详细了解数据库分片
  • 平台即服务(通常缩写为 PaaS)是来自云提供商的服务,为应用开发、测试、交付和管理提供按需环境。平台即服务使开发人员能够更简单快捷地创建 Web 或移动应用,而无需设置或管理作为开发人员所需的服务器、存储、网络和数据库的底层基础结构。

    详细了解 PaaS

通过 Azure 了解云可伸缩性

探索一种全面的纵向扩展和横向扩展方法,这种方法适合你自己在本地、多云和边缘环境中的场景。Azure 数据库服务系列提供了完全托管的关系数据库、NoSQL 数据库和内存中数据库,覆盖专有引擎和开放源代码引擎,可满足现代应用开发人员的各种需求。

通过自动化基础结构管理(包括可伸缩性、可用性和安全性的自动化解决方案),可节省时间和资金。

相关产品和服务

Azure SQL

SQL 云数据库系列,它们为应用迁移、现代化和开发提供了灵活的选项

Azure Cosmos DB

适用于任何规模的带有开放 API 的快速 NoSQL 数据库

Azure PostgreSQL

完全托管、智能且可扩展的 PostgreSQL

Azure SQL 数据库

云中的托管智能 SQL

Azure SQL 托管实例

在云中始终保持最新状态的托管 SQL 实例

虚拟机上的 SQL Server

以最低的 TCO 将 SQL Server 工作负荷迁移到云

Azure Database for MySQL

完全托管的可缩放 MySQL 数据库

Azure Maria DB

面向应用开发人员的托管 MariaDB 数据库服务

Azure Cache for Redis

通过高吞吐量、低延迟的数据缓存来加速应用程序

使用托管数据库无限制地缩放

通过由 Microsoft Azure 管理数据库,专注于构建应用,简化你的工作

准备就绪后即可开始设置免费帐户