问题标签 [amazon-dynamodb-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1185 浏览

amazon-dynamodb - 如何停止 DynamoDB 中当前的索引创建操作?

我尝试在大小约为 200MB 的 DynamoDB 表中添加索引。

它花了将近 15 个小时,并且仍在运行。我检查了我是否为索引提供了低读/写 IOPS。现在我想增加 IOPS 并重新启动索引创建活动。

任何想法 - 如果可以取消当前操作?

谢谢

0 投票
0 回答
1084 浏览

amazon-web-services - Amazon DynamoDB 重载全球二级索引 - 我做得对吗?

我来自 SQL 和 MongoDB 背景,并且非常想将 Amazon DynamoDB 用于新项目。到现在还可以忍受。我将数据写入 DynamoDB 并使用流神奇地将我的数据提取到 Elastic Search 进行搜索。它做我需要它做的一切。

但是,现在我正处于我希望能够更有效地直接从 DynamoDB 查询的数据的地步。

受影响的实体是:

  • 合同
  • 供应商
  • 报告期
  • 付款

我正在开发我的付款服务,通过该服务发起、更新、审核和查询付款。使用以下属性创建付款:

  • 合同编号
  • fromVendorId(可为空)
  • toVendorId
  • 报告期 ID
  • 数量
  • 地位

使用 DynamoDB,我希望能够进行以下查询:

  • 按日期范围获取报告期
  • 通过 reportPeriod 获取付款
  • 通过 fromVendor 获取付款
  • 通过 toVendor 获取付款
  • 按状态获取付款

上述的某种组合(例如“来自供应商 aaaa-bbbb 的拒绝付款”)。

按照官方 DynamoDB 文档,我正在尝试设置 Overloaded Global Secondary Indexes 来解决问题。

我现在还没有开始设置付款,因为这感觉很奇怪,但我确实开始设计报告周期的键和索引,以便我可以掌握它的窍门。这是我现在拥有的:

钥匙

索引

主键是id,排序。我的计划是对报告周期和付款使用同一个表,因为 DynamoDB 文档说您可以为整个应用程序使用一个定义明确的表(我让我的数据比这更孤立,每个微服务使用一个表)。

我承认在保持冗余行最新并通过许多字段进行查询方面会有开销,但假设我对维护没问题(我仍在质疑自己)......我的问题真的是......我做得对吗?

我假设我想查询的任何内容都需要添加带有 ID 和正确“排序”字段的新行。例如,我们有一个 ID 为 dddd-eeee 的付款,属于供应商 aaaa-bbbb,状态为 1。我假设要按供应商和状态查询此付款,我应该添加一个包含以下字段的附加项目:

  • id: 付款-aaaa-bbbb
  • 排序:fromVendorId,状态
  • 值:aaaa-bbbb,1

那是对的吗?如果我想通过 vendorId + status IN (1,3) 查询怎么办?

如果您有重载 GSI 的经验,请回顾一下我到目前为止所做的事情,如果我走在正确的轨道上,或者我是否处于正确的轨道上,或者我是否处于正轨,最好进行一些更改(快速)或我会被搞砸的。您建议进行哪些更改?

0 投票
1 回答
9291 浏览

amazon-dynamodb - DynamoDB 查询二级索引,如何定义索引

我一直在四处走动,只是不清楚该怎么做。

我有一个简单的表,我想在其中对几列进行查询。据我了解,这意味着为要查询的每一列创建一个二级索引。我已经定义了表——使用无服务器框架serverless.yml——并且收到了各种奇怪的错误消息。

目前的serverless.yml定义是:

它意味着类似于 Slack 服务 - 因此我想查询来自房间、用户等的条目。

根据我能找到的文档,这个定义是有意义的。一个应该为索引中使用的列声明属性,我已经这样做了。KeySchema - 我真的只需要 messageId 字段,但是一条错误消息表明它需要一个 RANGE 索引,所以我将 userId 字段添加到 KeySchema 只是为了关闭它。根据我找到的文档,二级索引字段看起来很正确。

有了这个定义,我在尝试使用部署时遇到了这个错误serverless deploy

我尝试了几种变体,也遇到了其他奇怪的错误。以下是一些,但我不记得对定义的相应更改。

0 投票
1 回答
1315 浏览

amazon-web-services - 使用不存在的开始键查询 dynamodb GSI 时出现奇怪的结果。错误或功能?

我正在使用不存在的开始键查询全局二级索引,并且看到了一些奇怪的结果。这是 ddb 错误还是(未?)记录的行为?有解决方法吗?

我有一个表,主 hashKey 为“id”,ShopIndex GSI 为“shop”。两者都没有范围键。

当我使用不存在的开始键“id”进行查询时,我希望返回一个带有正确最后评估键的空响应,因为在无效的开始键之后没有返回结果。

然而,我看到的是一个看似随机的结果被返回。

代码示例:

此代码段从索引中返回一项。不是第一个结果。不是最后一个。

如果我完全删除开始键,它会返回一个不同的项目。

如果我将其添加回来并设置 ScanIndexForward: false,它会返回第三个不同的项目。

如果我删除开始键并设置 ScanIndexForward: false,它会返回第四个不同的项目。

重量级

据我所知,除了查找“id”并在尝试将其用作开始键之前确认它存在之外,没有其他方法可以检测到这一点?

我是否在文档中错过了这一点,或者这是我需要解决的另一个不包括 aws 地雷的电池?

0 投票
1 回答
422 浏览

amazon-web-services - DynamoDB 设计 PartitionKey、RangeKey 和 GSI

我正在设计一个基于 DynamoDB 的新表。我已经阅读了一些文档,但我无法弄清楚我应该遵循哪种设计模式才能在未来没有问题。

当前方法

表 - 事件

表 - 用户

事件表将有一堆条目,比如数百万。目前用户将有大约 20 个条目。

我将需要执行以下查询:

所以我想用以下设置在事件表上创建一个 GSI(全局二级索引):

但我的问题是:我最初的设计有意义吗?不知何故,我觉得我可以使用以下设置设计事件表:

但是我认为按照这种方法我会遇到热分区陷阱。

一些意见和建议将不胜感激。

谢谢。

0 投票
2 回答
778 浏览

amazon-dynamodb - 检索大量数据子集的 DynamoDB 最佳实践

假设我有一个包含 50,000 个项目的表,并且每条记录的 PK 是一个唯一编号。这些项目中有一半的属性“已发布”设置为“1”,另一个设置为“0”。

大多数情况下,我将使用哈希键检索单个项目,但有时我希望能够获取所有已发布 = 1 或 0 的项目(理想情况下是分页批次)。

我可以在“已发布”属性上有一个带有 PK 的 GSI,但是每个值我会有 25,000 条记录,我理解这会很糟糕,因为 PK 应该比这更独特(如果我明白这一点,请告诉我错误)。

我可以为已发布/未发布有单独的表格,但在我检索单个项目的常见用例中,我宁愿不必提前知道该项目是否已发布(亚马逊也表示,精心设计的应用程序通常只有一个桌子)。

任何建议或建议将不胜感激。

0 投票
2 回答
2905 浏览

amazon-web-services - 如何使用 Appsync 中的解析器获取 dynamodb 中存在的记录总数

我是 Dynamodb 和 Appsync 的新手,我有一个名为 User 的表,其字段 id 和名称如下

通过使用突变,我插入了 5 条记录。现在我的查询是如何使用 Appsync 请求映射模板(解析器)获取 Dynamodb 表中存在的记录数,该模板可以是任何类型的模板(即查询、扫描、batchGetitem 等)。

提前致谢!!

0 投票
1 回答
463 浏览

amazon-web-services - DynamoDB 全球二级索引创建已停止

我试图在我的 DynamoDB 表上创建一个全局二级索引,其中包含大约 60 万条记录。

经过几个小时的索引后,该OnlineIndexPercentageProgress指标似乎停滞在 61% 并且已经停滞了近 16 个小时。

我的理解是,您可以通过增加表上的读取容量单位和索引上的写入容量单位来减少索引时间。我从 5 个增加到 20 个。但是,索引“Item Count”和“Size”似乎卡住了。

我在这里做错了什么吗?我是否需要更多地增加 RCU 和/或 WCU?为什么“Item Count”和“Size”没有增加?

0 投票
2 回答
64 浏览

amazon-dynamodb - Amazon DynamoDB 设置索引策略

我刚开始在 dynamodb 中工作,我想正确设置一些索引。我有一个包含以下字段的对象的表:

id -> 每个对象的唯一 ID
businessType -> 不唯一,您可以拥有多个具有相同业务类型的对象
checkType -> 不唯一,您可以拥有多个具有相同检查类型的对象
...其他字段(不重要)

现在我希望能够在不扫描的情况下高效查询:
1)仅按业务类型查询,获取具有特定业务类型的所有对象
2)按业务类型和检查类型查询,获取具有特定业务类型和检查类型的所有对象
3)仅按 id 查询,获取具有唯一 ID 的对象

我如何有效地设置索引以完成上述任务?
谢谢你。

0 投票
3 回答
3303 浏览

amazon-web-services - 何时以及如何对具有分区键和排序键的 Dynamodb GSI 进行分区?

  1. 何时以及如何对具有分区键和排序键的 Dynamodb GSI 进行分区?
  2. GSI 分区(如表分区)是否有最大大小限制?
  3. 如果是,那么当单基数 GSI(即所有记录中具有相同分区键的 GSI)超过存储限制时会发生什么?