问题标签 [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 投票
1 回答
219 浏览

amazon-web-services - 在 DynamoDB 中查询主表与扫描二级索引

如果我有一个 DynamoDB 表,pk并且sk在哪里pk可以查询给定的表pk并获取给定类别中的所有项目,这与扫描仅包含来自所述类别的项目的稀疏二级索引有何不同?我知道 GSI 读/写单元与主表是分开的,但我想知道这样做是否会带来延迟或其他好处。

0 投票
1 回答
605 浏览

amazon-web-services - 用于过滤的扫描与查询的 DynamoDB 成本(使用 GSI 哪个分区键与整个表相同)用于过滤

我有一个看起来像这样的 DynamoDB 表:

[id]是表的简单主键

[__typename]是对表中所有项目具有相同值的属性

桌子变得很大。我希望能够按范围 datetime过滤数据。我有 2 个可快速实施的选项,但我不确定这是否会在成本方面产生很大影响。

  1. 扫描整个表,然后按日期时间过滤(因为 dynamodb 不允许在扫描前过滤)
  2. 通过固定的 __typename 分区创建 GSI(partitionKey: __typename, sortKey: datetime)和 QUERY,并按日期时间排序键过滤,例如 10/8/10 和 10/11/10 之间。

所以,我的问题是,由于我的分区键对于每个项目都是相同的,因此是一个大分区,我不确定当使用过滤器查询时,它是否仍然会导致读取整个表(类似于 SCAN)或它是否知道根据过滤器有效地开始读取项目?

0 投票
1 回答
434 浏览

amazon-dynamodb - 如何在不指定 gsi 键的情况下创建 dynamo db 项目

我正在使用使用 gsi 的 dynamo db 表,因此我可以通过附加属性进行查询(如果存在)。此属性将在流程中更新,因此所有项目在流程开始时都没有此属性。此属性在添加到项目时设置为 gsi 的主键。

除了指定 gsi 的主键我无法插入新项目之外,一切都按预期工作。如果尚未设置其主键,我希望 gsi 忽略该项目。在指定投影属性时,我认为使用 INCLUDE 选项可以做到这一点。显然我在这里弄错了,但我也不知道如何解决这个问题。

非常感谢任何帮助,而且我将不得不坚持使用 dynamo db,所以包括这个 db 在内的每一个提示都会有很大帮助!

编辑: 为了澄清 - 这些是我的属性:

  • id(主键:必填)
  • 名称(属性)
  • 年份(属性)
  • gsi_id(GSI 主键:可选)

我想添加一个带有以下字段的项目:

  • id(主键:必填)
  • 名称(属性)
  • 年份(属性)

然后添加 gsi_id 字段。

0 投票
1 回答
32 浏览

amazon-web-services - DateTime 作为 DynamoDB 中的字符串,它将如何将 DateTime 属性保持为范围键?

我是 DynamoDB 的新手,在我们的应用程序中,访问模式类似于,显示最近创建的所有订单。因此,我决定将 createdDateTime 属性保留为范围键,同时在 DynamoDB 中进行数据建模。我还看到很多帖子建议将 dateTime 保存为 ISO_8601 格式的字符串。排序将如何在 DynamoDB 中进行。在获取订单列表时,我想要最近的。

0 投票
1 回答
179 浏览

amazon-dynamodb - DynamoDB 交叉选择与分页

我有以下数据库模式,我想找到如何选择 PK_A 和 PK_B 常见的排序键列表的最佳方法:

所以当我通过 PK_A 和 PK_B 进行选择时,它应该只返回 SK_B 和 SK_C?

任何帮助表示赞赏。

0 投票
1 回答
32 浏览

amazon-dynamodb - 查询范围内的 DynamoDb 时间戳数据

我想将我的数据从 DynamoDb 迁移到 Redshift。我不想一次扫描整个表,因为这可能会导致限制。我的表如下:

acountId(哈希键),lastUpdatedTime。

我想我可以在 lastUpdatedTime 上创建 GSI,然后我可以查询,比如给我 day1 到 day5 之间的数据。第二天,我可以在第 6 天到第 7 天之间给我数据。但即使使用 GSI,我的理解是它会扫描整个表,因为我不会提供任何哈希键。我只是有一些时间戳要查询。

0 投票
2 回答
667 浏览

aws-lambda - 有条件地将 Item 放入 DynamoDB

在我的 Lambda 函数中,我只想有条件地将项目放入我的 DynamoDB 中,前提是该值已经不存在。我看到了多个不同的来源,他们使用了这个 ConditionExpression,我不知道这有什么问题。

即使我的二级索引值 (urlPath) 已经存在,put 也将始终成功。

完整代码:

0 投票
1 回答
116 浏览

amazon-dynamodb - 使用 AND 和 WHERE like 语句查询 DynamoDB 表属性

我在 DynamoDB 中有一个包含大约 30 个属性的平面表。我想为我的最终用户/应用程序公开一个 API,以查询这些属性的随机组合。

这在典型的 RDBMS 中是微不足道的。

我们如何在 DynamoDB 中做到这一点?我们可以使用什么样的建模技术和/或关键条件表达式来实现这一点。

0 投票
1 回答
394 浏览

serverless-framework - DynamoDB 和无服务器:未授权执行:dynamodb:Query on resource

我收到此错误:

我对授予表权限感到困惑。在serverless.yml我有:

为什么我会收到这个错误?

有没有resources我没有配置的?我认为问题出在我的那个表的索引上。我是在 AWS 控制台上手动完成的,但我不确定是否也需要在serverless.yml文件中进行配置。

在此处输入图像描述

0 投票
1 回答
200 浏览

amazon-dynamodb - 如何在 DynamoDB 中找到按日期属性排序的实体

给定一个由 id 标识的实体(即用户、设备等),该实体用作表的哈希键,以及一个附加的日期属性(即上次修改、上次登录等)。我希望能够在该表中找到最老的条目。

一个典型的查询是“为我查找修改日期最早的设备”或“为我查找最近登录的用户”。

我无法为这个用例设计一个好的设计——无论是辅助表还是 GSI。