如何查看 table 中是否存在具有特定属性的哈希键
How to see if Hash Key exists with particular attribute ever in table
我有一个 table,它同时具有 HashKey 和 RangeKey。
table 包含许多发送到设备的不同消息。
HashKey 是每个设备唯一的 ID,RangeKey 是消息发送时间的时间戳。
消息的属性之一是表示消息类型的 INT。
我要查找的是 table.
中出现过的具有特定消息类型的所有唯一设备 ID
例如,假设有 100 台设备,每台设备有 100 条消息;总共 10 000 条消息。消息类型 7 很少见,在这 10 000 条消息中,只有 50 条消息属于类型 7,而这 50 条消息可能只发送到 20 个不同的设备。
是否有一种简单(快速)的方法来获取每一个曾经有过类型 7 消息的唯一设备 ID?
我知道我可以扫描 table,过滤消息类型,然后跟踪出现在结果中的唯一设备 ID。但这有两个问题,扫描整个 table 很慢,而且相同的唯一设备 ID 会多次出现在结果中,而我只需要知道它是否曾经出现在该消息类型中。 (在这个例子中,这不是什么大问题,但是我想避免在扫描结果中一遍又一遍地检查相同的设备 ID)
对于我没有想到的查询或 GSI,我可以做些什么吗?
一种方法是在整数字段上创建一个 GSI,将消息类型作为 HashKey,将设备 ID 作为范围键。请注意,GSI 中的类型(HashKey、RangeKey)元组不必是唯一的。
然后
要知道设备是否收到特定消息类型,您可以通过 HashKey (MessageType)、Range Key (Device ID) 进行索引搜索。
另请注意,根据记录的数量,结果可能跨越多个页面,因此您应该检索所有页面以了解特定设备 ID 是否曾收到给定类型的消息。
要获取接收到特定消息类型的设备列表,您可以通过 HashKey (MessageType) 进行搜索。上面的分页注释也适用于此,以检索曾经收到给定类型消息的所有唯一设备 ID。
我有一个 table,它同时具有 HashKey 和 RangeKey。
table 包含许多发送到设备的不同消息。
HashKey 是每个设备唯一的 ID,RangeKey 是消息发送时间的时间戳。
消息的属性之一是表示消息类型的 INT。
我要查找的是 table.
中出现过的具有特定消息类型的所有唯一设备 ID例如,假设有 100 台设备,每台设备有 100 条消息;总共 10 000 条消息。消息类型 7 很少见,在这 10 000 条消息中,只有 50 条消息属于类型 7,而这 50 条消息可能只发送到 20 个不同的设备。
是否有一种简单(快速)的方法来获取每一个曾经有过类型 7 消息的唯一设备 ID?
我知道我可以扫描 table,过滤消息类型,然后跟踪出现在结果中的唯一设备 ID。但这有两个问题,扫描整个 table 很慢,而且相同的唯一设备 ID 会多次出现在结果中,而我只需要知道它是否曾经出现在该消息类型中。 (在这个例子中,这不是什么大问题,但是我想避免在扫描结果中一遍又一遍地检查相同的设备 ID)
对于我没有想到的查询或 GSI,我可以做些什么吗?
一种方法是在整数字段上创建一个 GSI,将消息类型作为 HashKey,将设备 ID 作为范围键。请注意,GSI 中的类型(HashKey、RangeKey)元组不必是唯一的。
然后
要知道设备是否收到特定消息类型,您可以通过 HashKey (MessageType)、Range Key (Device ID) 进行索引搜索。 另请注意,根据记录的数量,结果可能跨越多个页面,因此您应该检索所有页面以了解特定设备 ID 是否曾收到给定类型的消息。
要获取接收到特定消息类型的设备列表,您可以通过 HashKey (MessageType) 进行搜索。上面的分页注释也适用于此,以检索曾经收到给定类型消息的所有唯一设备 ID。