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

amazon-dynamodb - 如何使用 GSI 在 DynamoDB 中查询超过 2 个属性?

我有一个用例,我必须在 dynamoDB 表上查询超过 2 个属性。据我所知,我们只能使用 GSI 在 DDB 表上查询最多 2 个属性(分区键、排序键)。有什么东西可以让我们使用 GSI 查询多个属性(比如 invoiceId、clientId、invoiceStatus)。

0 投票
1 回答
273 浏览

amazon-web-services - AWS DynamoDB GSI 查询所有分区

我在 AWS DynamoDB 文档中看到以下句子:全局二级索引让您可以跨所有分区查询整个表。我想知道这到底意味着什么。我认为这意味着您可以>在 KeyConditionExpression 中使用例如哈希键,但显然您不能。

0 投票
1 回答
30 浏览

amazon-web-services - 有没有比使用两个全局二级索引 (GSI) 更好的方法来模拟这种访问模式?

我正在尝试找出应用程序的数据模型和访问模式,以跟踪不同领域(牧场)之间的动物运动。有如下运动记录:

对于一个特定的领域,例如 FIELD#A,我想知道进出该领域的所有运动、运动的日期和动物的数量。结果应如下所示:

可能的解决方案和尝试:

  1. 带有PK=FROM, SK=TO. 如果我用 查询 GSI PK=FIELD#A,这只会给出图片的一半,即来自 FIELD#A的运动。我无法获取到 的 FIELD#A动作。

  2. 一种复合属性,例如在 GSI 中FIELD#A#FIELD#B用作。PK遇到与尝试 1 相同的问题。

  3. 两个 GSI。GSI1 有PK=FROM,GSI2 有PK=TO。我可以查询 GSI1PK=FIELD#A并进行一些后处理 ( groupby, count) 以获得部分结果。然后我可以查询 GSI2PK=FIELD#A并进行后处理,得到其余的结果。这看起来可行,但需要两个 GSI 和两个查询。我不能重载一个 GSI,因为正在使用的两列都来自同一个项目。

  4. 我宁愿避免扫描整个表格并过滤结果的某种组合,因为整个表格中可能有 50,000 多个项目。

我可以看到如何使用两个 GSI 来做到这一点,但最有效的方法是什么?

0 投票
0 回答
214 浏览

javascript - dynamodb 中每个项目的唯一 ID

我正在使用dynamodb,我正在尝试为我table 中创建的每个项目设置不同的唯一 ( id ) 。

在寻找解决方案时,我找到了“原子计数器”解决方案,并且在 aws 的文档中这里有一个示例增加原子计数器),但是 id 所做的只是更新项目不是创建 项目添加id .

我怎样才能做到这一点?

0 投票
1 回答
137 浏览

amazon-web-services - 我们可以更新获取记录并更新 DynamoDB 中的主键属性吗?

假设我们有一条主键:A1 和 GSI(哈希键:B1 和 RangeKey:C1)的 DynamoDB 记录。

我们在数据库中有以下记录:

现在,我想用主键 A1 查询一条记录,value1并将相同的 A1 属性更新为value7.

如果我们能做到这一点,对其他分区有什么影响。如果我们这样做,我们会遇到任何问题吗?

这对桌子有影响吗?鉴于我们的经营规模很大。

0 投票
2 回答
602 浏览

amazon-dynamodb - 查询 DynamoDB 表以获取标志值为 true 的所有项目

我有一个 DDB 表,其中哈希键为 id(字符串),排序键为标志(布尔值)。我想获取表中标志值为 true 的所有项目。我没有设置任何 GSI 或 LSI,但如果需要,我可以创建它们。

架构

0 投票
1 回答
36 浏览

amazon-dynamodb - 用于检索公共和私人聊天消息的 DynamoDB 单一查询

在选择 DynamoDB 分区键和排序键以检索聊天中的所有公共和私人消息时需要一些建议。

在同一个聊天室中,用户可以向特定的人发送公共消息和私人消息。

DynamoDB 模型:

我在选择将在单个查询中返回这两种类型的消息的主键时遇到困难。

0 投票
1 回答
969 浏览

amazon-web-services - AWS DynamoDB 多租户表架构

提前致谢!

我想为多个租户创建一个使用 AWS 的 Saas 解决方案,每个租户都有多个用户。每个用户(例如:Admin、Manager、Supervisor)都必须上传他们的部门用户数据(例如:姓名、SurName、电子邮件、电话等,这些用户属性一起由 HashKey 标识)

简而言之,我必须存储多个公司多个部门的所有用户信息,包括每个用户 HashKey

如何使用 DynamoDB 做到这一点?有人可以帮助创建表模式吗?

最常用的查询模式是:租户将提供 HashKey,并希望通过提供 HashKey 和一些字段从中获取所有用户信息或部分用户信息。

问候,

0 投票
3 回答
87 浏览

amazon-dynamodb - 我是否应该将此字段设为 GSI、常规属性或其他内容以便进行高效查询?

对于我的 DynamoDB 表,我目前有这样的架构:

分区键 - 唯一 ID,因此每个项目都有一个完全唯一的 ID

排序键 - 无

属性 - 包含一些值的 JSON

现在,我想添加一个新字段,每个项目都需要该字段并指示特定区域(例如 NA-1、NA-2、JP-1 等),并且我希望能够对只是这个领域。例如,我可能想对我的表执行查询以检索区域为 NA-1 的所有项目。

我的问题是我应该将此字段设为 GSI 吗?我是 DynamoDB 的新手,所以我一直在在线研究,当该字段可能仅存在于表中的选定项目时,似乎首选使用 GSI,但每个项目都需要我的字段,所以我认为使用GSI 不是一种选择。

我见过的另一个可能的选项是执行扫描操作并使用过滤器表达式,但据我所见,这是一项代价高昂的操作,因为 DynamoDB 必须逐部分查看整个表,然后进行过滤。我的桌子现在不是很大,但将来可能会变得很大,所以我想要一个可扩展的选项

TL;DR 有没有办法可以在我的表中添加一个强制性的 regionID 字段并对其执行有效的查询?我应该考虑哪些好的选择?

0 投票
1 回答
715 浏览

amazon-dynamodb - DynamoDB:过滤和排序相同的字段?

我有一个如下所示的本地索引表。

如何进行类似 startDate < InvoiceDate < endDate 的查询并按 InvoiceDateLocalIndex 降序对结果进行排序?

据我所知,要对我需要使用 InvoiceDateLocalIndex 的结果进行排序。但如果我使用过,我会收到错误“过滤器表达式只能包含非主键属性:主键属性:InvoiceDate”