Доступна СУБД InfluxDB 1.1

Состоялся второй выпуск СУБД InfluxDB, развиваемой для хранения, анализа, визуализации и манипулирования данными в формате временного ряда (срезы значений параметров через заданные промежутки времени). СУБД может применяться в таких областях, как анализ данных в режиме реального времени, визуализация трендов и истории событий, выявление аномалий, контроль качестве работы сервиса и т.п. Код InfluxDB написан на языке Go и распространяется под лицензией MIT.

Новая версия примечательна внесением существенных оптимизаций производителельности. Значительно сокращено число операций распределения памяти, что привело к снижению нагрузки на сборщик мусора и повысило пропускную способность СУБД. Особенно заметно ускорение операций записи, формирования выборок и упаковки данных. Например, производительность выполнения запросов с операциями first () и last () без применения выражения «GROUP BY» увеличилась в среднем на 60%. Заметно возросла пропускная способность при выполнении операций записи, например, в тестовом окружении на базе AWS при стресс-тестировании удалось добиться производительности в 900 тысяч записанных значений в секунду. Полностью переписаны части планировщика запроса, применяемые при использовании регулярных выражений — подобные запросы теперь по возможности выполняются напрямую над индексом, что позволяет заметно ускорить работу запросов, генерируемых такими системами как Grafana.

Переработана работа с наборами данных с разряжёнными элементами — запрос к разряжённому множеству высокой мощности, в котором находится большое число эфемерных элементов, теперь не приводит к исчерпанию всей доступной памяти. В новой версии также представлен параметр max-values-per-tag (по умолчанию установлен в 100000), позволяющий ограничить максимальное число значений, привязываемых к одному тегу.

В язык запросов добавлены функции fill (linear) для линейной интерполяции недостающих значений и cumulative_sum () для вычисления последовательности из частичных сумм. Во всех командах SHOW обеспечена поддержка выражения «ON …». В полях со списком выводимых ключей внутри блока SELECT реализована поддержка регулярных выражений (например, «SELECT /cpu_\d/ FROM cpu» выведет все ключи соответствующие заданной маске).

Встроенный управляющий web-интерфейс переведён в разряд устаревших возможностей и отключен по умолчанию (в данной версии интерфейс может быть возвращён через изменение настроек, но будет удалён в одном из следующих выпусков). В качестве замены рекомендовано использовать Chrongraf или Grafana.


Особенности InfluxDB:

  • Поддержка SQL-подобного языка запросов с богатыми возможностями агрегирования данных;
  • Поддержка непрерывно выполняемых запросов (Continuous Query), автоматически повторно выполняемых через определённые промежутки времени;
  • Высокая производительность (сотни тысяч операций записи в секунду) и возможность обработки запросов в режиме реального времени — поступающие данные индексируются и сразу становятся доступны для запросов, время выполнения которых не превышает 100 мс.
  • Встроенный HTTP API, позволяющий обращаться к СУБД из web-приложений без дополнительных серверных прослоек;
  • Ответ возвращается в формате JSON;
  • Для описания структуры хранимых данных не требуется создание специальных схем, новые поля могут создаваться в любое время;
  • К сохраняемым данным могут привязываться теги, что позволяет производить гибкие выборки;
  • Возможность отправки нескольких запросов в рамках одного обращения к СУБД;
  • Поддержка задания политики устаревания данных, позволяющей определить как долго данные должны храниться;
  • Поддержка создания отказоустойчивых и распределённых кластерных конфигураций (дополнение: кластеризация оставлена только в коммерческой редакции InfluxDB Enterprise);
  • Простота установки и отсутствие внешних зависимостей.

© OpenNet