数据库扩展是指数据库根据系统负载获取或削减资源的能力,建立资源分配与其需求之间的直接相关性。扩展确保数据库服务器质量一致,同时尽可能高效地利用资源。出于此原因,扩展过程通常是自动化的。扩展的自动化称为弹性。
虽然存在许多仅具有其中一项或少数几项关键特性的数据库,但拥有全部这 9 项功能对于成功应对他们今天面临的挑战至关重要。
虽然可扩展性具有根据需要增加或减少数据库系统资源的通用原则,但系统可以扩展的不同方式也有所不同。根据数据库执行的任务,有些方法的效率会更高。因此,第一个问题是系统应纵向扩展还是横向扩展。
纵向扩展包括向单个系统节点或计算机添加更多资源,例如内存或处理器。通过这种方式进行扩展既快速又简单。然而,纵向扩展有其局限性,并且缺乏灵活性。例如,纵向扩展系统可能是数据库的单点故障,并且会影响可用性。此外,这些系统无法部署比其可用资源更大的虚拟机;它们必须首先扩展,然后再部署。
横向扩展是一种提高系统性能和容量的强大方式。通过横向扩展,您可以向基础架构添加更多节点或计算机来处理不断增长的流量和需求。虽然部署和启动新的虚拟机可能需要一些时间,但这样做的好处却是值得的。通过向系统添加更多资源,您可以确保应用程序保持快速、响应能力,并且对用户可用。
通过横向扩展,您可以根据需要灵活地添加容量,而无需在前期的硬件上进行大量投资。这意味着您可以快速轻松地适应不断变化的业务需求,而无需担心浪费资源或过度配置。并且一旦新的机器启动并运行,它们就会完全集成到您的系统中,从而为您的用户提供无缝且可靠的体验。
虽然在新的机器启动并运行之前可能会有一段等待时间,但横向扩展的好处远远大于任何潜在的缺点。通过向系统添加更多资源,您可以确保应用程序始终可用、始终快速、始终随时能应对任何情况。因此,如果您希望提高系统的性能和容量,请将横向扩展视为一项帮助您实现这一目标的强大工具。
您想使用 Redis Cloud 创建数据库吗?
创建免费的 Redis Cloud 账户。当你点击“开始”后,你将收到一封电子邮件,其中附有激活账户并完成注册流程的链接。
数据库扩展技术力图通过利用数据库机制,根据数据库架构和任务实现最佳性能。
数据库复制包括创建数据库的副本。数据库副本作为原始数据库(也称作设计源头)的辅助实例。设计源头和副本形成一个副本集,所有副本都进行同步以保持相同数据。
为节省资源,任何更改首先写入设计源头数据库,之后写入副本。不过,读取会在实例之间划分。因此,通过分担系统的负载,复制提高了可访问性和性能。
复制还为系统增加了容错性;通过为数据库添加更多连接点,确保如果其中一个发生故障,系统仍能运行。在这方面,一个副本可以被设计成在设计源头不可用时接替其角色。
有三种主要的数据库复制方法
分区或分片将数据库划分为更小的部分以进行管理和访问。仅需部分数据的查询需扫描更少数据,因此运行起来更快,同时服务器可以并行运行不同分区上的任务。出于这个原因,分区通常是为大规模数据库选择的。
分区还为数据库提供了更多的灵活性,例如,可以按照使用模式将数据库划分为不同类型的数据存储。同样,也可以将最重要或最有意义的数据托管在最高质量的存储器或采取明确安全措施的更加安全的区段中。此外,如果数据库的硬件达到其限制,可以选择对数据库进行分区,并将其一部分存储到新的服务器中。
相关资源:Azure Cache for Redis Enterprise 层中的新数据库扩缩和安全功能
分区还可以防止数据库出现单点故障。如果数据库实例出现问题,则只有该数据库中的数据会受到影响。
数据分区主要有三种实现方式
水平分区(也称为范围分区)根据所选键字段值的范围对数据进行划分。每个分区都有单独的数据存储,但使用相同的架构。此方法对于需要跨多个节点分布的大表的数据库非常有用。
垂直分区(也称为列分区)按列对数据进行垂直划分。每个分区都包含数据库的子集列,并且分区会根据使用模式在节点间进行分布。当某些列的使用频率高于其他列时,此方法非常有用,因为它可以加快数据的访问速度。
功能分区会根据每个有界上下文中对数据的使用方法,对数据进行划分。此方法更贴近于领域驱动设计和微服务架构,其中不同服务具有其自己的、采用单独架构的数据库。
数据库系统可以使用分区和复制两种功能。在这种情况下,数据库会划分为多个分区,并且每个分区都在多台服务器中进行复制。其折衷在于,在服务器发生故障时,可实现读写扩展能力并高度增加复原能力。
另一方面,虽然复制和分区相结合提供了更高的灵活性,但它也会增加数据库的复杂性,并且引入额外开销以维护副本和分区。