在GSI Vs上扫描在DynamoDB中扫描整个表

雅虎

我在DynamoDB中有下表。ID是分区键,Category是排序键。ID-1和ID-2是GSI。IDs-1和IDs-2中的值采用字符串形式,例如“ list1,list2”。我有一种情况,我必须在IDs-1和IDs-2列中进行搜索。例如,我想查看在任何列中是否存在list7。

在这种情况下,

ID[Number]    Category[String]     IDs-1[String]            IDs-2[String] 
1             category1            list1, list2           
2             category2                                     list7, list8     
3             category1            list3, list4     
4             category2                                     list5, list6     

此表中总共约有1万个条目。

在GSI上进行扫描与在DynamoDB中扫描整个表之间有什么区别?

谢谢

克里斯·威廉姆斯

如果整个数据模式相同,那么就RCU(已读信用单位)而言,对两者进行扫描的成本仍然相同。GSI将拥有自己的信用额度,因此将从其池中扣除这些信用额度。

查看您的数据,我可以看到某些值缺少该属性,根据文档,这意味着它们将不包含在内。因此,由于GSI中的数据较少,因此扫描会便宜一些

全局二级索引仅跟踪其关键属性实际存在的数据项。例如,假设您向GameScores表中添加了另一个新项目,但仅提供了必需的主键属性。

此外,如果投影的属性较少,则可能会影响成本(1 RCU等于4KB项目的1个RCU等于2个最终一致性读取的1项),因此,如果GSI中的属性较少,则项目大小更改为4kb以下你会少付。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章