questions - sql software




SQL सर्वर दृश्य, आशीर्वाद या अभिशाप? (8)

मैंने एक बार एक वास्तुकार के साथ काम किया था जिसने SQL विचारों के उपयोग पर प्रतिबंध लगा दिया था। उनका मुख्य कारण यह था कि विचारों ने बिना किसी विचारहीन सांकेतिक शब्दों में बदलने के लिए आसानी से इसे शामिल किया गया तालिकाओं में शामिल किया, जो कि सांकेतिक शब्दों में बदलनेवाला कठिन प्रयास करता है, पूरी तरह से बचा जा सकता है। स्पष्ट रूप से वह विचारों में encapsulation के बजाय प्रति-पेस्ट के माध्यम से कोड पुन: उपयोग को प्रोत्साहित कर रहा था।

डेटाबेस में करीब 600 टेबल थे और इसे सामान्यीकृत किया गया था, इसलिए अधिकांश उपयोगी एसक्यूएल आवश्यक रूप से वर्बोज़ थे।

कई सालों बाद मैं प्रतिबंध से कम से कम एक बुरा परिणाम देख सकता हूं - हमारे पास कई सैकड़ों घने, लंबी संग्रहित प्रक्रियाएं हैं, जो बिना किसी निष्कर्ष पर है।

पिछली बार में मैं कहूंगा कि यह एक गलत निर्णय था, लेकिन एसक्यूएल विचारों के साथ आपके अनुभव क्या हैं? क्या आपने प्रदर्शन के लिए उन्हें खराब पाया है? पर कोई अन्य विचार जब वे या उपयुक्त नहीं हैं?


आपने अपने प्रश्न का उत्तर दिया है:

वह कॉपी-पेस्ट के माध्यम से कोड पुन: उपयोग को प्रोत्साहित कर रहा था

एक दृश्य बनाकर कोड का पुन: उपयोग करें। यदि दृश्य खराब प्रदर्शन करता है, तो नीचे ट्रैक करने के लिए बहुत आसान हो जाएगा कि आपके पास कई स्थानों पर खराब प्रदर्शन करने वाला कोड है।


इस प्रकार अब तक उल्लेख नहीं किया गया है, जो एक बात विज्ञापन हॉक रिपोर्टिंग या समान के लिए उपयोगकर्ताओं को समाप्त करने के लिए डेटा की एक तार्किक तस्वीर प्रदान करने के लिए विचारों का उपयोग है।

इसमें दो गुण हैं:

  1. उपयोगकर्ता को एकल "तालिकाओं" को उन डेटा से युक्त करने की अनुमति देने के लिए जो अपेक्षा करते हैं कि अपेक्षाकृत गैर तकनीकी उपयोगकर्ताओं को संभावित रूप से जटिल जुड़ने की आवश्यकता होती है (क्योंकि डेटाबेस सामान्य है)
  2. यह डेटा या ढांचा को अंतिम उपयोगकर्ताओं के सामने न पहुंचने के कुछ हद तक एएचएचक एक्सेस की अनुमति देने के लिए एक साधन प्रदान करता है।

यहां तक ​​कि गैर-अस्थायी रिपोर्टिंग के साथ-साथ रिपोर्टिंग सिस्टम को देखने के लिए कभी-कभी सार्थक रूप से आसान रिपोर्टिंग होती है जिसमें रिहेनैंट डेटा शामिल होता है, जो आंकड़ों के उत्पादन को समान रूप से उसी की प्रस्तुति से अलग करता है


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

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

डेटा विभाजन के मामलों में विचारों के विशिष्ट उपयोग हैं जो अत्यंत उपयोगी हो सकते हैं, इसलिए मैं यह नहीं कह रहा हूं कि उन्हें पूरी तरह से बचा जाना चाहिए। मैं सिर्फ यह कह रहा हूं कि यदि कुछ दृश्य संग्रहीत कार्यविधियों द्वारा एक दृश्य को बदला जा सकता है, तो आप दृश्य के बिना बेहतर होंगे।


दृश्य जटिल प्रश्नों के आकार को भी कम कर सकते हैं (उसी तरह संग्रहीत procs कर सकते हैं)।

यह बहुत व्यस्त डाटाबेस के लिए नेटवर्क बैंडविड्स्त को कम कर सकता है।


मेरे वर्तमान डेटाबेस पूरी तरह से 5 से अधिक 5 पंक्तियों की अनगिनत छोटी तालिकाओं के साथ पूरी तरह से भड़क उठा था। ठीक है, मैं उन्हें गिन सकता था लेकिन यह बरबाद था। इन तालिकाओं में केवल निरंतर प्रकार मूल्य (सोचते हैं) माना जाता है और बहुत आसानी से एक तालिका में जोड़ा जा सकता है मैंने फिर से विचार किया कि पिछली संगतता सुनिश्चित करने के लिए मैंने हटाए गए सभी तालिकाओं को सिम्युलेटेड किया। महान काम किया


विचारों का बड़ा प्रशंसक नहीं (आखिरी बार मैंने एक बार लिखा था), लेकिन उन पर पूरी तरह से या तो प्रतिबंध नहीं किया। यदि आपका डेटाबेस अनुक्रमित दृश्यों पर न सिर्फ टेबल पर देता है, तो आप प्रदर्शन को बेहतर तरीके से सुधार सकते हैं जिससे उन्हें बेहतर बना दिया जा सकता है यदि आप विचारों का उपयोग कर रहे हैं, तो उन्हें अनुक्रमणित करने के लिए सुनिश्चित करें।

मैं वास्तव में केवल विभाजन करने के डेटा के विचारों की आवश्यकता देखता हूं और बेहद जटिल के लिए मिलती है जो वास्तव में आवेदन के लिए महत्वपूर्ण हैं (यहां वित्तीय रिपोर्टों की सोच जहां सभी के लिए समान डेटासेट से शुरू करना महत्वपूर्ण हो सकता है)। मुझे पता है कि कुछ रिपोर्टिंग उपकरण संग्रहीत procs पर विचार पसंद करते हैं।

मैं एक विशिष्ट उदाहरण में आपके ज़रूरत से अधिक रिकॉर्ड या फ़ील्ड कभी नहीं लौटाने का एक बड़ा अभिप्राय हूं और लोगों के अधिक से अधिक क्षेत्र (और बहुत सारे मामलों में, बहुत से शामिल होते हैं) की जरूरतों के मुकाबले विचारों का अधिक उपयोग करने की आदत होती है, जो सिस्टम सिस्टम संसाधनों को बर्बाद करती है ।

मैं यह भी देखता हूं कि जो लोग विचारों पर भरोसा रखते हैं (वे देखने वाले डेवलपर नहीं हैं - जो लोग केवल उनका इस्तेमाल करते हैं) अक्सर डेटाबेस को बहुत अच्छी तरह से समझ नहीं पाते हैं (इसलिए वे दृश्य का उपयोग न करने पर गलत हो जाता है) और मेरे लिए डेटाबेस के खिलाफ अच्छा कोड लिखने के लिए महत्वपूर्ण है। मैं चाहता हूं कि लोग यह समझ सकें कि वे क्या करने के लिए डीबी को पूछ रहे हैं, एक दृश्य के कुछ जादू ब्लैक बॉक्स पर भरोसा नहीं करते। यह बिल्कुल व्यक्तिगत राय है, आपका लाभ अलग-अलग हो सकता है

ब्लैम की तरह मैं खुद को संग्रहीत procs से बनाए रखने के लिए आसान नहीं मिला है

अक्टूबर 2010 में संपादित करने के लिए संपादित करें: चूंकि मैंने यह लिखा था या नहीं, मुझे ऐसे लोगों द्वारा डिज़ाइन किए गए कुछ डेटाबेस के साथ काम करने का अवसर मिला है जो विचारों का उपयोग करने के आदी रहे हैं। इससे भी बदतर वे उन विचारों का इस्तेमाल करते थे जो विचारों को कहते थे, जिन्हें विचारों को कहा जाता था (अंततः हम उन तालिकाओं की संख्या की सीमा को दबाते हैं जिन्हें कहा जा सकता है)। यह एक प्रदर्शन दुःस्वप्न था एक दृश्य में एक साधारण गिनती (*) प्राप्त करने के लिए और डेटा प्राप्त करने में अधिक समय तक 8 मिनट लगे। यदि आप विचारों का उपयोग करते हैं, तो विचारों का उपयोग करने से बहुत सावधान रहें, जो अन्य दृश्यों को कॉल करते हैं। आप एक ऐसी प्रणाली का निर्माण कर रहे होंगे जो शायद उत्पादन पर सामान्य प्रदर्शन भार के तहत काम नहीं करेगा। एसक्यूएल सर्वर में आप केवल इंडेक्स देख सकते हैं जो दूसरे विचारों को कॉल नहीं करते हैं, तो जब आप एक श्रृंखला में विचारों का उपयोग करते हैं तो क्या हो रहा है, यह है कि पूरे दृश्य सेट को प्रत्येक दृश्य के लिए बनाया जाना चाहिए और जब तक आप इसे प्राप्त नहीं करते पिछले एक है कि जहां खंड मापदंड लागू कर रहे हैं। तीनों को देखने के लिए आपको लाखों रिकॉर्ड उत्पन्न करना पड़ सकता है आप एक बार इसी तालिका में शामिल हो सकते हैं जब आपको वाकई केवल एक बार इसमें शामिल होने की आवश्यकता होती है, तो आप अंतिम परिणामों के सेट की आवश्यकता से अधिक कई कॉलम वापस कर सकते हैं।


सभी शक्तियों के विचारों की तरह इसके अपने अंधेरे पक्ष हैं हालांकि, जब कोई बुरा प्रदर्शन कोड लिखता है तो आप इसके लिए विचारों को दोष नहीं दे सकते। इसके अलावा विचार कुछ कॉलम के जोखिम को सीमित कर सकते हैं और अतिरिक्त सुरक्षा प्रदान कर सकते हैं।


सार्वजनिक वेब आधारित अनुप्रयोगों द्वारा उपयोग के लिए दृश्यों को उनकी भूमिका में उपयोगी साबित किया गया है जो उत्पादन डेटाबेस से डुबकी लगाते हैं सरलीकृत सुरक्षा प्राथमिक लाभ है जिसे हम देखते हैं क्योंकि डेटाबेस में तालिका डिजाइन समान तालिका के भीतर संवेदनशील और गैर-संवेदनशील डेटा को जोड़ सकते हैं। एक संग्रहीत प्रक्रिया इस लाभ का अधिक हिस्सा देती है, लेकिन दृश्य केवल पढ़ने योग्य है, इसमें संभावित इंटरॉप फायदे हैं, और जूनियर लोगों को लागू करने के लिए एक कम जटिल बात है

यह सुरक्षा अवशेष लाभ तब भी लागू होता है जब विचारों को अंतिम-उपयोगकर्ता एड-हॉक क्वेरी के लिए उपयोग किया जाता है; यह एक लाभ से कम होगा यदि हमारे पास एक उचित, चपटा, डाटा वेयरहाउस का प्रतिनिधित्व हमारे डेटा का होगा।







sql