मैं एक दृश्य (जैसा कि अन्य ने सुझाव दिया है) या एक इनलाइन टेबल-मूल्यवान फ़ंक्शन (इसका लाभ आपको पैरामीटर की आवश्यकता है - जैसे दिनांक सीमा या ग्राहक खाता - जो उपयोगकर्ताओं को पूछताछ से रोकने में मदद कर सकता है समस्या स्थान पर किसी भी सीमा के बिना) पहले। एक इनलाइन टीवीएफ वास्तव में एक parametrized दृश्य है और यह एक दृष्टिकोण के बहुत करीब है कि कैसे इंजन उन्हें बहु-कथन तालिका मूल्यवान समारोह या एक स्केलर समारोह के साथ व्यवहार करता है, जो अविश्वसनीय रूप से खराब प्रदर्शन कर सकते हैं।
हालांकि, कुछ मामलों में, यह दृश्य जटिल या गहन होने पर उत्पादन प्रदर्शन को प्रभावित कर सकता है। खराब लिखित विज्ञापन उपयोगकर्ता प्रश्नों के साथ, यह ताले को लंबे समय तक बने रहने का कारण बन सकता है या बेहतर निर्मित क्वेरी पर आगे बढ़ने के कारण आगे बढ़ सकता है। उपयोगकर्ताओं के लिए ई-आर डेटा मॉडल को गलत तरीके से परिभाषित करना और उन मामलों में गुणात्मक संख्याएं उत्पन्न करना भी संभव है जहां कई से कई या कई से अधिक संबंध हैं। अगला विकल्प इंडेक्स के साथ इन विचारों को पूरा करने या टेबल बनाने और उन्हें अद्यतन रखने के लिए हो सकता है, जो हमें मेरे अगले विकल्प के करीब ले जाता है ...
तो, दृश्य विकल्प के उन दोषों को देखते हुए और पहले से ही इसे कम करने की सोच डेटा की प्रतिलिपि बनाना शुरू करने के बाद, अगला विकल्प मैं मानता हूं कि डेटा के अलग-अलग पढ़ने के लिए (इन उपयोगकर्ताओं के लिए) संस्करण अलग-अलग है। आम तौर पर, मैं सबसे पहले किमबाल-स्टाइल स्टार स्कीमा को देखता हूं। आपको पूर्णकालिक समय-सतत डेटा गोदाम रखने की आवश्यकता नहीं है। बेशक, यह एक विकल्प है, लेकिन आप डेटा के साथ अद्यतित एक रिपोर्टिंग मॉडल रख सकते हैं। स्टार-स्कीमा denormalization का एक विशेष रूप है और संख्यात्मक रिपोर्टिंग के लिए विशेष रूप से अच्छा है, और एक दिए गए स्टार को गलती से उपयोगकर्ताओं द्वारा दुर्व्यवहार करने में सक्षम नहीं होना चाहिए। आप ट्रिगर्स, अनुसूचित नौकरियों इत्यादि सहित कई तरीकों से स्टार को अद्यतित रख सकते हैं। वे रिपोर्टिंग आवश्यकताओं के लिए बहुत तेज़ हो सकते हैं और उसी उत्पादन स्थापना पर चल सकते हैं - शायद एक अलग उदाहरण पर यदि एक अलग डेटाबेस नहीं है।
हालांकि इस तरह के समाधान के लिए आपको अन्य स्टोरेज की तुलना में प्रभावी रूप से अपनी स्टोरेज आवश्यकताओं को दोगुनी से अधिक करने की आवश्यकता हो सकती है, यदि आप अपने डेटा को अच्छी तरह से समझते हैं और दो मॉडलों को ध्यान में रखते हैं तो एक बहुत अच्छा विकल्प हो सकता है - एक लेनदेन के लिए और विश्लेषण के लिए एक (ध्यान दें कि दृश्य के सबसे सरल विकल्प के उपयोग के साथ आप पहले ही इस तार्किक अलगाव को शुरू कर देंगे)।
कुछ आर्किटेक्ट अक्सर अपने सर्वर को दोगुना करते हैं और किसी भी तरह के प्रतिकृति के साथ समान मॉडल का उपयोग करते हैं ताकि एक रिपोर्टिंग सर्वर प्रदान किया जा सके जो अधिक भारी या अलग से अनुक्रमित किया गया हो। ऐसा दूसरा सर्वर रिपोर्टिंग आवश्यकताओं के साथ उत्पादन लेनदेन को प्रभावित नहीं करता है और इसे काफी आसानी से अद्यतित रखा जा सकता है। केवल एक मॉडल होगा, लेकिन निश्चित रूप से, इसमें समान उपयोगिता समस्याएं हैं जो उपयोगकर्ताओं को केवल अंतर्निहित मॉडल तक पहुंच प्रदान करने की इजाजत देती हैं, प्रदर्शन के प्रभाव के बिना, क्योंकि उन्हें अपना खेल का मैदान मिलता है।
इन बिल्लियों को त्वचा के कई तरीके हैं। सौभाग्य।
स्रोत
2009-11-13 18:23:40
क्या आप कृपया अपनी डेटाबेस संरचना को थोड़ा और विस्तारित कर सकते हैं?मैं यहां वर्तमान के खिलाफ प्रवाह करने जा रहा हूं और ऐसी स्थिति का वर्णन करता हूं जहां यह उपयोगी हो सकता है, लेकिन मुझे संरचना को जानने की जरूरत है। – Quassnoi
उपयोगकर्ताओं को समाप्त करने के लिए अंतर्निहित वस्तुओं को उजागर करते समय खतरे का एक शब्द है। हालांकि इस स्थिति में एक दृश्य इष्टतम है, उपयोगकर्ताओं को कच्चे डेटा को नहीं देखना चाहिए। बेशक, मुझे केवल एक मौजूदा प्रोग्रामर माना जा सकता है जो सोचता है कि अंतिम उपयोगकर्ता केवल इन प्रकार की चीजों को गड़बड़ कर देंगे। :) – bogertron
@bogertron: अस्तित्व = elitist। मुझे टिप्पणी करने से पहले मुझे वास्तव में शब्द का उपयोग शुरू करना चाहिए। – bogertron