随着云基础设施的兴起,几乎现代应用程序堆栈的每个组件都可以使用基于云的服务,数据库层也不例外。
称为 DBaaS(数据库即服务),几乎所有现代关系数据库(MySQL、Postgres 等)以及 NoSQL 数据库(如 MongoDB、CouchDB 和 Neo4J)都有云数据库服务。
但什么是 DBaaS 以及如何评估各种 DBaaS 平台呢?本文将解释 DBaaS 并概述在云中托管生产数据库时必须考虑的所有重要特征。
保持优先级清晰
在选择DBaaS时,毫无疑问应该仔细选择优先级。不要将宝贵的资源浪费在不能按预期交付的事情上。不幸的是,许多人在选择 DBaaS 时花费的时间远远不够,最终可能会对提供的选择感到失望。如果需要解决这个问题,可以在最终做出决定之前留出一些时间来审查正在考虑选择的DBaaS 的每个元素。这样做,最终会得到更满意的结果。
什么是 DBaaS?
DBaaS 提供商托管您的数据库基础设施,并处理管理数据库的所有低级操作方面,以便您可以专注于应用程序开发。为实现这一目标,DBaaS 提供商不仅托管您的数据库软件和数据,还管理其下的所有硬件和网络基础设施。他们还自动化所有管理活动,如供应、扩展、故障转移和备份/恢复,并在需要帮助时提供支持。
如何选择 DBaaS
首先,要确保选择了数据库技术。在这一步之前评估 DBaaS 提供商是本末倒置。应该选择合适的数据库技术来满足应用程序的技术要求,然后为该数据库技术寻找 DBaaS 提供商。
一旦知道将使用哪些数据库,在评估 DBaaS 提供商时需要考虑以下几点。
数据库位置
并非所有云服务都需要物理上靠近应用服务器,但数据库层需要。原因有两个:
- 延迟:希望将请求发送到数据库并获得响应的时间最小化,因为这种延迟会对整体应用程序性能产生巨大影响。
- 安全:理想情况下,应用程序和数据库之间的网络是私有的,数据不会通过开放的互联网传输。
这就是为什么对于大多数应用程序,应该将应用服务器和数据库服务器(通过 DBaaS 提供商)放在同一数据中心。
例如,如果应用程序层在 Microsoft Azure 的 West US 数据中心,则需要一个可以在 Azure West US 中供应数据库的 DBaaS。
此外,还应考虑 DBaaS 提供商在多大程度上将您锁定在特定的云或地理区域。提供多种云运行的提供商(如 AWS、Azure、Google)可以让您放心,无需更改 DBaaS 解决方案即可更改云提供商或使用多个云提供商。
容错、可用性和冗余
如果运行生产应用程序,即使面对硬件故障和维护,数据库也应始终可用。DBaaS 提供商在实现高可用性方面起着重要作用,无论底层数据库技术如何。
为实现容错,DBaaS 提供商通常提供可以承受节点故障的多节点数据库集群。
需要考虑的事项:
- 提供商是否通过集群提供容错?
- 如果是,数据库集群中的节点隔离程度如何?一些提供商只是在同一数据中心的多个机架中扩展数据库节点,而其他提供商则有更物理隔离的区域(即 AWS 可用区)。适当的隔离对于最大限度地减少停机时间至关重要。
- 系统故障转移如何工作?是自动的还是需要干预?
- 如何更换故障组件?是自动的还是需要干预?
- 提供商是否提供可用性 SLA?
- 提供商是否在区域数据中心出现故障时提供全局灾难恢复(DR)?
数据耐久性和备份
DBaaS 提供商应该有一个强大的备份和恢复系统。必须确保能够从灾难性故障中恢复,更有可能是从人为错误(例如开发人员意外删除数据)中恢复。
需要考虑的事项:
- 提供商是否自动备份您的数据?
- 提供商是否有用于管理备份的工具?
- 能否创建重复的备份计划以按自定义计划自动备份?
- 能否轻松快速地从备份中恢复?
- 提供商是否支持时间点恢复,允许您恢复到过去的任何时间或仅恢复到上次备份的时间?
监控、性能分析和警报
需要确保数据库始终可用且快速。提供有关数据库部署健康状况洞察的监控、性能分析和警报功能至关重要。
DBaaS 提供商应该提供正常运行时间和性能监控,并能够在任何重要指标超出正常运行范围时向您的团队发送警报。
需要考虑的事项:
- 提供商在部署中出现组件故障时是否自动向您发出警报?
- 提供商是否提供对数据库性能指标的实时洞察?
- 提供商是否提供数据库性能指标的历史报告?
- 提供商是否允许您根据数据库性能指标创建自定义警报?
- 提供商是否支持轻松访问数据库日志文件?
性能和扩展
提供商应该提供一个平台,不仅对工作负载表现良好,而且随着数据量的增长能够扩展以保持该性能。
如果应用程序有苛刻的性能要求,最好的评估方法是使用工作负载进行测试。这意味着,尽您所能,尝试模拟生产应用程序的操作组合和负载。要注意基准测试,因为它们通常对正在测试的工作负载非常特定,可能无法很好地反映服务对您的表现。
如果预计数据量或应用程序生成的数据库流量会大幅增长,需要确保提供商能够轻松扩展。
有两种常见的扩展技术。一种是垂直扩展,即在部署增长时添加资源(RAM、CPU、磁盘)。另一种是水平扩展,即向系统添加更多节点以处理数据量和/或数据库流量的增长。
最终,如果计划有相对较大的数据集(数百 GB),需要确保提供商有水平扩展的解决方案。虽然垂直扩展非常有效,甚至在小规模时更受欢迎,但一个盒子中能容纳的硬件数量是有限的。对于较大的部署,水平扩展是必不可少的。
安全
数据可能是企业最重要的资产。因此,DBaaS 提供商必须是安全专家,并能够为您提供确保数据免受未经授权访问的工具。
需要考虑的事项:
- 连接到云托管数据库是否需要身份验证?
- 是否记录对数据库的所有访问?
- 能否配置防火墙,以便只有应用程序可以访问数据库?
- 提供商是否支持通过带有证书验证的 SSL 与数据库通信?
- 提供商是否支持静态加密?
- 用于管理云数据库部署的管理界面是否支持 2FA?
- 提供商是否接受第三方渗透测试和安全审计,以确保他们遵循安全最佳实践?
- 提供商是否拥有您的组织所需的任何安全和合规认证,例如 HIPAA?
支持
快速、有帮助的支持是确保数据库和应用程序平稳运行的关键组成部分。提供商必须提供出色的支持,特别是在提供建议和响应紧急情况时。
需要考虑的事项:
- 提供商是否将支持作为订阅的一部分提供,还是需要额外付费?
- 提供商是否提供具有保证快速响应时间的高级或紧急支持?
- 提供商是否提供关于支持响应时间的 SLA?
- 支持是否真正周到和有帮助?联系他们询问数据库或供应商特定的问题,看看他们的响应是否及时和有帮助。
- 提供商是否有出色支持的良好声誉?
结论
合适的 DBaaS 提供商可以是无价的合作伙伴,但为应用程序找到合适的云服务需要研究和深思熟虑。希望本指南能帮助您确定调查范围并提供一些寻找的指导。
如需更多关于数据工具和解决方案、在移动设备上持久化数据以及选择 DBaaS 的见解,请获取新的 DZone 数据持久化指南的免费副本!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。