- DynamoDB 教程
- DynamoDB - 首页
- DynamoDB - 概述
- DynamoDB - 基本概念
- DynamoDB - 环境
- DynamoDB - 操作工具
- DynamoDB - 数据类型
- DynamoDB - 创建表格
- DynamoDB - 加载表格
- DynamoDB - 查询表格
- DynamoDB - 删除表格
- DynamoDB - API 接口
- DynamoDB - 创建项
- DynamoDB - 获取项
- DynamoDB - 更新项
- DynamoDB - 删除项
- DynamoDB - 批量写入
- DynamoDB - 批量检索
- DynamoDB - 查询
- DynamoDB - 扫描
- DynamoDB - 索引
- 全局二级索引
- 本地二级索引
- DynamoDB - 聚合
- DynamoDB - 访问控制
- DynamoDB - 权限 API
- DynamoDB - 条件
- Web 身份联合
- DynamoDB - 数据管道
- DynamoDB - 数据备份
- DynamoDB - 监控
- DynamoDB - CloudTrail
- DynamoDB - MapReduce
- DynamoDB - 表格活动
- DynamoDB - 错误处理
- DynamoDB - 最佳实践
- DynamoDB 有用资源
- DynamoDB - 快速指南
- DynamoDB - 有用资源
- DynamoDB - 讨论
DynamoDB - 索引
DynamoDB 使用索引来访问主键属性以提高访问速度。它们可以加速应用程序访问和数据检索,并通过减少应用程序延迟来支持更好的性能。
二级索引
二级索引包含属性子集和备用键。您可以通过针对索引的查询或扫描操作来使用它。
其内容包括您要投影或复制的属性。在创建过程中,您为索引定义一个备用键,以及您希望在索引中投影的任何属性。然后,DynamoDB 将属性的副本复制到索引中,包括来自表的源主键属性。执行这些任务后,您只需像在表上执行操作一样使用查询/扫描。
DynamoDB 自动维护所有二级索引。在项操作(例如添加或删除)上,它会更新目标表上的任何索引。
DynamoDB 提供两种类型的二级索引 -
全局二级索引 - 此索引包含一个分区键和一个排序键,它们可能与源表不同。它使用“全局”标签是因为索引上的查询/扫描能够跨越所有表数据和所有分区。
本地二级索引 - 此索引与表共享分区键,但使用不同的排序键。它的“本地”特性源于其所有分区都作用于具有相同分区键值的表分区。
要使用的最佳索引类型取决于应用程序的需求。请考虑下表中列出的两者之间的差异 -
质量 | 全局二级索引 | 本地二级索引 |
---|---|---|
键模式 | 它使用简单或复合主键。 | 它始终使用复合主键。 |
键属性 | 索引分区键和排序键可以由字符串、数字或二进制表属性组成。 | 索引的分区键是与表分区键共享的属性。排序键可以是字符串、数字或二进制表属性。 |
每个分区键值的大小限制 | 它们没有大小限制。 | 它对与分区键值关联的已索引项的总大小施加 10GB 的最大限制。 |
在线索引操作 | 您可以在创建表时生成它们,将它们添加到现有表中,或删除现有的索引。 | 您必须在创建表时创建它们,但不能删除它们或将它们添加到现有表中。 |
查询 | 它允许覆盖整个表和每个分区的查询。 | 它们通过查询中提供的分区键值来处理单个分区。 |
一致性 | 这些索引的查询仅提供最终一致选项。 | 这些查询提供最终一致或强一致选项。 |
吞吐量成本 | 它包括读取和写入的吞吐量设置。查询/扫描会消耗索引的容量,而不是表的容量,这也适用于表写入更新。 | 查询/扫描会消耗表读取容量。表写入会更新本地索引,并消耗表容量单元。 |
投影 | 查询/扫描只能请求投影到索引中的属性,不能检索表属性。 | 查询/扫描可以请求未投影的那些属性;此外,还会自动获取它们。 |
在创建具有二级索引的多个表时,请依次进行;这意味着创建一个表并等待它达到 ACTIVE 状态,然后再创建另一个表并再次等待。DynamoDB 不允许并发创建。
每个二级索引都需要某些规范 -
类型 - 指定本地或全局。
名称 - 它使用与表格相同的命名规则。
键模式 - 仅允许顶级字符串、数字或二进制类型,索引类型决定其他要求。
投影属性 - DynamoDB 会自动投影它们,并允许任何数据类型。
吞吐量 - 为全局二级索引指定读取/写入容量。
每个表的索引限制仍然是 5 个全局索引和 5 个本地索引。
您可以使用DescribeTable访问有关索引的详细信息。它返回名称、大小和项数。
注意 - 这些值每 6 小时更新一次。
在用于访问索引数据的查询或扫描中,提供表和索引名称、结果所需的属性以及任何条件语句。DynamoDB 提供了以升序或降序返回结果的选项。
注意 - 删除表也会删除所有索引。