Я делаю API для больших данных. В принципе, каждую минуту я получаю много ценностей. Это некоторые измерения электрической энергии. Это может быть число с плавающей точкой (802.6522) или массив переменной длины, но значение в массиве находится в интервале <0; 1> [1,0,0,0,0,1, …]. Каждую минуту я получаю 23 000 строк!
Я не знаю, какова лучшая структура моей таблицы базы данных.
Первая версия:
id (int) | created_at (timestamp)| value (text) | measurand_id (int) | is_array (tinyint)
каждое значение конвертируется в json, и если это массив, столбец is_array равен 1, иначе 0. Но этот метод занимает много памяти в БД. Я построил это потому, что — каждый день я объединяю значения для одной измеряемой величины и сохраняю как один массив в другую таблицу (одна запись в первой таблице удаляется):
id (int) | created_at (timestamp) | measurand_id (int) | value_for_one_day( text)
value_for_one_day is pack("d*", ...[802.2555, 803.2555, ...]
Я думаю о создании двух таблиц, одна для данных с плавающей запятой, вторая для двоичной. Но у меня все еще плохое предчувствие. Решение должно быть быстрым и эффективным.
Итак, есть ли кто-нибудь, кто обладает навыками сохранения временных рядов в MySQL? Большое спасибо, и извините за мой английский.
Задача ещё не решена.
Других решений пока нет …