2015-07-20 3 views
3

Я новичок в TSDB, и у меня есть множество датчиков температуры для хранения в моей базе данных с одной точкой в ​​секунду. Лучше ли использовать одну уникальную метрику на датчик или только одну метрику (например, )) с различными метками в зависимости от датчика?Базы данных временных рядов - Метрики против тегов

Я искал в Интернете, что является лучшей практикой, но я не нашел хороший ответ ...

Спасибо! :-)

Edit: у меня будет 8 типов измерений (температуры, заданного значения, энергия, мощность, ...) от 2500 источников

ответ

5

Если вы храните ваши данные в InfluxDB , Я бы рекомендовал хранить все показатели в одном измерении и использовать теги, чтобы отличать источники, а не создавать измерения для каждого источника. Причина состоит в том, что вы можете тривиально объединить или разложить показатели с помощью тегов в рамках измерения, но в новейшем InfluxDB невозможно объединить или объединить измерения.

В конечном итоге решение зависит как от вашего выбора TSDB, так и от запросов, которые вам больше всего нравятся.

+0

Благодарим вас за ответ! Я добавил более подробную информацию о том, что мне нужно. Наиболее часто используемыми запросами будут _get все значения одного датчика для одного типа_, а иногда (редко) _get все температуры> x_, например –

+1

Вы хотите такие запросы, которые сильно подразумевают, что все идет в одном измерении: 'SELECT * FROM metrics WHERE sensor_type = 'foo'', а также 'SELECT * FROM metrics WHERE temperature> 100'. Если вы разделите каждый датчик на индивидуальное измерение, первое легко, но второе невозможно. Обратите внимание, что второй запрос будет очень дорогим, так как вы фильтруете значение неиндексированного поля, но так как это нечасто, это должно быть хорошо. Ограничение запроса конкретным временным диапазоном приведет к снижению производительности. – beckettsean

+0

OK! Большое спасибо за вашу помощь! –

0

Вы должны использовать одну метрику на датчик. Вам, вероятно, не потребуется собирать значения из разных датчиков температуры, но вам нужно будет заполнить значения данного датчика (например, в среднем за минуту).

Метрики соответствуют данным, поступающим из того же источника, или, по крайней мере, данные, которые вы, вероятно, будете агрегировать. Вы можете создать почти столько же показателей, сколько хотите (до 16 million metrics в OpenTSDB, например).

Метки делают различия между этими фрагментами данных. Например, вы можете пометить данные по-разному, если они внезапно сильно изменятся, чтобы при необходимости получать только релевантные данные, не теряя при этом остальную часть данных. Хотя для датчика температуры получения данных каждый второй, лучше всего, вероятно, будет фильтровать и хранить только данные, когда значение изменилось ...

Лучшие практики суммируется here

3

Для сравнения, в 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 
Смежные вопросы