Я хочу собирать данные временных рядов и хранить их в магазине snappydata. Я буду собирать миллионы строк данных, и я хочу делать запросы через интервалы времени/диапазоны.Какие столбцы для PARTITION BY в таблице временного ряда?
Вот пример запроса я хочу сделать:
select avg(value)
from example_timeseries_table
where time >= :startDate and time < :endDate;
Итак, я имею в виду, что я хочу иметь PARTITION BY COLUMN на время столбцов, а не классический столбец первичного ключа. В других технологиях, с которыми я знаком, например, с 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 колонны и PARTITION BY COLUMN на всех из них, как хорошо, а затем сделать запрос, как это сосредоточиться на запрос конкретного многораздельной узла ?:
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;