问题标签 [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 回答
1805 浏览

amazon-web-services - AWS DynamoDb:按需索引的定价

我需要secondary index在我的DynamoDb桌子上创建一个。对于此表,我已将读/写容量模式设置为On-demand.

要根据表中的特定列查询数据,我想创建一个索引。(此列是排序键,因此我将无法仅在此列上执行查询)

当我index通过 DynamoDB 控制台创建时,默认情况下此索引的读取容量为"on-demand".

我想确认该指数的定价方式。

我指的是这个页面 - https://aws.amazon.com/dynamodb/pricing/

它会基于此索引上的读写操作数吗?我假设不会有固定成本(如预置容量)。

0 投票
0 回答
436 浏览

nosql - 如何将属性标记为 DynamoDBRangeKey 和 DynamoDBIndexHashKey?

我有一个也是 GSI 的范围键字段。有人知道如何用 DynamoDBMapper 注释这个属性吗?

仅供参考,我尝试将@DynamoDBRangeKey 和@DynamoDBIndexHashKey 注释都放在下面,它在查询数据时给出了“不存在范围键值”错误。

0 投票
1 回答
766 浏览

java - 如何使用 AWS Java SDK 按降序从 DynamoDb 获取项目?

我在 AWS DynamoDB 中有一个名为 accountantHistoric 的表。它有一个主分区键 (id) 和一个主排序键 (tenant_id)。我还创建了另一个索引,称为“ExpirationDate”。该索引的排序键是“expirationDate”(字符串)属性。我想要的是:获取基于storeId的itens(该字段不是键)和基于“expirationDate”(从最新到最旧)降序排列的tenant_id。我也在做分页。

我正在尝试使用下面的代码,但它没有按降序返回。

我必须改变什么?

谢谢你们!

0 投票
1 回答
69 浏览

amazon-dynamodb - 使用硬编码散列键但使用不同范围键输入的行

我正在尝试创建一个汽车预订应用程序。用户可以预订位于许多办公室附近的汽车。

想知道我是否可以将所有预订放入一个硬编码的哈希键“预订”中,但具有唯一的范围键。

我想参考所有预订,以便“超级管理员”可以进入并查看所有内容。预订需要存储 10 年,所以我想我最终会在相同的 hashkey 下拥有大约 5000 万条记录,但具有不同的唯一 Range Key。搜索需要基于三个不同的日期标准,本地二级索引 1-3。

思考这样的事情(仅包括特定的“实体”)

这是应该怎么做的吗?这会导致热点/热点分区吗?感谢任何提示。

0 投票
0 回答
724 浏览

c# - QueryAsync DynamoDB with Index (Partition Key and Short Key) .Net Core

使用DynamoDB. 他们有ScanAsyncQueryAsync。我使用没有问题,ScanAsync但我读到 Query 的性能更好,所以我想QueryAsync改用。我使用分区和快捷键设置索引。但我只能找到使用分区键查询的方法——不能同时使用两者。

有人可以帮我吗?

例如,我有一个名为“Slot”的表,其中包含:Id、StaffId、WorkDate ...我创建的索引是 StaffId 是分区键,WorkDate 是短键,索引名为“StaffId-WorkDate-index”

在此处输入图像描述

这是我能找到但只能用于“StaffId-index”的唯一方法:

我希望我可以使用“StaffId-WorkDate-index”查询。谢谢enter code here

0 投票
1 回答
735 浏览

amazon-dynamodb - dynamodb 索引不返回所有数据

我有一个表storedgames,其中包含 2092 个项目。

桌子

它还在该表上有一个索引,其中还列出了 2092 个项目。

用户索引

当我获取数据时,我使用索引来获取一个特定用户的项目。

但是,上面的代码不会返回所有项目。它只找到 42 个。对于今天的项目,只有 1 个命中。当我直接在 AWS 网页上查看时,我实际上找到了更多今天的项目。

表格中网页上的更多项目

即使我使用索引执行此操作,它也会找到更多记录。

网页上使用索引的更多项目

当我忽略一天的过滤时,我实际上找到了 130 多个项目,而当我忽略一天过滤器时,我的 javascript 代码仅返回 42 个项目。

130 对 42 项


所以我的问题是,当我以编程方式调用它时,为什么我的索引数据似乎不完整?

0 投票
1 回答
146 浏览

amazon-web-services - 如何根据列表类型属性从 DynamoDB 表中获取记录,无需扫描操作

我有以下情况,类似于这个 DynamoDB 表定义:

除了定义的属性之外的每条记录都包含附加属性、具有少量属性的地图类型。

目前,我面临一种情况,我需要根据此映射中的一个属性检索记录,该属性是列表类型(准确地说,我需要查找在此列表中具有某些值的记录)。

我需要一个如何解决这个问题的建议,到目前为止,我已经阅读了有关全局二级索引的信息,但我不确定我的情况是否适用于它们,因为我需要基于列表类型进行过滤的属性。

我正在使用 C# 语言来获取记录,但我的问题很可能需要更改表定义。可能值得一提的是,我试图避免全表扫描操作。

更新:

该列表内的数据可以理解为“标签”。这意味着该表中的多个文档可能具有相同的标签。

我有一种情况,我必须过滤掉所有具有此特定标签的文档作为此列表中的元素之一

0 投票
1 回答
36 浏览

amazon-dynamodb - 如何使用 Amazon DynamoDB 对 1 对 N 关系进行建模以满足单次读取和写入?

我正在尝试从标准 RDBMS 背景中学习正确的 DynamoDB 建模。

我试图非规范化的关系数据库如下:

双因素细节

  • 标识 (pk)
  • 地位
  • 电话号码 ID (fk)

电话号码

  • 标识 (pk)
  • 电话号码
  • 类型
  • 授权尝试

日志

  • 标识 (pk)
  • TwoFactorDetailId (fk)
  • 事件类型
  • 创建时间

我的单表架构如下:

https://i.stack.imgur.com/8p3WY.png

如您所见,许多TwoFactorDetail实体可以使用相同的PhoneNumber 。

考虑这两种读/写模式:

  • 读取TwoFactorDetail元数据,包括电话号码、电话号码类型和 TwoFactorDetail.Id 尝试
  • 通过电话号码更新PhoneNumber尝试

正如您在模型中看到的那样,我使用一种已知方法来满足读取模式,其中链接到TwoFactorDetail的PhoneNumber实体成为该分区中的一个项目。这意味着我可以使用以下条件读取特定TwoFactorDetail.Id的所有详细信息,只需往返一次到数据库: PK = "DET#12345" AND (SK = "DET" OR SK Begins with "PHO")

现在我的问题是如何使PhoneNumber元数据在分区之间保持一致。

IE。因为电话号码可以在许多两个因素详细信息实体之间共享,并且我想在每个分区中复制这些数据以方便阅读,所以我不确定如何以智能方式更新与电话号码匹配的所有项目,以便我使用 less请求的数量。

0 投票
1 回答
313 浏览

amazon-web-services - AWS DynamoDB 查询:查找匹配记录的计数

我有一个 DynamoDB 表。我在“Id”字段上有一个索引。

我还有其他字段 - 状态、时间戳等,但我没有这些其他字段的索引。

状态可以是“在线”、“离线”、“进行中”等。

我想根据“status”和“Id”字段获取记录数。

用户将传递 Id 字段,查询需要根据状态字段返回计数。例如

“在线”:20

“离线”:30

“进行中”:40

查询工作正常。

据我了解,DynamoDb 查询输出的最大大小为 1 MB。此限制在将任何 FilterExpression 应用于结果之前应用。

由于表中的记录数很大(大约 100k),我需要通过传递“独占开始键”参数一次又一次地执行查询。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.Pagination

事实上,我需要在循环中运行多个查询(每个状态值一个),以根据“状态”字段计算计数。

有没有有效的方法来检索这些计数?

我也在考虑将索引扩展到状态字段。因此它将消除应用过滤器表达式的需要。

0 投票
0 回答
343 浏览

python - AWS 更新项目错误 - UpdateItem 操作:提供的关键元素与架构不匹配

我正在尝试更新 AWS 中具有两个键的 dynamodb 表。一列“col1”是哈希键,列“col2”是范围键。它没有 GSI。

除了 col1 和 col2 之外,还有两列 col3 和 col4 不是索引但它们有一个值。

所有 4 列都是 String 类型,包括索引。

我正在尝试使用以下代码创建一个新列 col5,我收到此错误消息“调用 UpdateItem 操作时发生错误(ValidationException):提供的关键元素与架构不匹配”