GH GambleHub

Stream vs Batch аналіз

1) Коротка суть

Stream - безперервна обробка подій за секунди: антифрод/AML, RG-тригери, SLA-алерти, оперативні панелі.
Batch - періодичний перерахунок з повною відтворюваністю: регуляторна звітність (GGR/NGR), фінсверки, ML-датасети.

Орієнтири: Stream p95 e2e 0. 5-5 с, Batch D + 1 до 06:00 (лок.) .

2) Матриця вибору (TL; DR)

КритерійStreamBatch
SLA реакціїсекунди/хвилинигодини/дні
Повнота (completeness)висока, але можливі late-виправленнядуже висока, контрольована D + 1
Відтворюваність «as-of»складніше (replay)простіше (time-travel/snapshots)
Вартість на одиницюдорожче онлайн-шляхдешевше на обсяг
Типові завданняAML/RG алерти, SRE, real-time вітринизвіти, звірки, ML off-line
Історизація (SCD)обмеженоповно
Регуляторка/WORMчерез Gold-перезбірнативно (Gold/D + 1)

Правило 80/20: все, що не вимагає реакції <5 хвилин - в Batch; решта - в Stream, з нічною валідацією Batch.

3) Архітектури

3. 1 Lambda

Stream для онлайну + Batch для консолідації. Плюс: гнучкість. Мінус: дві логіки.

3. 2 Kappa

Все як потоки; Batch = «реплей» через лог. Плюс: Єдиний код. Мінус: складність реплеїв/вартість.

3. 3 Lakehouse-Hybrid (рекомендовано)

Stream → оперативні OLAP-марти (хвилини) і Bronze/Silver; Batch перезбирає Gold (D + 1) і публікує звіти.

4) Дані та час

Stream

Вікна: tumbling/hopping/session.
Watermarks: 2-5 хв; late data позначається і доемітиться.
Stateful: CEP, дедуп, TTL.

Batch

Інкременти/CDC: 'updated _ at', лог-реплікація.
SCD I/II/III: Історія атрибутів.
Снапшоти: денні/місячні шари для «as-of».

5) Патерни застосування в iGaming

AML/Антифрод: Stream (velocity/структурування) + Batch звірки і кейси.
Responsible Gaming: Stream контроль лімітів/самовиключень; Batch звітні реєстри.
Операції/SRE: Stream алерти SLA; Batch пост-аналіз інцидентів і тренди.
Продукт/маркетинг: Stream персоналізація/місії; Batch когорти/LTV.
Фінанси/звіти: Batch (Gold D + 1, WORM-пакети), Stream - оперативні панелі.

6) DQ, відтворюваність, реплей

Stream DQ: валідація схем, дедуп'( event_id, source)', completeness вікна, late-ratio, dup-rate; критичне → DLQ.
Batch DQ: унікальність/FK/range/temporal, звірки з OLTP/провайдерами; критичне → fail job + звіт.

Відтворюваність:
  • Stream: реплей топіків за діапазоном + deterministic трансформації.
  • Batch: time-travel/версії логіки ('logic _ version') + снапшоти Gold.

7) Приватність і резидентність

Stream: псевдонімізація, online-маскування, регіональні конвеєри (EEA/UK/BR), таймаути на зовнішні PII-lookups.
Batch: ізоляція PII-маппінгів, RLS/CLS, DSAR/RTBF, Legal Hold, WORM-архіви.

8) Cost-інжиніринг

Stream: уникати «гарячих» ключів (salting), обмежувати async lookups, TTL стану, предагрегація.
Batch: партиціонування/кластеризація, компакція small files, матеріалізація стабільних агрегатів, квоти/вікна запуску.

9) Приклади

9. 1 Stream - Flink SQL (10-хв velocity депозитів)

sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream. payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);

9. 2 Stream - CEP (псевдокод AML)

python if count_deposits(10MIN) >= 3 and sum_deposits(10MIN) > THRESH \
and all(d. amount < REPORTING_LIMIT for d in window):
emit_alert("AML_STRUCTURING", user_id, snapshot())

9. 3 Batch - MERGE (інкремент Silver)

sql
MERGE INTO silver. payments s
USING stage. delta_payments d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;

9. 4 Batch — Gold GGR (D+1)

sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) event_date,
b. market, g. provider_id,
SUM(b. stake_base) stakes_eur,
SUM(p. amount_base) payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;

10) Метрики та SLO

Stream (орієнтири)

p95 ingest→alert ≤ 2–5 c completeness окна ≥ 99. 5%

schema-errors ≤ 0. 1%

late-ratio ≤ 1%

доступність ≥ 99. 9%

Batch (орієнтири)

Gold. daily готове до 06:00 лок.

completeness ≥ 99. 5%

validity ≥ 99. 9%

MTTR DQ-інциденту ≤ 24-48 год

11) Тестування та релізи

Контракти/схеми: consumer-driven tests; back-compat CI.
Stream: канарні правила, темний запуск, replay-симулятор.
Batch: dry-run на вибірках, порівняння метрик, контрольне підсумовування (reconciliation).

12) Анти-патерни

Дублювання логіки: різні розрахунки Stream і Batch без вирівнювання формул.
Синхронні зовнішні API в гарячому шляху Stream без кешу/таймаутів.
Full reload «про всяк випадок» замість інкрементів.
Відсутність watermarks/late-політик.
PII в аналітичних шарах; відсутність CLS/RLS.
Gold-вітрини, які «мутують» заднім числом.

13) Рекомендований гібрид (плейбук)

1. Stream-контур: ingest → шина → Flink/Beam (watermarks, дедуп, CEP) →

OLAP (ClickHouse/Pinot) для 1-5-хв панелей + Bronze/Silver (append).
2. Batch-контур: інкременти/CDC → Silver нормалізація/SCD → Gold добові вітрини/звіти (WORM).
3. Узгодження: єдиний семантичний шар метрик; nightly звірки Stream↔Batch; розбіжності> порогу → тікети.

14) RACI

R (Responsible): Streaming Platform (Stream-інфра), Data Engineering (Batch моделі), Domain Analytics (метрики/правила), MLOps (фічі/Feature Store).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/Legal/DPO, Finance (FX/GGR), Risk (RG/AML), SRE (SLO/вартість).
I (Informed): BI/Продукт/Маркетинг/Операції.

15) Дорожня карта

MVP (2-4 тижні):

1. Kafka/Redpanda + 2 критичних топіка ('payments','auth').

2. Flink-джоба: watermark + дедуп + 1 CEP-правило (AML або RG).

3. OLAP-вітрина 1-5 хв + дашборди lag/late/dup.

4. Lakehouse Silver (ACID), перша Gold. ggr_daily (D + 1 до 06:00).

Фаза 2 (4-8 тижнів):
  • Інкременти/CDC по доменах, SCD II, семантичний шар метрик.
  • Потокова DQ і nightly звірки Stream↔Batch.
  • Регіоналізація (EEA/UK/BR), DSAR/RTBF, Legal Hold.
Фаза 3 (8-12 тижнів):
  • Реплей-симулятор, canary/A-B релізи правил/метрик.
  • Cost-дашборди і квоти; tiered storage; DR-навчання.
  • Автогенерація документації вітрин/метрик і lineage.

16) Чек-лист впровадження

  • Схеми/контракти в Registry; back-compat тести зелені.
  • Stream: watermarks/allowed-lateness, дедуп, DLQ; OLAP-панелі в проді.
  • Batch: інкременти/CDC, SCD II, Gold D + 1 з WORM-експортами.
  • Єдиний семантичний шар метрик; nightly звірки Stream↔Batch.
  • DQ-дашборди Freshness/Completeness/Validity; алерти lag/late/dup.
  • RBAC/ABAC, шифрування, резидентність; DSAR/RTBF/Legal Hold.
  • Вартість під контролем (cost/GB, cost/query, state size, реплеї квотовані).

17) Підсумок

Stream і Batch не конкуренти, а дві шестерні одного приводу. Stream дає реакцію «тут і зараз», Batch - перевіряється істину «на ранок». Гібрид Lakehouse-підхід, єдиний шар метрик і дисципліна DQ/lineage дозволяють будувати швидкі, відтворювані і комплаєнтні аналітичні контури, оптимальні по SLA і вартості.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

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