2008-09-01 14 views
5

एसक्यूएल के लिए मौजूदा एएनएसआई मानक के बावजूद एसक्यूएल वितरण इतने गैर मानक क्यों हैं? क्या वास्तव में एसक्यूएल डेटाबेस काम करने के तरीके में कई सार्थक मतभेद हैं या क्या यह केवल दो डेटाबेस हैं जिनके साथ मैं काम कर रहा हूं: एमएस-एसक्यूएल और पोस्टग्रेएसक्यूएल? ये मतभेद क्यों उठते हैं?एसक्यूएल मतभेदों के कारण

उत्तर

5

यह "चुपके लॉक-इन" का एक रूप है। जोएल यहां काफी विस्तार में चला जाता है:

कंपनियों उनके क्रियान्वयन में अमानक या अजीब असमर्थित कार्यक्षमता के लिए अपने व्यवसाय कार्यक्षमता बांधने खत्म, यह उनकी दूर स्थानांतरित करने की क्षमता को प्रतिबंधित अपने विक्रेता से एक प्रतियोगी के लिए।

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

8

एएनएसआई मानक केवल आदेशों और डेटा प्रकारों का एक सीमित सेट निर्दिष्ट करता है। एक बार जब आप उनसे आगे जाते हैं, तो कार्यान्वयनकर्ता स्वयं ही होते हैं। और कुछ बहुत ही महत्वपूर्ण अवधारणाओं को बिल्कुल निर्दिष्ट नहीं किया गया है, जैसे ऑटो-वृद्धि कॉलम। SQLite बस पहले गैर-शून्य पूर्णांक को चुनता है, MySQL को AUTO INCREMENT की आवश्यकता होती है, PostgreSQL अनुक्रमों का उपयोग करता है, आदि। यह एक गड़बड़ है, और यह केवल ओएसएस डेटाबेस के बीच है! ओरेकल, माइक्रोसॉफ्ट, और आईबीएम को सामूहिक रूप से कार्यक्षमता के एक कठिन बिट पर निर्णय लेने का प्रयास करें।

2

यह निश्चित रूप से प्रभावी लॉक-इन है, जैसा 1800 कहता है। लेकिन डेटाबेस विक्रेताओं के निष्पक्षता में, एसक्यूएल मानक हमेशा मौजूदा डेटाबेस के फीचर सेट पर पकड़ ले रहा है। हमारे पास आज के अधिकांश डेटाबेस बहुत प्राचीन वंशावली हैं। यदि आप माइक्रोसॉफ्ट एसक्यूएल सर्वर को अपनी जड़ों पर वापस ढूंढते हैं, तो मुझे लगता है कि आपको इंग्रेस मिलेगा - 70 के दशक में लिखे गए पहले संबंधपरक डेटाबेस में से एक। और पोस्टग्रेस मूल रूप से 80 के दशक में इंगर्स के उत्तराधिकारी के रूप में कुछ लोगों द्वारा लिखे गए थे। ओरेकल वापस जाता है, और मुझे यकीन नहीं है कि MySQL कहाँ आया था।

डेटाबेस गैर-पोर्टेबिलिटी चूसती है, लेकिन यह बहुत खराब हो सकती है।

4

जॉन: मानक वास्तव में पहचान कॉलम, अनुक्रम, ट्रिगर, दिनचर्या, अपरिपक्व इत्यादि सहित कई विषयों को शामिल करता है लेकिन बेशक, इन मानकों में से कई घटक पहले कार्यान्वयन के बाद जगह में लाए जा सकते हैं; और यह एक कारण हो सकता है कि एसक्यूएल मानकों का अनुपालन कुछ हद तक कम क्यों है।

नील: वास्तव में ऐसे क्षेत्र हैं जहां SQL मानक कार्यान्वयन से आगे है। उदाहरण के लिए, एसेटेशन बनाना अच्छा लगेगा, लेकिन जहां तक ​​मुझे पता है, कोई डीबीएमएस अभी तक दावा लागू नहीं करता है।

व्यक्तिगत रूप से, मेरा मानना ​​है कि कुछ आईएसओ मानकों (जैसे एसक्यूएल मानक) की बंद प्रकृति समस्या का हिस्सा है: जब कोई मानक ऑनलाइन आसानी से उपलब्ध नहीं होता है, तो यह कार्यान्वयनकर्ताओं/योजनाकारों द्वारा भी जाना जाने की संभावना कम होती है, और यह भी कुछ ग्राहक अनुपालन के लिए पूछते हैं क्योंकि वे नहीं जानते कि क्या पूछना है।

5

सबसे पहले, मुझे असंगतता के संदर्भ में डेटाबेस, ब्राउज़र, या ऑपरेटिंग सिस्टम के रूप में नहीं मिलते हैं। प्रशिक्षण के कुछ घंटों वाला कोई भी किसी भी SQL डेटाबेस पर चयन, आवेषण, हटाना और अपडेट करना शुरू कर सकता है। इस बीच, HTML लिखना मुश्किल है जो प्रत्येक ब्राउज़र पर समान रूप से प्रस्तुत करता है या एक से अधिक ओएस के लिए सिस्टम कोड लिखता है। आम तौर पर, एसक्यूएल में अंतर प्रदर्शन या काफी गूढ़ सुविधाओं से संबंधित होते हैं। प्रमुख अपवाद दिनांक स्वरूप और कार्य प्रतीत होता है।

दूसरा, डेटाबेस डेवलपर्स आम तौर पर उन सुविधाओं को जोड़ने के लिए प्रेरित होते हैं जो अपने उत्पाद को हर किसी से अलग करते हैं। ओरेकल, एमएस एसक्यूएल सर्वर और माईएसक्यूएल जैसे उत्पाद विशाल पारिस्थितिक तंत्र हैं जो अभ्यास में शायद ही कभी परागण करते हैं। मेरे कार्यस्थल पर, हम ओरेकल और माईएसक्यूएल का उपयोग करते हैं, लेकिन यदि आवश्यक हो या वांछित हो तो हम लगभग एक दिन में 100% ओरेकल पर स्विच कर सकते हैं। तो मुझे चमकदार खिलौनों के बारे में बहुत कुछ परवाह है ओरेकल हमें प्रत्येक रिलीज के साथ देता है, लेकिन मुझे यह भी नहीं पता कि MySQL का कौन सा संस्करण हम उपयोग कर रहे हैं। जहां तक ​​हम चिंतित हैं, आईबीएम, माइक्रोसॉफ्ट, पोस्टग्रेएसक्यूएल और बाकी भी मौजूद नहीं हो सकते हैं। डेटाबेस और उपयोगकर्ताओं को रखने और रखने के लिए सुविधाओं को डेटाबेस दुनिया में संगतता से कहीं अधिक महत्वपूर्ण है। (यह "लॉक-इन" उत्तर पर सकारात्मक स्पिन है, मुझे लगता है।)

तीसरा, एसक्यूएल को अलग-अलग लागू करने के लिए विभिन्न कंपनियों के वैध कारण हैं। उदाहरण के लिए, ओरेकल में एक बहु-संस्करण प्रणाली है जो बहुत तेज और स्केलेबल लगातार पढ़ता है। अन्य डेटाबेस में उस सुविधा की कमी है, लेकिन आम तौर पर पंक्तियों को तेजी से डालने और लेन-देन वापस लेना होता है। इन प्रणालियों में यह एक मौलिक अंतर है। यह दूसरे (कम से कम सामान्य मामले में) से बेहतर नहीं बनाता है, बस अलग है। किसी को आश्चर्य नहीं होना चाहिए कि डेटाबेस इंजन के एसक्यूएल ऑनटॉप अपनी ताकत का लाभ उठाता है और इसकी कमजोरियों को कम करने का प्रयास करता है। वास्तव में, डेवलपर्स के लिए यह गैर जिम्मेदार नहीं होगा।

+0

एक अन्य कारण पिछड़ा संगतता है, जो मानक में नहीं जोड़े जाने के बाद उत्पादों में जोड़े गए सुविधाओं के साथ मिलकर या बाद में जोड़ा गया है, जिसके परिणामस्वरूप बाद में निकालना बहुत कठिन होता है (उदाहरण के लिए SQL सर्वर में 'क्रॉस एप्प्ली' (मानक के करीब) डीबी 2 और पोस्टग्रेज़ में 'लेटरल', ओरेकल में 'कनेक्ट बाय', उन्होंने रिकर्सिव सीटीई, 'एलआईटी'/'टॉप'/'एफईएचसीएच' को विभिन्न डीबीएमएस आदि में जोड़ने से पहले साल बनाये)। –

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