分享到

简介

在许多组织中,数据库的作用随着时间的推移而不断演变。虽然构建应用程序、做出业务决策以及在更大的生态系统中提供价值对数据的依赖性不断增加,但在许多情况下,数据库软件和基础设施本身的管理方式已经发生了转变。

虽然这些资产传统上由组织自身运营,但其管理越来越多地外包给外部提供商。这种想法的第一个迭代是转向托管数据库,即由提供商管理基础设施和软件,同时允许用户调整设置和设置扩展策略。

最近,这种想法演变为无服务器数据库,即整个基础设施、数据存储和底层架构完全由提供商管理,用户仅通过类似 API 的交互访问他们管理的数据。

在本指南中,我们将讨论传统部署的数据库与其无服务器对应物之间的差异。我们将酌情讨论托管数据库产品,以帮助区分提供商提供的不同选项。了解这些不同的概念可以帮助您了解不同产品之间的权衡,并就哪种类型的数据库管理最适合您自己的项目做出明智的决定。

传统数据库 vs 托管数据库 vs 无服务器数据库

在我们深入探讨各种策略的优点和缺点之前,让我们花一点时间回顾一下每种系统背后的一般原理。

传统数据库

传统数据库是已经存在了几十年的数据库和数据库管理风格。它涉及预置具有适当硬件资源的物理或虚拟服务器,并将其设置为数据库服务器。除了初始安装和配置之外,这种类型的设置还需要

  • 持续管理底层基础设施,包括硬件健康状况、资源管理和网络访问
  • 维护最新的、稳定的和安全的操作系统,以及
  • 配置、优化和管理数据库管理系统

Traditional databases

总的来说,这种选项提供了大量的控制和灵活性。系统的每个部分都可以进行检查、优化和更改,以满足用户和应用程序的需求。

但这带来了更大的管理负担。必须维护和优化系统的各个层级,以提供理想的应用程序性能,同时保持系统和数据的可用性和安全性。

托管数据库

托管数据库是大多数云提供商提供的一种产品,作为管理您自己基础设施的替代方案。提供商管理服务器配置和数据库软件,并向用户公开选项,允许他们配置和调整行为。

使用托管数据库,提供商负责

  • 持续管理底层基础设施,包括硬件健康状况、资源管理和网络访问
  • 维护最新的、稳定的和安全的操作系统,以及
  • 管理数据库系统的部分,例如数据库管理系统的健康状况和功能

用户仍然负责

  • 就其数据库的最佳设置做出决策
  • 设置扩展、备份和其他软件级配置的策略

通常,这种配置允许提供商管理组织不太关心的流程部分,只要这些部分保持高标准即可。关键的可配置区域仍然向用户公开,以便他们可以根据资源的重要性、操作要求和他们的 SLA 来调整行为。

许多组织采用这种管理风格,因为它允许他们的开发人员自定义他们关心的数据库部分,而无需维护内部系统管理专业知识。如果您的需求与提供商对产品的期望非常吻合,那么它可以很好地工作,但是当您发现自己在控制量方面遇到困难,或者自动化程度仍然不符合您的期望时,可能会很困难。

无服务器数据库

无服务器数据库是云提供商提供的一种相对较新的方法,它从用户那里承担了更大的管理责任。无服务器数据库将数据库管理系统中处理存储的部分与执行查询的部分分离。这意味着两者都可以独立扩展。在无服务器数据库中,这些组件都完全由提供商管理。

Serverless databases

在实践中,这允许将无服务器数据库视为一个无限大的存储库,可以在其中存储、操作和检索数据。后端存储将根据需要进行扩展,查询执行器的数量也将根据需求进行调整。用户只需要通过类似 API 的接口访问数据库,该接口会自动将命令路由到正确的组件。

在我们讨论的所有选项中,无服务器数据库需要的操作管理量最少。这允许您将数据库用作外部服务,而不是用作您必须保持运行的基础设施组件。

何时使用传统数据库和无服务器数据库

现在我们已经回顾了不同数据库管理策略所采用的方法,我们可以讨论它们最适合哪些场景。虽然这些决定主要取决于您自己的应用程序需求、内部专业知识以及对优化和管理的兴趣,但有一些通用指标可以帮助您找到正确的方向。

为什么我要使用传统数据库?

如果您需要控制、隐私和性能,那么从硬件到数据库软件管理数据库服务器的整个堆栈的传统方法最适合。

高度控制

虽然传统数据库服务器需要持续监控、维护和应急计划以保持可用性,但它提供了无与伦比的控制级别。

您可以选择适合您特定需求的基础设施架构,从单台服务器到复杂的集群。您可以将这些资产部署在您想要的任何地方,无论是在本地、在您自己或租用的硬件的数据中心中,还是使用云提供商的标准计算资产。您可以升级和更换您认为合适的任何组件,并随意调整任何软件级别的配置。

如果您认为在部署的任何级别都有权更改任何内容非常重要,那么传统数据库部署可能是您的最佳选择。您将不得不通过承担管理部署每个部分的责任来为这种级别的控制付费。

注重数据隐私

如果您的应用程序数据需要非常高水平的隐私,无论是作为一项功能还是作为符合任何标准或法规的要求,传统数据库都能为您提供最大的控制量。您将能够确切地指示谁可以访问部署它们的物理硬件以及任何软件级别的访问。

运行您自己的数据库服务器可以确保您可以为您的用户和数据设置必要的保护级别。不同客户端的数据可以放置在不同的数据库、不同的服务器或不同的物理位置,以保持严格的分离。您可以决定部署到符合某些行业标准的数据中心,以确保物理访问受到限制。

在软件层面,您也从没有外部访问的地方开始。默认情况下,没有其他方对您的服务具有管理监督权。您可以通过不提供访问权限以及设置加密和其他安全措施来保护您的数据,以提供您需要的保护级别。

高性能

如果您的应用程序需要持续的高性能,那么传统数据库部署可能是您的最佳策略。

当您自己运行数据库服务器时,您可以更轻松地发现和缓解资源争用,因为您可以完全了解竞争的进程和客户端。您不必担心邻近的客户占用过多的共享资源,并且您可以根据需要配置额外的资产。系统的峰值性能仅受您分配的时间和金钱以及您管理系统的专业知识的限制。

与无服务器数据库相比,尤其相关的是服务器数据库资源的持续可用性。您不会遇到冷启动问题,因为您不会在低于峰值需求时缩减基础设施层。如果您需要始终如一的性能,而不管之前的活动水平如何,这可能很重要。

为什么我要使用无服务器数据库?

如果无服务器数据库非常适合您的用例,它们也具有许多显着的优势。如果您想要经济实惠的数据库访问,并且可以自行扩展而无需承担繁重的管理负担,那么它们是一个不错的选择。

低成本运营

无服务器数据库可以提供的主要优势之一是低运营成本。由于无服务器数据库的存储层和计算层都独立扩展,因此您只需为您实际使用的资源付费。

存储层根据您管理的数据量进行扩展。这通常根据容量定价,如果您的应用程序具有一致的模式,则定价相对可预测。由于此存储后端是动态分配的,因此您永远不必担心空间不足或与过度预置存储相关的成本。价格仅反映您的存储。

计算层完全解耦,并使用自己的标准进行扩展。预置的查询执行器实例的数量由您的应用程序传递到数据库的当前流量决定。这意味着在流量高峰时,服务将启动额外的查询处理器来处理请求。另一方面,当没有执行查询时,服务可以将此层缩减为零,从而完全消除该时间段内的处理成本。

如果您对成本非常敏感,那么无服务器数据库可能是一个不错的选择,因为您无需担心精确预测您的使用情况。平台的资源和您的成本与您的使用情况完全一致地扩展。

高可扩展性

我们在上一节中将其作为成本的一个功能提到过,但无服务器数据库策略最显着的优势之一是易于扩展。这不仅影响费用,还影响您满足不断变化的各种需求的能力,因为您的使用量会随着可预测的周期波动或因兴趣激增而发生变化。

数据存储和查询执行的单独扩展机制允许您使用相同的服务和配置来处理非常不同的使用场景。该服务可以自动调整以适应大多数使用级别,并且可以随着您的应用程序增长而增长,而无需更改数据库服务。

高可扩展性还意味着您可以轻松地试验应用程序,并在不更改数据库服务的情况下从测试转向生产。您可以设置测试和暂存数据库,这些数据库在不使用时会缩减为零。当实践持续集成和持续交付时,这尤其有用,因为您的管道可以使用完美镜像您的生产环境的数据库服务,同时仅为您的测试所需的一小部分使用量付费。

减少管理责任

对于无服务器数据库来说,也许最大的亮点是它们可以帮助您的团队减轻管理责任的方式。虽然许多组织已经习惯了托管数据库所需的管理开销水平,但无服务器数据库承担了额外的支持和管理级别,以进一步减少您的工作量。

无服务器数据库服务不仅管理基础设施和数据库管理系统软件,还管理资源分配和数据库的许多策略。系统可以响应它发现的条件,而不是必须准确计算出数据库需要多少存储空间或服务平均流量水平需要多少数据库实例。您可以设置您期望的扩展级别的边界,而不是管理扩展规则,平台将在这些约束范围内智能地扩展。

这听起来类似于托管数据库的常用描述方式,但在实践中,最终结果却大相径庭。使用无服务器数据库,您不必提前做出许多决定。主要的是,您配置您想要维持的任何成本阈值以及您想要对扩展进行的任何特定调整,例如始终至少有一个可用的查询执行器。系统几乎处理所有其他事情,以确保您的应用程序的数据库使用始终可用、达到标准并响应当前请求环境。

结论

功能传统数据库无服务器数据库
控制级别最小
数据隐私默认私有,管理员可配置必须信任提供商的数据
性能能够实现非常高的性能,具体取决于硬件和配置如果需求激增,性能可能会下降(可以通过备用查询处理器缓解)
成本静态,数据库成本相同,无论需求高低可变,仅为您使用的资源付费
可扩展性取决于配置,可能很复杂根据需求和服务设置自动扩展
管理责任负责一切最小责任

在本文中,我们了解了传统自管理数据库和无服务器数据库服务之间的一些主要区别。我们讨论了它们从用户角度来看有何不同,以及在根据组织的优先级决定数据库策略时必须考虑哪些权衡。

虽然无服务器数据库并不适用于每种类型的应用程序,但它们可以使许多组织的数据库管理和运营显着简化。了解它们何时可能是好的解决方案以及它们可能存在的缺点可以帮助您确定在评估数据库解决方案时是否可以并且应该考虑它们。

关于作者
Justin Ellingwood

Justin Ellingwood

自 2013 年以来,Justin 一直在撰写关于数据库、Linux、基础设施和开发者工具的文章。他目前与妻子和两只兔子住在柏林。他通常不必以第三人称写作,这让所有相关方都松了一口气。