AWS55.Dynamodb全局二级索引
作者:互联网
Dynamodb全局二级索引
=== DynamoDB - 主键
- DynamoDB 基于主键存储和检索数据
- 有 2 种类型的主键。简单主键(分区键)和复合键(分区键和排序键)。
- 分区键很重要,因为它们是内部哈希函数的输入,该函数确定存储数据的分区或物理位置。
- 如果使用分区键作为主键,则没有两个项目具有相同的分区键。
- 2 个项目可以具有相同的分区键,但它们必须具有不同的排序键。
- 具有相同**分区键的所有项目都存储在一起,然后根据排序键值进行排序。
=== 什么是 DynamoDB 中的索引
- 在 SQL 数据库中,索引是一种数据结构,可用于对表中的特定列执行查询。
- 选择需要包含在索引中的列,然后对索引而不是整个数据集运行搜索。
=== 在 DynamoDB 中,支持两种类型的索引来帮助加快查询速度。
- 本地二级索引。
- 全局二级索引。
=== 本地二级索引
- 只能在创建表时创建。
- 以后无法删除、添加或修改。
- 它具有与原始表相同的分区键。
- 具有不同的排序键。
- 为您提供数据的不同视图,根据备用排序键进行组织。
- 使用索引的任何基于 Sort 键的查询都比使用主表快得多。
=== 全局二级索引
- 您可以在创建时创建 GSI,也可以稍后添加。
- 不同的分区键以及不同的排序键。
- 它给出了完全不同的数据视图。
- 加快与此备用分区或排序键相关的查询速度。
=== 案例研究:创建全局二级索引
- 我们通过创建一个表并在表上添加 GSI
- 在此示例中,假设我们要跟踪用户返回的订单。我们将返回日期存储在** ReturnDate 属性中**。
- 我们还将添加一个全局二级索引,其中包含一个复合键架构,使用 ReturnDate 作为 HASH 键,UserAmount 作为 RANGE 键。
=== 架构图
== 实验步骤
=== 创建 DynamoDB 表
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域
- 顶部菜单导航到 DynamoDB,单击创建表
- 表名称:输入
WhizOrderTable
- 分区键:输入
UserName
并选择字符串- 排序键:输入
OrderID
,然后选择字符串- 分区键和排序键的组合,唯一标识 DynamoDB 表中的每个项目。
- 将所有其他设置保留为默认值,然后单击"创建表"。
- 您的表将在 2-3 分钟内创建。
=== 创建项目
- 单击项目选项卡,然后选择
WhizOrderTable
,然后单击创建项目。
- 选择创建项目后,您将看到"UserName"和"OrderID"
- 但我们在表中还需要 2 个属性。单击"添加新属性",然后从下拉菜单中选择"字符串"。
- 将属性名称指定为
ReturnDate
- 再次单击添加新属性,然后从下拉菜单中选择字符串。
- 现在将属性名称指定为
UserAmount
- 现在输入如下所示的值:
- UserName : 输入HarryPotter
- OrderID :输入20160630-12928
- ReturnDate : 输入20190705
- UserAmount : 输入 142.23
- 现在点击创建项目。
- 导航到"表",然后单击"概述"部分旁边的"索引"选项卡
- 单击"创建索引"。
- 输入"分区键"为"ReturnDate",将"排序键"输入为"UserAmount"
- 将所有内容保留为默认值,然后单击"创建索引",然后等待索引状态更改为"活动"。
- "索引名称"的命名法是我们选择的列的组合,后跟"index"。您可以根据要求修改索引名称。
- 全局二级索引处于活动状态后,您可以检查索引选项卡进行确认。
- 注意:需要5-10分钟。
- 移动到项目选项卡,然后选择
WhizOrderTable
,然后单击创建项目。- 属性名称 - 值
- UserName : 输入HarryPotter
- OrderID : 输入20160630-28176
- ReturnDate : 输入20190513
- UserAmount : 输入88.30
- 属性名称 - 值
- UserName : 输入Ron
- OrderID : 输入20170609-25875
- ReturnDate : 输入20190628
- UserAmount : 输入116.86
- 属性名称 - 值
- UserName : 输入Ron
- OrderID : 输入20170609-4177
- ReturnDate : 输入20190731
- UserAmount : 输入27.89
- 属性名称 - 值
- UserName : 输入Voldemort
- OrderID : 输入20170609-17146
- ReturnDate : 输入20190511
- UserAmount : 输入114.00
- 属性名称 - 值
- UserName : 输入Voldemort
- OrderID : 输入20170609-18618
- ReturnDate : 输入20190615
- UserAmount : 输入122.45
- 请注意,您需要为个人创建项目。不要一次添加每个人的所有详细信息并创建单个项目。
- 使用提供的数据创建所有项后,该表如下所示。
=== 使用全局二级索引获取数据
- 现在转到"项目",然后单击"扫描/查询项目"选项。
- 在使用扫描选项显示索引之前刷新页面。
- 让我们尝试使用"扫描"选项来搜索数据。
- 选择"扫描"选项。
- 表或索引:选择
ReturnDate-UserAmount-index
- 展开"筛选条件"
** 属性名称:输入ReturnDate
** 类型 : 选择字符串
** 条件 : 介于
** 值 : 输入20190501
和20190531
- 在此示例中,我们尝试获取在 5 月份返回其订单的用户。
- 现在点击运行按钮。
- 现在,您将能够根据我们提供的搜索过滤器看到下面返回的项目。
- 让我们尝试使用"查询"选项来搜索一些数据。
- 单击"扫描"旁边的"查询"。
- 表或索引:选择
ReturnDate-UserAmount-index
- ReturnDate : 输入20190628
- UserAmount(排序键):选择大于或等于
- 输入排序键:输入 100
- 在这里,我们需要检查哪些用户在该特定日期返回了项目。为此,我们根据要求使用排序键来限定金额。
- 点击运行按钮。
- 通过这种方式,全局二级索引使我们能够快速找到表中的特定项目,在通常情况下需要全表扫描。
标签:单击,创建,ReturnDate,Dynamodb,索引,UserAmount,AWS55,输入 来源: https://www.cnblogs.com/ajajroom/p/16408447.html