star schema में एक fact table होती है और उसके चारों तरफ denormalized dimension tables, इसलिए ज्यादातर queries को हर dimension पर एक ही join चाहिए। snowflaking किसी dimension को sub tables में normalize करती है, जिससे storage बचता है और साझा attributes एक जगह आ जाते हैं, लेकिन joins बढ़ जाते हैं। columnar warehouse पर storage सस्ता है और joins duplication से महंगे पड़ते हैं, इसलिए star ही डिफॉल्ट है। किसी dimension को snowflake तब करें जब वह सचमुच बड़ी, hierarchical, या कई marts में साझा हो।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर इससे परखते हैं कि आप Kimball रट कर सुना रहे हैं या physical trade offs पर सोच सकते हैं। सबसे अच्छे जवाब बताते हैं कि columnar compression denormalized dimensions को सस्ता बना देती है, कि query engines छोटी dimensions पर broadcast joins अच्छे से संभालते हैं, और star के पक्ष में असली दलील raw performance नहीं बल्कि analyst की सहूलियत है।
अपना जवाब कैसे स्ट्रक्चर करें
- star की शक्ल बताएं और यह कि वह analyst के लिए आसान क्यों है।
- snowflaking को dimensions के normalization के रूप में समझाएं।
- columnar engines पर joins बनाम storage के हिसाब से trade off रखें।
- एक ठोस मामला दें जहां snowflaking सही है।
- grain का जिक्र करें, वह फैसला जो इन दोनों से पहले आता है।
उदाहरण जवाब
star एक तय grain वाली fact table है जिससे denormalized dimensions लटकी होती हैं, इसलिए analyst हर dimension पर एक join लिखता है और उसे पढ़ने लायक column names मिलते हैं। मैं यही डिफॉल्ट रखता हूं, क्योंकि columnar warehouse पर बीस लाख rows में देश का नाम दोहराना compress होकर लगभग कुछ भी नहीं रह जाता, और छोटी dimension वैसे भी broadcast हो जाती है। snowflaking तब समझ आती है जब dimension सचमुच बड़ी और hierarchical हो, जैसे एक product dimension जिसमें category tree हो और कई marts को वह साझा चाहिए, क्योंकि उस hierarchy को एक जगह रखना उसे पांच जगह दोहराने से बेहतर है। इन दोनों से पहले मैं जो बात उठाऊंगा वह grain है। यह तय करना कि fact table में एक row हर order line की है, न कि हर order की, आगे का सब कुछ तय कर देता है, और यहां गलती होने पर वही क्लासिक double counted revenue बग पैदा होता है। मुझे एक mart इसलिए दोबारा बनाना पड़ा था क्योंकि grain मिला जुला था, और यह किसी भी normalization बहस से कहीं ज्यादा महंगा पड़ता है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- fact table का grain आप कैसे तय करते हैं?
- factless fact table क्या होती है और आप उसे कब इस्तेमाल करेंगे?
- fact और dimension के बीच many to many रिश्ता आप कैसे model करेंगे?
डेटा इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें