DynamoDB:UpdatedDate 作为 GSI 上的排序键?

DynamoDB: UpdatedDate as a Sort Key on a GSI?

所述,我假设您不能将更新日期之类的内容作为 table 的排序键,因为如果您更新,则会创建重复记录.

此外,我一直假设同样的事情适用于使用更新日期的 GSI。但在我的场景中,我将更新日期作为 GSI 上的排序键,并且在更新原始项目时不会创建新记录。

回顾一下,属性和关键模式是:

属性:

Table:

GSI:

我的问题是,我这样做是否间接影响了索引的性能?或者还有其他我不知道的由这种模式引起的问题吗?

全局二级索引在幕后是独立的 table,主 table 中更改的项目被复制到它。

正如您正确观察到的那样,您可以在 GSI 中使用一个不断变化的属性作为排序键,而不会在您写入基 table 后导致重复。 请注意,在 GSI 中不保证唯一性,即您可以拥有多个具有相同关键属性的项目。 除此之外,您只能从 GSI 进行最终一致性读取。

GSI 也有自己需要配置的读取和写入容量单位,如果您更改基础 table 中需要复制的项目,该操作将消耗 GSI 上的写入容量单位。 读取与此不同。 GSI 上的 RCU 不受写入 table 的影响。 但是如果你经常改变项目,你可能会在很短的时间内看到一些不一致(这就是为什么只有最终一致的读取是可能的)。

这意味着如果您能忍受我提到的副作用,您就可以使用这些模式。