首页 文章

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

提问于
浏览
1

从DynamoDB文档:

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

本地二级索引 - 与基表具有相同分区键但具有不同排序键的索引 . 本地二级索引是“本地”的,因为本地二级索引的每个分区都限定为具有相同分区键值的基表分区 .


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

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

2 回答

  • 2

    将数据插入DynamoDB时,它会在内部对数据进行分区并在内部存储在不同的存储节点中 . 这基于分区键 .

    假设您希望基于非密钥(既不是分区也不是排序键)属性来查询项目,您需要使用扫描(由于检查表中的所有项目,这是很昂贵的) .

    这就是GSI和LSI的用武之地 . 让我们举一个Student表的例子,其中StudentsId作为排序键,SchoolId作为分区键 .

    如果您的应用程序有问题,例如让所有学生都达到5年级的学生,那么LSI非常有用 .

    如果您需要查询所有学校的所有5年级学生(在所有学校分区中),您将需要一个GSI .

  • 1

    Local secondary index(LSI)

    只能在创建 table 时创建

    • table 共享 capacity units

    • indexpartition key 必须与 tablepartition key 相同

    • a table 可以有5 LSI

    Global secondary index(GSI)

    • 可以随时创建,但需要时间来设置一个(由于将原始 table 项复制到索引 table ,它的成本 read capacity unitstable

    • 有一套单独的 capacity unit

    • 任何 attribute 可以是 partition key

    • a table 可以有5 GSI

相关问题