【发布时间】:2016-10-13 02:20:10
【问题描述】:
假设我们正在为 1000 台设备存储数据,这些设备每 10 秒收集一种类型的数据。每个设备可以位于不同的时区。快速查询以可视化数据的能力很重要。我们可以向系统提出如下问题:
1. For a specific device, I want the last 7 days of data grouped by day totals for my local timezone.
2. For a specific device, I want the last year's data grouped by month totals for my local timezone.
以 UTC 格式存储所有数据似乎是最简洁的方法,但是在要求数据的本地分组时会变得很棘手。例如,每个时区的日期分组具有不同的偏移量。因此,如果我们要存储在日、月、年“桶”中,它们都将相对于 UTC 进行分组,这对于询问 UTC 本身以外的时区问题没有用处。
如果我们将数据按分钟和小时“桶”分组(忽略相差不到一小时的时区,例如 IST +5:30),我们可以使用小时“桶”来构建答案以上问题。对于问题 2,将有 12 个分组,每个分组最多包含 744 小时“桶”。
分钟和小时的方法(忽略相差不到一小时的时区,例如 IST +5:30)“桶”是否看起来像一个不错的设计?有没有人用不同的建议设计了类似的东西?
【问题讨论】:
-
提供一个字段来存储每个设备的时区,例如Java 时区 ID,并支持基于本地日历的日历聚合 - 这种方法应该最适合上述场景。我会看看时间序列数据库。
标签: database time-series