Создание секционирования базы данных для анализа временных рядов

У меня есть 100 000 источников/сенсоров/символов. Из каждого я читаю значение ежедневно.

Я загружаю таблицу базы данных этими ежедневными данными/значениями. Одна строка для каждого значения И символа, это 100 000 строк в день.

Запрос1:

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

Запрос2:

Но я также хочу анализировать тенденции/статистику с течением времени для каждого символа, считывая данные за период до 24 месяцев для каждого символа.

Query2 находится в другом измерении (ось времени), и я не хочу запрашивать несколько разделов (y, m, w, d), оптимизированных для query1.

Какой дизайн вы предлагаете?


person user5889512    schedule 14.04.2016    source источник


Ответы (1)


100 тысяч строк в день - это не так уж много. вы создаете только один раздел на год. но если вы также хотите оптимизировать производительность запросов, работая только с отдельными разделами, предположим, что вы разделяете по месяцам.

кроме того, давайте предположим кластер из трех узлов. поэтому вы, вероятно, захотите создать таблицу с 6 осколками, что даст в общей сложности 6 * 12 осколков в год. если у вас настроена одна реплика — 6*12*2 осколков — выглядит неплохо.

если вы укажете раздел в предложении where, crate автоматически разбудит только эти осколки. но у вас все еще видны все данные.

Кстати: вот удобная ссылка для разделения по времени: https://crate.io/a/generated-columns-in-crate/

person Jodok Batlogg    schedule 14.04.2016