简介
数据库在许多组织中的作用随着时间的推移而演变。虽然对数据用于构建应用程序、制定业务决策以及在更大生态系统中提供价值的依赖性增加了,但数据库软件和基础设施本身的管理在许多情况下已经发生了转变。
虽然这些资产传统上由组织自身运营,但其管理正日益外包给外部提供商。这一想法的首次迭代是转向托管数据库,在这种模式下,提供商管理基础设施和软件,同时允许用户调整设置和设置扩展策略。
最近,这一想法演变为无服务器数据库,其中整个基础设施、数据存储和底层架构完全由提供商管理,用户只需通过类似 API 的交互访问其管理的数据。
在本指南中,我们将讨论传统部署的数据库与无服务器数据库之间的差异。我们将在适当的情况下讨论托管数据库产品,以帮助区分提供商提供的不同选项。了解这些不同的概念可以帮助您理解不同产品之间的权衡,并就哪种数据库管理类型适合您自己的项目做出明智的决定。
请查看 Prisma 数据平台,在一个地方管理您的所有应用程序数据。
传统数据库 vs 托管数据库 vs 无服务器数据库
在我们深入探讨各种策略的优缺点之前,让我们花点时间回顾一下每种系统背后的一般工作原理。
传统数据库
传统数据库是数十年来一直存在的数据库和数据库管理模式。它涉及配置一台具有适当硬件资源的物理或虚拟服务器,并将其设置为数据库服务器。除了初始安装和配置之外,这种设置还需要:
- 对底层基础设施进行持续管理,包括硬件健康、资源管理和网络访问
- 维护一个最新、稳定且安全的操作系统,以及
- 配置、优化和管理数据库管理系统
总的来说,这个选项提供了巨大的控制和灵活性。系统的每个部分都可以被检查、优化和更改,以适应用户和应用程序的需求。
这带来的是更大的管理负担。系统的所有层面都必须进行维护和优化,以提供理想的应用程序性能,同时保持系统和数据的可用性和安全性。
托管数据库
托管数据库是大多数云提供商提供的一种产品,作为自行管理基础设施的替代方案。在这种模式下,提供商管理服务器配置和数据库软件,并向用户公开选项,允许他们配置和调整行为。
使用托管数据库,提供商负责:
- 对底层基础设施进行持续管理,包括硬件健康、资源管理和网络访问
- 维护一个最新、稳定且安全的操作系统,以及
- 管理数据库系统的部分,例如数据库管理系统的健康和功能
用户仍然负责:
- 决定其数据库的最佳设置
- 设置扩展、备份和其他软件级配置的策略
通常,这种配置允许提供商管理组织不特别关心的部分流程,只要这些流程能保持高标准。关键的可配置区域仍向用户公开,以便他们可以根据资源的重要性、操作要求和其服务级别协议 (SLA) 来调整行为。
许多组织采用这种管理方式,因为它允许他们的开发人员自定义他们关心的数据库部分,而无需维护内部系统管理专业知识。如果您的需求与提供商对产品的设想非常吻合,它会运作良好;但如果您发现自己对所获得的控制程度感到力不从心,或者自动化水平仍未达到您的预期,那么可能会很困难。
无服务器数据库
无服务器数据库是云提供商提供的一种相对较新的方法,它承担了用户更大一部分的管理责任。无服务器数据库将数据库管理系统中处理存储的部分与执行查询的部分解耦。这意味着两者可以独立扩展。在无服务器数据库中,这些组件都由提供商独家管理。
实际上,这使得无服务器数据库可以被视为一个无限大的存储库,数据可以在其中存储、操作和检索。后端存储将根据需要进行扩展,查询执行器的数量也将根据需求进行调整。用户只需通过类似 API 的接口访问数据库,该接口会自动将命令路由到正确的组件。
无服务器数据库在我们讨论的所有选项中需要的运营管理最少。这使您可以将数据库作为外部服务使用,而不是作为必须保持运行的基础设施组件。
何时使用传统数据库和无服务器数据库
既然我们已经回顾了不同数据库管理策略所采取的方法,现在可以讨论它们最适合哪些场景。虽然这些决定主要取决于您自己的应用程序需求、内部专业知识以及对优化和管理的投入意愿,但仍有一些通用指标可以帮助您指明正确的方向。
为什么要使用传统数据库?
如果您需要控制、隐私和性能,那么从硬件到数据库软件管理整个数据库服务器堆栈的传统方法是最合适的。
高控制度
虽然传统数据库服务器需要持续的监控、维护和应急计划来保持可用性,但它提供了无与伦比的控制水平。
您可以选择适合您特定需求的基础设施架构,从单个服务器到复杂的集群。您可以将这些资产部署在任何您想要的地方,无论是在本地、在拥有或租赁硬件的数据中心,还是通过使用云提供商的标准计算资产。您可以根据需要升级和更换任何组件,并无限制地调整任何软件级别的配置。
如果对您来说,能够在部署的任何层面上更改任何内容很重要,那么传统数据库部署可能是您的最佳选择。您将不得不通过承担管理部署每个部分的责任来为这种控制水平付出代价。
注重数据隐私
如果您的应用程序数据需要非常高的隐私级别,无论是作为一项功能还是作为符合任何标准或法规的要求,传统数据库都能为您提供最大的控制权。您将能够精确地指定谁可以访问部署它们的物理硬件以及任何软件级别的访问。
运行自己的数据库服务器可以确保您能够为用户和数据提供必要的保护级别。不同客户的数据可以放置在不同的数据库、不同的服务器或不同的物理位置,以保持严格分离。您可以决定部署到符合特定行业标准的数据中心,以确保物理访问受到限制。
在软件层面,您也从一个没有外部访问权限的环境开始。默认情况下,没有其他方对您的服务拥有管理监督权。您可以通过不提供访问权限以及设置加密和其他安全措施来保护您的数据,以达到您所需的保护级别。
高性能
如果您的应用程序需要持续的高性能,那么传统数据库部署可能是您的最佳策略。
当您自己运行数据库服务器时,由于您对竞争的进程和客户端有全面的了解,因此可以更容易地发现和缓解资源争用。您不必担心邻近客户占用过多的共享资源,并且可以根据需要配置额外的资产。您系统的峰值性能仅受您分配的时间、金钱以及您管理系统的专业知识的限制。
在与无服务器数据库进行比较时,特别相关的是您的服务器数据库资源的持续可用性。您不会遇到冷启动问题,因为您不会在需求低于峰值时缩减基础设施的层级。如果您无论之前的活动水平如何都需要一致的性能,这一点可能很重要。
为什么要使用无服务器数据库?
如果无服务器数据库非常适合您的用例,它们也具有显著的优势。如果您想要经济实惠、自动扩展且管理负担较轻的数据库访问,那么它们是一个很好的选择。
低运营成本
无服务器数据库提供的主要优势之一是低运营成本。由于无服务器数据库的存储层和计算层可以独立扩展,因此您只需为实际使用量付费。
存储层根据您管理的数据量进行扩展。这通常根据容量定价,如果您的应用程序具有一致的模式,则定价相对可预测。由于这种存储后端是动态分配的,您永远不必担心空间不足或与过度配置存储相关的成本。价格只反映您的存储量。
计算层是完全解耦的,并根据其自身的标准进行扩展。配置的查询执行器实例数量由您的应用程序当前传递给数据库的流量决定。这意味着在流量高峰期,服务将启动额外的查询处理器来处理请求。另一方面,当没有查询执行时,服务可以将此层缩减到零,从而在此期间完全消除处理成本。
如果您对成本非常敏感,无服务器数据库可能是一个不错的选择,因为您无需担心精确预测您的使用量。平台的资源和您的成本会与您的使用量完全同步扩展。
高可扩展性
我们在上一节中提到这是成本的一个函数,但无服务器数据库策略最重要的优势之一是易于扩展。这不仅影响开支,还影响您在可预测的周期内使用量波动或因兴趣激增而变化时满足不同需求水平的能力。
数据存储和查询执行的独立扩展机制允许您使用相同的服务和配置处理截然不同的使用场景。该服务可以自动调整以适应大多数使用水平,并且可以随您的应用程序的增长而扩展,而无需对数据库服务进行任何更改。
高可扩展性还意味着您可以轻松地进行应用程序实验,并从测试阶段过渡到生产阶段,而无需更改数据库服务。您可以设置测试和暂存数据库,在不使用时它们将缩减到零。这在实践持续集成和持续交付时特别有用,因为您的流水线可以使用一个完美镜像生产环境的数据库服务,同时只支付您的测试所需的少量使用费用。
管理责任减少
无服务器数据库最大的亮点也许在于它们可以帮助您的团队减轻管理责任。尽管许多组织已经习惯了托管数据库所需的管理开销,但无服务器数据库承担了更高水平的支持和管理,以进一步减轻您的工作量。
无服务器数据库服务不仅管理基础设施和数据库管理系统软件,还管理资源分配和您数据库的许多策略。您无需精确计算数据库需要多少存储空间或需要多少数据库实例来处理平均流量水平,系统可以根据其发现的条件做出响应。您无需管理扩展规则,而只需设置您想要的扩展级别的边界,平台就会在这些约束内智能地进行扩展。
这听起来与托管数据库的描述类似,但实际上却大相径庭。使用无服务器数据库,您无需提前做出许多决策。主要地,您配置要保持的成本阈值以及您想要进行的任何特定的扩展调整,例如,始终至少有一个查询执行器可用。系统会处理几乎所有其他事情,以确保您的应用程序数据库使用始终可用,性能符合标准,并响应当前的请求环境。
结论
特性 | 传统数据库 | 无服务器数据库 |
---|---|---|
控制程度 | 高 | 最低 |
数据隐私 | 默认私有,可由管理员配置 | 必须信任提供商处理数据 |
性能 | 能够实现非常高的性能,取决于硬件和配置 | 如果需求出现峰值,性能可能会下降(可以通过备用查询处理器缓解) |
成本 | 静态,无论需求高低,数据库成本相同 | 可变,按实际使用量付费 |
可扩展性 | 取决于配置,可能很复杂 | 根据需求和服务设置自动扩展 |
管理责任 | 对一切负责 | 最小责任 |
在本文中,我们探讨了传统自管理数据库和无服务器数据库服务之间的一些关键差异。我们讨论了它们在用户视角下的不同之处,以及在根据组织优先级决定数据库策略时必须考虑的权衡。
尽管无服务器数据库并非适用于所有类型的应用程序,但它们可以显著简化许多组织的数据库管理和操作。了解它们何时可能是一个好的解决方案以及它们可能存在的缺点,可以帮助您在评估数据库解决方案时确定是否应该考虑它们。
Prisma Accelerate 提供了一种处理无服务器应用程序和后端数据库之间连接问题的方法。它可以帮助管理来自无服务器功能的临时连接,以避免耗尽数据库连接池。立即查看!