Amazon dynamodb AWS DynamoDB本地和全局二级索引之间的区别是什么?

Amazon dynamodb AWS DynamoDB本地和全局二级索引之间的区别是什么?,amazon-dynamodb,Amazon Dynamodb,从DynamoDB文档中: 全局二级索引-具有分区键和排序键的索引,可以与基表上的索引不同。全局二级索引被认为是“全局的”,因为对该索引的查询可以跨所有分区跨越基表中的所有数据 本地二级索引-与基表具有相同分区键但具有不同排序键的索引。本地二级索引是“本地”的,因为本地二级索引的每个分区的作用域都是具有相同分区键值的基表分区 这对我来说毫无意义,也没有多少搜索能够恰当地向我解释这一点 有人能帮我理解这一点吗?当您将数据插入DynamoDB时,它会对数据进行内部分区,并在内部存储在不同的存储节点

从DynamoDB文档中:

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

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


这对我来说毫无意义,也没有多少搜索能够恰当地向我解释这一点


有人能帮我理解这一点吗?

当您将数据插入DynamoDB时,它会对数据进行内部分区,并在内部存储在不同的存储节点中。这是基于分区密钥的

假设您想要基于非键(既不是分区也不是排序键)属性查询一个项,您需要使用扫描(这是昂贵的,因为它检查表中的所有项)

这就是GSI snd LSI的用武之地。让我们以StudentsId作为排序键,SchoolId作为分区键的Student表为例

如果您的应用程序有诸如获取给定学校5年级所有学生的查询,LSI非常有用


如果需要查询所有学校(所有学校分区)的所有五年级学生,则需要GSI。

本地中学索引(LSI)

  • 只能在创建
    表时创建
  • 表共享
    容量单位
  • 索引
    分区键
    必须与
    分区键
  • 一个
    表可以有5个
    LSI
全球次级指数(GSI)

  • 可以随时创建,但设置一个需要时间(由于将原始
    项复制到索引
    ,因此需要
    读取
    的容量单位
  • 有一套单独的
    容量单元
  • 任何
    属性
    都可以是
    分区键
  • 一个
    表可以有5个
    GSI

可能只是一个修正,Dynamo DB表可以有20个GSI(默认限制)更新:现在我们可以有20多个GSI(默认20,可以通过配额增加请求增加)