创建用于分析时间序列的数据库分区



我有100000个源/传感器/符号。我每天都会从每一个值中读取一个值。

我用这些日常数据/值加载一个数据库表。每个值AND符号对应一行,即每天100000行。

查询1:

由于我想分析所有符号的每日数据,我按年、月、周、日对数据库进行分区。

查询2:

但我也想通过读取每个符号24个月前的数据来分析每个符号随时间的趋势/统计数据。

Query2沿着另一个维度(时间轴),我不想在为query1优化的几个分区(y,m,w,d)上进行查询。

你建议什么样的设计?

每天10万行并不算太多。一年只创建一个分区。但是,如果您还想通过只处理单个分区来优化查询性能,那么让我们假设您是按月分区的。

此外,让我们假设一个三节点集群。因此,您可能想要创建一个包含6个碎片的表,这样每年总共会产生6*12个碎片。如果你配置了一个副本——6*12*2个碎片——这看起来不错。

如果在where子句中指定分区,那么crate将自动只唤醒这些碎片。但您仍然可以看到整个数据。

BTW:这里有一个按时间划分的方便链接:https://crate.io/a/generated-columns-in-crate/

最新更新