बैकएंड डेवलपर इंटरव्यू सवाल

एक ही टेबल कई अरब rows तक पहुंच गई है और writes धीमी पड़ रही हैं। आपके पास क्या विकल्प हैं?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

पहले सस्ते विकल्प चुका लें: बेहतर indexes, ठंडी rows का archiving, बड़े columns को बाहर निकालना, और read लोड के लिए read replicas। फिर टेबल को partition करें, आमतौर पर समय या tenant के हिसाब से, ताकि हर partition छोटा रहे और पुराने partitions तुरंत हटाए जा सकें। अलग अलग डेटाबेस पर sharding सबसे आखिर में आती है, क्योंकि इससे cross shard queries, distributed transactions और rebalancing की कीमत चुकानी पड़ती है, और shard key का चुनाव बाद में बदलना बहुत मुश्किल होता है।

इंटरव्यूअर यह क्यों पूछते हैं

इंटरव्यूअर देखना चाहते हैं कि आप सबसे जटिल हल पर कूदने की जगह लागत के क्रम से scale करते हैं। वे यह सुन रहे हैं कि आप एक ही डेटाबेस के भीतर partitioning और कई डेटाबेस पर sharding का फर्क जानते हैं, hot spots सहित shard key पर समझदारी से बात कर सकते हैं, और किसी live टेबल को migrate करने की ऑपरेशनल हकीकत जानते हैं। सीधे sharding की तरफ लपकना आमतौर पर खतरे की घंटी है।

अपना जवाब कैसे स्ट्रक्चर करें

  • पहले जांचें: दिक्कत writes में है, index maintenance में या lock contention में।
  • विकल्पों को सबसे सस्ते से सबसे भारी के क्रम में रखें।
  • partitioning समझाएं और pruning तथा retention के फायदे बताएं।
  • shard key का चुनाव और sharding से क्या खोते हैं, यह बताएं।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

पहले मैं यह पता करूंगा कि असल में धीमा क्या है, क्योंकि बड़ी टेबल अपने आप समस्या नहीं होती। आमतौर पर वजह हर insert पर index maintenance होती है, या कुछ बिना इस्तेमाल के indexes, या autovacuum का पीछे छूट जाना। तो मैं सस्ती जीत से शुरू करता हूं: जिन indexes का कोई इस्तेमाल नहीं वे हटाओ, कोई बड़ा text या JSON column एक side टेबल में ले जाओ ताकि मुख्य rows छोटी रहें, और retention policy से पुरानी हर चीज़ archive कर दो। अगर फिर भी यह सचमुच बहुत बड़ी है, तो मैं partition करता हूं, event जैसे डेटा के लिए आमतौर पर समय के हिसाब से, जिससे हर partition छोटा रहता है, planner सही range तक prune कर पाता है, और पिछले साल का डेटा हटाना दिन भर चलने वाले delete की जगह एक partition drop बन जाता है। sharding आखिरी सहारा है क्योंकि यह प्रोग्रामिंग मॉडल ही बदल देती है: cross shard joins खत्म, transactions distributed हो जाते हैं, और rebalancing खुद एक प्रोजेक्ट है। अगर shard करना ही पड़े तो key पर मैं सच में सोचता हूं, क्योंकि events टेबल को customer id पर shard करने पर जिस पल एक कस्टमर बाकियों से दस गुना बड़ा होगा, उसी पल एक hot shard मिल जाएगा।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • hot spots से बचने वाला shard key आप कैसे चुनेंगे?
  • किसी live टेबल को बिना downtime partitioned टेबल में कैसे migrate करेंगे?
  • डेटा shard हो जाने के बाद कौन सी queries महंगी हो जाती हैं?

बैकएंड डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं