@Xulfee, यह एक काफी व्यापक प्रश्न है और बहुत कुछ आपके प्रोजेक्ट की प्रकृति पर निर्भर करता है। आपके द्वारा संदर्भित दृष्टिकोण समग्र वास्तुकला के कई पहलुओं को प्रभावित करते हैं। उदाहरण के लिए:
क्या डेटाबेस पूरी तरह से सामान्यीकृत है?
डाटाबेस सामान्यीकरण आमतौर पर आपके वैचारिक मॉडल की जटिलता की समस्या से निपटने में सहायता करता है। जब ठीक से (नोट मैंने नहीं कहा, "पूरी तरह से") सामान्यीकृत, आपका मॉडल काफी सीधे आगे होना चाहिए और डेटाबेस के उपभोक्ता (डेवलपर्स, आपकी बीआई टीम, डोमेन विशेषज्ञ इत्यादि) को एक अच्छा विचार प्राप्त करने में सक्षम होना चाहिए व्यवसाय की समस्याएं जिनके साथ आपके डेटाबेस से संपर्क किया जा रहा है। ऐसा कहा जा रहा है कि, सामान्यीकरण काफी बड़ी रिपोर्टिंग और विश्लेषण समस्या का कारण बन सकता है। एक बड़े, काफी सामान्यीकृत डेटाबेस के खिलाफ एक रिपोर्ट के लिए एक प्रश्न लिखते समय, आप कई तालिकाओं में शामिल होने से प्रदर्शन समस्याओं को पेश कर सकते हैं। snowflake schemas दर्ज करें। तो, आपके प्रश्न के लिए: यह निर्भर करता है। आप रिपोर्टिंग आवश्यकताओं क्या कर रहे हैं? औसत पर आपको कितने लेन-देन की आवश्यकता है? आपका वैचारिक मॉडल कितना जटिल है?क्या आप डेटाबेस को छोटे मॉडल में तोड़ने में सक्षम हैं, जो एक बड़े से अधिक हैं?
कौन सा ORM (linq2sql, इकाई ढांचा) इस परियोजना के लिए उपयुक्त है?
फिर, एक ओआरएम एक उपकरण है। आपको खुद से पूछना चाहिए कि आप किस विशिष्ट नौकरी को पूरा करने की कोशिश कर रहे हैं? एक ओआरएम (या पहली जगह में ओआरएम का उपयोग करने में) का विकल्प एक निर्णय है कि मैं आपको सलाह देता हूं कि आप काफी जल्दी करें क्योंकि यह प्रदर्शन से लेकर विकास टीम समेकन तक सबकुछ प्रभावित कर सकता है। वहाँ वहाँ बाहर महान विकल्पों में से एक बहुत कुछ कर रहे हैं:
ऊपर चौखटे से प्रत्येक अपने हठ परत सार संक्षेप का एक शानदार काम करता है। प्रत्येक के पास यह समर्थक और विपक्ष है - जिनमें से अधिकांश बुनियादी ढांचे की चिंताओं के लिए आते हैं: प्रदर्शन, विन्यास, स्कीमा/भाषा संगतता, दृढ़ता पैटर्न, विक्रेता समर्थन। पसंद को देखते हुए, मैं खुद से पूछूंगा कि कौन सा ढांचा मेरे विकास दल के साथ सबसे सहज है? कौन सा सिस्टम गतिविधि के स्तर का समर्थन करता है जिसे मैं उम्मीद करता हूं? किस विक्रेता के साथ मैं "फेंकने" के लिए तैयार हूं? मैंने काफी सफल प्रणालियों को देखा है जो काफी छोटे ओआरएम का उपयोग करते हैं (यानी स्टैक ओवरफ्लो लिंक-टू-एसक्यूएल के एक संशोधित संस्करण का उपयोग करता है) साथ ही साथ काफी बड़ी प्रणाली काफी जटिल ओआरएम के साथ असफल होती है।
क्या मुझे संग्रहित प्रक्रियाओं, डीबी फ़ंक्शंस, ट्रिगर्स इत्यादि का उपयोग करना चाहिए?
यह प्रश्न आपके दृढ़ता स्टोर के आसपास केंद्रित है और आप इसका उपयोग कैसे करते हैं (साथ ही साथ आप अपने डीबीए को कितना क्रोधित करना चाहते हैं :))। स्पॉक्स (संग्रहीत प्रक्रियाओं) का उपयोग स्वयं को आपके डीबीए को बहुत ही ग्रेन्युलर स्तर पर सुरक्षा प्रदान करने की इजाजत देता है। इसके अतिरिक्त, यदि आप जिस ओआरएम का उपयोग कर रहे हैं वह डायनामिक एसक्यूएल उत्पन्न करता है, तो आपको स्पॉक्स का उपयोग करके उत्पन्न क्वेरी को कैश करने की डेटाबेस की क्षमता से लाभ हो सकता है। डीबी कार्य एक डबल पक्षीय ब्लेड हो सकता है। वे आपके मॉडल में कार्यक्षमता और बुद्धि को जोड़ने की क्षमता प्रदान करते हैं, जबकि साथ ही आपको काफी बड़े हिट प्रदर्शन-वार (यानी तालिका-मूल्यवान यूडीएफ) लेने की इजाजत मिलती है। ट्रिगर्स के पास अपने स्वयं के नुकसान होते हैं और सावधानी के साथ उपयोग किया जाना चाहिए, लेकिन यह चर्चा बल्कि शामिल हो सकती है। इस मामले में मेरे लिए नीचे की रेखा यह है: डेटाबेस में आप कितना तर्क देना चाहते हैं, और सुरक्षा और प्रदर्शन कितना महत्वपूर्ण है? क्या आपके पास एक योग्य डीबीए है (न सिर्फ एक डेवलपर जो जानता है कि प्रश्न कैसे लिखना है, लेकिन एक डीबीए जो प्रदर्शन ट्यूनिंग और डेटा मॉडलिंग में सक्षम है)? आपका डेटाबेस कितना बड़ा है? आपका डेटा कितना जटिल है? यह निर्धारित करते समय कि आप अपने डेटा को कैसे प्रबंधित करना चाहते हैं, इन सभी सवालों और अधिक के बारे में सोचें।
संक्षेप में, आप कुछ अच्छे प्रश्न पूछ रहे हैं। कार्यान्वयन आवश्यकताओं के साथ बुनियादी ढांचे की जरूरतों को भ्रमित मत करो। एक स्टैक पर निर्णय लें और इसके साथ चलें, उस बिंदु पर कार्यान्वयन विवरण में उलझन न करें जिस पर आप परियोजना को सफलतापूर्वक पूरा करने में असमर्थ हैं। अमूर्तता के सही स्तर के साथ, आपको परियोजना की समग्र सफलता को खारिज किए बिना नई और विभिन्न तकनीकों को आजमाने में आसान लग सकता है। और याद रखें: नई चीजों का प्रयोग करने और कोशिश करने में कुछ भी गलत नहीं है, बस पर तैयार रहें और परीक्षण, परीक्षण, परीक्षण में विफल!