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)
在 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)