GH GambleHub

Veri şemaları ve evrimleri

1) Neden bu bir iGaming platformu

Güvenilirlik - Verilerdeki değişiklikler raporları, API'leri veya modelleri bozmaz.
Özellik hızı: akışları durdurmadan alanları (KYC/RG/PSP) güvenle ekleyin.
Düzenleyici: izlenebilirlik ve tekrarlanabilirlik (denetim/soy, DSAR, Yasal Bekletme).
Maliyet: "Taşmaları've arka dolguların duruş sürelerini en aza indirin.

2) Şemaların türleri ve nerede yaşadıkları

Olaylar (akışlar): 'ödemeler. deposit_accepted', 'oyun. round_finished'.
OLTP/DDL: Normalleştirilmiş tablolar (KYC, hesaplar, limitler).
DWH/vitrinler (Altın): BI/ML altında denormalize agregalar.
Özellik Mağazası: Tutarlılık garantili çevrimiçi/çevrimdışı özellik setleri.
Dış ortak sözleşmeleri: PSP, oyun sağlayıcıları, pazarlama kaynakları.

Gösterimler: Avro/Protobuf (akışlar), JSON Şeması (entegrasyonlar), SQL DDL (DWH), Parke şeması (göl).

3) Uyumluluk (evrimin çekirdeği)

Geriye dönük uyumlu: yeni üreticiler - eski tüketiciler (eklenen alan c varsayılan/geçersiz).
İleri uyumlu: eski üreticiler - yeni tüketiciler (yeni okuyucu gereksiz yere görmezden gelir).
Tam uyumlu: her ikisi de (olaylar için arzu edilen hedef).
Breaking-changes: bir alanı yeniden adlandırma/silme, türü/anlambilimi değiştirme ,/bölümleme anahtarını değiştirme.

Kural 1: Olaylar değişim yoluyla değil, toplama yoluyla gelişir.
Kural 2: sil - yalnızca kullanımdan kaldırılma süresinden sonra planın MAJOR sürümünde.

4) Semantik sürümler ve politikalar

'BINBAŞI. MINÖR. Her şema/vitrin/özellik seti için PATCH '.

MAJOR - uyumsuz (yeni konu/tablo/özellik seti, çift çalıştırma).
MINOR - uyumlu (yeni geçersiz/varsayılan alanlar, yeni enum değerleri).
PATCH - açıklamaları/sınırları/yorumları düzenleyin.

Alan yaşam döngüsü: 'Deneysel - aktif - kullanımdan kaldırılmış - kaldırıldı' (tarihler ve sahibi ile).

5) Şema kaydı ve veri sözleşmeleri

Şema Kayıt Defteri: sürümleri, uyumluluğu, evrimi ve sahipleri saklar.
Veri Sözleşmesi: Şemayı + SLO kalitesini + gizliliği düzeltir ("Veri doğrulama" bölümüne bakın).

Örnek (Avro, ödemeler. deposit_accepted v1. 7. 0):
json
{
"type":"record","name":"deposit_accepted","namespace":"payments",
"fields":[
{"name":"event_id","type":"string"},
{"name":"occurred_at","type":{"type":"long","logicalType":"timestamp-micros"}},
{"name":"user_id","type":"string"},
{"name":"brand","type":"string"},
{"name":"country","type":"string"},
{"name":"psp","type":"string"},
{"name":"method","type":"string"},
{"name":"amount","type":{"type":"bytes","logicalType":"decimal","precision":18,"scale":2}},
{"name":"currency","type":{"type":"enum","name":"Currency","symbols":["EUR","USD","TRY","BRL"]}},
{"name":"risk_score","type":["null","int"],"default":null},       // MINOR+
{"name":"kyc_level","type":["null",{"type":"enum","name":"Kyc","symbols":["L0","L1","L2","L3"]}],"default":null}
],
"compatibility":"FULL","owner":"team-payments"
}

6) Göç kalıpları

6. 1 Olaylar (akışlar)

Yalnızca eklemeli: varsayılan/geçersiz olan alanları ekleyin; Eski tüketiciler bozulmaz.
Enum uzantıları: yeni karakterler MINOR olarak kabul edilir, tüketicilerin 'else/unknown' şubesine sahip olmaları gerekir.
BÜYÜK göç: yeni konu 'ödemeler. deposit_accepted. V2 ', çift yazma, gölge okuma, sonra tüketicileri değiştirme.

6. 2 DWH/vitrin

Mavi-Yeşil masalar: 'altın. 'v1'in yanındaki revenue_v2'; BI'yi gerçekleştir, doğrula, değiştir.
Geri doldurma: anlık görüntüler + idempotent birleştirme (tuşlara/sürümlere göre) ile tekrar oynatın.
SCD: Yavaş değişen nitelikler için tip 2 (limitler, KYC, VIP durumları).

6. 3 Özellikli Mağaza

Dual-serve: eski özellik seti yenisine paralel olarak sunulur; Model bir yönlendirici aracılığıyla servis edilir.
Zaman içinde tutarlılık: evrim PITA sevinçlerini kırmamalıdır (MINOR'da zaman damgası/granülarite değişmez).

7) Değişikliklerin taksonomisi (kontrol listesi)

Güvenli (MINOR):
  • 'Geçersiz/varsayılan' alanı ekleme;
  • Enum uzantısı (tüketicide 'bilinmeyen'bir şube ile);
  • Anahtar olmayan bir dizin/yorum/açıklama ekleme.
Koşullu olarak güvenli:
  • Ölçek/birim değişimi (örneğin, sent cinsinden tutar - temel para birimi) - Yalnızca MAJOR
  • Referans/referans aktarımı - sunum katmanı boyunca.
Kırılma (MAJOR):
  • Alanı yeniden adlandırma/silme
  • Türü/formatı/anahtarı/bölümü değiştirme
  • Anlambilim değişikliği (örneğin, "tahakkuk ettirilmiş" - "silinmiş" arasındaki "bonus _ miktar").

8) Devre Çizgileri ve Uyumluluk Testleri

Schema-lint: isim stili ('snake _ case'), gerekli etiketler ('owner', 'doc', 'pii'), tarih/para birimi biçimi.
Compat-testes: yeni sürümü kayıt defterine karşı kontrol etme (geri/ileri/tam).
Tüketici-sözleşme-testleri: Her hizmet bir "örnek yük've beklenti sağlar; Düzeni değiştirirken CI üzerinde çalışın.
Altın veri kümeleri: bir dizi gerçek ve "kötü" örnek (yeni enum, boş/geç alanlar, toplamların sınır değerleri).

9) Dizinler, enum ve yerelleştirme

Referans veriler (ülkeler/para birimleri/PSP/sağlayıcılar): bireysel sürümler ve SLA güncellemeleri; Olay koduna dikmeyin.
Yerel/saat dilimleri: Etkinliklerde UTC'yi saklayın + sunum için açık yerel ayar.
Yargı kuralları: yaş bayrakları, promosyon kısıtlamaları - eylem tarihleri olan dizinler şeklinde.

10) Çok Markalı/Çok Yetkili ve PII

Kiracı izolasyonu: 'marka', 'ülke', 'lisans' - enum ile zorunlu alanlar; Onları yönlendiriyor.
Şema düzeyinde PII politikası: alanları 'pii = true'olarak işaretleyin, maskeler/tokenizasyon uygulayın; olaylarda, sadece belirteçler.
DSAR: silme/alma için 'source _ id/trace _ id' varlığı; BÜYÜK göçler üzerinde Yasal Tutma.

11) DDL ve Lake sürümleri

DDL geçişleri: bildirimsel geçişler (Liquibase/Flyway/dbt), VCS'de depolama, etki alanı sahibi tarafından inceleme.
Göldeki Formatlar: Avro/Parke - alanların evrimini kaydedin; MAJOR'da - yeni tablo/yol '.../v2/'.
Bölümleme: parça değiştirme (örneğin, 'tarih' - 'tarih, marka') - sadece MAJOR ve çift giriş yoluyla.

12) iGaming örnekleri

12. 1 PSP genişletilmiş yöntemler

Enuma 'method = "MEFETE"' eklendi.
'Keposit _ accepted v1'in MINOR sürümü. 8. 0`; MEFETE'yi tanımayan tüketiciler 'unknown _ method' adresine şube gönderir.

12. 2 Oyun sağlayıcı eklenen sahalar

V 'game. round_finished' 'jackpot _ id' (geçersiz) ekledi.
Vitrin 'altın. game_rounds_v3' MINOR alır; Eski raporlar işe yarıyor, yenileri ikramiye sayıyor.

12. 3 RG nitelikleri

Boolean 'self _ excluded' durumundan'rg _ state ∈ {none, limit, cooldown, self_excluded}' - MAJOR, yeni konu + çift yazma + vitrinlerin ve modellerin geçişi.

13) Evrim süreci (fikirden anahtara)

1. Teklif (ADR): Neden değişiklik, uyumluluk türü, risk değerlendirmesi ve etkilenen tüketiciler.
2. Tasarım ve sözleşme: kayıt şeması, semver, uyumluluk politikası.
3. Testler: astarlar, compat, tüketici sözleşmeleri, altın setlerde tekrar oynatma.
4. Dağıtım: Çift yazma/mavi-yeşil/gölge okuma; Uyarılar.
5. Mutabakat: İş dengeleri/değişmezler (bkz. Veri Doğrulama).
6. Anahtar: tüketicileri/BI/özelliklerini değiştirin.
7. Deprecate: eski şemayı dondur, grace-period, sil ve arşivle.

14) Evrimin metrikleri ve SLO'ları

Geçişlerin başarı oranı, çift çalışma süresi, yeni format olaylarının paylaşımı, dolgu hacmi, gecikme/tazelik.
Uyumluluk olayları (P1/P2), geçiş sonrası pencere kalitesi.
Maliyet: $/TB taşma, $/saat çift yazma, küme yükü.
Uyumluluk: 0 PII sızıntısı, SLA DSAR/Yasal Bekletme karşılandı.

15) Araçlar ve eserler

15. 1 Uyumluluk politikası (kayıt defteri)

yaml schema: payments. deposit_accepted compatibility: FULL default_nulls: true enums:
currency: {allow_new_symbols: true, require_consumer_unknown_branch: true}
pii: false owners: ["team-payments"]
reviewers: ["data-governance","security-dpo"]

15. 2 Geçiş pasaportu (şablon)

yaml change_id: MIG-2025-041 scope: game. round_finished -> v3 type: MAJOR plan:
dual_write: true shadow_reads: consumers: ["gold-rounds","rg-models"]
backfill: {from: "2025-01-01", mode: "idempotent-merge"}
validation:
invariants: ["sum_bets = sum_wins + margin + bonuses"]
freshness_delta_p95_max: "PT5M"
switch_criteria:
error_rate_max: 0. 1%
kpi_diff_pp_max: 0. 5 deprecate_after: "2025-12-31"

15. 3 İsimlerin ve türlerin astarı (kurallar)

'sake _ case', UTC zaman damgaları, DECIMAL (18. 2) toplamlar için, alfa-2 ISO-3166-1 için 'ülke', ISO-4217 için 'para birimi'.
Enum alanları için 'free _ text' yok; referans kitapları - dış.

16) Uygulama Yol Haritası

0-30 gün (MVP)

1. Önemli olaylar (ödemeler, game_rounds, kullanıcı) için Schema Registry + uyumluluk ilkesini etkinleştirin.
2. CI'da Linters/compat testleri; Sahip dizini ve SLA incelemeleri.
3. ADR şablonları ve geçiş pasaportu; BÜYÜK kontrol listesi.

30-90 gün

1. Altın vitrinler için Mavi-Yeşil; Kritik konular için çift yazma.
2. Temel hizmetler için tüketici-sözleşme-testleri; Altın veri setleri.
3. Geçiş yaparken otomatik diff-mutabakatları ve uyarıları; Maliyet raporları.

3-6 ay

1. Grace-period ile tek kullanımdan kaldırma/kaldırma işlemi; Arşivleme ve Yasal Bekletme.
2. Jeo/kiracıya özgü şifreleme şemaları ve anahtarları; Hassas pazarlar için DP çeşitleri.
3. Veri sözlüğü ve canlı soy çizelgeleri.

17) RACI

Veri Yönetişimi (A/R): standartlar, kayıt defteri, geçiş incelemesi, yayın.
Alan Sahipleri (R): Alanların anlamı, referans kitapları, iş değişmezleri.
Veri Platformu (R): kayıt defteri araçları, compat testleri, çift çalıştırma/arka dolgular.
Güvenlik/DPO (A/R): PII politikaları, coğrafi/kiracı, DSAR/Yasal Bekletme.
SRE/Gözlenebilirlik (C): uyarılar, evrim SLO, kapasite.
Ürün/Finans (C): KPI'ların doğrulanması, pencerelerin değiştirilmesi.

18) Anti-desenler

Sürümler olmadan ve çift çalıştırma olmadan "Alanı anında düzenleyin".
Yeni bir alan eklemek yerine yeniden adlandırma - büyük arızalar.
'Bilinmeyen' dalı olmayan sert enum - yeni değerlerde düşüş.
Tüm yetki alanları için "kodda'tek dizin.
Idempotent-birleştirme ve bakiyeleri kontrol etmeden dolgu.
PII ile ve arama/DSAR için trace_id olmadan günlükleri.

19) İlgili bölümler

Veri Doğrulama, Veri Kökeni ve Yolu, DataOps Uygulamaları, Analitik ve Metrikler API, Denetim ve Sürüm Oluşturma, Veri Güvenliği ve Şifreleme, Erişim Denetimi, MLOps: Model Kullanımı.

Toplam

Şemaların evrimi bir defaya mahsus bir geçiş değil, bir süreçtir: kayıt defteri, sürümler ve birlikte çalışabilirlik; "Gece yarısı anahtarlar" yerine çift çalışma ve mavi-yeşil; Şans yerine uyumluluk testleri ve iş değişmezleri. Böylece veriler sabit kalır, modeller tahmin edilebilir, raporlar doğrudur ve düzenleyiciler sakindir.

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.