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