GH GambleHub

Талдау және ETL конвейерлері

(Бөлім: Технологиялар және Инфрақұрылым)

Қысқаша түйіндеме

Аналитикалық конвейер iGaming-тің «шикі» операциялық оқиғаларын (мөлшерлемелер, депозиттер, PSP вебхоктары, ойындар логтары) метрикалардың тұрақты витриналарына (GGR/NGR, LTV, ретеншн, антифрод-сигналдар) айналдырады. Тірек қағидаттары: қабаттардың бірыңғай моделі (Bronze/Silver/Gold), DQ/lineage аспаптық пәні, инкрементальдық және іспеттілік, бақылау және SLO, құнды бақылау. Шешімдер жүктеме бейіні (турнирлердің шыңы), реттеуіш (PII/оқшаулау) және бизнестің деректердің жаңаруына қойылатын талаптары ескеріле отырып қабылданады.

1) Сәулеттер: ETL vs ELT, batch vs stream

ETL (Extract → Transform → Load): DWH жүктеуге дейін түрлендіру. Трансформация «бұлт» дейін бақыланатын ортаны/құпияларды талап ететін жерде жарайды.
ELT (Extract → Load → Transform): Lake/Lakehouse/DWH шикізаты, одан әрі SQL/қозғалтқыш (dbt/SQL-скрипттер). Бағаналы қозғалтқыштар мен икемді итерациялар үшін қолайлы.
Batch: жоспарлы терезелер (әрбір 5/15/60 минут, nightly). Арзан және болжамды.
Stream: почти real-time (Kafka → Flink/ksqlDB → OLAP). Витриналар үшін near-real-time (5-60 секунд) және антифрод/CRM сигналдары.
Гибрид: Bronze стриммен толтырылады, Silver/Gold - инкрементальды batch модельдері.

Ұсыным: iGaming-те ELT + стримингті ұстау: CDC/outbox → Bronze (минуттық жаңалық) арқылы оқиғалар, Silver/Gold-ке инкременталды трансформациялар.

2) Қабатты модель (Medallion)

Bronze (Raw): бизнес-логикасыз шикі оқиғалар/CDC. Parquet/ORC пішімдері, схемалар, минималды валидация.
Silver (Conformed): тазалау, дедупликация, сәйкестендіргіштерді қалыпқа келтіру, SCD өлшемдері, валюта/сағат белдеулерін біріздендіру.
Gold (Marts): бизнес-витриналар (фактілер/өлшемдер, кубтар), materialized views, алдын ала топтау (күндер/елдер/өнімдер).

Артықшылықтары: қайталанушылық, мөлдір эволюция, қабаттар бойынша әртүрлі SLO және TTL.

3) Дереккөздер және тиеу: CDC, outbox, файлдар

CDC (Change Data Capture): ALTP (Postgres/MySQL) жүйесінен тәртіп пен теңсіздік кепілдігімен өзгерістер ағыны.
Outbox-паттерн: оқиғалар outbox кестесіне/жиынына сервис транзакциясында жазылады → коннектор шинаға/көлге жариялайды.
Файлдық жүктеу: PSP-жүктеулер, серіктестік есептер; манифесттерді, қосарларды бақылауды (checksum) және қабылдау каталогтарын пайдаланыңыз.

Практикалар: дереккөздер нұсқаланады (schema version), әрбір дереккөз үшін - өрістер мен сапаны күту келісімшарты.

4) Оркестрлеу: DAG, тәуелділік, деплой

DAGи: айқын тәуелділік (raw → staging → dims → facts → marts).
Тапсырмалардың ұқсастығы: жанама әсерсіз қайта іске қосу (partition-overwrite, 'MERGE '/upsert).
Қоршауды бөлу: Dev/Stage/Prod, артефакттарды жарнамалау, қымбат backfill үшін «қол қақпасы» (manual approval).
Жоспарлау: cron/уақытша терезелер + event-триггерлер (кіріс файлдары/топтамалары бойынша).
Құпиялар: құпия менеджерден; DAG кодындағы құпияларға тыйым салу.

Абстрактілі DAG мысалы (жалған құжат):
python with DAG("dwh_daily", schedule="0  ") as dag:
bronze = ingest_cdc(source="payments", partition=hour())
silver = dedup_normalize(input=bronze)
dims  = build_dimensions(input=silver)
facts = build_facts(input=silver, dims=dims)
marts = build_marts(input=facts)
bronze >> silver >> [dims, facts] >> marts

5) Деректер сапасы (DQ) және lineage

DQ-чектер: толықтығы (count, late arrivals), кілттердің бірегейлігі, диапазондары/домендік ережелері (сомасы ≥ 0, анықтамалықтағы валюта).
Іске қосылу шегі: қатаң тоқтау/кестенің сындылығына байланысты алертпен soft-fail.
Lineage/каталог: репорттан дереккөзге (кестелер, бағандар, метриктер), иелері, құжаттама, PII жіктеу.
Схемаларды бақылау: автоматты үйлесімділік тестілері (backward-/forward-compatible), «бұзатын» өзгерістерге алерт.

6) Модельдеу: SCD, surrogate keys, қалыпқа келтіру

Өлшеуге арналған SCD2: 'valid _ from/valid _ to/is _ current', surrogate key ('_ sk') және табиғи кілт ('_ id').
SCD1: маңызды емес атрибуттар үшін қайта жазу (мысалы, интерфейстің локалы).
Surrogate keys: тұрақты '_ sk' үшін join, natural keys - бірегейлік үшін.
Өлшемдерді қалыпқа келтіру: иерархия терең жерде snowflake; әйтпесе жылдамдық үшін star.

7) Инкременталды модельдер және партиялану

Су белгісі ('updated _ at', 'ingest _ ts'): тек жаңа/өзгертілген жолдарды оқу.
Инкрементальдық стратегиялар: бизнес-кілттер бойынша 'MERGE', партиялар бойынша 'INSERT OVERWRITE', шағын партиялар үшін 'DELETE + INSERT'.
Партиялануы: күні/сағаты/аймағы бойынша; сүзу және join кілттері бойынша кластерлеу (sort keys/Z-order).
Материалдандырылған көріністер: GGR/NGR алдын ала топтастыру, танымал қималардың кэші.
Approx-агрегаттар: арзан витриналар үшін HLL/approx_distinct top-N.

«MERGE» инкременттік үлгісі (жалпыланған):
sql
MERGE INTO fact_deposits f
USING staging_deposits s
ON (f. deposit_id = s. deposit_id)
WHEN MATCHED THEN UPDATE SET amount = s. amount, status = s. status, updated_at = s. updated_at
WHEN NOT MATCHED THEN INSERT (...)
VALUES (...);

8) Backfill, reprocessing және тарихты басқару

Backfill: ресурстар лимиттері мен терезелері бар жекелеген DAGлар; нақты «ақиқат терезесі» (мысалы, 2024-01-01.. 2025-11-05).
Reprocessing: determinated transformations → қайталау бірдей нәтиже береді. Үлгі кодының нұсқаларын логикалау.
Time-travel/кесте нұсқалары: тергеу және DR «логикалық қателер» үшін қолайлы.
Retraction: хаттама арқылы деректерді кері қайтару (жою/түзету) саясаты.

9) CLO/SLA/SLO конвейер

Тазалық (freshness): Bronze ≤ 1-5 мин, Silver ≤ 15 мин, Gold ≤ 60 мин (мысал).
Сенімділік: DAG ≥ 99 табысты прогондарының пайызы. x%.
Өнімділігі: p95/p99 тораптар ұзақтығы; партияға арналған уақыт бюджеті.
Lag мониторинг: ingest-ағымның артта қалуы, кезектердің тереңдігі, «late data» үлесі.
Алерталар: жаңашылдықтың/көлемнің бұзылуы, DQ-фейл, сканерлер құнының өсуі, MV деградациясы.

10) Құны: болжау және оңтайландыру

Партиялар мен кластерлер сканерлер көлемін барынша азайтады.
Ыстық маркерлерді материалдандыру (күндер/елдер/өнімдер).
Жиі пайдаланылатын дашбордтар үшін/MVs нәтиже кэші.
Қайта іске қосу жиілігін бақылау (себепсіз «әрбір 5 минут сайын» болмайды).
TTL: агрессивті ретеншн Bronze, орташа Silver, ұзын Gold (тек агрегаттар).
Capacity planning: каталогтық метриктер, турнирлер/кампаниялар шыңдарының болжамы.

11) Қауіпсіздік, PII және оқшаулау

Деректерді жіктеу: PII/қаржылық/операциялық.
Шифрлау: тыныштықта және транзитте; KMS/рөлге негізделген қатынау.
Де-сәйкестендіру: хэштеу/жасыру, кілттері бар жеке бағандар.
RLS/мульти-тенантқа арналған вьюхтар ('tenant _ id' бойынша).
Оқшаулау: аймақтар бойынша сақтау және өңдеу аймақтары (EU/TR/LATAM); тек рұқсат етілген жерлерге экспорттау.
Аудит: сыни кестелерді оқу/жазу, каталогқа кіру.

12) Бақылау қабілеті: метрика, логия, трейстер

Конвейер өлшемдері: міндеттер ұзақтығы, кезек, қателер, ретра, өңделген байттар/жолдар көлемі, құны.
Логи: құрылымдалған; 'trace _ id '/' run _ id' бойынша корреляция.
Трейсинг: көзінен витринаға дейін (ingest → transform → load → BI).
Дашбордтар: қабаттардың жаңаруы, DAG табыстары, ең қымбат сұраныстар, p95/p99.

13) Аспаптар (рөлдер бойынша бағдарлар)

Оркестрлеу: DAG-оркестраторлар (жоспарлаушымен, ретраларымен, алерталарымен, құпияларымен).
Трансформациялар: SQL-модельдеу («модель код ретінде»), юнит-тесттер модельдері, құжаттама.
DQ/келісімшарттар: деректер жиынына арналған тексерулер мен SLA фреймворктері.
Сызық/каталог: автоматты түрде тәуелділік бағанын құру, иесін іздеу.
Стриминг: терезе/агрегация процессорлары, sink/source коннекторлары.

(Нақты вендорлар компания стегі және қауіпсіздік талаптары үшін таңдалады.)

14) Үлгі үлгілері

GGR (жалпыланған SQL) көрме үлгісі

sql
CREATE OR REPLACE TABLE mart_ggr_daily AS
SELECT
DATE(b. ts) AS d,
c. country_code,
SUM(b. stake) AS stake_sum,
SUM(b. win)  AS win_sum,
SUM(b. stake - b. win) AS ggr
FROM fact_bets b
JOIN dim_country c ON c. country_sk = b. country_sk AND c. is_current
WHERE b. ts >= DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY)
GROUP BY d, c. country_code;

«Су белгісі» бар инкрементальды модель

sql
INSERT INTO fact_bets PARTITION (dt)
SELECT
FROM staging_bets
WHERE updated_at > (SELECT COALESCE(MAX(watermark), '1970-01-01') FROM _meta_watermarks WHERE table='fact_bets');
-- then update watermark

DQ-тексеру (идея)

sql
-- 1) key uniqueness
SELECT deposit_id FROM fact_deposits GROUP BY deposit_id HAVING COUNT()>1;

-- 2) negative amounts (error)
SELECT FROM fact_deposits WHERE amount < 0;

15) Енгізу чек-парағы

1. Метрика сөздігін (GGR/NGR/LTV/Retention) және иелерін анықтаңыз.
2. SLO жаңаруын Bronze/Silver/Gold қабаттары бойынша белгілеңіз.
3. Көздердің келісімшарттарын стандарттаңыз (схемалар, DQ, SLA).
4. Демпотенттік қадамдары мен оқшауланған құпиялары бар DAG-баған жасаңыз.
5. Инкрементальдылықты (MERGE/overwrite партиялары бойынша) және «су белгілерін» іске асырыңыз.
6. DQ (сыни/жұмсақ тексерулер), lineage және деректер каталогын қосыңыз.
7. Бақылау (метрика, логи, трейс) және алертаны анықтаңыз.
8. Retenshn/TTL және backfill/reprocessing саясатын енгізіңіз.
9. PII-бақылау, шифрлау, RLS және оқшаулауды қамтамасыз етіңіз.
10. Game-day өткізіңіз: көздің құлауын, «сындыру» схемаларын, жаппай backfill.

16) Антипаттерндер

«Барлығына бір түнгі ETL» партиясыз және инкрементальдықсыз.
DQ және lineage → қайшылықты есептердің болмауы және «арбақтарды аулау».
Әрбір іске қосу кезінде кестелерді толық өңдеу (құн жарылысы).
Буферсіз/ретрасыз нақты уақыттағы қатты байлам.
PII және жария витриналарды сегменттеусіз және бүркемелеусіз араластыру.
retraction/жою саясаты жоқ (қателерді түзету мүмкін емес).

iGaming-тегі талдаудың тұрақты конвейері - қатты DQ/lineage, инкрементальды модельдері, мөлдір оркестраторы және өлшенетін SLO бар қабатты модельге ELT + стримингтік жүктеме. Құн бақылауын, PII/локализация саясатын, тұрақты backfill/DR жаттығуларын қосыңыз - және сіздің аналитикалық платформаңыз бизнеске қажетті жаңалық пен сапа деректерімен жауап бере отырып, турнирдің шыңына сенімді түрде кеңейтіледі.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.