GH GambleHub

ETL/ELT процестері

1) Мақсаты және мәтіні

ETL/ELT-конвейерлері есептілік (GGR/NGR, реттегіштер), талдаулар/ML және жедел панельдер үшін болжамды жүктеуді, трансформациялауды және деректерді жариялауды қамтамасыз етеді.

ETL: DWH/Lakehouse жүктелгенге дейін трансформациялаймыз (сирек заманауи стектерде).
ELT: алдымен Lakehouse (Bronze/Silver) жүктейміз, содан кейін SQL/қозғалтқыштармен түрлендіреміз (ұсынылады).

2) Эталондық сәулет

1. Ingest/Edge: HTTP/gRPC/Batch, OLTP-дан CDC, провайдерлік жүктеу S3/FTP.
2. Bronze (raw, append-only): өзгермейтін payload 'тар, күні/нарығы/теңгерімі бойынша партиялар.
3. Silver (clean/conform): қалыпқа келтіру, дедуп, анықтамалықтар, SCD, FX/таймзондтар.
4. Gold (serve): BI/реттегіш/модельдің астында нормаланған витриналар.
5. Оркестрлеу: Airflow/Dagster/Prefect (DAG 'и, SLA, ретра, жылжулар).
6. DQ/Contracts: Schema Registry + DQ-как-код, consumer-driven tests.
7. Байқалуы: пайплайндар, lineage, логтар, cost-дашбордтар өлшемдері.

3) ETL vs ELT таңдау

ӨлшемETLELT (ұсынылған)
Қайта есептеудің икемділігітөменжоғары (time-travel, reprocessing)
Құныөсу кезінде қымбатмасштабтау кезінде оңтайлы
Сапаны бақылауingestSilver/Gold + DQ-код ретінде
Тарихтылық/форензияшектеулітолық (Bronze append-only)

Практика: iGaming - ELT + CDC: тез жүктейміз, содан кейін стандарттаймыз және есептейміз.

4) Инкременттер және CDC

Дельталарға жақындаулар:
  • CDC (Debezium/лог-репликация): ALTP → Bronze → MERGE Silver өзгерістері.
  • Watermark уақыты бойынша: 'updated _ at> max_loaded_ts'.
  • Хэш-дифф: өзгерістер детекторы үшін 'md5 (row)' салыстыру.
  • Upsert/MERGE: Жүктеу ұқсастығы.
MERGE мысалы (Delta/Iceberg):
sql
MERGE INTO silver. payments s
USING stage. payments_delta d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;

5) Келісімшарттар мен схемалар

Schema-first: JSON/Euro/Protobuf Registry; 'schema _ version' оқиғалар/файлдарда.
Эволюция: back-compatible (nullable қосылымдар); breaking - '/v2 '+ қос жазба.
Міндетті өрістер: 'event _ time (UTC)', 'event _ id', 'trace _ id', 'user _ pseudo _ id', 'market'.

6) DQ-сияқты-код (ең аз жиынтық)

yaml table: silver. payments owner: data-payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: unique_tx # uniqueness of transactions type: unique columns: [transaction_id]
severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical

7) Оркестрлеу: DAG 'и, тәуелділік, SLA

DAG-дизайн: көздерден витриналарға; міндеттер арасындағы айқын тәуелділік.
Ретрайлық және теңсіздік: backoff, «таза» қайталаулар, checkpoint's.
Жылжулар (catchup): өткізіп алған кезеңдердің ұқыпты догоны.
SLA: мысалы, Gold. daily жергілікті уақыт бойынша сағат 06: 00-ге дейін дайын; бұзушылықтар туралы хабарлау.
Параметрлеу: нарықтар/тенанттар/күндер арқылы vars; job's бірыңғай үлгісі.

8) Теңсіздік және exactly-once

ingest: көшірмелері мүмкін → дедуп бойынша '(event_id, source)'.
Өңдеуде: upsert/merge; «таза» трансформация функциялары.
В sink: транзакциялық коммиттер немесе idempotent writes; «қосарлы есепке алуды» бақылау.
Outbox/Inbox: OLTP домендік оқиғаларын транзакциялық жариялау.

9) Backfill и reprocessing

Backfill: бастапқы толтыру/тарихи ауқымдар.
Reprocessing: логиканы өзгерту/түзету кезінде қайта есептеу.
Guardrails: диапазондар, квоталар, уақыт терезелері, метрикалық салыстырумен dry-run.
Таңбалау: 'logic _ version', 'reprocessed _ at', 'recalc _ reason'.

10) Silver/Gold модельдеу

Silver (3НФ/BCNF): фактілер 'fact _ bets/payments/payouts', өлшеулер 'dim _ users/games/providers/markets (SCD II)', валюталарды/таймзондтарды стандарттау.
Gold: BI/реттегіш/модельге арналған денормалдандырылған витриналар; өзгермейтін экспорттық пакеттер (WORM) + қолы.

Мысал Gold: GGR Daily

sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS 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;

11) Жекешелiк және резиденттiк

PII-минимизация: токенизация; оқшауланған контурдағы нақты ID маппингі.
RLS/CLS: рөлдер/юрисдикциялар бойынша қатынау саясаты, бүркемелеу.
Residency: EEA/UK/BR үшін жеке каталогтар/кілттер; негізсіз кросс-өңірлік join 'oларға тыйым салу.
DSAR/RTBF & Legal Hold: селективті редакциялау, есеп беру үшін WORM мұрағаттары, экспорт аудиті.

12) Бақылау және SLO

SLI/SLO бағдарлары:
  • Freshness Silver p95 ≤ 15 мин; Gold daily сағат 06: 00-ге дейін дайын. уақыт.
  • Completeness ≥ 99. 5%, Validity (схема) ≥ 99. 9%.
  • Job 'oлардың табыстылығы ≥ 99. 0%, MTTR оқыс оқиғалар ≤ 24-48 сағ.

Дашбордтар: Freshness heatmap, DQ-шығын құйғышы, cost/query & cost/GB, lineage-баған.

13) Өнімділік және құн

Партиялану: күні/нарық/тенант; кластерлеу/Z-order сүзгілер бойынша.
Пішімдер: Parquet + ACID (Delta/Iceberg/Hudi), компрессия және статистика.
Компакция: small files-пен күрес (OPTIMIZE/VACUUM).
Материалдандыру: тұрақты агрегаттар; алпауыт on-the-fly join 'oларды болдырмау.
Chargeback: бюджеттер, репликаларға квоталар/backfill; төмен жүктеме терезелерінде жоспарлау.

14) DAG үлгілік міндеттерінің үлгілері (Airflow жалған құжаты)

python with DAG("elt_payments_daily", schedule="@daily", start_date=..., catchup=True) as dag:
extract = BashOperator(task_id="extract_cdc", bash_command="run_cdc_to_bronze. sh {{ ds }}")
load  = BashOperator(task_id="load_to_silver", bash_command="sql/run_merge_silver. sql {{ ds }}")
dq   = BashOperator(task_id="dq_checks", bash_command="dq/run_checks. sh silver. payments {{ ds }}")
gold  = BashOperator(task_id="build_gold_ggr", bash_command="sql/build_gold_ggr. sql {{ ds }}")
export = BashOperator(task_id="export_regulator", bash_command="export/run_worm_pack. sh {{ ds }}")

extract >> load >> dq >> gold >> export

15) Процестер және RACI

R (Responsible): Data Engineering (DAG 'i, Silver/Gold модельдері), Data Platform (инфра, Registry, DQ).
A (Accountable): Head of Data/CDO.
C (Consulted): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/Өнім/Маркетинг/Операциялар.

16) Енгізу жол картасы

MVP (3-5 апта):

1. Lakehouse Bronze/Silver (ACID) + CDC/Payments/Gameplay үшін инкременттер.

2. DQ-код ретінде (10-15 ереже) және Freshness/Completeness базалық дашбордтары.

3. Бірінші Gold-витрина (GGR Daily) SLA «06: 00-ге дейін», WORM-экспорт қолтаңбасы бар.

4. DAG оркестрі және SLA/DQ-дағы алерта.

2-фаза (5-10 апта):
  • Домендерді кеңейту, users/games/providers үшін SCD II.
  • Метриканың семантикалық қабаты; lineage/impact-талдау; backfill/reprocessing рәсімдері.
  • Аймақтандыру (EEA/UK), RLS/CLS, құнын бақылау (квоталар/chargeback).
3-фаза (10-16 апта):
  • Реплей-симулятор (what-if), витриналар/метриктер құжаттамасының автогенерациясы.
  • Cost-оңтайландыру (кластерлеу, материалдандыру, TTL, компакция).
  • DR-жаттығулар және time-travel қалпына келтіру.

17) Азық-түлік алдындағы чек-парағы

  • Registry-дегі келісімшарттар/схемалар, сыйысымдылық тестілері жасыл.
  • CDC/инкременттер және MERGE іспеттес; дедуп ingest.
  • DQ ережелері белсенді (critical → fail + DLQ), SLA-дашбордтар теңшелген.
  • Gold-витриналар құжатталған, семантикалық қабаттағы метрикалық формулалар.
  • RBAC/ABAC, шифрлау, резиденттік, DSAR/RTBF/Legal Hold тексерілді.
  • Кесте бойынша/OPTIMIZE/VACUUM компакциясы; backfill/реплеяларға арналған лимиттер.
  • Runbook 'және оқиғалар және reprocessing, экспорт аудиті (WORM + hash).

18) Анти-паттерндер және тәуекелдер

«Толық reload»: CDC/инкременттерді пайдаланыңыз.
Шикі және есептік деректерді араластыру: Bronze/Silver/Gold-ды бөлек ұстаңыз.
DQ және lineage жоқ: дәлелденуі және жаңғыртылуы жоқ.
Аналитикалық қабаттардағы PII: маппингтерді оқшаулаңыз, CLS/RLS қолданыңыз.
Монолитті «түнгі» джобтар: бөлшектеңіз, партияларға параллельдеңіз.
Құн игноры: small files-ті қадағалаңыз, агрегаттарды материалдандырыңыз, квоталарды енгізіңіз.

19) Глоссарий (қысқаша)

ETL/ELT - шығару/трансформациялау/жүктеу (жүктеуге дейін/кейін).
CDC - өзгерістерді басып алу.
SCD - өлшемдерді тарихтау (I/II/III).
WORM - есептік пакеттердің өзгермейтін сақталуы.
Time-travel - кестелердің тарихи нұсқаларын оқу.

20) Қорытынды

Қазіргі заманғы ETL/ELT - скрипттер емес, басқарылатын платформа: келісімшарттар мен DQ, іспеттес инкременттер/CDC, Bronze/Silver/Gold қабаттарының тәртібі, бақылау және SLO, құпиялылық және үнемділік. Осы нұсқаулықты басшылыққа ала отырып, сізге қайталанатын және аудиттелетін, есептілікті тұрақты түрде қоректендіретін конвейерлер, көлемде және күтпеген жерден өнім мен модельдер беріледі.

Contact

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

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

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

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

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

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