【发布时间】:2009-07-09 23:24:29
【问题描述】:
我正在设计一个应用程序,它从大约 10 万个测量时间序列数据的传感器接收信息。每个传感器每 15 分钟测量一次单个整数数据点,保存这些值的日志,并每 4 小时将该日志发送到我的应用程序一次。我的应用程序应该保留大约 5 年的历史数据。我每 4 小时收到一次的数据包具有以下结构:
- 序列开始的数据和时间
- 要到达的样本数(为简单起见,假设这是固定的,尽管在实践中可能存在部分)
- 样本序列,每个正好 4 个字节
我的应用程序的主要使用场景是显示特定日期的复合信号图。当我说“复合”信号时,我的意思是,例如,我需要显示将传感器 A 的信号与传感器 B 的信号相加并减去传感器 C 的信号的结果。
我的困境是如何将这个时间序列数据存储在我的数据库中。假设我使用关系数据库,我看到两个选项:
- 将每个样本单独存储在一行中:当我收到信号时,将其分解为多个样本,并分别存储每个样本及其时间戳。假设时间戳可以跨信号标准化。
- 将每 4 小时的信号与其开始时间分开存储。在这种情况下,每当信号到达时,我只需将其作为 BLOB 添加到数据库中。
每个选项都有明显的优缺点,包括存储大小、性能和数据库“之上”代码的复杂性。
我想知道是否有针对此类情况的最佳做法。
非常感谢。
【问题讨论】:
-
所有传感器的时间同步是否完全相同?
-
@KM:正如我所提到的,您可以假设样本时间戳已标准化 - 即假设它们的时间戳完全相同(无论如何都需要进行一些预处理)