Для моего случая мне нужно записать 15 показателей производительности для устройств и сохранить их в InfluxDB. Каждое устройство имеет уникальный идентификатор устройства.Производительность InfluxDB
Метрики записываются в InfluxDB следующим образом. Здесь я показываю только один пример:
new Serie.Builder("perfmetric1")
.columns("time", "value", "id", "type")
.values(getTime(), getPerf1(), getId(), getType())
.build()
Запись данных осуществляется быстро и легко. Но при выполнении запроса я видел плохую производительность. Я пытаюсь получить все 15 метрических значений за последний час.
select value from perfmetric1, perfmetric2, ..., permetric15
where id='testdeviceid' and time > now() - 1h
В течение часа каждая метрика имеет 120 точек данных, всего 1800 точек данных. Запрос занимает около 5 секунд на экземпляре EC4 c4.4xlarge, когда он неактивен.
Я считаю, что InfluxDB может сделать лучше. Это проблема дизайна моей схемы, или это что-то еще? Разве расщепление запроса на 15 параллельных вызовов будет быстрее?
Спасибо за быстрый ответ! Я довольно новичок в InfluxDB, в основном просто экспериментирую. Все это имеет смысл. Я немного удивлен, потому что это кажется очень распространенным случаем. Индексация индексов - это что-то новое для версии 0.9.0. На данный момент я запускаю стабилизатор 0.8.8. «Чтобы включить такие вещи, как теги и быстрый поиск по определенным значениям столбцов, мы добавим поддержку индексов столбцов. Вот вам и проблема отслеживания индексов столбцов». –
программное обеспечение находится в альфа-состоянии разработки, поэтому многие вещи отсутствуют и много ошибок – valentin