Integralność danych
1) Czym jest integralność danych
Integralność danych jest zbiorem właściwości i kontroli, aby zapewnić poprawność, spójność i spójność danych w całym cyklu życia, od źródeł i przekształceń do sklepów, API i eksportu. Celem jest to, że to samo stwierdzenie daje taką samą odpowiedź po powtórzeniu, a wszelkie zmiany są identyfikowalne i weryfikowalne.
2) Rodzaje integralności i miejsca zamieszkania
Unikalne klucze podstawowe, brak duplikatów.
Referential-Valid FK łączy brak „wiszących” linków.
Domena-Ważne zakresy i formaty (typ, długość, katalogi).
Zasady prowadzenia działalności: niezmienne obszary tematyczne (saldo ≥ 0, kwota transakcji = 0 itd.).
Tymczasowe: monotonia i spójność znacznika czasu, prawidłowe strefy czasowe.
Zasady dostępu: RLS/CLS nie narusza logicznej spójności widocznych danych.
3) Umowy i schematy dotyczące danych (źródło prawdy)
Ustalamy formalne kontrakty na zestawy i imprezy; stosujemy je przy wejściu i po każdej transformacji.
Przykład (YAML, uproszczony):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) Gwarancje transakcyjne i izolacja
KWAS dla OLTP: atomowość, konsystencja, izolacja, trwałość.
Poziomy izolacji: Czytaj Zaangażowany/Powtarzalny Czytaj/Serializowalny - wybierz na ryzyko „brudny „/unikalny/phantom czyta.
OLAP i lakehouse: commits atomowe tabel (dziennik transakcji), sink idempotent i schemat-ewolucja z kontrolą kompatybilności.
Spójność formuł KPI: warstwa semantyczna → jedna prawda dla raportów i API.
5) Systemy rozproszone: zamówienia, powtórzenia, idempotencja
Kolejność zdarzeń: użyj 'event _ time' + 'ingested _ at', znaków wodnych i tolerancji opóźnień; agregaty oparte na czasie zdarzenia.
Redeliveria (co najmniej raz): globalne 'event _ id', tabele kluczy idempotencji, upsert/merge przez stabilny klucz.
Out-of-order: ponowne obliczenie okien, strategia opóźnienia, rekompensata.
Dokładnie raz w znaczeniu: transport może być co najmniej raz, odbiornik - idempotent.
6) Walidacja integralności (DQ) na każdej warstwie
Uwzględniamy zasady integralności w CI/CD i w rurociągu:- Świeżość/Kompletność/Wyjątkowość/Ważne wartości/Integralność odniesienia.
- Anomalie: wybuchy duplikatów, luki czasowe, ostre zmiany w rozkładzie.
- Kontrola wzorów KPI: wersioning obliczeń i testów do dopasowania wyników (złote zestawy).
- Kontrola wywozu - zakaz wydawania zestawów z naruszeniami (kwarantanna).
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) Integralność finansowa i operacyjna
Podwójny wpis: debet/kredyt w saldzie; podsumowanie uzgodnień w odcięciu.
Niezmienne kwoty ogółem: kwota wypłaty = kwota umorzenia + opłaty + korekty.
Niezmienne działania: SLA/mierniki barier nie łamią zasad biznesowych (na przykład auto-naprawa nie tworzy duplikatów).
8) Rodowód, audyt i odtwarzalność
Linage: źródło do prezentacji/funkcji; widoczność przekształceń i właścicieli.
Ścieżki audytu: kto zmienił co, kiedy i dlaczego; schemat/wzór/wersje zadania.
Migawki/punkty kontrolne: możliwość ponownego obliczenia i potwierdzenia wcześniejszych raportów.
Repro: to samo zapytanie na tym samym kawałku → ten sam wynik (wersje i warstwy).
9) Bezpieczeństwo i prywatność bez utraty integralności
RLS/CLS: filtry wiersza/kolumny nie powinny naruszać stałych (na przykład suma widocznej próbki powinna odpowiadać zadeklarowanemu).
Maskowanie/tokenizacja: deterministyczne strategie zapewniające utrzymanie integralności dedup i referencyjnej.
Szyfrowanie: w kanale i „na dysku” po kompresji; zarządzanie kluczami i audyt dostępu.
DSAR/Retention: delete/anonymize nie łamie łączności (zasady kaskadowe).
10) Samoobsługa i automatyczna naprawa
kwarantanna: izolacja podejrzanych stron/partii; konsumenci - „czysta” gałąź.
Replay/Backfill: Powtarza okno z niezmienionego, surowego dziennika.
Uzgadnianie: uzgadnianie warstwy i systemu (surowe istochnik اDWH).
Dedup/Compaction/Rebuild: procedury systemowe do naprawy indeksów/kruszyw.
Policy-as-code: „what anomaly → what action → thresholds → escalation”.
11) Praktyki modelowania i przechowywania
Stabilne klucze: zastępcze PK (UUID/ULID), niezmienione naturalne klucze w książkach referencyjnych.
Normalizatsiya اdenormalizatsiya: połączenia FK w źródłach, denormalizowane prezentacje z kontrolą wersji logicznej.
SCD1/SCD2: historia kierowana dla wymiarów.
Sortowanie/klastrowanie: Poprawia mapy RLE/strefy i upraszcza pojednanie.
Hashes i checksums: sprawdzanie integralności plików/partii.
12) Integralność w czasie i w sprawozdawczości
Wersje formuły: Raport ze stycznia 2025 r. powinien być powtarzalny za pomocą formuły X.
Odcięcie i „zamknięcie okresu”: zamrażanie okien sklepu i plasterki archiwum.
Spóźnione fakty: mechanika napełniania i recenzje ze znakiem wersji raportu.
Nadmiar dokumentacji: korekty ręczne - tylko audyt.
13) Integracja i API
Umowa API: schematy, typy, wymagane pola, kody błędów; wersioning (v1/v2).
Walidacja przy wejściu: odrzucić złe ładunki, nie „naprawić cicho”.
Idempotent POST: klucz idempotencji, bezpieczny.
Eksport do plików: konsystencja partii, hashes, podpisy.
14) Antypattery
WYBIERZ w zapytaniach sprzedaży i blizzzards - rozbija się z ewolucją MINOR.
FK „w słowach”: brak rzeczywistego sprawdzenia odniesienia.
Ciche korekty danych bez audytu i sprawozdawczości.
Mix TZ i formaty czasu w jednym zestawie.
„Uchwyt” KPI nadaje się bez wersji i dzienników.
Pojedynczy klucz do deduplikacji bez strategii awaryjnych.
Usunięcie DSAR bez sprawdzania łącza kaskadowego.
15) Plan działania w zakresie wdrażania
1. Inwentaryzacja i krytyka: zestaw/mapa zdarzeń, właściciele, ryzyko, niezmienne.
2. Umowy i programy: formalizowanie typów/ograniczeń/FK, kontrole zgodności CI.
3. DQ w rurociągu: świeżość/kompletność/wyjątkowość/RI, kwarantanna, wpisy.
4. Podstawa transakcyjna: zlewozmywak atomowy, upsert/fuzja, historia SCD, wersioning wzoru.
5. Rodowód i audyt: katalog, ślad, dzienniki zmian, dzienniki dostępu.
6. Zasady naprawy: powtórka/zasypka/dedup/reconcile jako kod; runbook 'ка SLO MTTR-data.
7. Bezpieczeństwo: RLS/CLS, maskowanie, szyfrowanie, procesy DSAR.
8. Raportowanie: odcięcie, zamrożenie plasterków, wersioning KPI.
16) Lista kontrolna/etui wyświetlacza przed zwolnieniem
- PK/FK i ograniczenia domeny są ustawione i przejść testy.
- Włączona jest weryfikacja schematu/wzoru; schemat-diff zielony.
- Zasady DQ (świeżość/kompletność/wyjątkowość/zakresy/RI) są zielone.
- Idempotentne wpisy: upsert/merge, idempotence key (dla wydarzeń).
- Czas: 'event _ time' i 'ingested _ at', TZ = UTC; późna polityka danych.
- Widoczny rodowód i audyt; obejmowały kwarantannę i wpisy.
- RLS/CLS/maskowanie nie narusza stałych i RI.
- DSAR/Retention testowane; odcięcie/archiwum jest gotowe.
17) Mini szablony
SQL: referencyjna kontrola integralności
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
polityka kwarantanny/naprawy (pseudo-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"
Diagram SCD2 pomiaru
sql
-- dim_user_status (SCD2)
user_id, status, valid_from, valid_to, is_current
18) Najważniejsze
Integralność danych nie jest jednolitą kontrolą, lecz systemem gwarancji typu end-to-end: formalne umowy i ograniczenia, nieustanne transakcje i dystrybucje, walidacja i automatyzacja napraw, rodowód i audyt, prywatność i prawa. Kiedy te elementy współpracują, dane stają się wiarygodną podstawą rozwiązań, a incydenty są rzadkie, krótkie i przewidywalne.