我是DynamoDB的新手,我无法理解预配置吞吐量。
根据我的阅读,似乎您可以使用它来一次设置读写限制。我弄错了吗?
基本上我想要做的是存储通过我的软件发送的电子邮件。我目前将它们存储在MySQL数据库中,但数据量非常大,这就是我正在研究DynamoDB的原因。这些数据我不需要经常访问,但是当需要时,我需要能够访问它。
上个月发送了142,925封电子邮件,我存储在MySQL表格中的每个“行”(或电子邮件)大约是2.5KB。
有时会发送一封电子邮件,有时可能会有3,000封电子邮件。无法知道在任何给定时间发送的时间或数量。
您对我的吞吐量应该是什么建议吗?
如果我确实过了,我是否理解亚马逊对其进行限制并随着时间的推移添加它们?或者它只是抛出错误而这就结束了?
非常感谢你的帮助。
答案 0 :(得分:2)
我正在将DynamoDB与Java SDK一起使用。当你有一个访问突发,亚马逊首先尝试跟上,甚至允许略高于预配置的吞吐量,之后它开始限制并抛出异常。在我们的代码中,我们使用此错误将请求分成更小的批次,有时会强制睡眠以使其冷却一点。
在处理你的情况时,它实际上取决于你需要“不时”进行的运算类型。你需要多长时间从表中获取所有数据?你真的需要得到所有这些吗?在我看来,每月约100k对MySQL来说听起来并不太多......这一切都取决于你需要的查询能力。
另请注意,在DynamoDB中写入比读取更昂贵,因此可能单独发出信号表明它不适合您的写入密集型问题。
答案 1 :(得分:0)
DynamoDb非常昂贵,我建议不要在dynamo db中存储电子邮件,因为每次读写成本都很好,基本上1个读取单位意味着每秒读取4KB数据,1个写入单位意味着每秒1KB数据写入,当你提到您的每封电子邮件都是2.5KB,因此在搜索数据时(如果您没有正确的搜索电子邮件的密钥)表格将被完全扫描,这将花费非常多的金额,因为您需要几个写入单位进行阅读。