为 DDB 表选择正确的键

问题描述 投票:0回答:1

我有一个带有一些属性的DDB表。主要有

request_id
item_id
item_status
created_timestamp
user_id

数据详情:

一个请求可以有多个item_id。最初,所有 item_id 都具有相同的 item_status,

RECEIVED
。项目的这个
item_status
属性在多个不同的时间通过多个不同的 lambda 不断变化。
item_id
本身就是独一无二的。
request_id
item_status
不是唯一值。

最初发出请求时,我的 lambda 会在表中创建包含所有这些详细信息的记录。

然后还有另一个 lambda 从表中获取记录。现在问题来了。我希望 lambda 从表中获取具有特定

item_status
的所有记录。

对于我的表的结构/模式,我分别选择 request_id 和 item_id 作为分区键和排序键。但我有很多基于

item_status
的疑问。一些示例是获取 item_status 为特定值的 item_ids,获取给定 request_id 和 item_status 的 item_ids。

我想到了一个以 item_status 和 request_id 作为分区和排序键的 GSI。但这种组合并不是独一无二的。 我该如何解决这个问题?

表中还有很多其他字段无法使用。例如,邮政编码。我想不出办法让我的钥匙独一无二。

我可以根据request_id进行获取并在代码中进行过滤。但考虑到表的大小,这太困难了,而且必须在多个 lambda 中多次完成。

amazon-dynamodb dynamodb-queries composite-primary-key amazon-dynamodb-index primary-key-design
1个回答
0
投票

我想到了一个以 item_status 和 request_id 作为分区和排序键的 GSI。但这种组合并不是独一无二的。我该如何解决这个问题?

GSI 属性不需要是唯一的。

© www.soinside.com 2019 - 2024. All rights reserved.