जब तक कोई खास वजह न हो, शुरुआत relational से कीजिए। Postgres आपको transactions, joins, constraints और query planner देता है, जो ज्यादातर workloads संभाल लेता है और आपके विकल्प खुले रखता है। document store की तरफ तब जाइए जब access pattern सच में एक key से एक blob वाला हो, जब schema वाकई हर record में अलग हो, या जब आपको एक primary की क्षमता से ज्यादा write throughput चाहिए।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर देखना चाहता है कि आप इंफ्रास्ट्रक्चर जरूरतों से चुनते हैं या फैशन से। वे एक ईमानदार डिफॉल्ट सुनना चाहते हैं, यह समझ कि relational डेटाबेस लोगों की सोच से कहीं आगे तक स्केल करते हैं, और यह जागरूकता कि joins और transactions छोड़ना एक असली कीमत है जो बाद में एप्लिकेशन कोड में चुकानी पड़ती है। जो कैंडिडेट बिना शर्त कहते हैं कि NoSQL तेज है, उन्होंने आम तौर पर दोनों में से कोई भी स्केल पर नहीं चलाया होता।
अपना जवाब कैसे स्ट्रक्चर करें
- अपना डिफॉल्ट बताइए और यह भी कि वह डिफॉल्ट क्यों है।
- वे access patterns गिनाइए जो आपका मन बदल देंगे।
- बताइए कि relational फीचर छोड़ने पर आप क्या खो देते हैं।
- यह भी कहिए कि डेटा मॉडल सर्विस से ज्यादा लंबा चलते हैं।
उदाहरण जवाब
मेरा डिफॉल्ट Postgres है, और मैं चाहता हूं कि मुझे उससे हटने की वजह दी जाए, उस पर जाने की नहीं। वजह यह है कि relational डेटाबेस मुझे transactions, joins और constraints मुफ्त में देता है, तो पहले ही दिन मुझे अपने access patterns सही सही अंदाजे से नहीं तय करने पड़ते। डेटा मॉडल उन सर्विसेज से ज्यादा जीते हैं जो उनमें लिखती हैं, और मैं लचीलापन storage layer के बजाय query layer में रखना पसंद करूंगा। कुछ खास हालात में मैं document store की तरफ जाता जरूर हूं। अगर हर record सच में अपने आप में पूरा है, अगर हर tenant के हिसाब से उसका आकार बदलता है, या अगर मुझे एक primary से आगे का write throughput चाहिए, तो सौदा सही बैठता है। जिस बात पर मैं ईमानदार रहने की कोशिश करता हूं वह कीमत है: joins के बिना हर रिश्ता एप्लिकेशन कोड बन जाता है, और transactions के बिना हर multi document update एक idempotency की समस्या बन जाता है। पिछले प्रोजेक्ट में हमने core entities Postgres में रखीं और भारी event log उस जगह डाला जो उसी के लिए बनी थी, जिससे जहां जरूरत थी वहां स्केल मिला और बाकी हर जगह correctness भी बची रही।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- sharding से पहले आप एक अकेले Postgres इंस्टेंस को कहां तक खींचेंगे?
- document store में आप many to many रिश्ता कैसे मॉडल करेंगे?
- अलग डेटाबेस के बजाय JSONB columns आप कब इस्तेमाल करेंगे?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें