प्रतिनिधि इंटरव्यू विषय

डेटा इंजीनियरिंग इंटरव्यू: WAP के लिए आप Iceberg ब्रांचेस और टैग्स का उपयोग कैसे करेंगे?

डेटाकठिन
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

आपकी टीम चाहती है कि इंजीनियर्स प्रोडक्शन को प्रभावित किए बिना Iceberg डेटा को लिखें और मान्य (validate) करें, फिर एक ऑडिट बिंदु के साथ इसे एटॉमिक रूप से प्रकाशित करें। ब्रांचेस, टैग्स और स्नैपशॉट प्रतिधारण WAP को कैसे लागू करेंगे?

प्रॉम्प्ट और संदर्भ

एक प्रोडक्शन Iceberg टेबल को दैनिक वृद्धि (daily increments) प्राप्त होती है। इंजीनियर्स को एक अलग (isolated) राइट, गुणवत्ता जांच, एटॉमिक प्रकाशन, ऑडिट मार्कर और पुराने स्नैपशॉट की स्वचालित सफाई की आवश्यकता है। ब्रांचेस, टैग्स, स्नैपशॉट संदर्भ, समवर्ती कमिट (concurrent commits), प्रतिधारण (retention) और रोलबैक डिज़ाइन करें। यह टेबल-फ़ॉर्मेट मेटाडेटा और रिलीज़ गवर्नेंस के बारे में एक data प्रश्न है।

साक्षात्कारकर्ता क्या मूल्यांकन करता है

  1. एक परिवर्तनीय (mutable) ब्रांच और एक अपरिवर्तनीय (immutable) टैग में अंतर करना।
  2. स्नैपशॉट संदर्भों, main, और वर्तमान स्नैपशॉट की व्याख्या करना।
  3. WAP जांच, एटॉमिक प्रकाशन और टकराव प्रबंधन (conflict handling) को डिज़ाइन करना।
  4. रोलबैक साक्ष्य को हटाए बिना ब्रांच/टैग प्रतिधारण को कॉन्फ़िगर करना।
  5. यह साबित करना कि पाठकों (readers) को केवल एक सुसंगत (consistent) स्नैपशॉट दिखाई देता है, आंशिक फ़ाइलें नहीं।

पूछने के लिए स्पष्टीकरण प्रश्न

  • क्या कैटलॉग, इंजन और वर्ज़न ब्रांचेस, टैग्स और WAP का समर्थन करते हैं?
  • क्या प्रोडक्शन रीडर्स हमेशा main का उपयोग करते हैं या किसी स्पष्ट संदर्भ का?
  • कौन से टेबल, पार्टीशन और क्रॉस-टेबल गुणवत्ता प्रतिबंध आवश्यक हैं?
  • क्या कई राइट ब्रांचेस समवर्ती रूप से मर्ज हो सकती हैं, और टकरावों को कैसे हल किया जाता है?
  • ऑडिट बिंदु कितने समय तक रहने चाहिए, और अनाथ (orphan) फ़ाइलों को कौन साफ़ करता है?

30-सेकंड का उत्तर

“मैं प्रत्येक जॉब को एक अलग ब्रांच में लिखूँगा और उसके स्नैपशॉट के विरुद्ध गुणवत्ता जांच चलाऊँगा। अनुमोदन के बाद, main को एटॉमिक रूप से आगे बढ़ाऊँगा और ऑडिट बिंदु के लिए एक अपरिवर्तनीय टैग बनाऊँगा। ब्रांचेस और टैग्स को स्वतंत्र प्रतिधारण नियम मिलते हैं; समाप्ति (expiration) केवल उन स्नैपशॉट्स को हटा सकती है जो संदर्भित नहीं हैं और नीति को पूरा करते हैं। रिलीज़ से पहले और बाद में स्नैपशॉट आईडी, पंक्ति संख्या, प्रमुख मेट्रिक्स और क्वेरी परिणामों की तुलना करें; टकरावों का पुनः प्रयास किया जाता है या निर्णय लिया जाता है।”

गहन उत्तर

चरण 1: संदर्भ मॉडल स्थापित करें

Iceberg ब्रांचेस और टैग्स को स्नैपशॉट संदर्भों के रूप में संग्रहीत करता है। एक ब्रांच एक परिवर्तनीय स्नैपशॉट श्रृंखला है; एक टैग एक स्नैपशॉट को इंगित करता है और रिलीज़, महीने के अंत के समापन और ऑडिट के लिए उपयुक्त है। प्रोडक्शन main को एक स्वामी की आवश्यकता होती है, और सेवाओं को सीधे टेबल मेटाडेटा को संपादित नहीं करना चाहिए।

text
main -> snapshot 120
audit-2026-08-01 (tag) -> snapshot 118
daily-load (branch) -> snapshot 121

आरेख संदर्भ दिखाता है; कैटलॉग कमिट जांच वास्तविक अपडेट की सुरक्षा करती है।

चरण 2: Write-Audit-Publish लागू करें

राइट चरण main को बदले बिना डेटा और डिलीट फ़ाइलों को एक वर्क ब्रांच में कमिट करता है। ऑडिट उस ब्रांच स्नैपशॉट के विरुद्ध स्कीमा, विशिष्टता (uniqueness), रेंज, पंक्ति-संख्या और क्रॉस-टेबल जांच चलाता है। केवल एक स्वीकृत स्नैपशॉट ही प्रोडक्शन संदर्भ को आगे बढ़ाता है, जिसमें कर्ता (actor), वर्ज़न और रिपोर्ट दर्ज की जाती है।

चरण 3: समवर्ती कमिट्स को संभालें

ऑप्टिमिस्टिक कैटलॉग जांच पुराने पूर्वज (ancestor) पर आधारित अपडेट को अस्वीकार कर देती है। जॉब को नवीनतम स्नैपशॉट को फिर से पढ़ना चाहिए, अपने बदलाव को मर्ज या रीबेस करना चाहिए, और आवश्यक जांचों को फिर से चलाना चाहिए। इसे किसी संदर्भ को अधिलेखित (overwrite) नहीं करना चाहिए; अलग-अलग पार्टीशन राइट्स के लिए भी एक स्पष्ट मर्ज नीति की आवश्यकता होती है।

चरण 4: पढ़ने की सुसंगतता (read consistency) बनाए रखें

क्वेरीज़ शुरुआत में एक स्नैपशॉट आईडी या संदर्भ वर्ज़न को पिन करती हैं। डेटा फ़ाइलें पूरी और पठनीय होने के बाद प्रकाशन मेटाडेटा संदर्भों को बदलता है। विफल जॉब्स गैर-संदर्भित फ़ाइलें छोड़ सकते हैं, लेकिन अनाथ फ़ाइलों की सफाई कमिट और सुरक्षा विंडो की प्रतीक्षा करती है।

चरण 5: प्रतिधारण और ऑडिट नीति सेट करें

टैग्स महत्वपूर्ण रिलीज़ स्नैपशॉट को बनाए रखते हैं; ब्रांचेस में अधिकतम आयु और स्नैपशॉट-संख्या नीतियां हो सकती हैं। समाप्ति सबसे पहले main, ब्रांचेस और टैग्स द्वारा संदर्भित स्नैपशॉट की गणना करती है, फिर केवल योग्य इतिहास को हटाती है। ऑडिट-टैग प्रतिधारण को अनुपालन और रोलबैक विंडो को कवर करना चाहिए।

चरण 6: रोलबैक डिज़ाइन करें

रोलबैक main को एक सत्यापित पुराने स्नैपशॉट या टैग पर ले जाता है और एक नया मेटाडेटा कमिट रिकॉर्ड करता है। पहले खराब स्नैपशॉट को न हटाएं। डाउनस्ट्रीम जॉब्स और मटीरियलाइज़्ड व्यूज़ को रीफ़्रेश करें, यह सुनिश्चित करते हुए कि कैश अब विफल वर्ज़न को सर्व न करें।

चरण 7: स्वीकृति मेट्रिक्स को परिभाषित करें

ब्रांच कमिट लेटेंसी, चेक पास दर, प्रकाशन सफलता, टकराव पुनः प्रयास, संदर्भित स्नैपशॉट संख्या, समाप्ति वॉल्यूम, अनाथ फ़ाइलें और रोलबैक समय को ट्रैक करें। रोलआउट का विस्तार करने से पहले स्नैपशॉट आईडी, पंक्ति संख्या, प्रमुख समुच्चय (aggregates) और डाउनस्ट्रीम परिणामों की तुलना करें।

मॉडल उत्तर

“दैनिक जॉब्स एक अलग ब्रांच में लिखते हैं और एक निश्चित स्नैपशॉट के विरुद्ध जांच चलाते हैं। अनुमोदन एटॉमिक रूप से main को आगे बढ़ाता है और एक अपरिवर्तनीय ऑडिट टैग बनाता है। समाप्ति इतिहास और अनाथ फ़ाइलों को साफ़ करने से पहले main, एक ब्रांच या एक टैग द्वारा अभी भी संदर्भित प्रत्येक स्नैपशॉट की सुरक्षा करती है।

कैटलॉग ऑप्टिमिस्टिक जांच पुराने कमिट्स को अस्वीकार करती है; जॉब संदर्भ को अधिलेखित करने के बजाय नवीनतम पूर्वज को फिर से पढ़ता है और सत्यापन को फिर से चलाता है। पाठक एक स्नैपशॉट को पिन करते हैं, और रोलबैक एक नए मेटाडेटा कमिट के माध्यम से main को एक पुराने टैग पर इंगित करता है। स्वीकृति स्नैपशॉट आईडी, पंक्तियों, समुच्चयों, प्रकाशन सफलता, टकरावों और पुनर्प्राप्ति समय की तुलना करती है।”

सामान्य गलतियाँ

  • एक ब्रांच को अपरिवर्तनीय मानना → बाद के कमिट्स इसे आगे बढ़ाते हैं → ऑडिट के लिए टैग का उपयोग करें।
  • main मेटाडेटा को अधिलेखित करना → समवर्ती सुरक्षा को बायपास करता है → कैटलॉग के माध्यम से कमिट करें।
  • रोलबैक से पहले इतिहास को हटाना → साक्ष्य खो देता है → टैग बनाए रखें और एक नया रोलबैक कमिट बनाएं।
  • केवल आयु के आधार पर समाप्त करना → संदर्भित स्नैपशॉट को हटा देता है → पहले संदर्भ सेट की गणना करें।
  • क्वेरी स्नैपशॉट को पिन न करना → लंबे समय तक चलने वाले रीड्स वर्ज़न को मिला देते हैं → एक संदर्भ या स्नैपशॉट आईडी को पिन करें।
  • अनाथ फ़ाइलों को तुरंत साफ़ करना → गैर-कमिट की गई फ़ाइलों को हटा सकता है → सुरक्षा विंडो की प्रतीक्षा करें।

फॉलो-अप प्रश्न और उत्तर

फॉलो-अप 1: प्रकाशन के लिए टैग का उपयोग क्यों करें?

एक ब्रांच आगे बढ़ती है; एक टैग एक स्नैपशॉट को तय करता है, जिससे यह ऑडिट, महीने के अंत और रोलबैक के लिए उपयुक्त हो जाता है। उनके अलग-अलग जीवन चक्र हो सकते हैं।

फॉलो-अप 2: क्या होगा यदि दो ब्रांचेस एक ही पार्टीशन में लिखती हैं?

पुराने कमिट को अस्वीकार करें, नवीनतम पूर्वज से मर्ज करें, या मानवीय निर्णय की आवश्यकता करें। फ़ाइल नाम से कभी भी अधिलेखित न करें।

फॉलो-अप 3: क्या समाप्ति (expiration) किसी रोलबैक बिंदु को हटा सकती है?

तब तक नहीं जब तक स्नैपशॉट किसी ब्रांच या टैग द्वारा संदर्भित है और प्रतिधारण नीति के भीतर है। संदर्भों को समाप्ति के संरक्षित सेट का हिस्सा होना चाहिए।

फॉलो-अप 4: आप आंशिक डेटा पढ़ने को कैसे रोकते हैं?

फ़ाइलों को पहले पूरी तरह से लिखें, एक एकल एटॉमिक main स्नैपशॉट प्रकाशित करें, और अप्रकाशित ब्रांचेस को प्रोडक्शन प्रश्नों से बाहर रखें।

सार्वजनिक स्रोत

संबंधित प्रश्न