GH GambleHub

ETL/ELT prosesləri

1) Təyinat və kontekst

ETL/ELT konveyerləri hesabat (GGR/NGR, tənzimləyicilər), analitik/ML və əməliyyat panelləri üçün proqnozlaşdırıla bilən yükləmə, transformasiya və məlumatların yayımlanmasını təmin edir.

ETL: DWH/Lakehouse download əvvəl transformasiya (nadir hallarda müasir stack).
ELT: əvvəlcə Lakehouse-a (Bronze/Silver) yükləyirik, sonra SQL/mühərrikləri ilə çeviririk (tövsiyə olunur).

2) Etalon arxitekturası

1. Ingest/Edge: HTTP/gRPC/Batch, ALTP-dən CDC, provayder yükləmə S3/FTP.
2. Bronze (raw, append-only): dəyişməz payload ', partiya/bazar/tenant.
3. Silver (clean/conform): normallaşma, dedup, kataloqlar, SCD, FX/taymzonlar.
4. Gold (serve): BI/tənzimləyici/model altında denormallaşdırılmış vitrinlər.
5. Orkestrasiya: Airflow/Dagster/Prefect (DAG 'i, SLA, retrajlar, yerdəyişmə).
6. DQ/Contracts: Schema Registry + DQ-как-код, consumer-driven tests.
7. Müşahidə: payplayn metrikası, lineage, log, cost-dashboard.

3) ETL vs ELT seçimi

MeyarETLELT (tövsiyə olunur)
Yenidən hesablamaların çevikliyiaşağıyüksək (time-travel, reprocessing)
Qiymətböyüdükdə daha bahalımiqyasda optimaldır
Keyfiyyətə nəzarətingestSilver/Gold + DQ-kod kimi
Tarixilik/Forensikaməhdudtam (Bronze append-only)

Təcrübə: iGaming-də - ELT + CDC: tez yükləyin, sonra standartlaşdırın və sayın.

4) Artımlar və CDC

Deltalara yanaşmalar:
  • CDC (Debezium/log-replikasiya): Silver ALTP → Bronze → MERGE dəyişikliklər.
  • Watermark vaxtı ilə: 'updated _ at> max_loaded_ts'.
  • Hash-diff: 'md5 (row)' dəyişiklik detektivi üçün müqayisə.
  • Upsert/MERGE: downloads idempotent.
MERGE nümunəsi (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) Müqavilələr və sxemlər

Schema-first: JSON/Euro/Protobuf in Registry; 'schema _ version' hadisə/fayllarda.
Təkamül: back-compatible (nullable əlavələr); breaking - '/v2 '+ ikiqat qeyd.
Məcburi sahələr: 'event _ time (UTC)', 'event _ id', 'trace _ id', 'user _ pseudo _ id', 'market'.

6) DQ-kimi kod (minimum dəst)

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) Orkestrasiya: DAG 'i, asılılıq, SLA

DAG-dizayn: mənbələrdən vitrinlərə; vəzifələr arasında açıq asılılıq.
Retray və idempotentlik: backoff, «saf» təkrar, checkpoint.
Yerdəyişmə (catchup): buraxılmış dövrlərin səliqəli dogonu.
SLA: Gold kimi. daily yerli saat 06: 00-a qədər hazır; pozuntular barədə xəbərdarlıq.
Parametrləşdirmə: vars vasitəsilə bazarlar/tenantlar/tarixlər; job 's vahid şablon.

8) İdempotentlik və exactly-once

ingest: dublikatlar mümkündür → dedup po '(event_id, source)'.
Emal: upsert/merge; «təmiz» transformasiya funksiyaları.
Sink: əməliyyat committes və ya idempotent writes; «ikiqat uçot» nəzarəti.
Outbox/Inbox: ALTP-dən domen hadisələrinin tranzaksiya nəşri.

9) Backfill и reprocessing

Backfill: ilkin doldurma/tarixi diapazonlar.
Reprocessing: məntiq dəyişikliyi/düzəlişlər zamanı yenidən hesablama.
Guardrails: diapazon limitləri, kvotalar, vaxt pəncərələri, metrlərin müqayisəsi ilə dry-run.
Etiketləmə: 'logic _ version', 'reprocessed _ at', 'recalc _ reason'.

10) Silver/Gold modelləşdirilməsi

Silver (3NF/BCNF): faktlar 'fact _ bets/payments/payouts', ölçülər 'dim _ users/games/providers/markets (SCD II)', valyutaların/taymzonların standartlaşdırılması.
Gold: BI/tənzimləyici/model altında denormalize vitrinlər; dəyişməz ixrac paketləri (WORM) + imza.

Gold nümunəsi: 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) Gizlilik və rezidentlik

PII-minimallaşdırma: tokenizasiya; izolyasiya kontur real ID mapping.
RLS/CLS: rollar/yurisdiksiyalar üzrə giriş siyasəti, maskalanma.
Residency: EEA/UK/BR üçün fərdi kataloqlar/açarlar; əsas olmadan cross-regional join 'oların qadağan edilməsi.
DSAR/RTBF & Legal Hold: selektiv redaktələr, hesabat üçün WORM arxivləri, ixrac auditi.

12) Müşahidə və SLO

SLI/SLO göstəriciləri:
  • Freshness Silver p95 ≤ 15 dəq; Gold daily saat 06: 00-a qədər hazır olur. vaxt.
  • Completeness ≥ 99. 5%, Validity (sxem) ≥ 99. 9%.
  • job 'ların müvəffəqiyyəti ≥ 99. 0%, MTTR hadisələri ≤ 24-48 saat

Dashbord: Freshness heatmap, huni DQ-itki, cost/query & cost/GB, lineage-qraf.

13) Performans və dəyəri

Partizanlaşdırma: tarix/bazar/tenant; klaster/Z-order filtr.
Formatlar: Parquet + ACID (Delta/Iceberg/Hudi), sıxılma və statistika.
Kompaksiya: small files (OPTIMIZE/VACUUM) ilə mübarizə.
Materiallaşma: sabit aqreqatlar; nəhəng on-the-fly join 'oların qarşısını almaq.
Chargeback: büdcələr, replay/backfill kvotaları; aşağı yük pəncərələrində planlaşdırma.

14) DAĞ-ın standart tapşırıqlarının nümunələri (Airflow psevdokodu)

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) Proseslər və RACI

R (Responsible): Data Engineering (DAG 'i, Silver/Gold modelləri), Data Platform (infra, 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/Məhsul/Marketinq/Əməliyyatlar.

16) Tətbiqi yol xəritəsi

MVP (3-5 həftə):

1. Lakehouse Bronze/Silver (ACID) + CDC/Payments/Gameplay üçün inkrementlər.

2. DQ-kimi kod (10-15 qaydalar) və Freshness/Completeness baza daşbordları.

3. SLA ilə ilk Gold vitrin (GGR Daily) «06: 00-a qədər», imzası ilə WORM-ixrac.

4. DAG orkestrasiyası və SLA/DQ-də alertlər.

Faza 2 (5-10 həftə):
  • Domain Extension, users/games/providers üçün SCD II.
  • Metriklərin semantik təbəqəsi; lineage/impact-analizi; backfill/reprocessing prosedurları.
  • Regionallaşdırma (EEA/UK), RLS/CLS, dəyər nəzarəti (kvotalar/chargeback).
Faza 3 (10-16 həftə):
  • Replay-simulyator (what-if), vitrin/metrik sənədləşmə avtomatik generasiya.
  • Cost-optimallaşdırma (klaster, materiallaşdırma, TTL, kompaksiya).
  • DR-təlimlər və time-travel bərpa.

17) Satış öncəsi yoxlama siyahısı

  • Registry-də müqavilələr/sxemlər, uyğunluq testləri yaşıl.
  • CDC/artım və MERGE idempotent; ingest dedup.
  • DQ qaydaları aktivdir (critical → fail + DLQ), SLA dashboard konfiqurasiya.
  • Qızıl vitrinlər sənədləşdirilmiş, semantik təbəqədə metrik düsturlar.
  • RBAC/ABAC, şifrələmə, rezidentlik, DSAR/RTBF/Legal Hold yoxlanılır.
  • Cədvəl üzrə kompaksiya/OPTIMIZE/VACUUM; backfill/replay limitləri.
  • Runbook 'və hadisələr və reprocessing, ixrac audit (WORM + hash).

18) Anti-nümunələr və risklər

Tam reload «hər ehtimala qarşı»: CDC/artımlardan istifadə edin.
Xam və hesabat məlumatlarının qarışması: Bronze/Silver/Gold 'u ayrıca saxlayın.
DQ və lineage yoxdur: sübut və təkrarlanabilirlik yoxdur.
Analitik təbəqələrdə PII: mappinqləri təcrid edin, CLS/RLS tətbiq edin.
Monolit «gecə» jobları: partiyalar üzrə parçalayın, paralel.
İqnor dəyəri: kiçik files izləyin, aqreqatları materiallaşdırın, kvotaları daxil edin.

19) Lüğət (qısa)

ETL/ELT - çıxarılması/transformasiya/yükləmə (yükləmədən əvvəl/sonra).
CDC - dəyişikliklərin tutulması.
SCD - ölçmələrin tarixləşdirilməsi (I/II/III).
WORM - hesabat paketlərinin dəyişməz saxlanması.
Time-travel - cədvəllərin tarixi versiyalarını oxumaq.

20) Yekun

Müasir ETL/ELT skriptlər deyil, idarə olunan platformadır: müqavilələr və DQ, idempotent inkrementlər/CDC, Bronze/Silver/Gold təbəqələrinin intizamı, müşahidə və SLO, məxfilik və qənaətlilik. Bu təlimata əməl edərək, siz davamlı hesabat, məhsul və modelləri miqyasda və sürprizsiz təmin edən təkrar və audit konveyerləri alacaqsınız.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.