AWS DynamoDB本地与全局二级索引之间有什么区别?

时间:2018-05-22 15:51:50

标签: amazon-dynamodb

来自DynamoDB文档:

全局二级索引 - 具有分区键和排序键的索引,可以与基表上的索引不同。全球二级指数被视为全球二级指数"因为索引上的查询可以跨所有分区跨越基表中的所有数据。

本地二级索引 - 与基表具有相同分区键但具有不同排序键的索引。本地二级索引是" local"从某种意义上说,本地二级索引的每个分区都限定为具有相同分区键值的基表分区。

这对我来说没有意义,没有多少搜索能够恰当地向我解释。

有人可以帮助我理解这个吗?

2 个答案:

答案 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