Хранение данных временных рядов, реляционных или других?

Я создаю систему, которая опрашивает устройства на предмет данных по различным показателям, таким как загрузка ЦП, загрузка диска, температура и т. Д. С (вероятно) 5-минутными интервалами с использованием SNMP. Конечная цель - предоставить пользователю системы визуализацию в виде графиков временных рядов.

Я рассматривал использование RRDTool в прошлом, но отверг его, так как хранение захваченных данных на неопределенный срок важно для моего проекта, и мне нужен более высокий уровень и более гибкий доступ к собранным данным. Итак, мой вопрос действительно таков:

Что лучше: реляционная база данных (например, MySQL или PostgreSQL) или нереляционная база данных или база данных NoSQL (например, MongoDB или Redis) с точки зрения производительности при запросе данных для построения графиков.

Реляционная

Для реляционной базы данных я бы использовал таблицу data_instances , f - это частота , на которой запрашиваются данные, и t - это общее количество времени , в течение которого система собирала данные.

Для пользователя, записывающего 10 показателей для 3 устройств каждые 5 минут в течение года, у нас будет чуть менее 5 миллионов записей.

Индексы

Без индексов на fk_to_device и fk_to_metric сканирование этой постоянно расширяющейся таблицы заняло бы слишком много времени. Поэтому индексирование вышеупомянутых полей, а также отметки времени (для создания графиков с локализованными периодами) является обязательным.

Нереляционный (NoSQL)

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

У меня нет опыта работы с NoSQL, и я не знаю, предоставляют ли они какие-либо функции повышения производительности запросов, такие как индексирование, однако предыдущие В параграфе предлагается выполнять большую часть традиционных реляционных запросов в структуре, в которой данные хранятся в NoSQL.

Не определено

Будет ли реляционное решение с правильной индексацией сокращаться до обхода контента в течение года? Или структура подходов NoSQL на основе коллекций (которая соответствует моей ментальной модели хранимых данных) дает заметное преимущество?

177
задан user513951 7 July 2016 в 20:16
поделиться