शीर्ष डेटाबेस प्लेटफ़ॉर्म में अहस्ताक्षरित पूर्णांक प्रकार उपलब्ध क्यों नहीं हैं?


15

डेटा प्रकार और कस्टम लंबाई के साथ डेटाबेस आमतौर पर बहुत अनुकूलन योग्य होते हैं।

यह मुझे आश्चर्यचकित करता है, जैसा कि मैं सिंटैक्स को उन unsigned intप्रकारों का उपयोग करने के लिए देखने की कोशिश करता हूं जो वे न तो PostgreSQL और MS SQL सर्वर से उपलब्ध हैं। MySQL और Oracle लगता है।

ऐसा लगता है कि उनकी ओर से एक चमकदार चूक है - एक लंबे / बड़े, (8 बाइट पूर्णांक) के रूप में अगला सबसे अच्छा सुगंधित विकल्प, लेकिन पूरी तरह से अस्वाभाविक हो सकता है! क्या किसी को पता है कि वे देशी अहस्ताक्षरित int समर्थन को शामिल क्यों नहीं करना चाहेंगे?


2
पोर्टेबल == मानक अनिवार्य। C मानक साधारण इन्ट्स या लॉन्ग की चौड़ाई को निर्दिष्ट नहीं करता है, जो कि प्रतिनिधित्व योग्य संख्याओं की न्यूनतम सीमा है। कुछ बिंदुओं पर 16 बिट इन्ट्स वाले प्लेटफॉर्म आम थे। 64 बिट संभव है। 36 भी (हालांकि विलुप्त)। 24 होता है (डीएसपी)। यह कितनी बार है कि आपके पास 32bit में डेटा है, लेकिन 31 नहीं, और आपने मापा है कि सामान्य संख्यात्मक प्रकारों का उपयोग करने से आपको एक प्रदर्शन हिट होता है?
Mat

2
SQL- सर्वर और पोस्टग्रेज दोनों में NUMERIC(10)पूर्णांक को 9.999.999.999(और एक बाधा के साथ आप नकारात्मक मूल्यों को अस्वीकार कर सकते हैं) अनुमति देता है।
ypercubeᵀᴹ

4
एक कारण से: वे SQL मानक में निर्दिष्ट नहीं हैं। Postgres के बारे में अधिक लंबी चर्चा के लिए इस चर्चा पर एक नज़र डालें: postgresql.1045698.n5.nabble.com/… और यह: postgresql.1045698.n5.nabble.com/ ...
a_horse_with_no_name


1
@ मैट्स यह प्रदर्शन हिट नहीं है मैं इसके बारे में चिंतित हूं, यह 4 अतिरिक्त बाइट्स एक्स 153 मिलियन = ~ 612 अतिरिक्त एमबी व्यर्थ है, मान 3 बिलियन से ऊपर जाते हैं लेकिन 4 बिलियन नहीं। न्यूमेरिक (10) में 9 बाइट्स स्टोरेज की आवश्यकता के अलावा परफ़ॉर्म हिट्स हैं
Ehryk

जवाबों:


14

Microsoft के जिम हॉग ने इस मुद्दे पर निम्नलिखित के साथ प्रतिक्रिया दी है:

पेशेवरों और विपक्ष हैं। प्रो ओर, यह कुछ त्रुटियों से बचने के लिए एक अच्छा तरीका लगता है - एक (हस्ताक्षरित) इंट की जांच करने के लिए मान है> 0. और मैं यह भी उद्यम करूंगा कि वास्तव में इंट के कई उपयोग मायने रखता है जो कभी भी नकारात्मक नहीं होना चाहिए । अधिकतम पंक्ति गणना दोगुनी करने के सवाल पर? - सच है, लेकिन मैं कहूंगा कि यह कम सम्मोहक है।

विपक्ष पक्ष पर ... C या C ++ में हस्ताक्षरित / अहस्ताक्षरित प्रकारों को मिलाकर ऐसा लगता है कि यह पर्याप्त सरल होना चाहिए। यह। यह हार्ड-टू-फाइंड गलतियों का एक छोटा सा टारपीट खोलता है - सबसे अधिक अंतर्निहित प्रमोशन / वाइडिंग के लिए जटिल नियमों के कारण। एसक्यूएल, अफसोस, पहले से ही अंतर्निहित कास्टिंग नियमों का एक और भी अधिक जटिल सेट है। अहस्ताक्षरित चींटियों को जोड़ते हुए, मुझे डर है, हम सभी को और भी अधिक भ्रमित करेंगे।

मैं इस सुझाव को किताबों पर रखूँगा। लेकिन, उन सभी विशेषताओं के बीच, जिन्हें हमें जोड़ना चाहिए / होना चाहिए, यह एक, सम्मान के साथ, उस सूची के शीर्ष के पास नहीं है।

स्रोत: माइक्रोसॉफ्ट कनेक्ट

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

कनेक्ट लिंक मूल रूप से मार्टिन स्मिथ द्वारा प्रश्न टिप्पणियों में पोस्ट किया गया था ।


3
"हम सभी को और भी अधिक भ्रमित करें" - शायद SQL सर्वर का उपयोग करके सभी को संदर्भित करता है, न कि केवल अपनी विकास टीम को।
ऑस्कर बर्गग्रेन 6
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.