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).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.