שלמות נתונים
1) מהי שלמות המידע
שלמות נתונים היא קבוצה של מאפיינים ובקרה על מנת להבטיח שהמידע נכון, עקבי ועקבי לאורך כל מעגל החיים שלו, ממקורות ומשינויים לחנויות, API ויצוא. המטרה היא שאותה אמירה נותנת את אותה התשובה כאשר היא חוזרת על עצמה, וכל שינוי ניתן לאיתור ואימות.
2) סוגי נאמנות והיכן הם חיים
מפתחות ראשוניים של ישות, בלי שכפולים.
הפניה-תקפה FK מקשרת היעדר קישורים ”תלויים”.
רכסי Domain-Valid ופורמטים (סוג, אורך, ספריות).
כללי עסקים: אזור נושא אינווריאנטים (שיווי משקל 0, סכום עסקה = 0, וכו ').
זמני: מונוטוני וחותמת זמן עקבית, אזורי זמן נכונים.
מדיניות גישה: RLS/CLS אינה מפרה את העקביות הלוגית של מידע גלוי.
3) חוזי נתונים ותרשימים (מקור האמת)
קבענו חוזים רשמיים עבור סטים ואירועים; אנחנו מיישמים אותם בכניסה ואחרי כל שינוי.
דוגמה (YAML, מפושט):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) ערבויות עסקיות ובידוד
חומצה לאולטרה-פי: אטומיות, עקביות, בידוד, עמידות.
רמות בידוד: Read Musied/Reserializable Read/Serializable - בחר בסיכון של ”מלוכלך ”/ייחודי/פנטום קורא.
אולאפ ואגם: התחייבויות אטומיות של שולחנות (רישום עסקה), כיור אידמפוטנטי וסכימה-אבולוציה עם בקרת תאימות.
עקביות של נוסחאות KPI: שכבה סמנטית כפול אמת אחת לדו "חות ו-API.
5) מערכות מבוזרות: סדר, חזרות, אידמפוטנטיות
סדר אירועים: השתמש ב ”אירוע _ זמן” + ”בליעה _ at”, סימני מים וסבילות איחור; אגרגטים המבוססים על זמן אירוע.
Redelivery (לפחות-פעם אחת): "event _ id', idempotency keys tables, upsert/merge by stable key.
חישוב מחדש של חלונות, אסטרטגיית עיכוב, פיצוי.
בדיוק פעם אחת במשמעות: תחבורה יכולה להיות לפחות פעם אחת, מקלט - אידמפוטנט.
6) אימות שלמות (DQ) על כל שכבה
אנחנו כוללים כללי יושרה ב CI/CD ובזמן ריצה צינור:- רעננות/שלמות/ייחודיות/ערכים תקפים/יושר הפניה.
- חריגות: התפרצויות של שכפולים, פערי זמן, משמרות חדות בהפצות.
- שליטה בנוסחאות KPI: ויסות של חישובים ובדיקות לתוצאות תואמות (סט זהב).
- בקרת ייצוא - איסור על הוצאת סטים עם הפרות (הסגר).
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) יושרה פיננסית ותפעולית
כניסה כפולה: חיוב/אשראי במאזן; סיכום פיוס בניתוק.
סה "כ אינווריאנטים: סכום תשלום = סכום מחיקה + עמלות + התאמות.
אינווריאנטים מבצעיים: מדדי SLA/מעקה בטיחות אינם מפרים את הכללים העסקיים (לדוגמה, תיקון אוטומטי אינו יוצר כפילויות).
8) שושלת, ביקורת ושכפול
לינאז ': מקור להצגה/תכונה; הראות של שינויים ובעלים.
שבילי ביקורת: מי שינה מה, מתי ולמה; סכימה/נוסחה/גרסאות עבודה.
תמונות/נקודות ביקורת: היכולת לחשב מחדש ולאשר דיווחים קודמים.
Repro: אותה שאילתה על אותה פרוסה = אותה תוצאה (גרסאות ושכבות).
9) ביטחון ופרטיות ללא אובדן נאמנות
RLS/CLS: מסנני שורה/עמודה אינם צריכים להפר אינווריאנטים (לדוגמה, סכום המדגם הגלוי צריך להתאים לזה המוכרז).
מיסוך/אסימון: אסטרטגיות דטרמיניסטיות כדי להבטיח ששלמות דידאפ והפניה יישמרו.
הצפנה: בערוץ ו ”בדיסק” לאחר הדחיסה; ניהול מפתח וביקורת גישה.
DSAR/Retition: מחק/אנונימי אינו שובר את הקישוריות (מדיניות מפלה).
10) שירות עצמי ותיקון אוטומטי
הסגר: בידוד מפלגות/קבוצות חשודות; צרכנים - ענף ”נקי”.
הילוך חוזר/הילוך אחורי: מפעיל שוב חלון מתוך יומן גולמי בלתי ניתן לשינוי.
התפייסות: שכבה ופיוס מערכת (raw↔curated↔marts; istochnik↔DWH).
Dedup/Compaction/Recove: נהלי מערכת לתיקון אינדקסים/אגרגטים.
מדיניות-as-קוד: ”מה אנומליה = מה פעולה = סף = הסלמה”.
11) אימוני דוגמנות ואחסון
מפתחות יציבים: פונדקאית PK (UUID/ULID), מפתחות טבעיים ללא שינוי בספרי עיון.
Normalizatsiya↔denormalizatsiya: FK חיבורים במקורות, תצוגות מכחישות עם בקרת גירסה לוגית.
SCD1/SCD2: היסטוריה מודרכת לממדים.
מיון/התקבצות: משפר את מפות RLE/zone ומפשט את הפיוס.
חשיש וצ 'קסום: בדיקת שלמות קבצים/צרור.
12) נאמנות לאורך זמן ודיווח
גרסאות פורמולה: הדו "ח של ינואר 2025 צריך להתרבות עם נוסחת X.
סגירת מעגל תקופתית: הקפאת חלונות חנות ופרוסות ארכיון.
עובדות שמגיעות מאוחר: מכניקה של מילוי מחדש וספירה חוזרת עם סימן גירסה דיווח.
תיעוד מעקפים: שינויים ידניים - ביקורת בלבד.
13) אינטגרציות ו ־ API
חוזה API: סכמות, סוגים, שדות דרושים, קודי שגיאה; ורסיונינג (v1/v2).
אימות בכניסה: לדחות תשלום רע, לא ”לתקן בשקט”.
אידמפוטנט פוסט: מפתח idempotence, retry בטוח.
ייצוא לקבצים: עקביות אצווה, חשיש, חתימות.
14) תרופות אנטי ־ פטריות
בחר בשאלות מכירה וסופות שלגים - אבולוציה קלה.
FK ”במילים”: אין בדיקת התייחסות אמיתית.
תיקוני נתונים שקטים ללא ביקורת ודיווח.
מערבבים טי-זי ופורמטים בזמן בסט אחד.
”אחיזה” KPI עוקף ללא גרסאות ויומנים.
מפתח שכפול יחיד ללא אסטרטגיות גיבוי.
מחיקת DSAR בלי בדיקת קישור.
15) מימוש מפת דרכים
1. מלאי וביקורתיות: סט/מפת אירועים, בעלים, סיכונים, אינווריאנטים.
2. חוזים ותוכניות: התאמת סוגים/אילוצים/FK, בדיקת תאימות CI.
3. DQ בצינור: רעננות/שלמות/ייחודיות/RI, הסגר, התראות.
4. בסיס העברה: כיור-אטומי, מיזוג-מעלה, היסטוריית SCD, ויסות נוסחאות.
5. לינאז 'וביקורת: ספרייה, עקבות, רישומי שינוי, רישומי גישה.
6. מדיניות תיקון: הילוך חוזר/הילוך אחורי/dedup/להתפייס כקוד; Runbook 'OutsLO MTR-Data.
7. אבטחה/פריב: RLS/CLS, מיסוך, הצפנה, תהליכי DSAR.
8. דיווח: ניתוק, קיפאון פרוסות, קיפאון קיפאון.
16) בדיקת רשימה/תצוגה מראש
[ ] PK/FK ואילוצי תחום נקבעים ועוברים מבחנים.
[ ] סכימה/נוסחה מופעלת; סכימה-דיף ירוק.
[ כללי DQ ] (רעננות/שלמות/ייחודיות/רכסים/RI) הם ירוקים.
[ ] רשומות אידמפוטנטיות: התעוררות/מיזוג, מפתח אידמפוטנטיות (לאירועים).
[ זמן ]: ”אירוע _ זמן” ו ”בלע _ at”, TZ = UTC; מדיניות מידע מאוחרת.
[ ] Lineage וביקורת גלויה; כולל הסגר והתראות.
[ ] RLS/CLS/מיסוך אינו מפר אינווריאנטים ו-RI.
[ ] DSAR/Resurrection נבחנה; החיתוך/הארכיון מוכן.
17) תבניות מיני
SQL: בדיקת שלמות הפניה
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
מדיניות הסגר/תיקון (פסאודו-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"
מדידה SCD2 תרשים
sql
-- dim_user_status (SCD2)
user_id, status, valid_from, valid_to, is_current
18) השורה התחתונה
שלמות הנתונים אינה צ 'ק יחיד, אלא מערכת הבטחות מקצה לקצה: חוזים והגבלות רשמיים, אינווריאנטים עסקיים ומבוזרים, אימות ואוטומציה של תיקונים, שושלות וביקורת, פרטיות וזכויות. כאשר אלמנטים אלה עובדים יחד, הנתונים הופכים לבסיס אמין לפתרונות, והאירועים נדירים, קצרים וצפויים.