我想收集時間序列數據並將其存儲在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;