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

时间:2019-01-05 03:38:52

标签: amazon-dynamodb

看着this DynamoDB documentation about GSI,我发现以下评论:

  

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

这到底是什么意思?

  1. 从GSI角度缺少Partition Key和/或Sort Key将导致GSI中没有其他项目
    例如)“ GameTitle”和“ TopScore”是必需的
  2. 使用INCLUDE选项指定为GSI一部分的任何属性缺少数据将导致GSI中没有其他项目
    例如:)所有投射到GSI的属性,甚至“胜利”,“亏损”都是必需的

我怀疑“关键属性”指的是1.,因此从INCLUDE选项的角度来看任何丢失的数据将在查询GSI时简单地返回为空,但想要检查如果我的理解是正确的。

在这个领域,GSI和LSI之间没有区别吗?

1 个答案:

答案 0 :(得分:0)

在您链接到Global Secondary Indexes

的页面中

然后从您引用的下两行开始:

  

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

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

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

任何其他投影属性都将存在或不存在。与表本身相同。

技术术语是sparse index;它不必包含与基表一样多的条目。

本地二级索引也很稀疏。