Skip to content

पोस्ट

NVarchar बनाम Varchar

5 अगस्त 2020 • 3 मिनट पढ़ना

NVarchar बनाम Varchar

प्रत्येक इंजीनियर एक नया स्ट्रिंग कॉलम परिभाषित करते समय निर्णय लेता है: क्या मैं nvarchar का उपयोग करूं या varchar का?

जब से मुझे nvarchar की खोज हुई है, मैं हमेशा nvarchar का उपयोग करता हूं। मेरा विचार है, ऐसे डेटाटाइप का उपयोग क्यों करें जो टेक्स्ट वैल्यू को सपोर्ट नहीं कर सकता, और आप संभवतः असंगतता की खोज तब तक नहीं करेंगे जब तक यह प्रोडक्शन में न हो।

मैं स्पेस के बारे में तर्क सुनता हूं, लेकिन स्पेस सस्ता है और चिंता करने लायक नहीं है। मुझे पता है कि आप क्या सोच रहे हैं, जब हार्ड ड्राइव भरी हो तो लागत मायने नहीं रखती, और मैं सहमत हूं।

Sql Server 2008 R2 से शुरू करके डेटा कम्प्रेशन nchar और nvarchar (nvarchar(max) को छोड़कर) फील्ड पर लागू किया जाता है। डेटा के आधार पर कम्प्रेशन की प्रभावशीलता भिन्न होती है, लेकिन अंग्रेजी के साथ, 50% कम्प्रेशन होता है, जो इसे varchar की स्पेस आवश्यकताओं के अनुरूप रखता है (1)।

विचार करने के लिए एक और बात यह है कि अधिकांश प्रोग्रामिंग भाषाएं UTF-16 को स्ट्रिंग टाइप के रूप में सपोर्ट करती हैं। तो हर बार जब varchar को डेटाबेस से लोड किया जाता है, इसे UTF-16 (nvarchar-ish) में कन्वर्ट किया जाता है।

यह StackOverflow उत्तर nvarchar बनाम varchar को सारांशित करता है:

एक nvarchar कॉलम किसी भी यूनिकोड डेटा को स्टोर कर सकता है। एक varchar कॉलम 8-बिट कोडपेज तक सीमित है। कुछ लोग सोचते हैं कि varchar का उपयोग किया जाना चाहिए क्योंकि यह कम स्पेस लेता है। मेरा मानना है कि यह सही उत्तर नहीं है। कोडपेज असंगतताएं एक समस्या हैं, और यूनिकोड कोडपेज समस्याओं का समाधान है। सस्ते डिस्क और मेमोरी के साथ आजकल, वास्तव में कोडपेज के साथ समय बर्बाद करने का कोई कारण नहीं है।

सभी आधुनिक ऑपरेटिंग सिस्टम और विकास प्लेटफॉर्म आंतरिक रूप से यूनिकोड का उपयोग करते हैं। varchar के बजाय nvarchar का उपयोग करके, आप हर बार डेटाबेस से पढ़ने या लिखने पर एन्कोडिंग रूपांतरण करने से बच सकते हैं। रूपांतरण समय लेते हैं, और त्रुटि के लिए प्रवण होते हैं। और रूपांतरण त्रुटियों से पुनरुद्धार एक गैर-तुच्छ समस्या है।

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

मेरा निष्कर्ष यह है कि डेटा varchar होता है केवल जब यह विश्राम में हो।

संदर्भ:

1. Unicode Compression implementation
2. What is the difference between varchar and nvarchar?

लेखक: Chuck Conway एक AI इंजीनियर हैं जिनके पास सॉफ्टवेयर इंजीनियरिंग का लगभग 30 साल का अनुभव है। वह व्यावहारिक AI सिस्टम बनाते हैं—कंटेंट पाइपलाइन, इंफ्रास्ट्रक्चर एजेंट, और ऐसे टूल जो वास्तविक समस्याओं को हल करते हैं—और अपनी सीख को साझा करते हैं। सोशल मीडिया पर उनसे जुड़ें: X (@chuckconway) या YouTube और SubStack पर उनसे मिलें।

↑ शीर्ष पर वापस जाएं

आपको यह भी पसंद आ सकता है