PostgreSQL/TimescaleDB:如何只保存相对于最后一个类似行有delta的行



我有一个表,存储了一般形式的(time, value1, value2, value3)的行,其中每个value在很长一段时间内通常保持不变(但两者不一定同时改变(。我不想浪费空间来存放许多行没有零钱的东西。

我已经看到TimescaleDB查询选择列值从上一行更改的行,但这依赖于一个窗口函数,在该函数中,整个表已经包含了所有未更改的行。有某种表约束,这样插入就可以简单地ON CONFLICT DO NOTHING,这不是更好吗?

我还考虑了结构(time, kind, value),因为这可能会使编写所请求的约束更容易,因为不需要处理";只有一个值改变";,但我不确定。

如果您的主要目标是节省空间,我只会对存储原始数据的空间开销进行基准测试,并确保启用压缩。如果您有相同值的长行程,那么行程长度编码应该很好地压缩

https://docs.timescale.com/latest/using-timescaledb/compression

我只知道部分答案,但我想我会给出这样的看法。

(此处为TImescaleDB人员(

最新更新