【发布时间】:2018-06-28 17:49:26
【问题描述】:
我想知道是否有人知道在 DynamoDB 中存储不同时间分辨率的时间序列数据的好方法。
例如,我的设备每 30 秒向 DynamoDB 发送一次数据。各个读数存储在一个表中,其中唯一的设备 ID 作为哈希键,时间戳作为范围键。
我想使用 lambda 以不同的时间步长(30 分钟、1 小时、1 天等)聚合这些数据,并将聚合结果存储在 DynamoDB 中。然后,我希望能够获取任何特定时间范围内的任何分辨率数据,例如过去 24 小时的 48 个 30 分钟聚合,或者去年这个月的每个每日聚合。
我不确定每个新分辨率是否应该有自己的表,data_30min、data_1hr 等,或者是否更好的方法是通过将分辨率与设备 ID 组合并存储所有聚合来制作复合哈希键单个表中的数据。
例如,如果设备 ID 为 abc123,则所有 30 分钟数据都可以使用哈希键 abc123_30m 存储,而 1 小时数据可以使用 HK abc123_1h 存储,并且每个数据仍将使用时间戳作为范围键。
这些方法各有哪些优缺点?有没有我想不出的解决方案在这种情况下有用?
提前致谢。
【问题讨论】:
标签: amazon-dynamodb