2012-12-22 169 views
3

什么构成DynamoDB中的实际读取?DynamoDB读取和写入

它读取表中的每一行或返回哪些数据?

这就是为什么一个扫描太昂贵 - 你读整个表,并收取每个读取的表格行?

您可以将ElasticCache(Memcached)放在DynamoDB前面以降低成本吗?

最后是你收取一个没有结果的查询?

回答

2

请参阅此链接:http://aws.amazon.com/dynamodb/faqs/

1写= 1个写入每秒一个项到1Kb的大小。

1阅读= 2如果您需要完全一致的结果,则每秒读取1Kb大小的项目,或每秒读取1次。

例如,如果你的项目是512个字节,你需要从表中读取每秒100个 项目,那么你就需要提供100个单位的读取容量 。

如果您的项目大小大于1KB,那么您应计算您需要的读取容量和写入容量的单位数 。 例如,如果您的项目是1.5KB,并且您希望以100 /秒读取100 ,那么您需要提供100(每秒读数)x(其中,1.5KB四舍五入到最接近的整数)= 200单位阅读 容量。

请注意,所需的读取容量单位数量由每秒读取的项目数量确定,而不是调用的API数量 。例如,如果您需要从 表中每秒读取500个项目,并且您的项目为1KB或更少,则需要500个读取容量单位。如果您执行500个单独的GetItem 调用或50个每个返回10个项目的BatchGetItem调用,则无关紧要。

上述内容适用于所有常用方法GET,BATCH X & QUERY。 SCAN是一个有点不同,他们并不确切地证明了他们是如何计算的使用,但他们并提供以下内容:

扫描API将通过您的整个数据集进行迭代,并应用 筛选条件的每一行。由于一次只能扫描1MB数据 ,因此您可能需要执行多次往返(使用 连续令牌)才能完成扫描。此外,使用此API可能会消耗大部分预配置读取吞吐量。因此,这种方法 的缩放特性有限,我们不建议您将其用作应用程序常规行为的一部分。

所以要直接回答你的问题:计算的是除SCAN之外的所有情况下返回的数据,其中没有任何明确指示如何收费。不产生结果的查询不会花费任何东西。

你可以肯定地建立一个缓冲系统面前迪纳摩,绝对推荐你看看,如果你想保持你的读数。

希望有帮助!

+1

从我目前对扫描/配置行为的观察 - 扫描实际上可能会吃掉你的下几秒'配置,如果它需要为了完成扫描块。我无法验证它的成本,但它似乎比自己读取和过滤要便宜。 – penguat

+0

空读应该会产生吞吐量成本吗?我在他们没有的印象之下,但实际上他们绝对是这样做的。 –