分享到

简介

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

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

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

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

传统数据库 vs 托管数据库 vs Serverless 数据库

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

传统数据库

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

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

Traditional databases

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

但这需要付出更高的管理负担。必须维护和优化系统的所有级别,以提供理想的应用程序性能,同时保持系统和数据的可用性和安全性。

托管数据库

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

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

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

用户仍然负责

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

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

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

Serverless 数据库

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

Serverless databases

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

在我们讨论的所有选项中,Serverless 数据库需要的运营管理量最少。这使您可以像使用外部服务一样使用数据库,而不是将其作为您必须保持运行的基础设施组件。

何时使用传统数据库和 Serverless 数据库

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

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

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

高度控制

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

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

如果您认为在部署的任何级别都拥有更改任何东西的权力很重要,那么传统数据库部署可能是您的最佳选择。您将不得不为这种级别的控制付出代价,即承担管理部署的每个部分的责任。

数据隐私至上

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

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

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

高性能

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

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

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

为什么我要使用 Serverless 数据库?

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

低成本运营

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

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

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

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

高可扩展性

我们在上一节中将其作为成本函数提到过,但 Serverless 数据库策略最重要的优势之一是易于扩展的能力。这不仅影响费用,还影响您满足不同级别需求的能力,因为您的使用量会随着可预测的周期波动或因兴趣激增而变化。

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

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

减少管理责任

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

Serverless 数据库服务不仅管理基础设施和数据库管理系统软件,它们还管理资源分配和数据库的许多策略。无需弄清楚您的数据库到底需要多少存储空间,或者需要多少数据库实例来服务您的平均流量水平,系统只需响应它发现的条件即可。无需管理扩展规则,您可以改为为您期望的扩展级别设置边界,平台将在这些约束范围内智能扩展。

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

结论

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

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

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

关于作者
Justin Ellingwood

Justin Ellingwood

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