Вопрос проверяет знание подходящих СУБД для аналитических нагрузок и понимание различий между OLTP и OLAP-хранилищами.
Для хранения многолетних исторических данных обычно используют аналитические колоночные базы: ClickHouse, BigQuery, Redshift, Snowflake. Они оптимизированы под быстрые аналитические запросы, агрегации и сканирование больших объёмов данных. Традиционные реляционные БД вроде Postgres подходят хуже, потому что они ориентированы на транзакции, а не на аналитику. Колоночные базы эффективно сжимают данные и обрабатывают их параллельно, что делает их идеальными для хранения истории операций.
Исторические данные — это классический OLAP-сценарий, где важны быстрые чтения и аналитика, а не транзакционная запись.
OLTP-БД (Postgres, MySQL):
оптимизированы для небольших, частых записей;
плохо сканируют большие объёмы данных;
со временем таблицы разрастаются, индексы деградируют;
стоимость хранения и запросов растёт.
Для многолетной истории это неэффективно.
Определение:
Колоночная СУБД — база данных, которая хранит данные по столбцам, а не по строкам.
Преимущества:
Высокая скорость аналитических запросов
агрегаты (SUM, COUNT, AVG) считаются моментально.
Сильное сжатие данных
однотипные значения в колонках хорошо компрессуются.
Параллельная обработка
запросы распределяются по ядрам или узлам кластера.
Возможность хранения огромных объёмов
данные можно партиционировать по датам.
ClickHouse — современная колоночная СУБД с бешеной производительностью:
поддерживает партиционирование по датам (идеально для исторических данных);
умеет сжимать данные в 10–30 раз;
обрабатывает миллиарды строк за миллисекунды;
горизонтально масштабируется;
много встроенных функций для аналитики.
Пример таблицы:
SQL
CREATE TABLE transactions (
user_id UInt64,
amount Float64,
ts DateTime
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(ts)
ORDER BY (user_id, ts);
BigQuery — Serverless-аналитика, хорошо подходит для облаков.
Redshift — AWS-аналитический кластер.
Snowflake — облачное аналитическое хранилище.
Druid / Pinot — real-time аналитика (для событий из Kafka).
Колоночные БД используют, когда:
объём данных растёт годами;
нужен быстрый анализ;
есть отчёты и дашборды;
есть регулярные выборки по временным диапазонам.
Для многолетних транзакционных данных лучше выбирать колоночные аналитические СУБД вроде ClickHouse: они обеспечивают высокую скорость запросов, экономию места и масштабируемость в отличие от классических OLTP-БД.