Состоялся второй выпуск СУБД 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);
  • Простота установки и отсутствие внешних зависимостей.


Источник: http://www.opennet.ru/opennews/art.shtml?num=45615