एक कारण के लिए प्रकार मौजूद हैं, अगर उन्होंने कोई लाभ नहीं जोड़ा तो हम उनके पास नहीं होंगे और उनका उपयोग नहीं करेंगे और हमारे पास सिर्फ "प्रकार" होगा और सब कुछ ऐसा होगा। वे न केवल सुविधाजनक हैं, वे सुरक्षा और दक्षता भी जोड़ते हैं। निम्नलिखित इस बात की एक सूची है कि आपको हमेशा अपने मूल स्वरूप में प्रकारों को बनाए रखना चाहिए न कि तार के रूप में । मैंने DateTime
ज्यादातर समय एक उदाहरण के रूप में इस्तेमाल किया, लेकिन समान सिद्धांत किसी भी आदिम प्रकार के लिए लागू होते हैं जैसे पूर्णांक, दशमलव, बाइनरी, आदि।
डेटा भंडार
प्रतिबन्ध
बाधा लिखें
लगभग सभी डेटा स्टोर डेटा पर बाधाओं को निर्दिष्ट करने की अनुमति देते हैं, इसमें प्रकार की बाधाएं शामिल हैं। एक DateTime
उदाहरण निर्दिष्ट करने का एक मुख्य लाभ यह है कि संग्रहीत डेटा उस प्रकार के लिए विवश होगा। स्टोर में डेटा कैसे डाला गया था, इसकी परवाह किए बिना डेट टाइम के अलावा कुछ भी दर्ज करना संभव नहीं होगा। उत्तरार्द्ध बड़ी प्रणालियों के लिए महत्वपूर्ण है जहां कई प्रक्रियाएं होती हैं जो सीधे स्टोर के साथ बातचीत करती हैं। इसमें 30 फरवरी (और किसी भी वर्ष) की तरह दोषपूर्ण तारीखों को जोड़ने की कोशिश भी शामिल है क्योंकि फरवरी में केवल एक लीप वर्ष पर 29 दिन और गैर लीप वर्ष के लिए 28 दिन हो सकते हैं।
वैधव्य बाधा
सत्यापन बाधाएं भी हैं जो डेटा स्टोर में कार्यान्वित की जा सकती हैं जैसे कि यह सुनिश्चित करना कि एक सम्मिलित तिथि वर्तमान तिथि से अधिक नहीं है या अंतिम तिथि से पहले एक प्रारंभ तिथि होती है।
संचालन
अधिकांश डेटा स्टोरों ने संचालन / कार्यों में DateAdd
या जैसे DatePart
MS Sql Server में भी बनाया है । इससे आप विशिष्ट डेटा को फ़िल्टर करना या चयन करना शुरू कर सकते हैं, जबकि डेटा अभी भी स्टोर में है (अभी तक एप्लिकेशन को पुनर्प्राप्त नहीं किया गया है)।
विश्वविद्यालय द्वारा स्वीकृत प्रारूप
देशी प्रकार के अन्य डेवलपर्स या सिस्टम का उपयोग करके जो कि स्टोर के साथ इंटरैक्ट करते हैं, को भी इस बात की जानकारी नहीं देनी चाहिए कि यह कैसे आदिम प्रकार संग्रहीत किया जाता है। यह मामला नहीं है यदि उस प्रकार को एक स्ट्रिंग के रूप में संग्रहीत किया गया था, तो आपको यह सुनिश्चित करना होगा कि हर कोई उस DateTime
स्ट्रिंग प्रतिनिधित्व के प्रारूप को समझता है । डेटा के मूल, क्षेत्रों, और संस्कृतियों में डेटा उत्पत्ति, किसी एप्लिकेशन का भौतिक स्थान और उस डेटा के साथ सहभागिता करने वाले अंतिम उपयोगकर्ता / सिस्टम की विशेषताओं के साथ व्यवहार करते समय यह प्रणाली नाजुक हो जाती है। उदाहरण: एक देश में दिनांक प्रारूप MM / dd / yyyy (अमेरिका की तरह) हो सकता है, लेकिन दूसरे में यह dd / MM / yyyy हो सकता है, यह पता लगाना कि अंतर लगभग असंभव हो जाता है।
गति
पुनर्प्राप्ति की गति, सत्यापन की गति, संचालन की गति और भंडारण दक्षता भी सभी महत्वपूर्ण कारक हैं। पुनर्प्राप्ति गति का उदाहरण: डेटा स्टोर स्तंभों पर अनुक्रमित करने की अनुमति देते हैं और ये अनुक्रमणिका आमतौर पर अधिक कुशलता से उपयोग की जा सकती हैं यदि प्रकार अपने मूल प्रारूप में संग्रहीत है।
आवेदन
डेटा प्राप्त करना
डेवलपर्स के रूप में देशी प्रकार की प्रणाली का उपयोग करके स्टोर के खिलाफ एक्ज़ेक्यूटिंग क्वेश्चन सरल हो जाते हैं, एक बार फिर से स्टोरेज फॉर्मेट का अनुमान नहीं लगाना पड़ता है। लगभग सभी डेटा स्टोर एप्लिकेशन प्रदाता ( उदाहरण: ado.net ) पास किए गए देशी प्रकारों के आधार पर उचित पैरामीटरयुक्त प्रश्न बनाने के लिए तंत्र प्रदान करते हैं। यहां एक Sql सर्वर स्टोर के खिलाफ ado.net क्वेरी में दिनांक भाग को जोड़ने का एक उदाहरण है, स्ट्रिंग्स के साथ भी ऐसा ही करना बेहद बोझिल और नाजुक / त्रुटि प्रवण होगा।
command.Parameters.Add(new SqlParameter("@startDate", SqlDbType.Date) {Value = myDateInstance.Date});
संचालन
कोड में मूल प्रकार भी .net प्रकार जैसे मानक संचालन के लिए प्रदान करते हैं System.Date
। परिचालन आमतौर पर प्रकृति में गणितीय होते हैं जैसे तिथियां जोड़ना, तिथियों के बीच का अंतर खोजना आदि, फिर से, स्ट्रिंग प्रकारों पर आसानी से करना संभव नहीं है।
प्रस्तुति अंश
स्थान
जब एक आदिम प्रकार को अंततः प्रस्तुति परत में स्ट्रिंग में परिवर्तित किया जाता है ( ऐसा करने के लिए प्रोग्राम स्टैक में सही स्थान ) तो प्रोग्रामर के पास अब उस संदर्भ के अनुसार इसे सही ढंग से प्रदर्शित करने के लिए विभिन्न विकल्प हैं। इस संदर्भ में आम तौर पर डेटा का वास्तविक अर्थ और उपयोगकर्ता का स्थान शामिल होता है।
उदाहरण 1
उपयोगकर्ता के स्थान के आधार पर एक डेटाटाइम उदाहरण स्वचालित रूप से स्वरूपित किया जा सकता है।
DateTime.Now.ToString("D", CultureInfo.GetCultureInfo(userContext.Culture))
उदाहरण 2
एक दशमलव उदाहरण एक राशि (मुद्रा) का प्रतिनिधित्व कर सकता है और उपयोगकर्ता के स्थान को तब भी अपनी पसंद के अनुसार राशि प्रदर्शित करनी चाहिए। एक c # एप्लिकेशन का उपयोग करके मूल्य प्रदर्शित हो सकता है
amount.ToString("C", CultureInfo.GetCultureInfo(userContext.Culture))
यह महत्वपूर्ण हो सकता है क्योंकि विभिन्न संस्कृतियां अलग-अलग संख्या प्रदर्शित करती हैं। अमेरिकी अवधि में (।) और अल्पविराम (,) का नीदरलैंड्स की तरह ही सटीक अर्थ है।
स्थान
यह DateTime
उदाहरणों के लिए बहुत विशिष्ट है । एक तिथि और समय एक विशिष्ट समय में एक घटना का प्रतिनिधित्व करता है लेकिन यह आमतौर पर अपने स्वयं के क्षेत्र के आधार पर उपयोगकर्ता को सूचित / प्रस्तुत किया जाना है। उदाहरण: संयुक्त राज्य अमेरिका में पूर्वी टाइमज़ोन में एक उपयोगकर्ता के लिए एक DateTime
उदाहरण 2016-09-21T23:38:21.399Z
प्रदर्शित किया जा सकता है 9/21/2016 5:21 PM
। इसे पूरा करने के कई तरीके हैं लेकिन यह असंभव के बगल में हो जाता है अगर तारीख समय उदाहरण को एक स्ट्रिंग प्रकार के रूप में या डेटा स्टोर में एक स्ट्रिंग प्रकार के रूप में मेमोरी में रखा जाता है।
सामान्य नियम
किसी अनुप्रयोग के लिए सामान्य 2 नियम तब आते हैं जब किसी भी आदिम प्रकार को स्ट्रिंग प्रतिनिधित्व में बदलने की बात आती है
- जब इनपुट स्वीकार करते हैं, तो उस इनपुट को प्रोग्राम स्टैक (आमतौर पर प्रस्तुति परत में) में यथासंभव प्रारंभिक आदिम प्रकार में बदल दिया जाता है।
- प्रदर्शित किए जाने वाले डेटा को पुनर्प्राप्त करते समय, प्रोग्राम स्टैक में उस डेटा को जितनी देर हो सके उतनी देर में परिवर्तित करें (फिर से, आमतौर पर प्रस्तुति परत में)