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