2011-10-01 23 views
7

मैं डेटासेट के उद्देश्य को समझना चाहता हूं जब हम सीधे सरल SQL कथन का उपयोग कर डेटाबेस के साथ संवाद कर सकते हैं। इसके अलावा, किस तरह से बेहतर है? डेटासेट में डेटा अपडेट करना और फिर उन्हें डेटाबेस में एक बार में स्थानांतरित करना या डेटाबेस को सीधे अपडेट करना?डेटासेट का उद्देश्य क्या है?

उत्तर

28

मैं डेटासेट के उद्देश्य को समझने के लिए जब हम सीधे का उपयोग कर डेटाबेस के साथ संवाद कर सकते हैं के लिए सीधी पहुँच का उपयोग सरल एसक्यूएल कथन।

आपके फ्रिज में भोजन क्यों है, जब आप सीधे कुछ किराने की दुकान पर जा सकते हैं जब आप कुछ खाना चाहते हैं? क्योंकि हर बार जब आप स्नैक चाहते हैं तो किराने की दुकान में जाना बेहद असुविधाजनक है।

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

इसके अलावा, कौन सा तरीका बेहतर है? डेटासेट में डेटा अपडेट करना और फिर उन्हें डेटाबेस में एक बार में स्थानांतरित करना या डेटाबेस को सीधे अपडेट करना?

आप किसी वेबसाइट से दर्जन अलग-अलग उत्पादों को ऑर्डर करते हैं। कौन सा तरीका बेहतर है: जैसे ही वे अपने निर्माताओं से उपलब्ध हो जाते हैं, या जब तक वे सभी उपलब्ध नहीं होते हैं और उन्हें एक ही समय में शिपिंग करते हैं, तब तक आइटम वितरित करते हैं? पहला तरीका, आप जितनी जल्दी हो सके प्रत्येक आइटम प्राप्त करते हैं; दूसरी तरफ कम वितरण लागत है। बेहतर कौन सा तरीका है? हमें बिल्ली कैसे पता होना चाहिए? यह तय करने के लिए आप पर निर्भर है!

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

+0

स्पष्टीकरण के लिए धन्यवाद: डी – Lihini

+0

वैसे, कोई ग्राहक नहीं। सिर्फ़ मैं। यह सिर्फ एक स्टॉक प्रबंधन प्रणाली है जो मैं अभ्यास के लिए कर रहा हूं। चूंकि डेटा को बार-बार देखने और अपडेट करने के लिए उपयोग किया जाता है, मुझे लगता है कि डेटासेट उत्तर है। लेकिन फिर भी, यह समस्या है कि सिस्टम विफलता के मामले में, उपयोगकर्ता द्वारा किए गए सभी कार्यों को तब तक खो दिया जाएगा जब तक उपयोगकर्ता द्वारा किए गए प्रत्येक अपडेट के लिए डेटाबेस अपडेट नहीं किया जाता है। क्या डेटासेट के साथ इसे रोकना संभव है? – Lihini

+0

@Lizzie: यह एक नए प्रश्न के लिए एक महान उम्मीदवार है। –

0

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

लेकिन डीएमएल प्रश्नों के लिए मैं सीधे डेटाबेस पर त्वरित हिट पसंद करता हूं (अधिमानतः संग्रहित प्रोसेस के माध्यम से)। मैंने पाया है कि यह सबसे कुशल है, और साथ ही साथ अच्छी तरह से देखते हुए यह डीबी पर भी बुरा नहीं है।

11

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

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

संग्रहित प्रक्रियाएं और डेटासेट जाने का तरीका है।

enter image description here

संपादित करें::

इस चित्र देखें आप .NET Framework 3.5, 4.0 आप इकाई की रूपरेखा, NHibernate, सबसोनिक तरह ORMs की संख्या का उपयोग कर सकते में हैं। ओआरएम आपके व्यापार मॉडल को यथार्थवादी रूप से प्रस्तुत करते हैं। यदि आप ओआरएम में कुछ सुविधाओं का समर्थन नहीं करते हैं तो आप हमेशा ओआरएम के साथ संग्रहीत प्रक्रियाओं का उपयोग कर सकते हैं।

उदाहरण के लिए: यदि आप एक रिकर्सिव सीटीई (सामान्य तालिका अभिव्यक्ति) संग्रहीत प्रक्रियाएं लिख रहे हैं तो बहुत उपयोगी हैं। यदि आप इसके लिए इकाई फ्रेमवर्क का उपयोग करते हैं तो आप बहुत अधिक समस्याओं में भाग लेंगे।

+0

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

+0

@ marc_s: मैं भी सहमत होगा। लेकिन यह सवाल नेट फ्रेमवर्क 2.0 और मैं से निपट रहा है जब मैंने कहा "संग्रहीत प्रक्रियाओं और डेटासेट" का मतलब है कि वे अच्छे पुराने एसक्लहेलर वर्ग के साथ Ado.Net के लिए जाने का तरीका हैं। – TCM

+0

@GertArnold: स्पॉटिंग के लिए धन्यवाद। मैंने सही किया है – TCM

3

This page बताते हैं विस्तार से जो मामलों में आप का उपयोग करना चाहिए एक Dataset और जो मामलों में आप डेटाबेस

संबंधित मुद्दे