Для сравнения, в Axibase Time-Series Database вы можете сохранить температуру как метрику и идентификатор датчика как имя объекта. Схема ATSD имеет понятие сущности, которое является именем системы, для которой собираются данные. Преимуществом является более компактное хранилище и возможность определять теги для самих объектов, например, местоположение датчика, тип датчика и т. Д. Таким образом, вы можете фильтровать и группировать результаты не только с помощью идентификатора датчика, но и с помощью тегов датчиков.
Чтобы привести вам пример, в этом блоге статья 0601911 обозначает идентификатор объекта - который является идентификатором станции EPA. Эта станция собирает несколько экологических показателей и в то же время описывается несколькими тегами в базе данных: http://axibase.com/environmental-monitoring-using-big-data/.
Суть в том, что вам не нужно создавать вторую базу данных, обычно реляционную, для хранения расширенной информации о датчиках, серверах и т. Д. Для расширенной отчетности.
ОБНОВЛЕНИЕ 1: Пример команды сети:
series e:sensor-001 d:2015-08-03T00:00:00Z m:temperature=42.2 m:humidity=72 m:precipitation=44.3
Метки, которые описывают датчик-001, такие как местоположение, тип и т.д. хранятся отдельно, сводя к минимуму хранения след и ускорения запросов.Если вы собираете метрики энергии/мощности, вам часто приходится указывать атрибуты для таких серий, как «Статус», потому что данные могут не быть чистыми/проверенными. Для этой цели вы можете использовать серийные теги.
series e:sensor-001 d:2015-08-03T00:00:00Z m:temperature=42.2 ... t:status=Provisional
Благодарим вас за ответ! Я добавил более подробную информацию о том, что мне нужно. Наиболее часто используемыми запросами будут _get все значения одного датчика для одного типа_, а иногда (редко) _get все температуры> x_, например –
Вы хотите такие запросы, которые сильно подразумевают, что все идет в одном измерении: 'SELECT * FROM metrics WHERE sensor_type = 'foo'', а также 'SELECT * FROM metrics WHERE temperature> 100'. Если вы разделите каждый датчик на индивидуальное измерение, первое легко, но второе невозможно. Обратите внимание, что второй запрос будет очень дорогим, так как вы фильтруете значение неиндексированного поля, но так как это нечасто, это должно быть хорошо. Ограничение запроса конкретным временным диапазоном приведет к снижению производительности. – beckettsean
OK! Большое спасибо за вашу помощь! –