Veri bütünlüğü
1) Veri bütünlüğü nedir
Veri bütünlüğü, verilerin yaşam döngüsü boyunca, kaynaklardan ve dönüşümlerden vitrinlere, API'lere ve dışa aktarımlara kadar doğru, tutarlı ve tutarlı olmasını sağlamak için bir dizi özellik ve kontroldür. Amaç, aynı ifadenin tekrarlandığında aynı cevabı vermesi ve herhangi bir değişikliğin izlenebilir ve doğrulanabilir olmasıdır.
2) Bütünlük türleri ve nerede yaşadıkları
Varlık-Benzersiz birincil anahtarlar, yinelenen yok.
Referans-Geçerli FK bağlantıları "asılı" bağlantıların yokluğu.
Etki Alanı-Geçerli aralıklar ve biçimler (tür, uzunluk, dizinler).
İş kuralları: konu alanı değişmezleri (denge ≥ 0, işlem miktarı = 0, vb.).
Geçici: monotonluk ve zaman damgası tutarlılığı, doğru zaman dilimleri.
Erişim politikaları: RLS/CLS, görünür verilerin mantıksal tutarlılığını ihlal etmez.
3) Veri sözleşmeleri ve şemaları (gerçeğin kaynağı)
Setler ve etkinlikler için resmi sözleşmeler belirliyoruz; Bunları girişte ve her dönüşümden sonra uyguluyoruz.
Örnek (YAML, basitleştirilmiş):yaml dataset: payments primary_key: txn_id foreign_keys:
- fk: user_id -> users.user_id schema:
- {name: txn_id, type: string, unique: true}
- {name: user_id, type: string, not_null: true}
- {name: amount, type: decimal(18,2), min: 0}
- {name: currency, type: string, in: [USD,EUR,TRY,UAH]}
- {name: event_time, type: timestamp, tz: UTC}
dq_rules:
- "duplicates(txn_id)=0"
- "ref_integrity(user_id, users.user_id)=true"
- "sum(amount) >= 0"
evolution:
semver: [MAJOR, MINOR, PATCH]
breaking_changes_require: approval:data-governance
4) İşlem garantileri ve izolasyon
OLTP için ACID: atomisite, tutarlılık, izolasyon, dayanıklılık.
İzolasyon seviyeleri: Okuma Kararlı/Tekrarlanabilir Okuma/Serileştirilebilir - "kirli "/benzersiz/fantom okuma riski altında seçin.
OLAP ve lakehouse: tabloların atomik işlemleri (işlem günlüğü), idempotent lavabo ve uyumluluk kontrolü ile şema-evrim.
KPI formüllerinin tutarlılığı: semantik katman - raporlar ve API'ler için bir gerçek.
5) Dağıtılmış sistemler: düzen, tekrarlar, idempotency
Olay sırası: 'event _ time' + 'ingested _ at', filigranlar ve gecikme toleransı kullanın; Olay zamanına göre toplanır.
Redelivery (en az bir kez): global 'event _ id', idempotency tuşları tabloları, kararlı anahtar ile upsert/merge.
Sıra dışı: pencerelerin yeniden hesaplanması, gecikme stratejisi, tazminat.
Tam anlamıyla bir kez: taşıma en az bir kez, alıcı olabilir - idempotent.
6) Her katmanda bütünlük doğrulama (DQ)
Bütünlük kurallarını CI/CD'ye ve boru hattı çalışma süresine dahil ediyoruz:- Tazelik/Bütünlük/Benzersizlik/Geçerli Değerler/Referans Bütünlüğü.
- Anomaliler: kopya patlamaları, zaman boşlukları, dağılımlarda keskin kaymalar.
- KPI formüllerinin kontrolü: Sonuçların eşleştirilmesi için hesaplamaların ve testlerin sürümü (altın kümeler).
- İhracat kontrolü - İhlal içeren setlerin verilmesini yasaklayın (karantina).
yaml expect_column_values_to_be_unique: {column: txn_id}
expect_column_values_to_not_be_null: {column: user_id}
expect_column_values_to_be_in_set: {column: currency, value_set: [USD,EUR,TRY,UAH]}
7) Finansal ve operasyonel bütünlük
Çift giriş: bakiyede borç/kredi; Özet kopmalarda mutabakatlar.
Toplam değişmezler: ödeme tutarı = yazma miktarı + ücretler + ayarlamalar.
Operasyonel değişmezler: SLA/korkuluk metrikleri iş kurallarını ihlal etmez (örneğin, otomatik onarım kopyalar oluşturmaz).
8) Soy, denetim ve tekrarlanabilirlik
Linage: vitrin/özellik için kaynak; dönüşümlerin ve sahiplerin görünürlüğü.
Denetim izleri: kim neyi, ne zaman ve neden değiştirdi; şema/formül/iş sürümleri.
Anlık görüntüler/kontrol noktaları: Geçmiş raporları yeniden hesaplama ve onaylama yeteneği.
Repro: aynı dilimde aynı sorgu - aynı sonuç (sürümler ve katmanlar).
9) Bütünlük kaybı olmadan güvenlik ve gizlilik
RLS/CLS: satır/sütun filtreleri değişmezleri ihlal etmemelidir (örneğin, görünür örneğin toplamı bildirilen örnekle eşleşmelidir).
Maskeleme/tokenizasyon: Dedup ve referans bütünlüğünün korunmasını sağlamak için deterministik stratejiler.
Şifreleme: kanalda ve sıkıştırmadan sonra "diskte"; Anahtar yönetimi ve erişim denetimi.
DSAR/Retention: Sil/anonimleştir, bağlantıyı kesmez (basamaklı politika).
10) Self servis ve otomatik onarım
Karantina: şüpheli tarafların/partilerin izolasyonu; tüketiciler - "temiz'bir dal.
Replay/Backfill: Değiştirilemez bir ham günlükten bir pencereyi tekrar oynatır.
Uzlaştırma: katman ve sistem uzlaştırmaları (raw↔curated↔marts; istochnik↔DWH).
Dedup/Compaction/Rebuild: Indekslerin/agregaların onarımı için sistem prosedürleri.
Kod Olarak Politika:'ne anomali? Hangi eylem? Eşikler - tırmanma ".
11) Modelleme ve depolama uygulamaları
Kararlı anahtarlar: vekil PK (UUID/ULID), referans kitaplarında değişmeyen doğal anahtarlar.
Normalizatsiya↔denormalizatsiya: Kaynaklarda FK bağlantıları, mantık sürüm kontrolü ile denormalize vitrinler.
SCD1/SCD2: boyutlar için yönlendirilmiş tarih.
Sıralama/kümeleme: RLE/zone-haritalarını iyileştirir ve mutabakatları basitleştirir.
Hash'ler ve sağlama toplamları: dosyaların/yığınların bütünlüğünü kontrol etme.
12) Zaman içinde ve raporlamada bütünlük
Formula versiyonları: Ocak 2025 raporu X versiyon formülü ile tekrarlanabilir olmalıdır.
Kesme ve "dönem kapatma": mağaza vitrinlerini ve arşiv dilimlerini dondurma.
Geç gelen gerçekler: rapor sürümü işareti ile yeniden doldurma ve yeniden sayma mekaniği.
Geçersiz kılmaların belgelenmesi: manuel ayarlamalar - yalnızca denetim.
13) Entegrasyonlar ve API'ler
API sözleşmesi: şemalar, türler, gerekli alanlar, hata kodları; Sürüm oluşturma (v1/v2).
Girişte doğrulama: kötü yükleri reddedin, "sessizce tamir etmeyin".
Idempotent POST: idempotence anahtarı, güvenli tekrar deneyin.
Dosyalara dışa aktar: toplu tutarlılık, karma, imzalar.
14) Antipatterns
SELECT satış sorgularında ve kar fırtınalarında - MINOR evrimi ile bozulur.
FK "kelimelerle": gerçek bir referans kontrolü yok.
Denetim ve raporlama olmadan sessiz veri düzeltmeleri.
TZ ve zaman formatlarını tek bir kümede karıştırın.
"Grip" KPI sürümleri ve günlükleri olmadan geçersiz kılar.
Geri dönüşüm stratejileri olmadan tek veri tekilleştirme anahtarı.
Basamaklı bağlantı denetimi olmadan DSAR silme.
15) Uygulama Yol Haritası
1. Envanter ve kritiklik: set/olay haritası, sahipler, riskler, değişmezler.
2. Sözleşmeler ve şemalar: Türleri/kısıtlamaları resmileştirmek/FK, CI uyumluluk kontrolleri.
3. Boru hattında DQ: Tazelik/Eksiksizlik/Benzersizlik/RI, karantina, uyarılar.
4. İşlem temeli: atomik lavabo, upsert/birleştirme, SCD geçmişi, formül sürümü.
5. Soy ve denetim: dizin, izleme, değişiklik günlükleri, erişim günlükleri.
6. Onarım politikaları: yeniden oynatma/geri doldurma/dedup/kod olarak uzlaştırma; runbook'и и SLO MTTR verileri.
7. Güvenlik/priv: RLS/CLS, maskeleme, şifreleme, DSAR işlemleri.
8. Raporlama: kesme, dondurma dilimleri, KPI sürümleri.
16) Yayın öncesi kontrol listesi/vitrin
- PK/FK ve alan kısıtlamaları belirlenir ve testleri geçer.
- Şema/formül sürümü etkin; şema-diff yeşil.
- DQ kuralları (tazelik/bütünlük/benzersizlik/aralıklar/RI) yeşildir.
- Idempotent girişleri: upsert/merge, idempotence anahtarı (olaylar için).
- Zaman: 'event _ time've' ingested _ at ', TZ = UTC; geç veri politikası.
- Soy ve denetim görünür; Karantina ve uyarılar dahil.
- RLS/CLS/maskeleme, değişmezleri ve RI'yı ihlal etmez.
- DSAR/Retention test edildi; Kesme/arşiv hazır.
17) Mini şablonlar
SQL: referans bütünlük denetimi
sql select count() as orphans from fact_payments f left join dim_users u on f.user_id = u.user_id where u.user_id is null;
-- ожидаем orphans = 0
Karantina/onarım politikası (sözde YAML)
yaml policy: payments_integrity detect:
- rule: duplicates(txn_id) > 0
- rule: ref_integrity(user_id, users.user_id) = false auto_actions:
- quarantine_partition: {date: today}
- trigger_replay: {window: "last_2h"}
escalate_if:
- condition: violations_persist>30m page: "oncall-data"
Ölçüm SCD2 diyagramı
sql
-- dim_user_status (SCD2)
user_id, status, valid_from, valid_to, is_current
18) Alt satır
Veri bütünlüğü tek bir kontrol değil, uçtan uca bir garanti sistemidir: resmi sözleşmeler ve kısıtlamalar, işlemsel ve dağıtılmış değişmezler, onarımların doğrulanması ve otomasyonu, soy ve denetim, gizlilik ve haklar. Bu unsurlar birlikte çalıştığında, veriler çözümler için güvenilir bir temel haline gelir ve olaylar nadir, kısa ve öngörülebilir.