在应用程序的关键路径之外使用 RDS 和文档数据库

问题描述 投票:0回答:1

我有一个在 AWS 中托管和管理的生产 RDS 和文档数据库。 它们包含的数据在应用程序关键路径之外进行分析和研究。分析工作涉及在两个数据库上运行复杂(且可能“昂贵”)的读取查询。

我不希望对它们进行的分析和研究工作影响在生产中使用它们的应用程序的性能。 举个例子,我不希望作为研究工作的一部分在数据库上运行的查询影响(在延迟/错误方面)作为应用程序运行的一部分运行的查询。

我正在研究这个问题的 2 种解决方案,但不确定哪种方法被认为是更好的做法。

第一种方法:使用快照每日配置新的数据库集群

  1. 使用备份快照在单独的 AWS 账户中配置 RDS 和文档数据库的新集群,我们将其称为“研究账户”。

  2. 仅对“研究帐户”中的新数据库集群执行“研究”工作。

  3. 有一个流程每天获取最新快照并配置新的数据库集群 在“研究帐户”中使用这些快照。

  4. 缺点是从快照恢复是一项需要时间的开销,并且可能会存在额外的复杂性,因为数据使用默认的 KMS 密钥加密,并且我需要与不同的帐户共享它(关于文档数据库)。此外,我需要构建每天执行此操作的流程。

  5. 另一个缺点是成本较高 - 创建新集群的成本比添加副本更高。

第二种方法:对 RDS 和文档数据库使用只读副本

  1. 为两个数据库添加只读副本

  2. 执行研究工作时,请确保我直接连接 到只读副本(不是主副本),因此任何查询 应用程序正在运行不会受到影响(?)

  3. 潜在的缺点是,我不确定针对专用只读副本运行读取查询是否真的不会对同时运行的其他查询造成任何性能损失。

  4. 另一个缺点是管理成本更困难 - 如果我想知道研究工作造成的额外成本 - 获取此信息并不容易(我认为)。

还有其他方法可以实现我想要的吗?我缺少什么最佳实践吗?目的方法有意义吗?

我倾向于选择选项#2,因为它更便宜,更容易设置和维护,但我不确定我的假设和想法是否正确,想咨询社区。

RDS 的数据库大小约为 10 GB,文档数据库的数据库大小约为 200 GB(并且它们不会随着时间的推移而发生太大变化)。

amazon-rds aws-documentdb
1个回答
0
投票

在理想的情况下,研究和分析查询应该在主应用程序之外运行。您可以使用数据湖来运行研究和分析查询。这将为您带来以下好处:

  1. 报告要求可以单独管理,不会影响 主要应用

  2. 如果需要,可以轻松配置基于角色的访问

  3. 复杂查询可以在主应用程序之外运行

https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-snowflake-home.html

如果您倾向于坚持其中一个选项,那么我建议选择选项 2。在多个可用区中设置只读副本不仅会减少主实例上的负载,而且在发生故障转移时也很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.