स्व-उपचार डेटा
1) परिभाषा और उद्देश्य
सेल्फ-हीलिंग डेटा डेटा इंजीनियरिंग के लिए एक दृष्टिकोण है जिसमें दोषों का स्वचालित रूप से पता लगाया जाता है, और सुधारात्मक क्रियाएं (मरम्मत, पुन: वितरण, रोलबैक, पुन: समेकन) मानव हस्तक्षेप के बिना।
लक्ष्य: कम डेटा MTTR, विश्वास में वृद्धि, बहाव और विफलता के लिए लचीलापन, स्वामित्व की अनुमानित लागत।
2) विशिष्ट ग्लिच के लिए इलाज किया जाना है
योजनाएं और अनुबंध: असंगत परिवर्तन, लापता स्तंभ, प्रकार विरोधाभास।
गुणवत्ता/अखंडता: डुप्लिकेट्स, चूक, विशिष्टता/संदर्भित अखंडता उल्लंघन।
समय और ताजगी: इंजेक्शन में देरी, खिड़कियों में "छेद", TZ/locales का desynchronization।
पहचानकर्ता और कुंजी: आईडी जनरेटर, टकराव, फ्लोटिंग प्राकृतिक कुंजियाँ बदलना।
घटनाओं का क्रम: देर से घटनाएं, पुन: आदेश, फिर से वितरण (कम से कम एक बार)।
भंडारण: बैचों का क्षरण, टूटी हुई फाइलें/ब्लॉक, शार्डिंग का विरूपण।
अधिकार/सुरक्षा: गलत मास्क/एन्क्रिप्शन, पीआईआई अपलोड में लीक।
3) स्व-उपचार के स्तंभ
1. स्वचालित परीक्षणों के साथ डेटा अनुबंध (स्कीमा + नियम)।
2. पहचान पाइपलाइन (दोहरे प्रभाव के बिना फिर से शुरू)।
3. पत्रकारिता और प्रजनन क्षमता (कच्चे/कांस्य अपरिवर्तनीय, वंश)।
4. मरम्मत तंत्र (रीप्ले, बैकफिल, कॉम्पैक्शन, मर्ज-रिपेयर, पुनर्निर्माण)।
5. अवलोकन और एसएलओ (ताजगी, पूर्णता, विशिष्टता, विलंबता)।
6. निर्णय लेने की नीतियां (जब हम ऑटो-फिक्स करते हैं, जब हम आगे बढ़ ते हैं)।
4) अनुबंध और गुणवत्ता परीक्षण
अनुबंध में वर्णन किया गया है: योजना, स्वीकार्य रेंज, विशिष्टता, आरएलएस/मास्किंग, एसएलए ताजगी।
उदाहरण (YAML शैली):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
परीक्षण हर कदम पर निष्पादित किए जाते हैं: इंजेक्शन → मंचन → शोकेस। नियमों का उल्लंघन ऑटो-मरम्मत (नीचे देखें) और/या संगरोध को सक्रिय करता है।
5) आदर्शवाद और निर्धारणवाद
स्थिर कुंजियों द्वारा अपसर्ट/मर्ज ( इतिहास के लिए, स्लाइस के लिए)।
निर्धारक परिवर्तन: एक इनपुट - एक ही मापदंडों के साथ एक आउटपुट।
वर्शनिंग - कोड/स्कीमा/लेयर संस्करण और डेटा लेबल (वॉटरमार्क) को ठीक करें।
आइडेम्पोटेंट सिंक: स्टेजिंग + परमाणु स्वैप/नाम बदलकर रिकॉर्डिंग।
वास्तव में एक बार अर्थ में: स्वीकार्य "कम से कम-एक बार" परिवहन + पहचानने वाला रिसीवर।
6) मरम्मत टूलकिट
रीप्ले/बैकफिल: विंडो के लिए पुनर्वितरण ∈ [T0, T1] 'अपरिवर्तनीय लॉग (कच्चा) से।
सुलह: परतों (कच्चे ↔ क्यूरेटेड ↔ मार्ट्स) और सिस्टम (स्रोत ↔ DWH) के बीच समुच्चय/कुंजियों की तुलना।
Deduplication: कुंजी (txn_id, event_id) + दूरी हेयुरिस्टिक (गंदी कुंजियों के लिए फजी) द्वारा विंडो-डेडअप।
संघनन: छोटी फ़ाइलों को बड़ी पार्टियों (Parquet/ORC) में स्थानांतरित करना, फिर से अनुक्रमण।
मर्ज-रिपेयर: जब संघर्ष रिकॉर्ड करता है, तो प्राथमिकता विधेय (स्रोत/समय/संस्करण द्वा
सूचकांक/भौतिककरण का पुनर्निर्माण करें: पुनर्गणना समुच्चय/घन/रोल-अप।
संगरोध/छाया: संदिग्ध दल खुद को अलग करते हैं; उपभोक्ताओं ने एक "साफ" धागा पढ़ा।
स्कीमा मध्यस्थता: मामूली परिवर्तनों के लिए स्वचालित प्रक्षेपण चयनक (डिफ़ॉल्ट, कम्प्यूटेबल कॉलम भरना)।
7) भंडारण संरक्षण और अखंडता
मात्रा और ब्लॉक सत्यापन (सीआरसी, समता) की जाँच करें।
कोरम भंडारण (RFT/Paxos-संगत प्रणाली, कोरम पढ़ ता है/लिखता है)।
लागत प्रभावी अतिरेक के लिए कोडिंग का उन्मूलन करें।
ऑब्जेक्ट स्टोर वर्शनिंग (undelete)।
परमाणु प्रतिबद्ध в लेकहाउस (लेनदेन लॉग, एसीआईडी- таблицы: डेल्टा/आइसबर्ग/हुडी)।
8) घटनाओं का आदेश और "गंदी वास्तविकता"
देर की घटनाएं: विलंबता-खिड़की रखें, वॉटरमार्क का उपयोग करें 'और; खिड़कियों को फिर से बनाना।
Redelivery: dedup द्वारा वैश्विक 'event _ id', idempotency-keys टेबल।
ऑफसेट समय: TZ को सामान्य करना, 'ingested _ at' and 'event _ time' का भंडारण।
आउट-ऑफ-ऑर्डर: event_time-based वॉटरमार्क समायोजन के साथ एकत्र होता है।
9) निर्णय तर्क (नीति इंजन)
नियम: "क्या विसंगति - क्या कार्रवाई - क्या थ्रेसहोल्ड करता है - कौन मालिक है।"
उदाहरण (छद्म):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) डेटा के लिए अवलोकन और एसएलओ
एसएलओ सेट:- प्रदर्शन के मामलों की ताजगी ≤ 15 मिनट।
- पूर्णता> 99। प्रमुख क्षेत्रों पर 5%।
- विशिष्टता: डुप्लिकेट <0। 01%.
- गणना विलंबता: p95 <5 मिनट।
- मरम्मत स्थिरता: MTTR-डेटा <30 मिनट।
मेट्रिक्स और अलर्ट: प्रोमेथियस/ग्राफाना में प्रदर्शित; डेटा घटनाओं का एक प्राथमिकता टेप बनाएं।
11) सुलह (प्रथाओं)
समुच्चय जाँचें: 'count/sum/min/max' स्लाइडिंग विंडो पर परतों/सिस्टम के बीच.
मुख्य सामंजस्य: सेट का सममित अंतर '(= (A) B) ∪ (B· A)'।
आवधिक "ऑडिट जॉब": स्रोत के साथ तुलना, स्रोत पर चयनात्मक जांच।
भुगतान/वित्त: डबल-एंट्री, दैनिक कट-ऑफ सामंजस्य, समायोजन लॉग।
12) सर्किट प्रबंधन और विकास
योजनाओं के लिए SemVer: मेजर (ब्रेक )/MINTER (जोड़ता है )/PATCH (फिक्स)।
सीआई/सीडी में अनुबंध: स्कीमा-डिफ, संगतता, प्रवासन का ऑटोजेनेरेशन।
बैकफिल हुक: MINTER के साथ डिफ़ॉल्ट/गणना क्षेत्र जोड़ें, शोकेस को फिर से जोड़ें।
लचीले अनुमान: पाठकों ने स्तंभों के सबसेट पढ़े; "SELECT" प्रतिबंधित करें।
13) सुरक्षा, गोपनीयता, अनुपालन
आरएलएस/सीएलएस: पंक्ति/स्तंभ फिल्टर, विशेष रूप से मरम्मत शाखाओं और निर्यात में।
टिकाऊ डीडुप्लीकेशन के लिए पीआईआई-आधारित टोकन।
प्रवेश/निर्यात लेखा परीक्षा: जिन्होंने देखा कि उन्होंने क्या निर्यात किया है, जहां उन्होंने इसे भेजा है।
डीएसएआर/प्रतिधारण: मरम्मत प्रक्रियाओं में ऑटो-विलोपन/गुमनामी; किकबैक कानूनी आवश्यकताओं को ध्यान में रखते हैं।
14) लागत और प्रदर्शन
लागत-जागरूक बैकफिल: खिड़कियों की चौड़ाई को सीमित करना (उदाहरण के लिए, 3-7 दिन फिसलना)।
भौतिककरण और कैश: केवल बदले गए बैचों (वृद्धिशील) का पुनर्गणना।
प्राथमिकता: पहले महत्वपूर्ण शोकेस (वित्त, जोखिम), फिर विश्लेषणात्मक।
ऑफ-पीक मरम्मत: शेड्यूलर में रात की खिड़कियां/कम प्राथमिकता।
15) परीक्षण और घटना सिमुलेशन
अराजकता-डेटा-परीक्षण: मंच पर जानबूझकर विभाजन/सर्किट तोड़ें।
नकली देरी: नकली बैच, आउट-ऑफ-ऑर्डर, डुप्लिकेट।
गोल्डन डेटासेट: मरम्मत के बाद के सुलह के लिए बेंचमार्क।
गेमडेज़: रनबुक पर नियमित टीम प्रशिक्षण।
16) एंटीपैटर्न
"अदृश्य" सुधार: ऑडिटिंग या रिपोर्टिंग के बिना मूक संपादन।
अप्रयुक्त बैकफिल: कोई सत्य स्रोत/सूत्र संस्करण नहीं।
मरम्मत के दौरान OLTP को भारी लाइव अनुरोध: आप प्रोड समाप्त करते हैं।
उपभोक्ताओं में चयन करें: किसी भी माइनर परिवर्तन के साथ टूटता है।
डीडुप्लिकेशन के लिए एकमात्र कुंजी फॉलबैक कुंजी/हैश हस्ताक्षर की अनुपस्थिति है।
17) कार्यान्वयन रोडमैप
1. डिस्कवरी: महत्वपूर्ण सेट/मैट्रिक्स, जोखिम, मालिक; निर्भरता का नक्शा।
2. संविदाएं और परीक्षण: सीआईआई में योजनाओं/नियमों को औपचारिक रूप देना; शब्दावली प्रकाशित करें।
3. पहचान: अपसर्ट/मर्ज, परमाणु सिंक में कुंजी पाइपलाइनों को फिर से लिखें।
4. कच्चे लॉग और वंश: अपरिवर्तनीय परत, पूर्ण मेटाडेटा, वॉटरमार्क 'और।
5. मरम्मत यांत्रिकी: बैकफिल/रीप्ले, डेडअप, कॉम्पैक्शन, संगरोध; नीति इंजन।
6. अवलोकन और एसएलओ: गुणवत्ता डैशबोर्ड, अलर्ट, प्राथमिकता टेप।
7. अराजकता-डेटा और प्रशिक्षण: नियमित अभ्यास + रनबुक 'और।
8. लागत अनुकूलन: वृद्धिशील पुनर्गणना, खिड़की प्राथमिकता।
18) प्री-रिलीज़चेकलिस्ट
- डेटा अनुबंध और गुणवत्ता परीक्षण महत्वपूर्ण सेट को कवर
- पाइपलाइनें अज्ञात हैं; परमाणु प्रतिबद्ध और पुलबैक हैं।
- बैकफिल/रिप्ले और संगरोध कॉन्फ़िगर किए गए हैं, वृद्धि नीतियों को वर्तनी दी जाती है।
- ताजगी/पूर्णता/विशिष्टता/लेटेंसी मेट्रिक्स और अलर्ट इन प्रोड।
- संपादन/मरम्मत का लेखा परीक्षा शामिल; सूत्रों और स्टोरफ्रंट के संस्करणों को संग्रहीत करता है।
- मरम्मत और रोलबैक के लिए डीएसएआर/रिटेंशन का पालन किया जाता है।
- एक रनबुक है 'और, आयोजित अभ्यास, MTTR-लक्ष्य तय किया गया है।
- बैकफिल की लागत बजट गार्ड द्वारा सीमित है।
19) ऑटो-क्रियाओं के उदाहरण (टेम्पलेट्स)
"विंडो फ्रेशनेस एक्स" बैकफिल ( ) - यदि 30 मिनट में ठीक नहीं है संगरोध + ऑन-कॉल पेज।
"डुप्लिकेट स्पाइक" - में सख्त डीडअप + स्रोत सामंजस्य शामिल हैं - कारण रिपोर्ट।
"MINTER स्कीमा परिवर्तन" - एक गणना डिफ़ॉल्ट क्षेत्र उत्पन्न करता है - पुनर्निर्माण समुच्चय।
"बैचों का नुकसान" वर्जित वस्तु से चेक राशि का सत्यापन बहाल करें।
नीचे की रेखा: स्व-चिकित्सा डेटा एक "मरम्मत स्क्रिप्ट" नहीं है, बल्कि एक सिस्टम आर्किटेक्चर है: औपचारिक अनुबंध, पहचान पाइपलाइनें, विश्वसनीय लॉगिंग, स्वचालित मरम्मत यांत्रिकी और सख्त एसएलओ के साथ। इस तरह की प्रणाली न केवल खुद की मरम्मत करती है, बल्कि एक समझने योग्य लागत और वसूली समय के साथ घटनाओं को प्रबंधनीय घटनाओं में बदल देती है।