从dynamodb获取多件物品的最便宜方式

时间:2015-10-02 23:54:26

标签: amazon-web-services amazon-dynamodb

我在AWS中看到“BatchGetItem”API,可用于从dynamodb中检索多个项目。但是消耗的容量是n个项目的n个单位,即使它们只有10个字节长。是否有更便宜的方法来检索这些物品?我看到了“查询”API但它可能不支持键的ORing甚至是IN运算符。

1 个答案:

答案 0 :(得分:1)

从DynamoDB中获取大量小物品的最便宜方法是Query

BatchGetItems的费用与GetItem个呼叫的等效数量相同。只有等待时间较低,但是如果您有大量项目要放入不同的分区,并且您的语言可以很好地与并行性配合使用,那么在进行大量并行GetItem时实际上会获得更好的性能。电话。

重组数据的一种方法是将所有小项目存储在同一个分区键下,并使用Query来将所有项目都存储在该分区内。您必须注意每秒写入的限制,但是如果您不经常添加更多项目,并且您更担心读取操作,那么这应该很好。

Query中,DynamoDB根据返回的数据大小收费,而与返回的项目数无关。但这似乎是适用这些经济学的唯一地方。

根据我对DynamoDB的了解,这是有道理的。在BatchGetItems调用中,项目可以轻松地来自不同的分区(甚至是不同的表),因此效率不高-每个项目都必须在DynamoDB网络上从其分区中单独查找和提取。如果批处理中的所有键都来自相同的分区,并且在范围键上是连续的,那是幸运的巧合,但是DynamoDB无法利用它。

另一方面,在Query中,DynamoDB有一个完美的知识,那就是它只会直接与一个分区通信,并在该分区内进行顺序读取,因此使用该方法调用会更简单和便宜储蓄转嫁给了客户。