GH GambleHub

Analitik ve ETL boru hatları

(Bölüm: Teknoloji ve Altyapı)

Kısa Özet

Analitik boru hattı, "ham" iGaming operasyonel olaylarını (bahisler, depozitolar, PSP web kitapları, oyun günlükleri) istikrarlı metrik vitrinlere (GGR/NGR, LTV, tutma, sahtekarlık karşıtı sinyaller) dönüştürür. Destekleyici ilkeler: Tek katmanlı bir model (Bronz/Gümüş/Altın), enstrümantal disiplin DQ/soy, artıcılık ve idempotans, gözlemlenebilirlik ve SLO, maliyet kontrolü. Kararlar, veri tazeliği için yük profili (turnuva zirveleri), düzenleyici (PII/yerelleştirme) ve iş gereksinimleri dikkate alınarak verilir.

1) Mimariler: ETL vs ELT, parti vs akış

Extract - Transform - DWH'ye yüklemeden önce Load-Transforms. Dönüşümlerin "bulut'tan önce kontrollü bir ortam/sırlar gerektirdiği durumlarda uygundur.
ELT (Extract - Load - Transform): Lake/Lakehouse/DWH'deki hammaddeler, daha sonra SQL/motor (dbt/SQL betikleri). Sütun motorları ve esnek yinelemeler için uygundur.
Toplu iş: Zamanlanmış pencereler (her 5/15/60 dakikada, gece). Ucuz ve tahmin edilebilir.
Akış: почти gerçek zamanlı (Kafka ^ Flink/ksqlDB ^ OLAP). Gerçek zamanlıya yakın pencereler (5-60 saniye) ve dolandırıcılıkla mücadele/CRM sinyalleri için.
Hibrit: Bronz akışla doldurur, Gümüş/Altın - artımlı parti modelleri.

Öneri: IGaming'de ELT + akışını sürdürün: CDC/outbox üzerinden olaylar - Bronz (dakika tazeliği), Gümüş/Altın'daki artımlı dönüşümler.

2) Madalyon

Bronz (Ham): İş mantığı olmadan ham olaylar/CDC. Parke/ORC formatları, şemaları olduğu gibi, minimal doğrulama.
Gümüş (Uyumlu): temizleme, veri tekilleştirme, kimlik normalleştirme, boyut SCD, para birimi/saat dilimi birleştirme.
Altın (Mart): iş durumları (gerçekler/boyutlar, küpler), materyalize görünümler, ön toplamalar (günler/ülkeler/ürünler).

Artıları: tekrarlanabilirlik, şeffaf evrim, farklı SLO'lar ve TTL'ler katman katman.

3) Kaynaklar ve yükleme: CDC, giden kutusu, dosyalar

CDC (Change Data Capture): değişim OLTP'den (Postgres/MySQL) garantili sipariş ve idempotency ile akar.
Giden kutusu deseni: olaylar servis işlemindeki giden kutusu tablosuna/koleksiyonuna yazılır - bağlayıcı veri yoluna/göle yayınlar.
Dosya yükleme: PSP yüklemeleri, iş ortağı raporları; Manifestoları, sağlama toplamını ve alma dizinlerini kullanın.

Uygulamalar: Kaynaklar, her bir kaynak için (şema sürümü) - alanların ve kalite beklentilerinin bir sözleşmesi - versiyonlanır.

4) Orkestrasyon: DAG, bağımlılıklar, dağıtım

DAGs: explicit dependencies (raw - staging - dims - facts - marts).
Görev idempotensi: yan etkiler olmadan yeniden çalıştırma (partition-overwrite, 'MERGE'/upsert).
Ortamların ayrılması: Dev/Stage/Prod, eserlerin tanıtımı, pahalı dolgu için "manuel onay".
Zamanlama: cron/time pencereleri + olay tetikleyicileri (dosyaların/tarafların gelişine göre).
Sırlar: gizli yöneticiden; DAG kodunda sırların engellenmesi.

Soyut DAG örneği (pseudocode):
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) Veri kalitesi (DQ) ve soy

DQ kontrolleri: bütünlük (sayım, geç gelenler), anahtarların benzersizliği, aralıklar/etki alanı kuralları (tutar ≥ 0, dizindeki para birimi).
Tetikleme eşiği: tablonun kritikliğine bağlı olarak uyarı ile sert durdurma/yumuşak başarısız.
Soy/katalog: rapordan kaynağa (tablolar, sütunlar, metrikler), sahipler, belgeler, PII sınıflandırması.
Şema kontrolü: otomatik uyumluluk testleri (geri/ileri uyumlu), "kırma" değişiklikleri için uyarı.

6) Simülasyon: SCD, vekil anahtarlar, normalleştirme

Boyutlar için SCD2 'valid _ from/valid _ to/is _ current', vekil anahtar ('_ sk') ve doğal anahtardır ('_ id').
Küçük nitelikler için SCD1-Overwrites (örneğin, arabirim yerel ayarı).
Vekil anahtarlar: birleştirme için kararlı '_ sk', benzersizlik için doğal anahtarlar.
Boyut normalleştirme: hiyerarşilerin derin olduğu kar tanesi; Aksi takdirde hız için yıldız.

7) Artımlı modeller ve bölümleme

Filigran ('updated _ at', 'ingest _ ts'): yalnızca yeni/değiştirilmiş satırları okuyun.
Artımlı stratejiler: Işletme anahtarlarına göre 'BIRLEŞTIRME', lotlara göre 'ÜZERINE YAZMA EKLE', küçük lotlara göre 'DELETE + INSERT'.
Bölümleme: tarih/saat/bölgeye göre; Filtreleme ve birleştirme tuşları ile kümeleme (sıralama tuşları/Z-sırası).
Materyalize görünümler: GGR/NGR ön toplama, popüler bölümlerin önbelleği.
Yaklaşık birimler: Ucuz top-N vitrinler için HLL/approx_distinct.

Artımlı 'MERGE' örneği (genel):
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) Dolgu, yeniden işleme ve hikaye yönetimi

Dolgu: Kaynak sınırları ve pencereleri olan bireysel DAG'ler; açık bir "hakikat penceresi" (örn. 2024-01-01.. 2025-11-05).
Yeniden işleme: deterministik dönüşümler - tekrarlanan işler aynı sonucu verir. Model kodunun günlükleme sürümleri.
Zaman yolculuğu/tablo sürümleri: araştırmalar ve DR "mantıksal hatalar" için uygundur.
Geri çekme: Günlüğe kaydetme ile geri çekme (silme/düzeltme) ilkesi.

9) Konveyör CLO/SLA/SLO

Tazelik: Bronz ≤ 1-5 dk., Gümüş ≤ 15 dk., Altın ≤ 60 dk. (Örnek).
Güvenilirlik: DAG ≥ 99 geçiş oranı % x.
Performans: P95/p99 düğüm süresi; parti zamanı bütçesi.
Gecikme izleme: yutulan akışın gecikmesi, kuyruk derinliği, "geç veri" paylaşımı.
Uyarılar: Tazelik/hacim ihlali, DQ dosyaları, taramaların maliyetinde artış, MV'nin bozulması.

10) Maliyet: tahmin ve optimizasyon

Bölümler ve kümeler tarama hacmini en aza indirir.
Sıcak işaretleyicilerin maddeleştirilmesi (günler/ülkeler/ürünler).
Sık kullanılan gösterge tabloları için sonuç önbelleği/MV'leri.
Monitör yeniden başlatma frekansı (sebepsiz yere'her 5 dakikada bir "yok).
TTL: Agresif Bronz tutma, orta Gümüş, uzun Altın (sadece agregalar).
Kapasite planlaması: katalog metrikleri, turnuva/kampanya zirvelerinin tahmini.

11) Güvenlik, PII ve yerelleştirme

Veri sınıflandırması: PII/finansal/operasyonel.
Şifreleme: dinlenme ve geçiş sırasında; KMS/rol tabanlı erişim.
Kimlik tespiti: karma/maskeleme, anahtarlı ayrı sütunlar.
Çoklu kiracılık için RLS/kar fırtınaları ('tenant _ id'ile).
Lokalizasyon: Bölgelere göre depolama ve işleme alanları (EU/TR/LATAM); Yalnızca izin verilen yerlere ihracat yapın.
Denetim: kritik tablolara okur/yazar, dizin erişimi.

12) Gözlemlenebilirlik: metrikler, günlükler, izler

Boru hattı metrikleri: görev süresi, kuyruk, hatalar, retrays, işlenen bayt/satır, maliyet.
Günlükler: yapılandırılmış; 'trace _ id'/' run _ id' üzerindeki korelasyon.
İzleme: kaynaktan vitrine (ingest - transform - load - BI).
Panolar: katmanların tazeliği, DAG'lerin başarısı, en pahalı istekler, p95/p99.

13) Araçlar (rol ölçütleri)

Orkestrasyon: DAG orkestratörleri (zamanlayıcı, retrays, uyarılar, sırlar ile).
Dönüşümler: SQL modelleme ("kod olarak modeller"), modellerin birim testleri, dokümantasyon.
DQ/sözleşmeler: veri kümeleri üzerinde doğrulama çerçeveleri ve SLA'lar.
Lineage/Catalog: otomatik bağımlılık grafiği, sahibini bul.
Akış: pencere/toplama işlemcileri, lavabo/kaynak konnektörleri.

(Şirketin yığını ve güvenlik gereksinimleri için belirli satıcılar seçilir.)

14) Örnek şablonlar

GGR Vitrin Şablonu (Genel 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;

Artımlı filigranlı model

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 kontrolleri (fikir)

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) Uygulama kontrol listesi

1. Metrik sözlüğünü (GGR/NGR/LTV/Retention) ve sahiplerini tanımlayın.
2. Bronz/Gümüş/Altın katmanları arasında SLO tazeliğini kaydedin.
3. Kaynak sözleşmeleri standartlaştırın (şemalar, DQ, SLA).
4. Idempotent adımlar ve izole edilmiş sırlarla bir DAG grafiği oluşturun.
5. Artımlılığı (MERGE/overwrite by party) ve filigranları uygulayın.
6. DQ (kritik/yumuşak kontroller), soy ve veri dizini ekleyin.
7. Gözlemlenebilirliği (metrikler, günlükler, izler) ve uyarıları ayarlayın.
8. Saklama/TTL ve geri doldurma/yeniden işleme politikasını girin.
9. PII denetimi, şifreleme, RLS ve yerelleştirme sağlayın.
10. Oyun gününü geçirin: Bir kaynak damlasının taklit edilmesi, şemaların "kırılması", kitlesel geri doldurma.

16) Antipatterns

"Her Şey İçin Bir Gece ETL", partiler ve artışlar olmadan.
DQ ve soy eksikliği - çelişkili raporlar ve hayalet avcılığı.
Her başlatmada tabloların tam revizyonu (maliyet patlaması).
Tamponlar/geri çekmeler olmadan gerçek zamanlı olarak sabit paket.
PII ve genel vitrinleri segmentasyon ve maskeleme olmadan harmanlama.
Geri çekme/silme politikası yok (hatalar düzeltilemez).

Özet

IGaming'deki sağlam analitik boru hattı, sert DQ/soy, artımlı modeller, şeffaf orkestratör ve ölçülebilir SLO'larla katmanlı bir modele ELT + akış yüklemesidir. Maliyet kontrolü, PII/yerelleştirme politikası, düzenli geri doldurma/DR alıştırmaları ekleyin; analitik platformunuz turnuva zirvelerine güvenilir bir şekilde ölçeklenecek ve işinize istenen tazelik ve kalitedeki verilerle yanıt verecektir.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.