GH GambleHub

Хранилища данных и OLAP-модели

(Раздел: Технологии и Инфраструктура)

Краткое резюме

Хранилище данных (DWH) — опорный слой аналитики iGaming: отчеты регуляторам, прибыльность по продуктам/рынкам, когортный LTV, антифрод-аналитика, CRM-сегментация и real-time дашборды. Устойчивое DWH строится на ясной модели данных (Star/Snowflake/Data Vault), надежной интеграции (ETL/ELT + CDC), продуманной производительности (колоночные движки, партиции, MVs), строгой семантике метрик, безопасности/PII и управлении стоимостью.

Архитектурные подходы

Классическое DWH (Kimball vs Inmon)

Kimball (Dimensional / Star/Snowflake): быстрые витрины отчетов; фокус на фактах и измерениях, SCD-история. Быстрый тайм-ту-вэлью.
Inmon (Corporate Information Factory): нормализованное ядро + витрины; тяжелее по времени, но строго и централизованно.

Data Vault 2.0

Hubs–Links–Satellites: масштабируемая «сырая» модель для интеграции источников и аудита изменений. Поверх строятся витрины Star.

Data Lake / Lakehouse

Data Lake: сырые файлы (Parquet/ORC) + каталоги (Hive/Glue/Unity/Metastore).
Lakehouse: единый слой для batch/stream, ACID-таблицы (Delta/Iceberg/Hudi), time-travel, upsert/merge, компактные файлы, Z-order/Clustering.

Medallion (Bronze–Silver–Gold)

Bronze: сырые данные (raw) + CDC.
Silver: очищенные и конформные.
Gold: бизнес-витрины/метрики/кубы.
Подходит для гибридов (Kafka → Bronze; Silver в Lakehouse; Gold в ClickHouse/BigQuery/Snowflake).

Модели OLAP: Star, Snowflake, Data Vault

Star Schema (звезда)

Fact таблицы: транзакции (ставки, депозиты, сессии).
Dimensions: игрок, игра, провайдер, дата/время, гео, канал привлечения.
Плюсы: простые джойны, прогнозируемая производительность.

Snowflake

Нормализация измерений (иерархии стран/регионов/городов, иерархии продуктов).
Плюсы: меньше дублирования; минус — больше джойнов.

Data Vault → Star

Сырые изменения складываем в DV (аудит, полная воспроизводимость), витрины отчетов строим как Star/Snowflake.

Интеграция: ETL/ELT, CDC, медленные изменения

Пайплайн

Outbox/CDC из OLTP (Postgres/MySQL) → Kafka/коннекторы → Bronze.
ELT: чистка, дедуп, нормализация в Silver.
Бизнес-логика и агрегации в Gold/витринах.

SCD (Slowly Changing Dimensions)

Type 1: перезапись (для несущественных полей).
Type 2: историчность (датированные версии) — стандарт для профилей/каналов/цен.
Type 3: хранение пары значений (редко).

Пример SCD2 (SQL, общее представление):
sql
-- insert new dimension version
INSERT INTO dim_player (player_sk, player_id, country, valid_from, valid_to, is_current)
SELECT gen_sk(), s. player_id, s. country, now(), '9999-12-31', true
FROM staging_player s
LEFT JOIN dim_player d ON d. player_id = s. player_id AND d. is_current = true
WHERE d. player_id IS NULL OR d. country <> s. country;

-- closing the old version
UPDATE dim_player d
SET valid_to = now(), is_current = false
FROM staging_player s
WHERE d. player_id = s. player_id AND d. is_current = true AND d. country <> s. country;

Семантический слой и «истинные» метрики

Введите единый слой метрик (semantic layer): определения GGR, NGR, Net Deposits, ARPPU, LTV, Churn, Retention Cohorts.
Метрики как код (dbt metrics/LookML/Semantic Layer) → одинаковые формулы во всех отчетах.
Календарь: таблица дат/часов с атрибутами TZ/регионов/выходных/кампаний.

Хранилища и движки: выбор под профиль

Колоночные и облачные DWH

ClickHouse: сверхбыстрые сканы/агрегации, материализованные представления, проекции; отличен для событий/телеметрии и маркетинговых витрин.
BigQuery: серверлесс, масштаб, автоматические кэши/кластеры; цена за скан; удобен для смешанных нагрузок и ad-hoc.
Snowflake: отделение compute/storage, кластеры по требованию, time-travel; прозрачно для разных команд.
Redshift/Vertica/Pinot/Druid: варианты под OLAP/real-time.

Тюнинг под профиль

Партиционирование по дате/региону/каналу.
Кластеризация/сортировка по ключам фильтрации/джойнов.
Сжатие и кодирование словарями.
Предагрегации (rollup, cubes), материализованные представления.
Approx функции (HyperLogLog/approx_distinct) для дешевых оценок.

Проектирование производительности

Партиционирование и кластеризация

Партиция — граница отсека. Дневные/часовые партиции для событий.
Кластеризация (sort keys/Z-order) — ускоряет диапазоны и join-ы.

Материализованные представления (MV)

Предсчет GGR/NGR по дням/странам/продуктам.
Инкрементальное обновление из стрима CDC.

Пример ClickHouse (мердж-держащее MV):
sql
CREATE MATERIALIZED VIEW mv_ggr_daily
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMMDD(ts)
ORDER BY (country, product_id, toDate(ts)) AS
SELECT toDate(ts) AS d,
country,
product_id,
sum(stake) AS stake_sum,
sum(win)  AS win_sum,
sum(stake - win) AS ggr
FROM bets
GROUP BY d, country, product_id;

Инкрементальные модели (dbt/ELT)

Стратегии `insert_overwrite` по партициям, `merge` по ключам CDC, «watermark» по `updated_at`.

Join-стратегии

Реплика измерений в каждый партиционный сегмент (denorm).
Broadcast small dims; shuffle large facts с сортировкой по ключу.

Стоимость: контроль и оптимизация

BigQuery/Snowflake: ограничивайте размер скана (проектируйте партиции/кластеры), включайте result cache/materialized views, лимитируйте авто-квесты BI.
ClickHouse: размер партиций, частота мерджей, бюджет на хранилище (TTL на сырые события, агрегации долговечны).
Семантика метрик сокращает «двойные» вычисления.
Data pruning: ретеншн для Bronze, агрегации для Gold.

Качество данных (DQ), каталог, lineage

DQ-чеки: полнота (completeness), уникальность, диапазоны, бизнес-правила (например, GGR ≥ 0 в агрегатах).
Data Catalog & Lineage: описания таблиц/полей, владельцы, классификация PII, трассировка от отчета до источника.
Контроль схем: контракт на события/CDC, алерты при несовместимых изменениях.

Безопасность, комплаенс и мульти-тенантность

PII сегментация: отдельные зоны, маскирование/псевдонимизация, колонки с KMS-шифрованием.
RBAC/ABAC: роли на уровне проекта/схем/таблиц/строк (RLS), вьюхи для «need-to-know».
Локализация данных: региональные buckets/warehouses (EU/TR/LATAM).
Аудит доступа: кто читал/менял витрины и модели.

DR, бэкапы и воспроизводимость

Версионирование кода данных (dbt/git), окружения Dev/QA/Prod.
Снапшоты метастора/каталога + версионирование таблиц (time-travel).
Ретеншн/TTL слоев Bronze/Silver/Gold; экспорт критичных витрин.
Game-day: восстановление витрин, проверка целостности метрик.

Real-time и гибридные витрины

Stream-to-OLAP: Kafka → ClickHouse/Pinot/Druid для минутных витрин.
Materialized views + CDC для почти-онлайн обновлений (5–15 мин).
Семантический слой остается единым: метрики идентичны в real-time и batch.

Пример витрины «GGR по дням и странам» (обобщенный SQL)

sql
CREATE TABLE fact_bets (
bet_id   BIGINT,
player_sk BIGINT,
game_sk  BIGINT,
country_sk BIGINT,
stake   DECIMAL(18,2),
win    DECIMAL(18,2),
ts     TIMESTAMP
) PARTITION BY DATE(ts);

CREATE TABLE dim_country (
country_sk BIGINT PRIMARY KEY,
iso2    STRING,
region   STRING,
valid_from TIMESTAMP,
valid_to  TIMESTAMP,
is_current BOOL
);

-- Showcase
CREATE MATERIALIZED VIEW mart_ggr_daily AS
SELECT
DATE(ts) as d,
c. region,
SUM(stake) AS stake_sum,
SUM(win)  AS win_sum,
SUM(stake - win) AS ggr
FROM fact_bets f
JOIN dim_country c ON c. country_sk = f. country_sk AND c. is_current
GROUP BY d, c. region;

Чек-лист внедрения

1. Определите источники и домены, зафиксируйте словарь метрик.
2. Выберите модель: DV для сырых/аудитных слоев + Star для витрин.
3. Спроектируйте партиции/кластеры под ключевые запросы и окна.
4. Настройте CDC/ELT, SCD-политику и surrogate keys.
5. Введите семантический слой (метрики как код) и календарь дат/часов.
6. Создайте MVs/предагрегации для дорогих отчетов.
7. Включите DQ/каталог/lineage и контроль схем.
8. Определите RBAC/PII/локализацию, шифрование, аудит.
9. Настройте мониторинг p95/p99, стоимость, алерты на деградации и перерасход.
10. Регулярные DR-учения и воспроизводимость окружений.

Антипаттерны

«Один гигантский факт без партиций» → сканы терабайт и счет растет.
Несогласованные определения метрик в разных дашбордах.
Отсутствие SCD2 там, где бизнес требует историчности.
Преждевременная нормализация измерений: лишние джойны и медленные отчеты.
Сырые данные без DQ-чеков и lineage → отчеты «ни о чем».
Отсутствие ретенции/TTL → складирование мусора и взрыв стоимости.

Итоги

Надежное iGaming-DWH — это четкая модель (DV→Star), единый словарь метрик, правильные партиции/кластеризация, материализованные витрины, строгие DQ/lineage, а также RBAC/PII/локализация. Добавьте гибридный стриминг для свежести, управляемый ELT и дисциплину стоимости — и получите устойчивую аналитическую платформу, которая масштабируется под турниры, регуляторные отчеты и ad-hoc исследование без сюрпризов в p99 и бюджете.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.