Базы данных

Time-Series базы данных

Datadog мониторит инфраструктуру 23,000+ компаний. 10 триллионов метрических точек в их БД. Каждую секунду приходит 4+ миллиарда новых точек. Это невозможно в PostgreSQL без специализации. Именно для этого созданы time-series БД.

  • **Cloudflare**: ClickHouse для 400 миллиардов DNS событий в день - аналитика за любой период за секунды
  • **Coinbase**: InfluxDB для торговых метрик в реальном времени, 100K точек/сек
  • **Bitfinex**: TimescaleDB для 4+ млрд торговых тиков с полным SQL интерфейсом

Что такое time-series данные

Time-series данные - последовательность значений с временными метками. Характеристики: только append (редко обновляются), высокий write throughput, range queries по времени, агрегации по периодам. Примеры: метрики серверов, биржевые котировки, IoT сенсоры, логи.

Чем time-series БД отличается от общей СУБД: оптимизированный write path (batch ingestion), колоночное хранение для high compression, built-in downsampling и retention policies, специализированные функции (rate(), increase(), predict()).

Почему традиционные реляционные БД плохо справляются с time-series при миллионе точек в секунду?

InfluxDB

InfluxDB - специализированная time-series БД. Data model: measurement (аналог таблицы), tags (indexed string labels), fields (числовые значения), timestamp. Tags индексируются инвертированным индексом - быстрый поиск по host=web01. Fields не индексируются - только sequential scan.

InfluxDB 3.0 переписан на Apache Arrow + DataFusion - колоночное хранение вместо TSM файлов. Совместимость с InfluxQL API сохранена. Производительность на аналитических запросах выросла в 10-100x.

В InfluxDB tags индексируются, fields нет. Запрос: filter по host AND filter по value > 80. Что будет медленным?

TimescaleDB

TimescaleDB - PostgreSQL extension для time-series. Hypertable автоматически партиционирует данные по времени (chunks). Advantage: полный SQL, нормальные таблицы, JOIN с реляционными данными, все PostgreSQL extensions. Compression до 95% для старых chunks.

Криптобиржа Bitfinex использует TimescaleDB для хранения 4+ миллиардов торговых тиков. Continuous aggregates обновляются в реальном времени - не нужен отдельный pipeline. Все запросы - обычный SQL, нет нового query language.

Чем hypertable в TimescaleDB отличается от обычной партиционированной PostgreSQL таблицы?

ClickHouse для аналитики

ClickHouse - колоночная СУБД от Яндекса для OLAP аналитики. Не специализируется только на time-series, но идеально подходит для аналитики по событиям: вебаналитика, логи, метрики. Скорость: агрегация миллиарда строк за секунды.

ClickHouse MergeTree движок: данные сортируются по ORDER BY и хранятся по колонкам. При чтении только нужные колонки десериализуются. LZ4/ZSTD компрессия. Materialized Views для pre-aggregation. ReplicatedMergeTree для HA.

ClickHouse колоночное хранение vs PostgreSQL строчное. Запрос: SELECT avg(amount) FROM orders WHERE date > '2024-01-01'. Почему ClickHouse быстрее?

Downsampling и Retention

Downsampling - агрегирование исторических данных для уменьшения объёма. Метрики за последний час - посекундно. За последний день - поминутно. За последний год - почасово. Старые детальные данные заменяются агрегатами.

Datadog хранит метрики на трёх уровнях: 1 секунда - 15 дней, 1 минута - 2 месяца, 1 час - 15 месяцев. Это стандартная пирамида retention для observability платформ. Raw данные доступны только для свежих инцидентов.

Time-series БД нужна только для DevOps метрик

Time-series данные везде: биржевые котировки (Bloomberg), IoT (10 миллиардов устройств к 2030), аналитика пользовательских событий (Amplitude, Mixpanel), лог аудита финансовых транзакций.

Любые данные с временной меткой - time-series. Если запросы преимущественно "за период" с агрегациями - специализированная TSDB даст 10-100x улучшение vs обычная СУБД.

Зачем нужен downsampling вместо простого удаления старых данных?

Итоги

  • **InfluxDB**: специализирован для метрик, tags(indexed) vs fields(not indexed), Flux query language
  • **TimescaleDB**: PostgreSQL + автоматическое партиционирование + continuous aggregates = time-series без изучения нового стека
  • **ClickHouse**: колоночная СУБД для OLAP аналитики, миллиарды строк за секунды

Связанные темы

Time-series БД применяют технологии из смежных областей:

  • LSM-Tree — InfluxDB и Cassandra используют LSM-tree для high write throughput
  • Партиционирование — Hypertable в TimescaleDB - автоматическое range партиционирование по времени
  • Мониторинг БД — Time-series БД сами часто используются для хранения метрик о других БД

Вопросы для размышления

  • Когда TimescaleDB предпочтительнее InfluxDB для time-series данных?
  • Как downsampling влияет на точность аномалий и outliers в исторических данных?
  • Система мониторинга: 100 серверов x 1000 метрик x 1 раз в 10 секунд = 10,000 точек/сек. Какую БД выбрать?

Связанные уроки

  • stat-13-time-series
Time-Series базы данных

0

1

Войти