为什么 AWS 建议使用时间戳而不是设备 ID 作为 DynamoDB 中的分区键?

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

在教程中https://docs.aws.amazon.com/iot/latest/developerguide/iot-ddb-rule.html建议使用样本记录时间作为分区键而不是设备ID。

然而,查看https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/,设备 ID 似乎更有意义:“使用高基数属性。这些属性对于每个项目都有不同的值,例如 emailid、employee_no、customerid、sessionid、orderid 等。”

它还说:“在大多数情况下,具有相同分区键的所有项目都存储在一个集合中,我们将其定义为具有相同分区键但不同排序键的一组项目。”因此,当使用时间戳作为分区键时,来自同一设备的消息将在不同的集合之间拆分。这有什么意义吗?

我知道分区键必须是唯一的,因此从这个意义上说,使用设备 ID 不起作用,但是当将分区键与排序键组合时,这种唯一性要求不适用。

amazon-dynamodb
1个回答
0
投票

你是对的,使用 deviceId 作为分区键更有意义,否则你存储的数据基本上是无用的。

按 device_id 分组数据意味着您可以发出请求,例如向我提供给定设备的最新输出,或向我提供过去 30 天的所有设备输出。

使用时间戳作为分区键不会给你带来这些,它只能提供:给我在这一秒/微秒或任何时间戳的粒度中发出指标的所有设备。

设备ID 采样时间
123 2023-01-01T00:00:000Z
123 2023-01-02T00:00:000Z
123 2023-01-03T00:00:000Z

我建议在教程底部留下反馈,这样可以将其交给正确的团队。

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