partitioning किसी table को भौतिक रूप से अलग हिस्सों में बांटती है, आम तौर पर date से, इसलिए filter वाली query पूरे partitions छांट देती है और कम डेटा scan करती है। clustering चुने हुए columns के हिसाब से storage के अंदर डेटा को sort करती है ताकि engine उन predicates पर blocks छोड़ सके। partition उस column पर करें जो लगभग हर WHERE clause में आता है, आम तौर पर event date; cluster उन high cardinality columns पर करें जिन पर लोग इसके बाद filter या join करते हैं।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर लागत और performance की व्यावहारिक समझ चाहते हैं, क्योंकि BigQuery पर scan volume ही बिल है और Snowflake पर वही credit जलाता है। वे क्लासिक गलतियां भी टटोलते हैं: high cardinality column पर partition करना, हजारों नन्हे partitions बना देना, और यह मान लेना कि clustering उन queries की भी मदद करेगी जो clustering keys पर filter ही नहीं करतीं।
अपना जवाब कैसे स्ट्रक्चर करें
- partitioning को physical pruning और clustering को डेटा के अंदर की ordering बताकर परिभाषित करें।
- हर column चुनने का नियम दें।
- over partitioning और small file वाली दिक्कतों से आगाह करें।
- समझाएं कि फायदा मान लेने के बजाय जांचते कैसे हैं।
- इसे सिर्फ रफ्तार नहीं, लागत से जोड़ें।
उदाहरण जवाब
partitioning मोटी और भौतिक चीज है: दिन के हिसाब से बांटिए, और पिछले हफ्ते पर filter की गई query पूरी table के बजाय सात partitions पढ़ेगी। clustering डेटा के अंदर बारीक ordering है ताकि engine हर block के लिए रखी min और max values के आधार पर blocks छोड़ सके। मेरा नियम यह है कि उस चीज पर partition करें जो लगभग हर query में है, जो लगभग हमेशा event या ingestion date होती है, फिर अगले एक दो predicates पर cluster करें, जैसे customer id या country। जो गड़बड़ी मैंने एक से ज्यादा बार सुधारी है वह है over partitioning। किसी ने customer id पर partition कर दिया, कुछ किलोबाइट वाले चालीस हजार partitions बन गए, और अकेली query planning उस scan से धीमी हो गई जिससे बचने की कोशिश हो रही थी। दूसरी आदत जो मैं रखता हूं वह है भरोसा करने के बजाय जांचना। BigQuery पर मैं dry run से पहले और बाद के bytes processed देखता हूं, क्योंकि अगर अनुमान गिरा नहीं तो pruning हो ही नहीं रही, और आम तौर पर इसकी वजह यह होती है कि filter partition column को किसी function में लपेट देता है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- partition column पर filter होने के बावजूद pruning क्यों नहीं होगी?
- नया डेटा आने पर clustering का व्यवहार कैसा रहता है?
- small files की समस्या क्या है और आप उसे कैसे ठीक करते हैं?
डेटा इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें