संग्रहीत प्रक्रियाओं का उपयोग करना है या नहीं, यह एक बार में एक धार्मिक या राजनीतिक चर्चा से अधिक है।
जो करने की आवश्यकता है वह स्पष्ट रूप से आपकी आवेदन परतों को परिभाषित करता है और उन सीमाओं को पार नहीं करता है। डेटाबेस के बाहर क्वेरी करने की तुलना में संग्रहीत कार्यविधियों के कई फायदे और नुकसान हैं।
लाभ 1:संग्रहित प्रक्रियाएं मॉड्यूलर हैं। रखरखाव के दृष्टिकोण से यह एक अच्छी बात है। जब आपके आवेदन में क्वेरी समस्या उत्पन्न होती है, तो आप शायद इस बात से सहमत होंगे कि GUI कोड की कई पंक्तियों में दबी हुई एम्बेडेड क्वेरी की तुलना में संग्रहीत कार्यविधि का समस्या निवारण करना कहीं अधिक आसान है।
लाभ 2:संग्रहीत कार्यविधियाँ ट्यून करने योग्य हैं। आपके इंटरफ़ेस के लिए डेटाबेस कार्य को संभालने वाली प्रक्रियाएँ होने से, आप क्वेरी के प्रदर्शन को बेहतर बनाने के लिए GUI स्रोत कोड को संशोधित करने की आवश्यकता को समाप्त करते हैं। संग्रहीत प्रक्रियाओं में परिवर्तन किए जा सकते हैं--जुड़ने के तरीकों, अलग-अलग तालिकाओं, आदि के संदर्भ में--जो फ्रंट-एंड इंटरफेस के लिए पारदर्शी हैं।
लाभ 3:संग्रहीत कार्यविधियाँ क्लाइंट-साइड से सर्वर-साइड फ़ंक्शंस को सार या अलग करती हैं। GUI कोड के माध्यम से कोई क्वेरी बनाने की तुलना में किसी प्रक्रिया को कॉल करने के लिए GUI एप्लिकेशन को कोड करना बहुत आसान है।
एडवांटेज 4:संग्रहित प्रक्रियाएं आमतौर पर डेटाबेस डेवलपर्स/व्यवस्थापकों द्वारा लिखी जाती हैं। इन भूमिकाओं को धारण करने वाले व्यक्ति आमतौर पर कुशल प्रश्न और SQL कथन लिखने में अधिक अनुभवी होते हैं। यह GUI एप्लिकेशन डेवलपर्स को एप्लिकेशन के कार्यात्मक और ग्राफिकल प्रस्तुति टुकड़ों पर अपने कौशल का उपयोग करने के लिए मुक्त करता है। यदि आप अपने लोगों को उन कार्यों को कर रहे हैं जिनके लिए वे सबसे उपयुक्त हैं, तो आप अंततः एक बेहतर समग्र अनुप्रयोग तैयार करेंगे।
इन सब बातों को ध्यान में रखते हुए इसके कई नुकसान हैं।
नुकसान 1:ऐसे अनुप्रयोग जिनमें व्यापक व्यावसायिक तर्क और प्रसंस्करण शामिल हैं, सर्वर पर अत्यधिक भार डाल सकते हैं यदि तर्क पूरी तरह से संग्रहीत प्रक्रियाओं में लागू किया गया था। इस प्रकार के प्रसंस्करण के उदाहरणों में डेटा ट्रांसफर, डेटा ट्रैवर्सल, डेटा ट्रांसफ़ॉर्मेशन और गहन कम्प्यूटेशनल ऑपरेशन शामिल हैं। आपको इस प्रकार की प्रोसेसिंग को व्यावसायिक प्रक्रिया या डेटा एक्सेस लॉजिक घटकों में स्थानांतरित करना चाहिए, जो आपके डेटाबेस सर्वर की तुलना में अधिक स्केलेबल संसाधन हैं।
नुकसान 2:अपने सभी व्यावसायिक तर्क को संग्रहीत कार्यविधियों में न डालें। आपके एप्लिकेशन का रखरखाव और चपलता एक समस्या बन जाती है जब आपको Sp भाषा में व्यावसायिक तर्क को संशोधित करना होगा। उदाहरण के लिए, कई RDBMS का समर्थन करने वाले ISV अनुप्रयोगों को प्रत्येक सिस्टम के लिए अलग-अलग संग्रहीत कार्यविधियों को बनाए रखने की आवश्यकता नहीं होनी चाहिए।
नुकसान 3:संग्रहीत प्रक्रियाओं को लिखना और बनाए रखना अक्सर एक विशेष कौशल सेट होता है जो सभी डेवलपर्स के पास नहीं होता है। यह स्थिति परियोजना विकास कार्यक्रम में अड़चनें पैदा कर सकती है।
मैं शायद कुछ फायदे और नुकसान से चूक गया हूं, बेझिझक टिप्पणी करें।