来自DynamoDB文档:
全局二级索引 - 具有分区键和排序键的索引,可以与基表上的索引不同。全球二级指数被视为全球二级指数"因为索引上的查询可以跨所有分区跨越基表中的所有数据。
本地二级索引 - 与基表具有相同分区键但具有不同排序键的索引。本地二级索引是" local"从某种意义上说,本地二级索引的每个分区都限定为具有相同分区键值的基表分区。
这对我来说没有意义,没有多少搜索能够恰当地向我解释。
有人可以帮助我理解这个吗?
答案 0 :(得分:2)
将数据插入DynamoDB时,它会在内部对数据进行分区,并在内部存储在不同的存储节点中。这基于分区键。
假设您希望根据您需要使用扫描的非密钥(既不是分区也不是排序密钥)属性来查询项目(由于检查表中的所有项目,这是很昂贵的)。
这就是GSI和LSI的用武之地。让我们举一个Student表的例子,其中StudentsId作为排序键,SchoolId作为分区键。
如果您的应用程序有问题,例如让所有学生都达到5年级的学生,那么LSI非常有用。
如果您需要查询所有学校的所有五年级学生(在所有学校分区中),您将需要一个GSI。
答案 1 :(得分:2)
本地二级索引(LSI)
table
capacity units
共享table
index
的{{1}}必须与partition key
的{{1}} table
可以有5个partition key
全球二级索引(GSI)
table
项复制到索引LSI
中,因此花费了table
的{{1}})table
read capacity units
都可以是table
capacity unit
可以有5个attribute