RTF*_*RTF 10 amazon-web-services amazon-dynamodb
在阅读文档后,我不清楚在使用DynamoDB中的过滤器进行扫描操作期间消耗了多少读取容量单位.例如,使用此ruby请求:
table.items.where(:MyAttribute => "Some Value").each do |item_data|
# do something with the item_data
end
Run Code Online (Sandbox Code Playgroud)
我的理解是这将导致表扫描,但DynamoDB只返回我感兴趣的项目.但是如果我的表有10000个项目,并且只有5个项目通过我的过滤器,我仍然是对大量读取容量单位"收费"?
我用于过滤器的属性不是散列,范围或二级索引.我最近刚刚添加了该属性,而且出乎意料的是,这就是我不使用查询的原因.
简而言之,您将对扫描的项目总金额(不是退回的项目总金额)"收费".与查询(如您已经提到的)相比,扫描是一项昂贵的操作.
值得一提的是,当您在桌面上调用扫描时,并不意味着将扫描整个表格.如果扫描项目的大小超过1MB的限制,扫描将停止,您必须再次调用它以扫描表格的下一部分.
这取自官方文档:
如果扫描项目的总数超过最大数据集大小限制1 MB,则扫描将停止,并将结果作为LastEvaluatedKey值返回给用户,以在后续操作中继续扫描.结果还包括超出限制的项目数.扫描可能导致没有符合过滤条件的表数据.
在对找到的项目进行扫描后应用过滤器,因此它根本不会影响吞吐量.
如果您要定期执行这些操作,可能需要考虑添加一些二级索引或优化散列和范围键.
归档时间: |
|
查看次数: |
5337 次 |
最近记录: |