PostgreSQL中的时间序列预测

时间:2018-07-23 10:39:10

标签: postgresql time-series

我是PostgreSQL和数据库系统的新手,我目前正在尝试创建一个数据库来存储观测值以及过去某个时间序列中所做的所有预测。

我已经为观察到的值建立了一个表(实际上是一个视图),其中的行基本上像这样: (时间,对象,价值)

现在,我要存储预测,这意味着每次软件预测在接下来的N个时间步中预测了什么,因为软件具有不同的预测类型,所以N是可变的。

我考虑过以下多种解决方案:

  1. 使用max(N)= 240列将每个预测存储为一行,即(时间,对象,值1,值2,...,值240)。
  2. 将每个预测存储为一行,并将预测值存储为二进制JSON,即(时间,对象,JSONB预测)。
  3. 将每个预测存储为一行,其中一列指定以小时为单位的预测延迟,即 (时间,对象,延迟,值)。

当我将检索和计算预测的摘要值时,我不知道这些选择中的每一个都会如何影响性能。我想做的典型事情是检索预测的性能有一定的延迟,即当我们预测未来x天时,预测误差有多大,而我需要相当快地执行此查询,以将其显示在仪表板。

您认为哪种选择是最好的?还是您还有其他想法?

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果没有有关所收集数据访问模式的进一步信息,我强烈建议您使用jsonb

每个时间步使用一列会导致系统目录和统计信息膨胀。

如果您需要根据预测值进行过滤,那么您也不想维护240个索引。

如果您不需要在WHERE条件内使用这些值,则可以使用json代替jsonb