我必须将业务应用程序迁移到云中,因此成本是我最关心的问题之一。
DynamoDB 似乎是一个不错的选择,而我们的很大一部分数据都可以从关系数据库迁移到 NoSQL。据说 AWS DynamoDB 具有成本效益。这实际上意味着什么?
我们的应用程序每天执行几次查询,返回大约 10 万行。写入的行数可以假设相同。数据库现在托管在相当低的硬件上,可以与t2.medium
实例进行比较。使用 PostgreSQL 的按需(不是最具成本效益的)数据库实例每月费用约为 55 美元。每次查询大约需要10 sec
执行一次。
让我们看看计算机说。DynamoDB 账单取决于吞吐量。10 sec
不是重点,假设我们可以等一整分钟。查询返回 100k 行。这意味着我们需要峰值吞吐量1667 reads/sec
(假设项目小于 1 kb),以及相同的写入吞吐量。计算器说:Estimate of your Monthly Bill ($ 859.39)
。
比 RDS 贵 15 倍(并且仍然慢 6 倍)。
我计算的方式是否错误?是否有超出我能力范围的事情?或者,DynamoDB 可能不适合这种任务?
答案1
我认为 DynamoDB 不是正确的选择。正如您自己所说:
DynamoDB 账单取决于吞吐量。10 秒不是重点,假设我们可以等待一整分钟。
DynamoDB 专为高吞吐量、低延迟而构建。因此,此数据库的核心功能是在几毫秒内提供答案。正如您已经知道的那样,您按秒付费,这意味着如果您在几个小时内不需要几乎相同数量(在可扩大和缩小的范围内)的读取/写入,DynamoDB 会很昂贵,因为您需要为不需要的查询付费。
我们的应用程序每天执行几次返回大约 100k 行的查询。
因此 AWS RDS 似乎更适合您的情况。
答案2
您的用例可以免费使用 DynamoDB 来实现。
作为 AWS 免费套餐的一部分,您可以全年免费获得 25GB 存储空间、25RCU 和 25WCU。您需要做的就是设计您的应用程序以将数据吞吐量保持在这些限制之内,您的账单将为 0.00 美元。
只需限制吞吐量,分批工作即可。您可以免费获得每秒 25 次 1Kb 写入,因此可以教您的应用每秒写入 25 个项目 - 零成本。