DynamoDB 二级索引是否包含实际的 table 行?

Do DynamoDB secondary indexes contain actual table rows?

在 SQL 世界中,当您创建非聚集索引时,它会创建一个单独的数据结构,允许您根据不是主键的键找到指向 table 行的指针table.

从 DynamoDB 文档看来,创建二级索引似乎会创建一个单独的数据结构,其中包含实际 table 行的副本,而不仅仅是指向这些行的指针。

对吗?

部分正确 - 对于全局二级索引,它肯定会创建第二个 table 并根据主 table 中的更改异步更新它。这就是为什么您只能对该索引进行最终一致性读取的原因。

对于本地二级索引,它很可能是相同的 table。

2018 年 re:invent 有一个演讲,他们解释了底层数据结构,我强烈推荐:

AWS re:Invent 2018: Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321)