我想收集时间序列数据并将其存储在snappydata存储中。我将收集数百万行数据,并且希望跨时间片/范围进行查询。PARTITION BY在时间序列表中的列是什么?
下面是一个例子查询我想做的事:
select avg(value)
from example_timeseries_table
where time >= :startDate and time < :endDate;
所以,我想,我想有时间列PARTITION BY列,而不是经典的主键列。在我熟悉的其他技术(如Cassandra DB)中,使用分区键中的时间列将直接指向分区,并允许在单个节点中提取时间片的数据,而不是跨越多个分布式节点。
为了保持高性能,我假设我需要在此表中按列“时间”进行分区。
example_timeseries_table
------------------------
id int not nullable,
value varchar(128) not nullable,
time timestamp not nullable
PERSISTENT ASYNCHRONOUS
PARTITION BY COLUMN time
这是正确的列进行分区上高效,时间片查询或做我需要做更喜欢列:YEAR_NUM,month_num,DAY_NUM,hour_num列和分区柱上所有的人都为好,然后做这样一个查询来查询集中到一个特定的分区节点?:
select avg(value)
from example_table
where year_num = 2016
and month_num= 1
and day_num = 4
and hour_num = 11
and time >= :startDate and time < :endDate;