Məlumatların bütövlüyü
1) Məlumatların bütövlüyü nədir
Məlumatların bütövlüyü, mənbələrdən və transformasiyalardan vitrinlərə, API və ixraclara qədər bütün həyat döngəsində məlumatların düzgün, razılaşdırılmış və ardıcıl olmasını təmin edən xüsusiyyətlər və nəzarət toplusudur. Məqsəd eyni ifadənin təkrarlanarkən eyni cavabı verməsidir və hər hansı bir dəyişiklik izlənilə və yoxlanıla bilər.
2) Bütövlük növləri və harada yaşayırlar
Mahiyyət (Entity): unikal əsas açarlar, dublikatların olmaması.
Link (Referential): Doğru FK əlaqələri; «asma» bağlantıların olmaması.
Domain (Domain): icazə verilən diapazonlar və formatlar (tip, uzunluq, kataloqlar).
Biznes qaydaları: mövzu sahəsinin invariantları (balans ≥ 0, naqillərin cəmi = 0 və s.).
Müvəqqəti: vaxt işarələrinin monotonluğu və uyğunluğu, düzgün vaxt zonaları.
Giriş siyasəti: RLS/CLS görünən məlumatların məntiqi uyğunluğunu pozmur.
3) Məlumat müqavilələri və sxemlər (həqiqət mənbəyi)
Dəstlər və hadisələr üçün rəsmi müqavilələr təyin edin; onları girişdə və hər bir transformasiyadan sonra tətbiq edirik.
Nümunə (YAML, sadələşdirilmiş):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) Tranzaksiya zəmanəti və təcrid
OLTP üçün ACID: atomik, tutarlılıq, izolyasiya, uzunömürlülük.
İzolyasiya səviyyələri: Read Committed/Repeatable Read/Serializable - «çirkli «/təkrarolunmaz/fantom oxu riski altında seçin.
OLAP və lakehouse: uyğunluq nəzarəti ilə cədvəllərin atom kommitləri (transaction log), idempotent sink və schema-evolution.
KPI düsturlarının uyğunluğu: semantik təbəqə → hesabatlar və API üçün bir həqiqət.
5) Paylanmış sistemlər: sifariş, təkrarlama, idempotentlik
Hadisə qaydası: 'event _ time' + 'ingested _ at', watermarks və lateness toleransı istifadə edin; event time əsasında aqreqatlar.
Təkrar çatdırılma (at-least-once): qlobal 'event _ id', idempotency keys, upsert/merge sabit açar.
Out-of-order: pəncərələrin yenidən hesablanması, gecikmə strategiyası, kompensasiya.
Mənasına görə Exactly-once: nəqliyyat at-least-once, alıcı idempotent ola bilər.
6) Hər bir təbəqədə bütövlük validasiyası (DQ)
CI/CD və payplaynların rantaymına bütövlük qaydalarını daxil edirik:- Freshness/Completeness/Uniqueness/Valid Values/Referential Integrity.
- Anomaliyalar: təkrarlanan partlayışlar, zaman kəsilmələri, kəskin paylanma yerdəyişmələri.
- KPI düsturlarına nəzarət: hesablamaların versiyası və nəticələrin üst-üstə düşməsi testləri (golden sets).
- İxraca nəzarət: pozuntuları (quarantine) olan dəstlərin verilməsinin qadağan edilməsi.
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) Maliyyə və əməliyyat bütövlüyü
Double-entry (ikiqat qeyd): balansda debet/kredit; cut-off-da icmal yoxlamalar.
Yekun invariantlar: ödənişlərin miqdarı = silinmələrin miqdarı + komissiyalar + düzəlişlər.
Əməliyyat invariantları: SLA/guardrail-metriklər biznes qaydalarını pozmur (məsələn, avtomatik təmir təkrarlanmır).
8) Lineedge, audit və reproduktivlik
Linage: mənbədən vitrinlərə/fich; transformasiya və sahiblərinin görünüşü.
Audit-treyler: kim dəyişdi, nə vaxt və nə üçün; sxemlərin/düsturların/jobların versiyaları.
Snepshot/nəzarət nöqtələri: keçmiş hesabatları yenidən saymaq və təsdiqləmək imkanı.
Repro: eyni dilimdə eyni tələb → eyni nəticə (versiyalar və təbəqələr).
9) Bütövlüyü itirmədən təhlükəsizlik və məxfilik
RLS/CLS: sətir/sütun filtrləri invariantları pozmamalıdır (məsələn, görünən nümunənin miqdarı elan edilmiş ilə üst-üstə düşməlidir).
Maskalanma/tokenizasiya: Dedup və referans bütövlüyünü saxlamaq üçün determinant strategiyalar.
Şifrləmə: sıxıldıqdan sonra kanalda və «diskdə»; açarların idarə edilməsi və giriş auditi.
DSAR/Retention: silmə/anonimləşdirmə əlaqəni pozmur (kaskad siyasəti).
10) Öz-özünə xidmət və təmir avtomatikası
Quarantine: şübhəli partiyalar/batches təcrid; istehlakçılara - «təmiz» budaq.
Replay/Backfill: dəyişməz raw jurnalından pəncərəni yenidən oynatmaq.
Reconcile: layların və sistemlərin yoxlanılması (raw, curated, marts; DWH mənbəyi).
Dedup/Compaction/Rebuild: indekslərin/aqreqatların təmiri üçün sistem prosedurları.
Policy-as-code: «hansı anomaliya → hansı hərəkət → eşik → eskalasiya».
11) Modelləşdirmə və saxlama təcrübələri
Sabit açarlar: surroqat PK (UUID/ULID), kataloqlarda dəyişməz təbii açarlar.
Normallaşma, denormalizasiya: mənbələrdə FK-rabitə, məntiq versiyasını nəzarət edən denormallaşdırılmış vitrinlər.
SCD1/SCD2: ölçmə üçün idarə olunan tarix.
Sıralama/klasterləşdirmə: RLE/zone-maps təkmilləşdirir və yoxlamaları asanlaşdırır.
Hash və nəzarət məbləğləri: faylların/partiyaların bütövlüyünün yoxlanılması.
12) Zaman və hesabat bütövlüyü
Düsturların versiyaları: Yanvar 2025 hesabatı X versiyası ilə təkrarlanmalıdır.
Off-off və «dövrünün bağlanması»: vitrinlərin və arxiv kəsiklərinin dondurulması.
Late arriving facts: hesabat versiyası işarəsi ilə doldurma və yenidən hesablama mexanikası.
Yenidən təyinlərin sənədləşdirilməsi: əl ilə düzəlişlər - yalnız auditlə.
13) İnteqrasiya və API
API müqaviləsi: sxemlər, tiplər, məcburi sahələr, səhv kodları; versiyalaşdırma (v1/v2).
Girişdə validasiya: reject pis payload ', «səssiz təmir».
İdempotent POST: İdempotent açarı, təkrar təhlükəsiz.
Fayllara ixrac: partiyaların uyğunluğu, hash, imzalar.
14) Antipattern
SELECT prob-sorğular və çuxurlarda - MINOR təkamülündə qırılır.
FK «sözlə»: linklərin real yoxlanılmasının olmaması.
Audit və hesabatsız məlumatların səssiz düzəlişləri.
TZ və vaxt formatlarının bir dəstdə qarışdırılması.
KPI-nin «qələmlərlə» versiyaları və jurnalları olmadan yenidən təyin edilməsi.
Ehtiyat strategiyaları olmadan təkrarlanan yeganə açar.
Əlaqələrin kaskad yoxlaması olmadan DSAR-dan silinir.
15) Tətbiqi yol xəritəsi
1. Inventory & kritik: set/hadisə xəritəsi, sahibləri, risklər, invariantlar.
2. Müqavilələr və sxemlər: növləri rəsmiləşdirmək/məhdudiyyətlər/FK, CI-uyğunluq yoxlamaları.
3. DQ paylaynda: Freshness/Completeness/Uniqueness/RI, quarantine, alert.
4. Əməliyyat bazası: atomik-sink, upsert/merge, SCD tarixi, düsturların versiyası.
5. Lineedge və audit: kataloq, izləmə, change-logs, access-logs.
6. Təmir siyasəti: replay/backfill/dedup/reconcile; runbook’и и SLO MTTR-data.
7. Təhlükəsizlik/priv: RLS/CLS, maskalama, şifrələmə, DSAR prosesləri.
8. Hesabat: cut-off, freeze-dilimlər, KPI versiyalarının idarə edilməsi.
16) Set/vitrin buraxılmazdan əvvəl yoxlama siyahısı
- PK/FK və domen məhdudiyyətləri təyin və testlərdən keçir.
- Sxemlərin/düsturların versiyası daxildir; schema-diff yaşıl.
- DQ qaydaları (təzəlik/tamlıq/unikallıq/diapazonlar/RI) yaşıl.
- Idempotent qeydlər: upsert/merge, idempotent açarı (hadisələr üçün).
- Vaxt: 'event _ time' və 'ingested _ at', TZ = UTC; late data siyasəti.
- Lineedge və audit görünür; quarantine və alert daxildir.
- RLS/CLS/maskalama invariantları və RI pozmur.
- DSAR/Retention test; cut-off/arxiv hazırdır.
17) Mini şablonlar
SQL: istinad bütövlüyünün yoxlanılması
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
Quarantine/repair siyasəti (psevdo-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ək üçün SCD2 sxemi
sql
-- dim_user_status (SCD2)
user_id, status, valid_from, valid_to, is_current
18) Yekun
Məlumatların bütövlüyü tək bir yoxlama deyil, yalnız bir zəmanət sistemidir: formal müqavilələr və məhdudiyyətlər, əməliyyat və paylanmış invariantlar, validasiya və təmir avtomatikası, xətt və audit, məxfilik və hüquqlar. Bu elementlər birlikdə işlədikdə, məlumatlar həllər üçün etibarlı bir bazaya çevrilir və hadisələr nadir, qısa və proqnozlaşdırıla bilər.