Открыть сервис

InfluxDB

InfluxDB — это свободная и открытая (open source) система управления временными рядами (time series database, TSDB), разработанная компанией InfluxData. Предназначена для высокопроизводительного сбора, хранения, обработки и визуализации данных, каждое значение которых привязано к метке времени (timestamp). Относится к классу NoSQL-баз данных, оптимизированных для работы с метриками, событиями и аналитикой в реальном времени.

История

Разработка InfluxDB началась в 2013 году под руководством Пола Диксона (Paul Dix) и Эвана Уолла (Evan Wall). Первая публичная версия (0.1.0) была выпущена в сентябре 2013 года. Изначально база данных была написана на Go и использовала собственный язык запросов InfluxQL, основанный на SQL. В 2015 году вышла версия 0.9, в которой была введена поддержка кластеризации. В 2016 году компания InfluxData привлекла инвестиции в размере 16 миллионов долларов от венчурных фондов. Версия 1.0, ставшая стабильной, была выпущена в сентябре 2016 года. В 2018 году вышла версия 2.0, которая представила новый язык запросов Flux, а также встроенный веб-интерфейс, инструменты для визуализации и обработки данных (TICK-стек). В 2021 году InfluxDB 2.0 стала основной версией, а поддержка InfluxDB 1.x была переведена в режим долгосрочной поддержки (LTS). В 2023 году компания анонсировала InfluxDB 3.0, которая использует новый движок хранения на основе Apache Arrow и Parquet, обеспечивающий более высокую производительность и снижение затрат на хранение.

Архитектура и ключевые особенности

InfluxDB построена на принципах, отличающих её от реляционных баз данных:

Модель данных

  • Measurement — аналог таблицы в реляционных БД, логическая группа для точек данных.
  • Tag — пара «ключ-значение», индексируемая для быстрого поиска и фильтрации (например, host=server01, region=us-east).
  • Field — пара «ключ-значение», содержащая собственно числовое значение (например, temperature=25.5, cpu_usage=0.85). Поля не индексируются.
  • Timestampметка времени в наносекундах, определяющая момент измерения.
  • Point — единичная запись, состоящая из measurement, тегов, полей и временной метки.

Движок хранения

В InfluxDB 1.x и 2.x используется собственный движок TSM (Time-Structured Merge Tree), оптимизированный для записи и чтения временных рядов. Данные сжимаются с использованием алгоритмов, специфичных для временных меток и чисел с плавающей точкой, что позволяет достигать высокой степени сжатия (до 10-20 раз по сравнению с необработанными данными). В InfluxDB 3.0 движок заменён на Apache Arrow и Parquet, что обеспечивает поддержку SQL, улучшенную производительность аналитических запросов и возможность использования объектных хранилищ (S3, GCS).

Языки запросов

  • InfluxQL (InfluxDB Query Language) — SQL-подобный язык, используемый в версиях 1.x. Поддерживает SELECT, WHERE, GROUP BY, JOIN (ограниченно), агрегатные функции (MEAN, SUM, COUNT, MAX, MIN).
  • Flux — функциональный язык запросов, введённый в версии 2.0. Позволяет выполнять сложные конвейеры обработки данных, объединять данные из разных источников, применять оконные функции и преобразования. Flux не является SQL-подобным, что потребовало от пользователей переобучения.
  • SQL — поддержка стандартного SQL (ANSI SQL) добавлена в InfluxDB 3.0, что упрощает интеграцию с существующими аналитическими инструментами.

TICK-стек

InfluxDB является центральным компонентом TICK-стека (Telegraf, InfluxDB, Chronograf, Kapacitor), набора инструментов для работы с временными рядами:

  • Telegraf — агент для сбора метрик и событий из различных источников (системные метрики, Docker, Kubernetes, API, базы данных).
  • InfluxDBхранилище данных.
  • Chronograf — веб-интерфейс для визуализации и администрирования.
  • Kapacitor — движок для обработки данных в реальном времени, оповещений и ETL-задач.

Применение

InfluxDB используется в областях, требующих непрерывного сбора и анализа большого количества временных меток:

  • Мониторинг IT-инфраструктуры — сбор метрик производительности серверов, сетевых устройств, контейнеров (Docker, Kubernetes), приложений. Интегрируется с системами мониторинга (Prometheus, Grafana).
  • Интернет вещей (IoT)сбор данных с датчиков, сенсоров, промышленного оборудования (температура, давление, вибрация, энергопотребление).
  • Финансовые системы — хранение и анализ котировок, курсов валют, торговых данных.
  • Научные исследования — обработка данных с метеостанций, сейсмографов, экспериментов.
  • DevOps и SRE — хранение логов и метрик для анализа инцидентов, построения дашбордов и оповещений.

Сравнение с другими TSDB

InfluxDB является одной из самых популярных систем управления временными рядами, наряду с TimescaleDB (расширение PostgreSQL), Prometheus (ориентирован на мониторинг, использует собственный язык запросов PromQL), Graphite (устаревшая, но широко используемая), QuestDB (высокопроизводительная, с поддержкой SQL). Ключевые отличия InfluxDB:

  • Собственный язык запросов (InfluxQL/Flux) против SQL у TimescaleDB и QuestDB.
  • Встроенный веб-интерфейс и инструменты визуализации (Chronograf) против внешних решений (Grafana) для Prometheus.
  • Поддержка кластеризации и высокой доступности в коммерческой версии (InfluxDB Enterprise) против встроенной репликации у TimescaleDB.

Критика и ограничения

  • Сложность языка Flux — переход от SQL к Flux потребовал значительных усилий от пользователей, что привело к критике сообщества. В версии 3.0 компания вернула поддержку SQL.
  • Отсутствие встроенной кластеризации в бесплатной версии — полноценная кластеризация доступна только в платной версии InfluxDB Enterprise, что ограничивает масштабирование для небольших проектов.
  • Ограниченная поддержка JOIN — в InfluxDB 1.x и 2.x JOIN-ы между разными измерениями (measurements) не поддерживаются, что усложняет анализ связанных данных.
  • Проблемы с производительностью при большом количестве уникальных тегов — высокая кардинальность тегов (большое количество уникальных значений) может привести к снижению производительности записи и потреблению памяти.

Лицензия и статус

InfluxDB распространяется под лицензией MIT (до версии 2.0) и AGPLv3 (начиная с версии 2.0). Коммерческие версии (InfluxDB Enterprise, InfluxDB Cloud) имеют проприетарные лицензии. Компания InfluxData зарегистрирована в США, не имеет статуса иностранного агента в РФ и не признана экстремистской или террористической организацией на территории Российской Федерации.

Источники

  1. Официальная документация InfluxDB (docs.influxdata.com)
  2. Paul Dix. «InfluxDB: A Time Series Database for the Modern Era» (2016)
  3. Статья «InfluxDB: Architecture and Design» на сайте InfluxData
  4. Сравнительный анализ TSDB: «Time Series Databases: A Survey» (2020)
  5. Репозиторий InfluxDB на GitHub (github.com/influxdata/influxdb)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →