Как я могу обрабатывать большое количество данных LOGFILE для отображения в динамических диаграммах?
-
29-09-2019 - |
Вопрос
У меня много данных логиков, которые я хочу отображать динамические графики, из-за в основном произвольных периодов времени, необязательно отфильтрованных или агрегируемых различными столбцами (которые я мог бы прегенерировать). Я задаюсь вопросом о лучшем способе хранения данных в базе данных и получить доступ к ней для отображения диаграмм, когда:
- Время разрешения должно быть переменным от одной секунды до года
- Есть записи, которые охватывают несколько «ведра времени», например, соединение могло быть открыто в течение нескольких дней, и я хочу сосчитать и отображать пользователя на каждый час, который она была подключена, а не только в часе «слот» было создано соединение. или закончен
Существуют ли лучшие практики или инструменты / плагины для рельсов, которые помогают обрабатывать этот вид и объем данных? Есть ли возможно, что двигатели базы данных специально адаптированы к этому или имеющие полезные функции (например, индексы CouchDB)?
РЕДАКТИРОВАТЬ: Я ищу масштабируемый Способ обрабатывать эти данные и шаблон доступа. Вещи, которые мы рассмотрели: запустите запрос для каждого ведра, слиться в приложении - наверное, слишком медленно. Группа по временной метку / гранулярности - не учитывает соединения правильно. Предварительная обработка данных в строки наименьшими зернистостью и переубий по запросу -, вероятно, лучший способ.
Решение 2
То, как я решил его в конце, должен был предварительно обработать данные в поминутые ведра, поэтому есть один ряд для каждого события и минуты. Это позволяет легко и достаточно быстро, чтобы выбрать и дает правильные результаты. Чтобы получить разную гранулярность, вы можете делать целочисленные арифметики на столбцах метки времени - выберите ABS (Timestamp / Factor) * Factor и Group по ABS (Timestamp / Factor) * Factor.
Другие советы
Я думаю, что вы можете использовать MySQL Timestamps для этого.