Metrics в ClickHouse
src/clickhouse/ · таблиці ClickHouse project_statistics_operations, project_statistics_pair_days, project_ru_online, project_tu_online_days у базі CLICKHOUSE_DATABASE (platform) — дані метрик усіх проєктів. Запис і читання — 10-metrics. project — перша колонка ключа сортування: запит одного проєкту читає лише його частини. Порожнє посилання — '', не Nullable: Nullable-колонки читаються повільніше.
Підключення і схема
backend-common/src/nest/clickhouse/:ClickHouseModule.forRoot— один клієнт на сервіс, ping з ретраями й прогрів на старті; недоступний ClickHouse не валить сервіс.ClickHouseRepository— база репозиторіїв,runClickHouseMigrations— версійовані міграції з таблицеюschema_migrations.- Схема —
src/clickhouse/clickhouse.migrations.ts, накочуєnpm run clickhouse:migrateпід час деплою (створює базу, якщо її немає). Нова зміна — новий запис у кінці; накочені не редагуються. - Env:
CLICKHOUSE_URL,CLICKHOUSE_USERNAME,CLICKHOUSE_PASSWORD,CLICKHOUSE_DATABASE.
project_statistics_operations
Копія 05-project-statistics рядок у рядок. Поля ті самі, крім eventId; тімлід — teamLeadProjectId (у Mongo — supervisorProjectId); createdAt — час запису в Mongo. MergeTree, партиція — місяць, ключ project, day, tuId, ruId.
project_statistics_pair_days
Пара TU + RU за день з копії операцій — основа утримання, нових зв’язків, CPR, TAU і DAU; у Golden рядків учетверо менше, ніж операцій.
- operations, amount — кількість і сума операцій пари за день; paidAmount — сума додатних.
- Ключ
project, tuId, ruId, day: історія пари — суцільний діапазон. Перший платний день і повернення наступного дня не зберігаються.
project_ru_online
Присутність RU у знімку online на партнері: рядок на RU і знімок. ReplacingMergeTree, ключ project, day, ruId, at — повтор знімка не дублює рядки. Хвилини online RU за день — uniqExact(at) * 5. Legacy golden_ru_daily_activity зберігав лише хвилини за день; присутність по знімках дає ще години й перетини з online TU.
project_tu_online_days
Online TU в Electron за добу проєкту з відрізків TU: рядок на TU і день замість сотень тисяч відрізків на місяць. MergeTree, ключ project, day, tuId.
Нюанси
- Заміри (дамп Golden, 4 млн операцій за 2022–2026): повна копія статистики — 164 с з хоста, 6 хв з API в docker; звірка без змін — 2 с; 917 тис. пар-днів на 162 тис. пар. Online TU 2024-06-13..2026-09-29 — 320 тис. рядків, повна копія 3 хв.
- Міграція online RU (12-migrations) читає legacy-таблицю з бази
mainтого самого сервера: дамп 01.10.2026 — 451 день, 32,2 млн рядків, 5 с; хвилини за день збігаються з legacy для всіх 1 417 423 пар RU + день.