Инженерные данные и интеграции¶
1. ClickHouse Integration (Advanced Analytics)¶
Для хранения и аналитики больших объемов данных (логи, события, метрики) используется ClickHouse.
Архитектура¶
[FastAPI] -> [PostgreSQL (System Events)] -> [CDC / ETL Script] -> [ClickHouse]
Схема таблицы в ClickHouse¶
CREATE TABLE default.system_events_log
(
id UUID,
event_type String,
source String,
payload String, -- JSONAsString
correlation_id String,
created_at DateTime,
date Date DEFAULT toDate(created_at)
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (event_type, created_at);
Синхронизация данных¶
Для синхронизации используется скрипт scripts/sync_clickhouse.py (нужно создать), который:
1. Читает новые записи из public.system_events (PostgreSQL).
2. Вставляет их пачками (batch insert) в ClickHouse.
3. Запускается по cron раз в 5-10 минут.
2. Superset Configuration¶
Superset подключается к двум источникам: 1. PostgreSQL (Realtime/Operational): Для данных о бронированиях, пользователях, отелях. 2. ClickHouse (Historical/Events): Для глубокого анализа логов, воронок и поведенческой аналитики.
Примеры Dataset в Superset¶
- Bookings: Table
public.room_bookings. - Daily Overview: Materialized View
public.analytics_daily_overview. - Events: Table
default.system_events_log(из ClickHouse).
3. Резервное копирование и обслуживание¶
-
Refresh Materialized Views: Запуск функции
refresh_analytics()должен быть настроен вpg_cron(если доступен) или через внешний планировщик.SELECT cron.schedule('0 * * * *', 'SELECT public.refresh_analytics()'); -
Partitioning: Таблицу
system_eventsв PostgreSQL рекомендуется партиционировать по месяцам, если объем данных превышает 1 млн строк в месяц.