DynamoDB - 索引

DynamoDB使用主键属性的索引来改进访问.它们可以加速应用程序访问和数据检索,并通过减少应用程序延迟来支持更好的性能.

二级索引

二级索引包含一个属性子集和一个备用钥匙.您可以通过查询或扫描操作来使用它,该操作以索引为目标.

其内容包括您投影或复制的属性.在创建中,您可以为索引定义备用键,以及要在索引中投影的任何属性.然后,DynamoDB将属性的副本执行到索引中,包括从表中获取的主键属性.执行这些任务后,您只需使用查询/扫描就像在表上执行一样.

DynamoDB会自动维护所有二级索引.在项目操作(例如添加或删除)上,它会更新目标表上的任何索引.

DynamoDB提供两种类型的二级索引 :

  • 全球二级指数 : 此索引包括分区键和排序键,它可能与源表不同.它使用标签"global",因为索引上的查询/扫描能够跨越所有表数据以及所有分区.

  • 当地二级指数 : 此索引与表共享分区键,但使用不同的排序键.它的"本地"性质来自其所有分区,其范围分为具有相同分区键值的表分区.

最佳索引类型使用取决于应用需求.考虑下表中显示的两者之间的差异 :

Quality全球二级索引本地二级索引
密钥架构它使用简单或复合主键.它总是使用复合主键.
键属性索引分区键和排序键可以包含字符串,数字或二进制表属性.索引的分区键是与表分区键共享的属性.排序键可以是字符串,数字或二进制表属性.
每个分区键的大小限制值它们没有大小限制.它对索引的总大小施加了10GB的最大限制与分区键值相关联的项目.
在线索引操作您可以在创建表时生成它们,将它们添加到现有表中,或删除现有表.您必须在创建表时创建它们,但不能删除它们或将它们添加到现有表.
查询它允许查询覆盖整个表和每个分区.它们通过提供的分区键值来处理单个分区.查询.
一致性这些索引的查询只提供最终一致的选项.这些查询的查询提供了最终一致或强烈一致的选项.
吞吐量成本它包括读取和写入的吞吐量设置.查询/扫描消耗索引的容量,而不是表,这也适用于表写更新.查询/扫描消耗表读取容量.表写入更新本地索引,并使用表容量单位.
投影查询/扫描只能请求投射到索引中的属性,不会检索表属性.查询/扫描可以请求这些属性没有预测;此外,还会自动提取它们.

使用二级索引创建多个表时,请按顺序执行;意思是创建一个表并等待它在创建另一个并再次等待之前达到ACTIVE状态. DynamoDB不允许并发创建.

每个二级索引都需要某些规格 :

  • 输入 : 指定本地或全球.

  • 名称 : 它使用与表格相同的命名规则.

  • Key Schema : 只允许顶级字符串,数字或二进制类型,索引类型确定其他要求.

  • 投影属性 :  DynamoDB自动对它们进行投影,并允许任何数据类型.

  • 吞吐量 : 指定全局二级索引的读/写容量.

索引的限制仍为每个表5个全局和5个本地.

您可以使用 DescribeTable 访问有关索引的详细信息.它返回名称,大小和项目数.

注意 : 这些值每6小时更新一次.

在用于访问索引数据的查询或扫描中,提供表和索引名称,结果的所需属性以及任何条件语句. DynamoDB提供以升序或降序返回结果的选项.

注意 : 删除表也会删除所有索引.