ClickHouse для трафика: почему PostgreSQL перестаёт справляться
При объёме от 50 млн кликов в месяц PostgreSQL начинает задыхаться на аналитических запросах. Джойны по нескольким таблицам на миллиардах строк — это минуты ожидания вместо секунд.
ClickHouse решает это колоночным хранением. Запрос «выборка всех кликов за месяц по определённому оферу с группировкой по дням» в ClickHouse работает в 50-200 раз быстрее, чем в PostgreSQL на тех же данных.
Практические советы для арбитражного стека:
— Партиционируй таблицы по месяцу (PARTITION BY toYYYYMM(event_date)). Запросы за конкретный период не сканируют лишнее.
— Используй ReplicatedMergeTree даже для одного сервера — получишь встроенную дедупликацию по event_id.
— Для быстрого поиска по offer_id и source_id — индексируй именно эти поля. ClickHouse не делает полный скан если они в ORDER BY.
— Не храни сырые клики вечно. Агрегируй данные старше 90 дней в почасовые/дневные суммы.
Отдельно: не пытайся писать в ClickHouse напрямую из трекера на каждый клик. Используй буфер через Kafka или хотя бы Redis-очередь.
Дашборды для аналитики байера
@dashboard_setup_pro_arb
ClickHouse для трафика: почему PostgreSQL перестаёт справляться
Этот пост опубликован в Telegram-канале Дашборды для аналитики байера. Подписаться можно по ссылке: @dashboard_setup_pro_arb.