इसे चरणों में कीजिए। column को बिना default के nullable जोड़िए ताकि बदलाव सिर्फ metadata तक रहे, ऐसा कोड deploy कीजिए जो हर रास्ते पर उसमें लिखे और साथ ही nulls भी सह ले, छोटे batches में रुक रुककर backfill कीजिए ताकि locks और replication ठीक रहें, जांचिए कि कोई null बचा नहीं, फिर not null constraint जोड़िए (जहां सपोर्ट हो वहां validate अलग से) और fallback कोड हटा दीजिए। इतनी बड़ी table पर कभी एक block करने वाला ALTER मत चलाइए।
इंटरव्यूअर यह क्यों पूछते हैं
यह expand and contract migration है, और यही उन लोगों को अलग करती है जिन्होंने बड़ी tables पर शिप किया है उनसे जिन्होंने नहीं किया। इंटरव्यूअर कई deploys वाला क्रम चाहते हैं, यह समझ कि सीधा ALTER lock लेता है और table दोबारा लिखता है, replicas बचाने के लिए batching, और लागू करने से पहले जांच करने का अनुशासन। यह भी टटोलता है कि आप rolling deploys का हिसाब रखते हैं या नहीं, जहां पुराना और नया कोड एक साथ चलते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- एक ही block करने वाली migration को साफ मना कीजिए।
- expand, backfill, contract का क्रम रखिए।
- batching समझाइए और बताइए कि वह replicas को कैसे बचाती है।
- पुराने और नए कोड के साथ साथ चलने का हिसाब रखिए।
उदाहरण जवाब
जो मैं नहीं करूंगा वह है एक ही ALTER जो default के साथ not null column जोड़ दे, क्योंकि पुराने इंजन पर वह पूरी table को exclusive lock के नीचे दोबारा लिखता है और तब तक सर्विस बैठी रहती है। तो पहले expand: उसे nullable जोड़िए, जो आधुनिक Postgres में metadata का बदलाव है और लगभग तुरंत हो जाता है। फिर मैं ऐसा कोड deploy करता हूं जो हर insert और update पर नया column लिखे और पढ़ते वक्त nulls भी सह ले, क्योंकि rolling deploy के दौरान पुराने और नए दोनों pods जिंदा रहते हैं और मैं इसके उलट नहीं मान सकता। फिर backfill, primary key के हिसाब से शायद दस हजार rows के batches में, बीच में छोटी नींद के साथ, और चलते चलते replication lag पर नजर रखते हुए, lag चढ़े तो रफ्तार घटाते हुए। जब null count शून्य हो जाए तो मैं constraint जोड़ता हूं, और Postgres में उसे पहले not valid के तौर पर जोड़कर अलग से validate करूंगा ताकि lock हल्का रहे। आखिरी deploy fallback हटा देता है। हर कदम अपने आप में वापस लिया जा सकता है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- backfill शुरू होने के बाद आप rollback कैसे करेंगे?
- अगर backfill में हर row पर एप्लिकेशन लॉजिक चाहिए तो?
- MySQL पर यह कैसे अलग होता?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें