什么是 TimesclaleDB 中的空间分区和维度

sac*_*kur 2 postgresql timescaledb

我是时间刻度数据库的新手。我正在学习块以及如何根据时间创建块。但是还有另一个时间/空间分块让我很困惑。请帮助我解决以下问题。

  1. 什么是时间尺度数据库中的维度?
  2. 什么是空间分块及其工作原理?

提前致谢。

k_r*_*rus 5

TimescaleDB 中的维度与列相关联。每个超表至少需要定义一个时间维度,即时间序列的时间列。然后将超表划分为块,其中每个块包含时间维度的时间间隔的数据。结果,所有新数据通常都到达 latet 块,而其他块包含旧数据。

然后,可以在其他列上定义空间维度,例如device列或/和location列。没有为空间维度定义区间,而是定义了多个分区。所以对于相同的时间间隔,会创建几个chunk,相当于partition的数量。数据通过散列函数分布在空间维度的值上。例如,如果为device列上的空间维度定义了 3 个分区,并且数据中存在 12 个不同的设备值,则每个空间块将包含 4 个不同的值,散列函数将这些值均匀分布。

当数据存储在多个磁盘上时,空间维度特别适用于并行 I/O。另一个场景是多节点,即 hypertable 的分布式版本(beta 功能,将在 2.0 中发布)。

当空间分区也有帮助时,有一些复杂的用例。

您可以在add_dimension docs有关空间分区的云知识库中阅读更多信息

文档中的注释:

支持一个以上的额外维度目前是实验性的。