Вопрос проверяет понимание специализированных time series баз данных, их отличий от реляционных СУБД и умения выбирать хранилище под задачи с временными рядами.
Time series база данных (TSDB) — это класс СУБД, спроектированных специально для работы с данными, у которых ключевым измерением является время. Каждая запись обычно представляет собой точку вида (timestamp, набор тегов, значение). Такие данные обладают характерными свойствами: они пишутся почти всегда только на добавление, редко обновляются, имеют высокую частоту поступления и быстро теряют актуальность.
Классические сценарии — мониторинг инфраструктуры (Prometheus, InfluxDB), IoT-платформы с миллионами датчиков, финансовые котировки, телеметрия приложений, аналитика событий и логи. В этих задачах важны скорость записи, дешёвое хранение больших объёмов и быстрые запросы по диапазонам времени.
-- TimescaleDB: создание hypertable
CREATE TABLE metrics (
time TIMESTAMPTZ NOT NULL,
host TEXT,
cpu DOUBLE PRECISION
);
SELECT create_hypertable('metrics', 'time');
-- Вставка точки
INSERT INTO metrics VALUES (NOW(), 'web-1', 0.42);
-- Средняя загрузка по часам
SELECT time_bucket('1 hour', time) AS bucket,
avg(cpu)
FROM metrics
WHERE time > NOW() - INTERVAL '1 day'
GROUP BY bucket
ORDER BY bucket;В InfluxDB тот же сценарий выглядит как запись line protocol и запрос на языке Flux или InfluxQL, а в Prometheus — как метрики с pull-моделью и PromQL. Выбор конкретной TSDB зависит от экосистемы: Prometheus хорош для мониторинга Kubernetes, InfluxDB — для IoT и общих метрик, TimescaleDB — когда нужен SQL и связь с реляционными таблицами, ClickHouse — для аналитики больших объёмов.
Итог: time series БД стоит применять, когда данные привязаны ко времени, пишутся потоком и требуют агрегаций по окнам; для обычных транзакционных сущностей (пользователи, заказы) лучше подходит классическая реляционная СУБД.