DynamoDB GSI 如何处理缺失的属性?

Ryo*_*ota 6 amazon-dynamodb

查看有关 GSI 的 DynamoDB 文档,我发现了以下评论:

全局二级索引仅跟踪其关键属性实际存在的数据项。

以下哪一项是准确的意思?

  1. 缺少Partition Key和/或Sort Key从 GSI 的角度来看将导致 GSI 中没有其他项目,
    例如)“GameTitle”和“TopScore”是必需的
  2. 缺少您指定为 GSI 一部分并带有INCLUDE选项的任何属性的数据将导致GSI中没有其他项目,
    例如)投影到 GSI 的所有属性,甚至“赢”、“输”都是必需的

我怀疑“关键属性”指的是 1.,以及来自 INCLUDE选项的角度来看都会在查询 GSI 时返回为空,但想检查我的理解是否正确。

另外,GSI和LSI在这个领域会不会有区别?

Cha*_*les 9

在您链接到全球二级索引的页面中

然后你引用的下两行是:

全局二级索引仅跟踪其关键属性实际存在的数据项。例如,假设您向 GameScores 表添加了另一个新项目,但只提供了必需的主键属性:
因为您没有指定 TopScore 属性,DynamoDB 不会将此项目传播到 GameTitleIndex。

因此,如果您在属性 GSIKey 上有一个 GSI,并且您在没有该属性的情况下向表中添加了一条记录,则 GSI 将不会获得该记录的条目。

如果您使用 GSIKey 添加记录,则 GSI 将具有该记录的条目。

任何额外的投影属性要么存在,要么不存在。与桌子本身一样。

技术术语是稀疏索引;它不必包含与基表一样多的条目。

本地二级索引也很稀疏。