【问题标题】:DynamoDB "query" vs "get_item" operations on a partition key or a GSIDynamoDB 对分区键或 GSI 的“查询”与“get_item”操作
【发布时间】:2020-05-07 17:58:36
【问题描述】:
所以,我的问题是:对于 GSI,使用“equals”运算符的“查询”操作是否与分区键的“get_item”一样有效? p>
【问题讨论】:
标签:
amazon-web-services
nosql
amazon-dynamodb
amazon-dynamodb-streams
【解决方案1】:
从 GSI 读取数据时需要 查询 操作的原因是,与表本身不同,GSI 可能包含同一个键的多个项目。因此,虽然对于表本身,您可以保证并强制每个分区只有一个项目 + 排序键,但 GSI 最终可能会导致多个项目映射到 GSI 中的同一分区 + 排序键。
我不会评论查询 GSI 与主表上的获取项相比的性能,只是说如果您担心性能,您应该运行自己的基准测试,尽管在大多数情况下差异应该可以忽略不计。
【解决方案2】:
我相信 GetItem 的性能会稍微好一些,因为它只会是单个哈希键(分区键和可选的排序键)中的一项。
查询是高效的,因为它只会从单个分区中检索,但是,可以返回多个项目,具体取决于用于排序键的运算符。