2016-08-25 2 views
1

Я хочу собирать данные временных рядов и хранить их в магазине 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; 

ответ

1

Когда один раздел содержит все данные, один процессор процессов, что данные, и вы потеряете распределенную обработку. Фактически, если у вас есть данные временных рядов, большую часть времени вы будете запрашивать узел, который содержит последний временной диапазон, а остальная часть вычислительной мощности находится в режиме ожидания. Если вы ожидаете одновременных запросов на разных временных диапазонах, это может быть хорошо, но это не так в большинстве случаев.

Предполагая, что вы работаете с таблицами строк, другим способом ускорения ваших запросов будет создание индекса в вашем столбце времени.

SnappyData поддерживает разделение разделов на таблицы строк. Если вы решите пойти так, как вы упомянули здесь, обрезка разделов столбца timestamp должна работать.