Özünü bərpa edən məlumatlar
1) Müəyyən və məqsədlər
Özünü bərpa edən məlumatlar, qüsurların avtomatik olaraq aşkar edildiyi və düzəliş hərəkətlərinin (təmir, təkrar çatdırılma, geri qaytarma, rekonsilasiya, yenidən indeksləşdirmə) insanın iştirakı olmadan və ya minimal müdaxilə ilə (həssas hallar üçün human-in-the-loop) həyata keçirildiyi məlumat mühəndisliyinə yanaşmadır.
Məqsədlər: MTTR məlumatlarının azaldılması, inamın artırılması, sürüklənmə və uğursuzluqlara qarşı müqavimət, proqnozlaşdırıla bilən sahiblik dəyəri.
2) Müalicə edilməli olan tipik uğursuzluqlar
Sxemlər və müqavilələr: uyğun olmayan dəyişikliklər, itkin sütunlar, tipik münaqişələr.
Keyfiyyət/bütövlük: təkrarlanan, qaçırma, unikallıq/istinad bütövlüyü pozuntuları.
Vaxt və təravət: enjest gecikmələri, pəncərələrdə «dəliklər», TZ/lokalların sinxronizasiyası.
Identifikatorlar və açarlar: generator ID dəyişdirilməsi, toqquşmalar, üzən təbii açarlar.
Hadisələrin qaydası: gecikmiş hadisələr, yenidən sifariş, təkrar çatdırılma (at-least-once).
Saxlama yerləri: partiyanın deqradasiyası, sınmış fayllar/bloklar, qarışıqlıq.
Hüquqlar/təhlükəsizlik: səhv maskalar/şifrələmə, boşaltmalarda PII sızması.
3) Özünü bərpa sütunları
1. Avtomatik testlərlə məlumat müqavilələri (schemas + qaydalar).
2. İdempotent payplayns (ikiqat effekt olmadan yenidən başlamaq).
3. Jurnallaşdırma və reproduktivlik (raw/bronze dəyişməz, lineage).
4. Təmir mexanizmləri (replay, backfill, compaction, merge-repair, rebuild).
5. Müşahidə və SLO (təzəlik, dolğunluq, unikallıq, gizlilik).
6. Qərar siyasətləri (avtofiks, eskalasiya zamanı).
4) Müqavilələr və keyfiyyət testləri
Müqavilə təsvir edir: sxem, icazə verilən diapazonlar, unikallıq, RLS/maskalama, SLA təravət.
Nümunə (YAML-stil):yaml dataset: payments 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: created_at; type: timestamp; tz: UTC freshness_sla: 15m constraints:
- "count(distinct txn_id) = count()"
- "pct_null(user_id) < 0. 1%"
privacy:
- mask: card_pan -> BIN6LAST4 actions_on_violation:
- auto_quarantine_partition
- backfill_missing_window
- notify_owner_and_open_ticket
Testlər hər addımda həyata keçirilir: enjest → staging → vitrin. Qaydaların pozulması avtomobil təmirini (aşağıya baxın) və/və ya karantini aktivləşdirir.
5) İdempotentlik və determinizm
Sabit açarlar üzrə Upsert/Merge (tarix üçün SCD2, kəsiklər üçün SCD1).
Determinik transformasiyalar: eyni parametrlərdə bir giriş → bir çıxış.
Versiya nəzarəti: kodun/sxemlərin/qatların versiyasını və məlumat etiketini (watermark) qeyd edin.
Idempotent sink: staging + atomic swap/rename vasitəsilə qeyd.
Mənasına görə Exactly-once: «at-least-once» nəqliyyat + idempotent qəbuledici.
6) Avtomatik təmir mexanizmləri (repair toolkit)
Replay/Backfill: 't ∈ [T0, T1]' pəncərəsindən dəyişməz jurnaldan (raw) təkrar çatdırılma.
Reconciliation (müqayisə): qatlar arasında aqreqatların/açarların müqayisəsi (raw, curated, marts) və sistemlər arasında (mənbə, DWH).
Deduplication: açar window-dedup (txn_id, event_id) + evristika məsafələri («çirkli» açarlar üçün fuzzy).
Compaction: Kiçik faylların böyük hissələrə köçürülməsi (Parquet/ORC), yenidən indeksləşdirilməsi.
Merge-repair: qeydlərin toqquşması zamanı - prioritet predikatlar (mənbəyə/vaxta/versiyaya görə).
Rebuild indeksləri/materiallaşdırma :/cube/roll-up aqreqatları yenidən hesablanması.
Quarantine/Shadow: şübhəli partiyalar təcrid olunur; istehlakçılar «təmiz» budağı oxuyurlar.
Schema mediation: kiçik dəyişikliklər zamanı avtomatik proyeksiya selektoru (defolt doldurma, hesablanabilir sütunlar).
7) Saxlama və bütövlük qorunması
Çek məbləğləri və blokların validasiyası (CRC, paritet).
Kvorum saxlama (RAFT/Paxos uyğun sistemlər, quorum reads/writes).
İqtisadi artıqlıq üçün silmə kodlaması (erasure coding).
Obyektlərin versiyalaşdırılması (object store versioning, undelete).
Atomic commit в Lakehouse (transaction log, ACID-таблицы: Delta/Iceberg/Hudi).
8) Hadisələrin qaydası və «çirkli reallıq»
Gecikmiş hadisələr: lateness-window saxlayın, watermark 'və istifadə edin; pəncərələrin yenidən hesablanması.
Təkrar çatdırılma: qlobal 'event _ id' dedup, idempotency-keys cədvəlləri.
Yerdəyişmə vaxtı: TZ normallaşması, saxlama 'ingested _ at' və 'event _ time'.
Out-of-order: watermark düzəlişləri ilə event_time əsaslı aqreqatlar.
9) Qərar vermə məntiqi (policy engine)
Qayda: «hansı anomaliya → hansı hərəkət → hansı eşik → kimin sahibi».
Nümunə (psevdo):yaml policy: payments_freshness detect: freshness_delay > 15m auto_actions:
- trigger: backfill(last_60m)
- if: gap_persisted > 30m then: quarantine_partition(date=today, hour=current_hour)
escalate:
- if: gap_persisted > 60m -> page_oncall:data guardrails:
- do_not_expose_unverified_to_marts
10) Data üçün müşahidə və SLO
SLO dəsti:- Vitrin təravəti (Freshness) ≤ 15 dəq.
- Doluluq (Completeness)> 99. 5% əsas sahələr üzrə.
- Uniqueness (Uniqueness) düymələri <0. 01%.
- Hesablama gecikməsi: p95 <5 dəq.
- Təmir davamlılığı: MTTR-data <30 dəq.
Metriklər və alertlər: Prometheus/Grafana sərgilənir; prioritet məlumat hadisələri qurmaq.
11) Rekonsilasiya və yoxlama (təcrübə)
Aqreqatların müqayisəsi: 'count/sum/min/max' sürüşmə pəncərəsində təbəqələr/sistemlər arasında.
Açarların müqayisəsi: 'Δ = (A\B) ∪ (B\A)' çoxluqlarının simmetrik fərqi.
Periodik «audit job»: mənbə ilə müqayisə, ilkin yoxlama.
Ödənişlər/maliyyə: ikiqat qeyd (double-entry), gündəlik cut-off yoxlamalar, düzəlişlər jurnalı.
12) Sxemlərin idarə edilməsi və təkamül
Sxemlər üçün SemVer: MAJOR (sındırır )/MINOR (əlavə edir )/PATCH (düzəldir).
CI/CD-də müqavilələr: schema-diff, uyğunluq, miqrasiya avtogenerasiyası.
Backfill-hook: MINOR-da defolt/hesablanabilir sahələr əlavə edin, vitrinləri yenidən hesablayın.
Çevik proyeksiyalar: oxucular sütunların alt çoxluğunu oxuyur; «SELECT» qadağan.
13) Təhlükəsizlik, gizlilik, uyğunluq
RLS/CLS: xətt/sütun filtrləri, xüsusilə repair budaq və ixracat.
PII-maskalama: sabit deuplikasiya üçün determinizasiya (tokenization).
Giriş/ixrac auditi: kim nə ixrac etdiyini, hara göndərdiyini gördü.
DSAR/Retention: repair proseslərində avtomatik silmə/anonimləşdirmə; geri çəkilmələr hüquqi tələbləri nəzərə alır.
14) Qiymət və performans
Cost-aware backfill: pəncərələrin genişliyinin məhdudlaşdırılması (məsələn, 3-7 gün sürüşmə).
Materiallaşma və keşlər: yalnız dəyişmiş partiyaların yenidən hesablanması (incremental).
Prioritetləşdirmə: əvvəlcə kritik vitrinlər (maliyyə, risklər), sonra analitik.
Off-peak təmirləri: gecə pəncərələri/planlayıcıda aşağı prioritet.
15) Hadisə test və simulyasiya
Chaos-data-testing: hissələri/sxemləri qəsdən pozun.
Saxta gecikmələr: batches, out-of-order, dublikatları simulyasiya.
Golden datasets: təmir sonra müqayisə üçün standartlar.
GameDays: müntəzəm runbook komanda təlim.
16) Antipattern
«Görünməz» düzəlişlər: audit və hesabat olmadan səssiz düzəlişlər.
Yazılmamış backfill's: heç bir həqiqət mənbəyi/formula versiyası.
Təmir zamanı ALTP-yə ağır canlı sorğular: məhsul əldə edin.
İstehlakçılarda SELECT: Hər hansı bir MINOR dəyişikliyi ilə pozulur.
Təkrarlanan tək açar: fallback açarları/hash işarələri yoxdur.
17) Tətbiqi yol xəritəsi
1. Discovery: kritik dəstlər/metriklər, risklər, sahibləri; asılılıq xəritəsi.
2. Müqavilələr və testlər: CI-də sxemləri/qaydaları rəsmiləşdirin; publish sözlük.
3. İdempotentlik: əsas paylaynları upsert/merge, atomic sink.
4. Raw-jurnal və lineage: dəyişməz qat, tam metadata, watermark '.
5. Repair-mexanika: backfill/replay, dedup, compaction, quarantine; policy engine.
6. Müşahidə və SLO: keyfiyyət daşbordları, alertlər, prioritet lent.
7. Chaos-data və təlim: müntəzəm təlimlər + runbook '.
8. Qiymətin optimallaşdırılması: inkremental yenidən hesablamalar, pəncərələrin prioritetləşdirilməsi.
18) Buraxılışdan əvvəl çek siyahısı
- Məlumat müqavilələri və keyfiyyət testləri kritik dəstləri əhatə edir.
- Payplayns idempotent; atomic commit və geri dönüş var.
- backfill/replay və quarantine konfiqurasiya, eskalasiya siyasətləri təyin.
- Freshness/Completeness/Uniqueness/Latency metrikləri və prodda alertlər.
- Düzəliş/təmir auditi daxildir; formula və vitrin versiyaları saxlanılır.
- DSAR/Retention təmir və geri çəkilmə zamanı müşahidə olunur.
- Runbook var və təlimlər, MTTR-hədəf sabit.
- Backfill's dəyəri büdcə mühafizəçiləri ilə məhdudlaşır.
19) Avtomatik yardım nümunələri (şablonlar)
«Vitrin təravətinin uğursuzluğu X» → backfill (last_2h) → 30 dəqiqədə yoxdursa → quarantine + on-call səhifəsi.
«Dublikat txn_id sıçrayışı» → ciddi dedup + mənbə ilə müqayisə → səbəb hesabatı daxil edin.
«MINOR-sxem dəyişikliyi» → hesablanabilir sahə-defolt → rebuild aqreqatları yaratmaq.
«Parties itkisi» → version obyekt bərpa → check-summ doğrulama.
Nəticə: özünü bərpa edən məlumatlar bir «təmir skripti» deyil, sistem arxitekturasıdır: formal müqavilələr, idempotent payplaynlar, etibarlı jurnallaşdırma, avtomatlaşdırılmış təmir mexanikası və ciddi SLO ilə şəffaf müşahidə. Belə bir sistem yalnız özünü təmir etmir, həm də hadisələri başa düşülən dəyəri və bərpa vaxtı ilə idarə olunan hadisələrə çevirir.