什么构成了DynamoDB中的实际读取?
是读取表格中的每一行还是返回了什么数据?
这就是为什么扫描如此昂贵的原因 - 您读取整个表格并为每个读取的表格行收费吗?
您可以将ElasticCache(Memcached)放在DynamoDB前面以降低成本吗?
最后,您是否因为没有结果的查询而付费?
答案 0 :(得分:2)
请参阅此链接:http://aws.amazon.com/dynamodb/faqs/
1 Write = 1每秒写入一个大小为1Kb的项目。
1读取= 2每秒读取一个大小为1Kb的项目,如果您需要完全一致的结果,则每秒读取1次。
例如,如果您的项目是512字节,则需要读取100 从您的表中每秒的项目,然后您需要提供100个单位 读容量。
如果您的项目大小超过1KB,那么您应该计算 您需要的读取容量和写入容量的单位数。 例如,如果您的商品是1.5KB而您想要100 读/秒,然后你需要提供100(每秒读取)x 2(1.5KB四舍五入到最接近的整数)= 200单位的读数 容量。
请注意,确定了所需的读取容量单位数 按每秒读取的项目数,而不是API的数量 调用。例如,如果您需要每秒读取500个项目 表,如果您的物品是1KB或更少,那么您需要500个单位 读容量。如果你做500个单独的GetItem并不重要 调用或50个BatchGetItem调用,每个调用返回10个项目。
以上适用于所有常用方法,GET,BATCH X& QUERY。 SCAN略有不同,他们没有准确记录他们如何计算使用情况,但他们确实提供了以下内容:
Scan API将遍历整个数据集并应用 过滤条件到每一行。因为只能扫描1MB的数据 在一次,你可能需要做多次往返(使用 继续令牌)完成扫描。此外,使用此API可能 消耗大部分配置的读取吞吐量。因此,这种方法 具有有限的缩放特性,我们不建议您 将它作为应用程序常规行为的一部分。
所以直接回答你的问题:计算除了SCAN之外在所有情况下返回的数据,其中没有任何关于它们如何收费的明确指示。不产生任何结果的查询不会花费任何成本。
你绝对可以在Dynamo面前设置一个缓存系统,如果你想保持读取,绝对建议你研究一下。
希望有所帮助!