关于AWS DynamoDb吞吐量,我有些不了解。
让我们考虑强烈一致的读取。
现在,我了解到,在这种情况下,每1单位容量将意味着我每秒最多可以读取4KB。
正是“每秒”让我有些困惑。如果您确切知道要读取数据的速度,则可以适当设置单位。但是,如果您对阅读时间不太挑剔怎么办?
说我确实只有1个读取单位分配给我的表,并且我尝试读取的项目大于4KB。现在确定这意味着我的阅读将花费超过1秒的时间吗?很好,但是文档中讨论了请求失败。当我不要求在特定时间内读取数据时,AWS如何确定我使用了太多单位?
也许我缺少明显的东西。有人可以帮忙清理一下吗?
最佳答案
在burst capacity中,DynamoDB最多可能消耗300秒的未使用吞吐量。
DynamoDB中的最大项目大小为400KB,而1个RCU最多可以读取4KB。
假设您要读取一个大小为400KB的项目,并且桌上有1个RCU。您可以每100秒检索一次该项目。
由于突发容量,总会有一段时间您可以阅读该项目,因为实际上您一次可以使用多达300个RCU,而不仅仅是1个。
想象一下从该400KB的项目开始表。您需要等待100秒,而无需花费任何RCU,这样您才能获得足够的爆破能力来拿取该物品。 101秒后,您发出请求,花费100个RCU并获得该物品。再过5秒钟后,您再次发出请求,但由于节流异常而被拒绝。
因此,DynamoDB不会增加请求延迟以满足您的RCU要求。它要么尽快返回结果,要么抛出异常。
编辑:顺便说一句,我应该提到所有AWS DynamoDB SDK为您处理节流异常。如果您尝试读取某项,但由于没有足够的吞吐量而被拒绝,则SDK会退出并重试。因此,除非您的表确实未配置好,否则您不必担心处理节流异常。