【问题标题】:DynamoDB "query" vs "get_item" operations on a partition key or a GSIDynamoDB 对分区键或 GSI 的“查询”与“get_item”操作
【发布时间】:2020-05-07 17:58:36
【问题描述】:
  • 如果对 dynamodb 表执行“get_item”操作,则必须提供分区(主)键。

  • 您不能对 GSI(全局二级索引)执行“get_item”操作,即使它的行为与分区(主)键完全相同。

  • 要使用 GSI,您需要“查询”数据库。

所以,我的问题是:对于 GSI,使用“equals”运算符的“查询”操作是否与分区键的“get_item”一样有效? p>

【问题讨论】:

    标签: amazon-web-services nosql amazon-dynamodb amazon-dynamodb-streams


    【解决方案1】:

    从 GSI 读取数据时需要 查询 操作的原因是,与表本身不同,GSI 可能包含同一个键​​的多个项目。因此,虽然对于表本身,您可以保证并强制每个分区只有一个项目 + 排序键,但 GSI 最终可能会导致多个项目映射到 GSI 中的同一分区 + 排序键。

    我不会评论查询 GSI 与主表上的获取项相比的性能,只是说如果您担心性能,您应该运行自己的基准测试,尽管在大多数情况下差异应该可以忽略不计。

    【讨论】:

      【解决方案2】:

      我相信 GetItem 的性能会稍微好一些,因为它只会是单个哈希键(分区键和可选的排序键)中的一项。

      查询是高效的,因为它只会从单个分区中检索,但是,可以返回多个项目,具体取决于用于排序键的运算符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        相关资源
        最近更新 更多