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

डेटा इंजीनियरिंग इंटरव्यू: एक ऑडिट-योग्य डेटा रिटेंशन पॉलिसी इंजन डिज़ाइन करना

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

प्रश्न

आपकी कंपनी को एक लेकहाउस, मैसेज टॉपिक्स और बैकअप के लिए एक ऐसा सिंगल रिटेंशन सिस्टम चाहिए जो व्यावसायिक रिटेंशन, डेटा हटाने के अनुरोधों (deletion requests) और ऑडिट आवश्यकताओं को पूरा कर सके। आप पॉलिसी को कैसे मॉडल करेंगे, निष्पादन को कैसे ऑर्केस्ट्रेट करेंगे, डेटा हटाए जाने को कैसे प्रमाणित करेंगे, और ऐसे डेटा को हटाए जाने से कैसे बचाएंगे जिसकी टाइम ट्रैवल या रिकवरी के लिए अभी भी आवश्यकता है?

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

यह प्रश्न यह जांचता है कि क्या आप "हमें इसे कब तक बनाए रखना चाहिए?" को एक निष्पादन-योग्य, व्याख्या-योग्य और रिकवर करने योग्य डेटा-लाइफसाइकिल सिस्टम में बदल सकते हैं। वर्ज़न, स्नैपशॉट, रेप्लिका, बैकअप और डाउनस्ट्रीम एक्सपोर्ट एक समान विलोपन सिमेंटिक (deletion semantic) साझा नहीं करते हैं; Apache Iceberg स्नैपशॉट की समाप्ति (snapshot expiration) के लिए यह जांचना भी आवश्यक होता है कि फ़ाइलें अभी भी रिटेन किए गए स्नैपशॉट द्वारा संदर्भित तो नहीं हैं। पॉलिसी के स्रोतों, प्राथमिकताओं, निष्पादकों (executors), निर्भरता की खोज (dependency discovery), विलोपन के साक्ष्य और विफलता से रिकवरी को कवर करें। रिटेंशन की अवधियाँ विशिष्ट कानूनों और अनुबंधों पर निर्भर करती हैं, इसलिए सिस्टम को कानूनी निर्णय को बदलने के बजाय कानूनी समीक्षा का समर्थन करना चाहिए।

इंटरव्यूअर क्या मूल्यांकन कर रहा है

  • क्या आप व्यावसायिक रिटेंशन, लीगल होल्ड, विलोपन अनुरोध, बैकअप विंडो और तकनीकी क्लीनअप के बीच अंतर समझते हैं।
  • क्या आप एक ही TTL को हार्ड-कोड करने के बजाय वर्ज़न-युक्त, स्कोप-आधारित, स्वीकृत और अपवाद-सचेत (exception-aware) पॉलिसियाँ डिज़ाइन करते हैं।
  • क्या आप स्नैपशॉट, रेप्लिका, कैश, एक्सपोर्ट, डाउनस्ट्रीम टेबल और अनाथ फ़ाइलों (orphan files) में छिपे संदर्भों को संभालते हैं।
  • क्या आप ड्राई रन, अवलोकनीय निष्पादन (observable execution), विलोपन के साक्ष्य, पुनः प्रयास (retries), रोलबैक सीमाएं और ऑडिट ट्रेल्स प्रदान करते हैं।

पहले पूछे जाने वाले स्पष्टीकरण प्रश्न

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

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

मैं स्रोत, वर्ज़न, स्कोप, प्राथमिकता और वैधता के साथ पॉलिसियों को मॉडल करूँगा, जिसमें सामान्य रिटेंशन, लीगल होल्ड, विलोपन अनुरोध और बैकअप अपवादों को अलग रखा जाएगा। एक कंपाइलर कैटलॉग एंटिटीज़ को स्नैपशॉट, टॉपिक, ऑब्जेक्ट, इंडेक्स और बैकअप निष्पादकों में मैप करता है और सबसे पहले प्रभाव और टकराव दिखाने वाला एक ड्राई-रन तैयार करता है। निष्पादन एक निर्भरता ग्राफ़ और संदर्भ जांच (reference checks) का उपयोग करता है ताकि स्नैपशॉट या रिकवरी के लिए आवश्यक फ़ाइलें हटाई न जाएं, बैचों में कमिट करता है, और प्रत्येक चरण को रिकॉर्ड करता है। परिणामी साक्ष्य स्कोप, समय, विफलताओं और शेष बैकअप विंडो को कवर करता है। किसी भी अनिश्चितता की स्थिति में, योजना को चुपचाप छोड़ने के बजाय समीक्षा के लिए रोक दिया जाता है।

चरण-दर-चरण विस्तृत विश्लेषण

1. पॉलिसी स्रोतों और प्राथमिकताओं को मॉडल करें

एक पॉलिसी में विषय का दायरा, डेटा लेबल, प्रोसेसिंग का उद्देश्य, रिटेंशन अवधि, प्रारंभ घटना (start event), क्षेत्र, स्रोत, वर्ज़न, अनुमोदक और अपवाद शामिल होने चाहिए। विलोपन अनुरोधों, लीगल होल्ड्स, अनुबंध अवधियों और प्राकृतिक बैकअप समाप्ति को एक प्रलेखित टकराव और एस्केलेशन पथ के साथ अलग बाधाओं के रूप में प्रस्तुत करें। प्रत्येक गणना के लिए उपयोग किए गए इनपुट स्नैपशॉट को बनाए रखें (persist करें) ताकि सिस्टम यह समझा सके कि कोई रिकॉर्ड क्यों बना हुआ है।

2. एक एंटिटी और संदर्भ कैटलॉग बनाएं

कैटलॉग टेबल, पार्टीशन, स्नैपशॉट, ऑब्जेक्ट, टॉपिक्स, इंडेक्स, एक्सपोर्ट और बैकअप को उनके मालिकों और लाइनेज (lineage) से जोड़ता है। लेकहाउस के लिए, रिटेन किए गए स्नैपशॉट, ब्रांचेस या टैग द्वारा संदर्भित फ़ाइलों की पहचान करें; एसिंक्रोनस पाइपलाइनों के लिए, यह रिकॉर्ड करें कि क्या विलोपन की घटनाएं डाउनस्ट्रीम उपभोक्ताओं तक पहुंचीं। जब कोई संदर्भ स्थापित नहीं किया जा सकता है, तो अनुमान लगाने के बजाय डेटा को बनाए रखें और एक कार्य आइटम (work item) बनाएं।

3. एक निष्पादन-योग्य योजना संकलित (compile) करें

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

4. बैच निष्पादन और सुरक्षा गार्डरेल्स डिज़ाइन करें

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

5. सत्यापन योग्य विलोपन साक्ष्य उत्पन्न करें

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

6. विफलता, रिकवरी और निरंतर ऑडिट को संभालें

मेटाडेटा परिवर्तनों और भौतिक विलोपन को चरणों में कमिट करें, रिकवरी के लिए आवश्यक स्नैपशॉट या सॉफ्ट-डिलीट विंडो को बनाए रखें। यदि कोई पॉलिसी गलत है, तो बाद के बैचों को रोकें, प्रभावित एंटिटीज़ को चिह्नित करें और एक प्रतिपूरक योजना (compensating plan) निष्पादित करें। भौतिक रूप से हटाए गए डेटा को प्रतिवर्ती (reversible) होने का दिखावा नहीं किया जा सकता; इसे अनुमत रेप्लिका या अपस्ट्रीम पुनर्निर्माण से रिकवर करें। समाप्ति बैकलॉग, विलोपन ब्लॉकों, डाउनस्ट्रीम पावती में देरी, बैकअप अवशेषों और पॉलिसी टकरावों की निगरानी करें, और समय-समय पर पॉलिसी स्रोतों और अनुमतियों की समीक्षा करें।

मॉडल उच्च-गुणवत्ता वाला उत्तर

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

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

  • प्रत्येक स्टोरेज सिस्टम को केवल एक TTL वाले की-वैल्यू स्टोर के रूप में मानना।
  • केवल एक अंतिम समाप्ति तिथि रखना और उद्देश्य, स्रोत, वर्ज़न, अनुमोदन और टकराव के संदर्भ को खो देना।
  • विलोपन से पहले स्नैपशॉट, ब्रांचेस, बैकअप, इंडेक्स और डाउनस्ट्रीम प्रतियों की अनदेखी करना।
  • स्कोप या विफलता सीमाओं के बिना किसी सफल जॉब को विलोपन का प्रमाण कहना।
  • ड्राई रन, पॉज़, बैचिंग, इडेम्पोटेंसी और मानवीय अनुमोदन गार्डरेल्स को छोड़ देना।
  • यह दावा करना कि भौतिक विलोपन तुरंत प्रतिवर्ती है या बैकअप की प्राकृतिक समाप्ति की अनदेखी करना।
  • सिस्टम कॉन्फ़िगरेशन को कानूनी सलाह के रूप में प्रस्तुत करना और कानूनी या अनुबंध स्रोत को खो देना।

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

क्या होगा यदि कोई लीगल होल्ड किसी विलोपन अनुरोध के साथ टकराव में हो?

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

आप कैसे साबित करेंगे कि स्नैपशॉट समाप्ति से संदर्भित फ़ाइलें नहीं हटेंगी?

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

क्या होगा यदि बैकअप तुरंत नहीं हटाए जा सकते हैं?

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

आकस्मिक विलोपन (accidental deletion) के बाद क्या होता है?

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

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

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