ETL/ELT süreçleri
1) Amaç ve bağlam
ETL/ELT boru hatları, raporlama (GGR/NGR, düzenleyiciler), analitik/ML ve operasyonel paneller için öngörülebilir yükleme, dönüşüm ve verilerin yayınlanmasını sağlar.
ETL: DWH/Lakehouse'a yüklemeden önce dönüştürün (modern yığınlarda daha az sıklıkla).
ELT: önce Lakehouse'a (Bronz/Gümüş) yükleyin, sonra SQL/motorları dönüştürün (önerilir).
2) Referans mimarisi
1. Ingest/Edge: HTTP/gRPC/Batch, OLTP'den CDC, sağlayıcı yükleme S3/FTP.
2. Bronz (ham, yalnızca ekle): değişmez yükler, tarihe/pazara/kiracıya göre taraflar.
3. Gümüş (temiz/uygun): normalleştirme, dedup, dizinler, SCD, FX/saat dilimleri.
4. Altın (servis): BI/regülatör/modeller için denormalize vitrinler.
5. Orkestrasyon: Hava akışı/Dagster/Prefect (DAG'i, SLA, Retrai, Vardiya).
6. DQ/Sözleşmeler: Schema Registry + DQ- как - код, tüketici odaklı testler.
7. Gözlemlenebilirlik: boru hattı metrikleri, soy, günlükler, maliyet panoları.
3) ETL vs ELT seçimi
Uygulama: iGaming'de - ELT + CDC: hızlı yükle, sonra standartlaştır ve say.
4) Artışlar ve CDC
Delta yaklaşımları:- CDC (Debezium/log replication): OLTP değişiklikleri - Bronz - Gümüş olarak MERGE.
- Filigran zamana göre: 'updated _ at> max_loaded_ts'.
- Hash diff: Değişiklik tespiti için 'md5 (satır)' karşılaştırması.
- Uppert/MERGE: Yüklemelerin idempotensi.
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) Sözleşmeler ve planlar
Şema-ilk: Kayıt Defterinde JSON/Avro/Protobuf; Olaylarda/dosyalarda 'schema _ version'.
Evrim: Geri uyumlu (geçersiz eklemeler); Breaking -'/v2 '+ çift giriş.
Gerekli alanlar 'event _ time (UTC)', 'event _ id', 'trace _ id', 'user _ pseudo _ id', 'market'tir.
6) DQ-as-code (minimum set)
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) Orkestrasyon: DAG've, bağımlılıklar, SLA
DAG tasarımı: kaynaklardan vitrinlere; Görevler arasındaki açık bağımlılıklar.
Retrai ve idempotence: backoff, "temiz" tekrarlar, kontrol noktaları.
Catchup: kaçırılan dönemlerin düzgün bir şekilde yakalanması.
SLA: Örneğin altın. Günlük yerel saatle 06:00'dan önce hazır; İhlaller konusunda uyarır.
Parametrelendirme: piyasalar/kiracılar/varlar aracılığıyla tarihler; Tek bir iş şablonu.
8) Idempotence ve tam olarak-bir kez
In ingest: duplicates are possible ^ dedup by '(event_id, source)'.
İşlemede: uppert/birleştirme; "saf" dönüşüm fonksiyonları.
Lavaboda: işlemsel taahhütler veya idempotent yazıyor; "Çifte sayım" kontrolü.
Giden Kutusu/Gelen Kutusu: OLTP'den etki alanı olaylarının işlemsel olarak yayınlanması.
9) Dolgu и yeniden işleme
Dolgu: birincil dolgu/tarihsel aralıklar.
Yeniden işleme - mantık değiştiğinde/düzeltildiğinde yeniden hesaplama.
Korkuluklar: aralık sınırları, kotalar, zaman pencereleri, metrik karşılaştırma ile kuru çalışma.
İşaretleme: 'logic _ version', 'repocessed _ at', 'recalc _ reason'.
10) Gümüş/Altın Modelleme
Gümüş (3NF/BCNF): gerçekler 'fact _ bets/payments/payments', boyutlar'dim _ users/games/providers/markets (SCD II) ', para birimi standardizasyonu/saat dilimleri.
Altın: BI/regülatör/modeller için denormalize vitrinler; Değişmez dışa aktarma paketleri (WORM) + imzası.
Altın örnek: 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 ve ikamet
PII minimizasyonu: tokenization; İzole döngüdeki gerçek kimliklerin haritaları.
RLS/CLS: role/yargı yetkisine göre erişim politikaları, maskeleme.
İkamet: EEA/UK/BR için ayrı dizinler/anahtarlar; Bölgeler arası birleşmeleri sebepsiz yasaklamak.
DSAR/RTBF & Legal Hold: seçici düzenlemeler, raporlama için WORM arşivleri, ihracat denetimleri.
12) Gözlemlenebilirlik ve SLO
SLI/SLO kriterleri:- Tazelik Gümüş p95 ≤ 15 dk; Altın günlük saat 06:00 kilidine kadar hazır. Zaman.
- Bütünlük ≥ 99. 5 %, Geçerlilik (şema) ≥ 99. 9%.
- İşlerin başarısı ≥ 99. %0, MTTR olayları ≤ 24-48 saat.
Panolar: Tazelik ısı haritası, DQ kaybı hunisi, maliyet/sorgu ve maliyet/GB, soy grafiği.
13) Performans ve maliyet
Bölümleme: tarih/pazar/kiracı; Filtrelere göre kümeleme/Z-sırası.
Biçimler: Parke + ACID (Delta/Iceberg/Hudi), sıkıştırma ve istatistik.
Sıkıştırma: küçük dosyalarla mücadele (OPTIMIZE/VAKUM).
Materyalizasyon: kararlı agregalar; Dev on-the-fly birleştirmeleri kaçının.
Ters ibraz: bütçeler, tekrar oynatma kotaları/geri doldurma; Düşük yük pencerelerinde zamanlama.
14) Tipik DAG görevlerine örnekler (Airflow pseudocode)
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) Süreçler ve RACI
R (Responsible): Veri Mühendisliği (DAG, Silver/Gold modelleri), Veri Platformu (infra, Registry, DQ).
A (Sorumlu): Veri/CDO Başkanı.
C (Consulted): Uyumluluk/Yasal/DPO (PII/ikamet/Yasal Bekletme), Finans (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Bilgilendirilmiş): BI/Ürün/Pazarlama/Operasyonlar.
16) Uygulama Yol Haritası
MVP (3-5 hafta):1. Lakehouse Bronz/Gümüş (ACID) + Ödemeler/Oyun için CDC/artışlar.
2. DQ benzeri kod (10-15 kural) ve temel Tazelik/Tamlık panoları.
3. SLA ile İlk Altın Vitrin (GGR Daily) "06:00'a kadar", WORM imzalı ihracat.
4. SLA/DQ üzerinde DAG ve uyarı orkestrasyonu.
Faz 2 (5-10 hafta):- Alan adı uzantısı, kullanıcılar/oyunlar/sağlayıcılar için SCD II.
- Metriklerin semantik katmanı; soy/etki analizi; Dolgu/yeniden işleme prosedürleri.
- Bölgeselleştirme (AÇA/İngiltere), RLS/CLS, maliyet kontrolü (kotalar/ters ibraz).
- Yeniden oynatma simülatörü (what-if), vitrin/metrik belgelerinin otomatik olarak oluşturulması.
- Maliyet optimizasyonu (kümeleme, materyalizasyon, TTL, sıkıştırma).
- DR egzersizleri ve zaman yolculuğu kurtarma.
17) Satış öncesi kontrol listesi
- Kayıt Defterindeki sözleşmeler/şemalar, uyumluluk testleri yeşil.
- CDC/artışlar ve MERGE idempotent; Dedup yutmak için.
- DQ kuralları aktiftir (kritik + başarısız + DLQ), SLA panoları yapılandırılmıştır.
- Altın vitrinler, semantik katmandaki metrik formüller belgelenmiştir.
- RBAC/ABAC, şifreleme, ikamet, DSAR/RTBF/Yasal Tutma doğrulandı.
- Bir programda sıkıştırma/OPTIMIZE/VAKUM; Geri doldurma/tekrar oynatma sınırları.
- Runbook've olaylar ve yeniden işleme, denetim ihracatı (WORM + hash).
18) Anti-kalıplar ve riskler
"Her ihtimale karşı" tam yeniden yükleme: CDC/artışları kullanın.
Ham ve raporlanan verileri karıştırma: Bronz/Gümüş/Altın ayrı tutun.
DQ ve soy eksikliği: kanıtlanabilirlik ve tekrarlanabilirlik yok.
Analitik katmanlarda PII: haritalamaları izole edin, CLS/RLS uygulayın.
Monolitik "gece" jabs: ezmek, gruplar halinde paralel.
Maliyeti göz ardı edin: küçük dosyalara göz kulak olun, toplamları gerçekleştirin, kotaları tanıtın.
19) Sözlük (kısa)
ETL/ELT - ekstraksiyon/dönüşüm/yükleme (yüklemeden önce/sonra).
CDC - Yakalama değişikliği.
SCD - ölçüm tarihlendirmesi (I/II/III).
WORM - rapor paketlerinin değiştirilemez depolanması.
Zaman yolculuğu - tabloların tarihsel versiyonlarını okumak.
20) Alt satır
Modern ETL/ELT komut dosyaları değil, yönetilen bir platformdur: sözleşmeler ve DQ, idempotent artışlar/CDC, Bronz/Gümüş/Altın katman disiplini, gözlemlenebilirlik ve SLO, gizlilik ve ekonomi. Bu kılavuzu izleyerek, raporlamayı, ürünü ve modelleri sürekli olarak ölçeklendiren ve sürprizler olmadan tekrarlanabilir ve denetlenebilir boru hatları elde edersiniz.