Для проекта мне приходится иметь дело со многими датчиками данных временных рядов.
У меня есть промышленная машина, которая производит некоторые артефакты. Для каждой работы (максимум 20 минут по времени) датчики регистрируют давление и температуру масла и некоторые другие вибрационные данные (очень высокие частоты). Все эти временные ряды записываются в файл .csv, по одному для каждого датчика и для каждой работы. Каждый файл называется:
yyyy_mm_dd_hh_mm_ss_sensorname.csv
и содержит только последовательность действительных чисел.
Я должен как-то хранить данные такого рода. Я тестирую многие решения, реляционные и нет, такие как MySQL, Cassandra, Mongo и т. Д.
В частности, для Кассандры и Монго я использую Интеграция данных Pentaho в качестве инструмента ETL.
Я разработал общую схему для обеих БД (уникальное семейство / коллекция столбцов):
---------------------------------------
id | value | timestamp | sensor | order
---------------------------------------
Проблема в том, что я вынужден извлекать временную метку и информацию о датчиках из имен файлов, и мне приходится применять множество преобразований для получения желаемых форматов.
Это замедляет всю мою работу: загрузка одной работы (только с одной высокочастотной метрикой, в общей сложности 3M строк, более или менее) занимает 3 минуты для MongoDB, 8 минут для Кассандры.
Я использую обе БД на одном узле (на данный момент) с 16 ГБ ОЗУ и 15-ядерным процессором.
Я уверен, что неправильно делаю преобразование, поэтому вопрос: как я могу ускорить процесс?
Вот мой файл KTR: https://imgur.com/a/UZu4kYv (недостаточно репов для публикации изображений)