System Design Space
Граф знанийНастройки

Обновлено: 2 марта 2026 г. в 19:07

Time Series Databases (TSDB): типы, trade-offs и выбор

mid

Практическая карта TSDB: нативные движки, SQL-расширения, решения поверх distributed storage и columnar базы для time-series сценариев.

Primary source

Prometheus TSDB

Базовые принципы хранения метрик: локальные блоки, retention, compaction и remote write.

Открыть документацию

Time Series Databases (TSDB) удобно выбирать по четырем осям: модель данных, storage engine, ключевой сценарий и операционная модель. Эта глава дополняет Database Selection Framework и помогает быстро понять, когда нужен специализированный TSDB-движок, а когда разумнее взять SQL/columnar базу и использовать ее как time-series платформу.

Карта выбора TSDB: 4 оси

1. Модель данных и язык запросов

Нативная TSDB, SQL-расширение поверх RDBMS, слой над distributed store или columnar OLAP как TSDB.

От этой оси зависит, насколько легко писать ad-hoc аналитику, делать join и подключать BI.

2. Способ хранения

Append-only/LSM, партиционирование по времени, row vs column layout, встроенное сжатие и downsampling.

Это определяет write throughput, стоимость хранения и скорость агрегатов по большим time-window.

3. Ключевой сценарий

Мониторинг, IoT телеметрия, финансовые таймсерии, логи/метрики для продуктовой аналитики.

Разные сценарии требуют разного баланса между latency, retention, cardinality и гибкостью запросов.

4. Операционная модель

Self-hosted, managed cloud, гибрид с разными storage tiers.

Влияет на TCO, требования к SRE-команде и скорость эволюции платформы наблюдаемости/аналитики.

Основные семейства TSDB

1. Специализированные TSDB «с нуля»

Системы, изначально спроектированные под временные ряды и высокий поток записи.

Характерные свойства

  • Append-only write path и оптимизация под ingest-throughput.
  • Сжатие по времени/значениям, retention/TTL и downsampling из коробки.
  • Time-bucket агрегаты и оконные функции как базовый сценарий.

Типичные представители

InfluxDB, Prometheus, VictoriaMetrics, M3, Thanos, Graphite/Whisper

Когда использовать

  • Инфраструктурный мониторинг и application metrics.
  • IoT-телеметрия с относительно простой схемой меток.
  • Сценарии, где write path и retention важнее сложных join.

Trade-offs

  • Сложная реляционная аналитика обычно ограничена.
  • Рост high-cardinality меток может резко увеличить стоимость хранения.

2. TSDB как расширение реляционной БД

Подход, где time-series возможности добавляются к SQL-движку (например, PostgreSQL).

Характерные свойства

  • SQL как основной язык запросов и интеграция с существующими BI-инструментами.
  • Партиционирование по времени, hypertables/continuous aggregates и space-sharding.
  • Join с OLTP-таблицами и единая data model для метрик и доменных сущностей.

Типичные представители

TimescaleDB, PipelineDB-подобные паттерны, kdb+

Когда использовать

  • Нужны сложные SQL-запросы и регулярные join с транзакционными данными.
  • Команда уже сильна в PostgreSQL-экосистеме.
  • Важно снизить число разных технологий в стеке.

Trade-offs

  • Максимальный ingest часто ниже, чем у узкоспециализированных TSDB.
  • При экстремальном масштабе сложность тюнинга быстро растет.

3. TSDB поверх распределенных storage-систем

Time-series слой поверх HBase/Cassandra/Bigtable-подобных хранилищ для экстремального масштаба.

Характерные свойства

  • Горизонтальное масштабирование до очень больших объемов и длительного retention.
  • Отказоустойчивость и replication задаются нижележащим KV/column-store слоем.
  • Архитектура чаще всего многокомпонентная и требует явного capacity planning.

Типичные представители

OpenTSDB (HBase), KairosDB/Cassandra-паттерны, самодельные TSDB-схемы

Когда использовать

  • Телеком/облака/SaaS с триллионами точек и длительным хранением.
  • Нужна линейная scale-out модель по мере роста кластера.
  • Команда готова к операционной сложности распределенного стека.

Trade-offs

  • Высокая сложность администрирования и тюнинга.
  • Медленный путь от идеи до production из-за числа движущихся частей.

4. Колоночные аналитические БД, используемые как TSDB

General-purpose columnar системы, которые на практике часто становятся metrics/log/time-series хранилищем.

Характерные свойства

  • Сильное колоночное сжатие и быстрые агрегаты по длинным временным окнам.
  • Гибкие ad-hoc запросы и BI-friendly SQL для аналитики поверх событий.
  • Хороший компромисс между ingest и сложностью аналитических запросов.

Типичные представители

ClickHouse, Apache Druid, Apache Pinot, MPP DWH (Vertica и др.)

Когда использовать

  • Логи + метрики + BI в едином аналитическом контуре.
  • Нужны сложные срезы, cohort/retention анализ и продуктовые отчеты.
  • Важно поддерживать гибкую ad-hoc аналитику для data/product команд.

Trade-offs

  • Это не всегда полноценная замена мониторинговой TSDB для алертинга.
  • Для low-latency operational мониторинга часто нужен отдельный слой.

Быстрый сценарный выбор

Инфраструктурный мониторинг

Нативная TSDB (Prometheus/VictoriaMetrics) + long-term слой

Сильная экосистема для алертинга, SLO и dashboard-driven эксплуатации.

IoT-телеметрия и события устройств

Нативная TSDB или SQL-расширение (TimescaleDB) по уровню аналитики

Ключевые факторы: ingest-rate, cardinality тегов и политика retention/downsampling.

Финансовые/квантовые таймсерии

SQL/columnar подход (kdb+, ClickHouse, TimescaleDB)

Нужны точные агрегаты, window functions и сложные аналитические запросы.

Логи/метрики + BI и ad-hoc аналитика

Columnar analytics (ClickHouse/Druid/Pinot)

Обычно выигрывает по гибкости SQL и скорости больших аналитических сканов.

Self-hosted vs Cloud managed

Self-hosted

  • Максимальный контроль над storage layout, индексами и upgrade-политикой.
  • Подходит, если есть зрелая SRE/DBA практика и требования к кастомной эксплуатации.
  • TCO зависит от компетенций команды и качества автоматизации.

Managed cloud

  • Быстрый старт, меньше операционной нагрузки и predictable SLA от провайдера.
  • Хорошо для команд, где скорость поставки важнее глубокой платформенной кастомизации.
  • Нужно заранее считать egress, retention-tier и lock-in риски.

Рекомендации для первого выбора

Начинай выбор с workload-профиля: ingest/sec, cardinality, retention, query patterns.

Отделяй operational monitoring (алерты в реальном времени) от product analytics (сложные срезы).

Фиксируй SLO на запись/чтение и проверяй их на реалистичных данных, а не на synthetic benchmark.

Если нужен гибкий SQL и join с бизнес-данными, сначала проверь TSDB-путь через PostgreSQL/columnar SQL.

Планируй downsampling и tiered storage заранее: это главный рычаг снижения стоимости TSDB.

Частые ошибки при выборе TSDB

Пытаться закрыть одним движком и мониторинг, и глубокую BI-аналитику без явной декомпозиции контуров.

Выбирать TSDB только по максимальному ingest throughput, игнорируя стоимость запросов и хранения.

Игнорировать high-cardinality риск в метках (labels/tags) до момента production-инцидентов.

Откладывать стратегию retention/downsampling до тех пор, пока кластер не упрется в бюджет.

Оценивать решения без учета операционной модели (self-hosted vs managed cloud).

References

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки

System Design Space

© 2026 Александр Поломодов