ओपन डेटाबेस कनेक्टिविटी

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

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

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

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

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

एंबेडेड एसक्यूएल दृष्टिकोण के साथ कई समस्याएं थीं। एसक्यूएल की विभिन्न प्रकारों की तरह, एंबेडेड एसक्यूएल जो उन्हें उपयोग करते थे व्यापक रूप से विभिन्न थे, न केवल प्लेटफ़ॉर्म से प्लेटफ़ॉर्म तक, लेकिन एक प्लेटफ़ॉर्म पर सर्वत्र भाषाओं में भी- एक प्रणाली जो आईबीएम डीबी2 में कॉल की अनुमति देता है, वह अपने एसक्यूएल/डीएस में कॉल करने वाले से अधिक भिन्न प्रतीत होगा। एंबेडेड एसक्यूएल अवधारणा के लिए एक अन्य महत्वपूर्ण समस्या यह थी कि एसक्यूएल कोड को केवल प्रोग्राम के स्रोत कोड में ही परिवर्तित किया जा सकता था, ताकि परिप्रश्न में छोटे परिवर्तनों को संशोधित करने के लिए पर्याप्त प्रोग्रामर प्रयास की आवश्यकता होती थी। एसक्यूएल व्यापार इसे स्थिर एसक्यूएल बनाम गतिशील एसक्यूएल के रूप में संदर्भित करता है जिसे किसी भी समय परिवर्तित किया जा सकता है, जैसे [[कमांड लाइन इंटरफेस]] जो प्रायः सभी एसक्यूएल प्रणाली के साथ भेजे जाते हैं, या एक प्रोग्रामिंग इंटरफ़ेस जो एसक्यूएल को सादे पाठ के रूप में छोड़ देता है जब तक कि इसे कॉल नहीं किया जाता। 1980 के दशक के समय डायनेमिक एसक्यूएल प्रणाली एसक्यूएल विक्रेताओं के लिए एक प्रमुख केंद्रबिन्दु बन गया।

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

प्रारंभिक प्रयास
1980 के दशक के मध्य तक माइक्रोकंप्यूटरों में तेजी से सुधार, और विशेष रूप से ग्राफिकल यूज़र इंटरफ़ेस और लोटस 1-2-3 जैसे डेटा-समृद्ध एप्लीकेशन प्रोग्राम की प्रस्तावना ने व्यक्तिगत कंप्यूटरों को क्लाइंट-सर्वर कंप्यूटिंग में पसंद के क्लाइंट-साइड प्लेटफॉर्म के रूप में उपयोग करने में रुचि बढ़ाई। इस मॉडल के अंतर्गत, बड़े मेनफ्रेम और मिनी कंप्यूटर का उपयोग मुख्य रूप से स्थानीय क्षेत्र नेटवर्क पर डेटा को माइक्रोकंप्यूटर तक पहुंचाने के लिए किया जाएगा जो उस डेटा की व्याख्या, प्रदर्शन और कुशलतापूर्वक प्रयोग करेगा। इस मॉडल के काम करने के लिए, एक डेटा एक्सेस मानक की आवश्यकता थी - मेनफ्रेम क्षेत्र में यह अत्यधिक संभावना थी कि एक दुकान के सभी कंप्यूटरक ही विक्रेता और ग्राहकों के थे। कंप्यूटर टर्मिनल उनसे सीधे बात करते हैं, लेकिन सूक्ष्म क्षेत्र में ऐसा कोई मानकीकरण नहीं था और कोई भी क्लाइंट किसी भी नेटवर्किंग सिस्टम का उपयोग करके किसी भी सर्वर तक पहुंच सकता है।

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

ऐसी प्रणाली के प्राथमिक उदाहरणों में से लोटस डेवलपमेंट का लोटस डेटालेंस था, जिसे प्रारंभ में ब्लूप्रिंट के रूप में जाना जाता था। ब्लूप्रिंट, 1-2-3 के लिए विकसित किया गया, जिसमें एसक्यूएल/डीएस, डीबी2, एफओसीयूएस और इसी तरह के विभिन्न समान मेनफ्रेम सिस्टम के साथ-साथ डीबीएएसई जैसे माइक्रोकंप्यूटर सिस्टम और प्रारंभिक माइक्रोसाफ्ट/एश्टन–ताते प्रयासों सहित विभिन्न डेटा स्रोतों का समर्थन किया गया जो अंततः माइक्रोसाफ्ट एसक्यूएल सर्वर में विकसित होगा। बाद के ओडीबीसी के विपरीत, ब्लूप्रिंट एक विशुद्ध रूप से कोड-आधारित प्रणाली थी, जिसमें एसक्यूएल जैसी कमांड भाषा का अनुमान लगाने वाली किसी भी चीज़ का अभाव था। इसके अतिरिक्त, परिप्रश्न सूचना को संग्रह करने के लिए प्रोग्रामर डेटा संरचनाओं का उपयोग करते थे, इनमें से कई संरचनाओं को एक साथ संयोजन कर परिप्रश्न का निर्माण करते थे। लोटस इन मिश्रित संरचनाओं को क्वेरी ट्री के रूप में संदर्भित करता है ।

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

माइक्रोसॉफ्ट डेटा एक्सेस एपीआई का सर्वप्रथम प्रारुप अप्रैल 1989 में प्रकाशित हुआ था, प्रायः उसी समय जब लोटस ने ब्लूप्रिंट की घोषणा की थी। ब्लूप्रिंट की विशाल बढ़त के बाद भी - यह तब चल रहा था जब एमएसडीए एक पेपर प्रोजेक्ट था - लोटस अंततः एमएसडीए के प्रयासों में सम्मिलित हो गया क्योंकि यह स्पष्ट हो गया कि एसक्यूएल वास्तविक डेटाबेस मानक बन जाएगा। पर्याप्त उद्योग इनपुट के बाद, 1989 की गर्मियों में मानक एसक्यूएल कनेक्टिविटी (एसक्यूएलसी) बन गया।

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

नया एसक्यूएलसी "चार की टोली", एमएस, तंडेम, डीईसी और साइबेस, जून 1990 में आगामी एसएजी बैठक में एसक्यूएलसी का एक अद्यतन संस्करण लाया। एसएजी ने किसी भी प्रतिस्पर्धी अभिकल्पना के लिए मानक प्रयास खोलकर प्रतिक्रिया व्यक्त किया, लेकिन कई प्रस्ताव, केवल ओरेकल कार्पोरेशन के पास एक ऐसी प्रणाली थी जिसने गंभीर प्रतिस्पर्धा प्रस्तुत की। अंत में, एसक्यूएलसी वोट जीत गया और प्रारुप मानक बन गया, लेकिन एपीआई के विशाल अंश को हटा दिए जाने के बाद ही - मानक प्रपत्र इस समयकालीन 120 पृष्ठों से 50 तक छंटनी की गई थी। इसी अवधि में कॉल लेवल इंटरफेस नाम औपचारिक रूप से अपनाया गया था। वर्ष 1995 में एसक्यूएल/सीएलआई अंतर्राष्ट्रीय एसक्यूएल मानक, आईएसओ/आईईसी 9075-3 का अंश बन गया। वर्ष 1996 में एसएजी को एक्स/ओपन समूह ने विनियोजित किया था, और समय के साथ, द ओपन ग्रुप के कॉमन एप्लीकेशन एनवायरनमेंट का अंश बन गया।

एमएस ने मूल एसक्यूएलसी मानक के साथ निरंतर काम किया, सीएलआई संस्करण से हटाए गए कई उन्नत सुविधाओं को बनाए रखा। इनमें स्क्रॉल करने योग्य कर्सर और मेटा डेटा सूचना परिप्रश्न जैसी सुविधाएं सम्मिलित थीं। एपीआई में आदेश समूहों में विभाजित थे; कोर ग्रुप सीएलआई के समान था, लेवल 1 एक्सटेंशन कमांड थे जो ड्राइवर में परिपालन करना आसान होगा, जबकि लेवल 2 कमांड में कर्सर जैसी अधिक उन्नत सुविधाएं थीं। दिसंबर 1991 में एक प्रस्तावित मानक विमोचित किया गया था, और उद्योग इनपुट एकत्र किया गया था और वर्ष 1992 तक सिस्टम में काम किया गया था, जिसके परिणामस्वरूप ओडीबीसी के नाम से परिवर्तित हो गया।

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

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

रिलीज और निरंतर विकास
ओडीबीसी 1.0 सितंबर 1992 में जारी किया गया था। उस समय, SQL डेटाबेस (बनाम ISAM) के लिए थोड़ा प्रत्यक्ष समर्थन था, और शुरुआती ड्राइवरों को खराब प्रदर्शन के लिए नोट किया गया था। जेट-आधारित स्टैक के माध्यम से कॉल्स को ले जाने वाले पथ के कारण इसमें से कुछ अपरिहार्य था; SQL डेटाबेस के लिए ODBC कॉल को पहले सिम्बा टेक्नोलॉजीज की SQL बोली से जेट के आंतरिक C-आधारित प्रारूप में परिवर्तित किया गया था, फिर डेटाबेस के लिए SQL कॉल में रूपांतरण के लिए एक ड्राइवर को पास किया गया। डिजिटल उपकरण और ओरेकल कॉर्पोरेशन दोनों ने सिम्बा टेक्नोलॉजीज को अपने डेटाबेस के लिए ड्राइवर विकसित करने के लिए अनुबंधित किया। लगभग 1993, OpenLink सॉफ़्टवेयर ने प्रोग्रेस DBMS के लिए पहले स्वतंत्र रूप से विकसित तृतीय-पक्ष ODBC ड्राइवरों में से एक को शिप किया, और जल्द ही उनके UDBC (ODBC और SAG/CLI के समतुल्य एक क्रॉस-प्लेटफ़ॉर्म API) SDK और यूनिक्स-जैसे OS (AIX, HP-UX) पर उपयोग के लिए प्रगति सॉफ्टवेयर, साइबेस, ओरेकल और अन्य DBMS के लिए संबंधित ड्राइवर, Solaris (ऑपरेटिंग सिस्टम), Linux, आदि), OpenVMS, Windows NT, OS/2, और अन्य OS। इस बीच, सीएलआई मानक प्रयास जारी रहा, और यह मार्च 1995 तक नहीं था कि निश्चित संस्करण को अंतिम रूप दिया गया था। तब तक, माइक्रोसॉफ्ट ने विजीजेनिक सॉफ्टवेयर को गैर-विंडोज प्लेटफॉर्म पर ओडीबीसी विकसित करने के लिए एक स्रोत कोड लाइसेंस प्रदान कर दिया था। Visigenic ने ODBC को क्लासिक Mac OS और यूनिक्स प्लेटफार्मों की एक विस्तृत विविधता में पोर्ट किया, जहाँ ODBC जल्दी से वास्तविक मानक बन गया। वास्तविक सीएलआई आज दुर्लभ है। दो प्रणालियाँ समान रहती हैं, और कई अनुप्रयोगों को ODBC से CLI में कुछ या बिना किसी बदलाव के पोर्ट किया जा सकता है। समय के साथ, डेटाबेस विक्रेताओं ने ड्राइवर इंटरफेस को अपने कब्जे में ले लिया और अपने उत्पादों के लिए सीधे लिंक प्रदान किए। जेट या इसी तरह के रैपर से मध्यवर्ती रूपांतरणों को छोड़ देने से अक्सर उच्च प्रदर्शन होता है। हालाँकि, तब तक Microsoft ने अपने OLE DB पर फ़ोकस बदल दिया था अवधारणा (हाल ही में बहाल ), जो एड्रेस बुक्स से लेकर टेक्स्ट फाइलों तक व्यापक किस्म के डेटा स्रोतों तक सीधी पहुंच प्रदान करता है। इसके बाद कई नई प्रणालियाँ आईं, जिन्होंने ODBC से अपना ध्यान हटा लिया, जिसमें ActiveX डेटा ऑब्जेक्ट्स (ADO) और ADO.net शामिल थे, जिन्होंने अपने जीवनकाल में ODBC के साथ कमोबेश बातचीत की।

जैसे ही माइक्रोसॉफ्ट ने अपना ध्यान ओडीबीसी पर सीधे काम करने से हटा दिया, यूनिक्स क्षेत्र तेजी से इसे गले लगा रहा था। यह बाजार के भीतर दो बदलावों से प्रेरित था, GNOME जैसे ग्राफिकल यूजर इंटरफेस (GUIs) की शुरुआत, जिसने इन स्रोतों को गैर-पाठ रूप में एक्सेस करने की आवश्यकता प्रदान की, और शुरुआत में PostgreSQL और MySQL जैसे खुला सॉफ्टवेयर डेटाबेस सिस्टम के उद्भव के तहत यूनिक्स। मानक यूनिक्स-साइड iODBC पैकेज Mac OS X 10.2 (जगुआर) का उपयोग करने के लिए बाद में Apple द्वारा ODBC को अपनाया गया (जो OpenLink सॉफ़्टवेयर 2001 से Mac OS X 10.0 और यहां तक ​​कि Mac OS 9 के लिए स्वतंत्र रूप से प्रदान कर रहा था ) क्रॉस-प्लेटफ़ॉर्म डेटा एक्सेस के लिए मानक के रूप में ODBC को और पुख्ता किया।

सन माइक्रोसिस्टम्स ने अपने स्वयं के खुले मानक, जावा डेटाबेस कनेक्टिविटी (जेडीबीसी) के आधार के रूप में ओडीबीसी प्रणाली का इस्तेमाल किया। ज्यादातर तरीकों से, जेडीबीसी को सी (प्रोग्रामिंग भाषा) के बजाय प्रोग्रामिंग भाषा जावा (प्रोग्रामिंग भाषा) के लिए ओडीबीसी का एक संस्करण माना जा सकता है। JDBC-to-ODBC ब्रिज जावा-आधारित प्रोग्रामों को ODBC ड्राइवरों के माध्यम से डेटा स्रोतों तक पहुँचने की अनुमति देता है, जिनमें देशी JDBC ड्राइवर की कमी होती है, हालाँकि ये अब अपेक्षाकृत दुर्लभ हैं। इसके विपरीत, ODBC-to-JDBC ब्रिज C-आधारित प्रोग्रामों को प्लेटफ़ॉर्म पर JDBC ड्राइवरों के माध्यम से या उपयुक्त ODBC ड्राइवरों की कमी वाले डेटाबेस से डेटा स्रोतों तक पहुँचने की अनुमति देते हैं।

ओडीबीसी आज
अधिकांश प्लेटफार्मों और अधिकांश डेटाबेस के लिए ड्राइवर उपलब्ध होने के साथ ODBC आज भी व्यापक उपयोग में है। डेटाबेस इंजनों के लिए ODBC ड्राइवरों को खोजना असामान्य नहीं है, जो SQLite की तरह एम्बेडेड होने के लिए हैं, मौजूदा उपकरणों को परीक्षण और डिबगिंग के लिए इन इंजनों के फ्रंट-एंड के रूप में कार्य करने की अनुमति देने के तरीके के रूप में। हालाँकि, एक मध्यवर्ती प्रारूप के रूप में HTML का उपयोग करते हुए दूसरे कंप्यूटर पर निर्भर रहने वाला कंप्यूटर प्रोग्राम कंप्यूटिंग के उदय ने ODBC की आवश्यकता को कम कर दिया है. कई वेब विकास प्लेटफार्मों में लक्ष्य डेटाबेस के लिए सीधे लिंक होते हैं - MySQL बहुत सामान्य है। इन परिदृश्यों में, समर्थन करने के लिए कोई प्रत्यक्ष क्लाइंट-साइड एक्सेस नहीं है और न ही कई क्लाइंट सॉफ़्टवेयर सिस्टम हैं; सब कुछ प्रोग्रामर द्वारा प्रदत्त HTML एप्लिकेशन के माध्यम से जाता है। ODBC द्वारा प्रदान किया जाने वाला वर्चुअलाइजेशन अब एक मजबूत आवश्यकता नहीं है, और ODBC का विकास अब उतना सक्रिय नहीं है जितना पहले हुआ करता था। लेकिन जबकि ODBC अब क्लाइंट-सर्वर प्रोग्रामिंग के लिए एक मजबूत आवश्यकता नहीं है, यह अब एनालिटिक्स और डेटा साइंस परिदृश्यों में एक्सेस, वर्चुअलाइजेशन और एकीकरण के लिए अधिक महत्वपूर्ण है। ये नई आवश्यकताएं नई ODBC 4.0 सुविधाओं जैसे अर्ध-संरचित और पदानुक्रमित डेटा, वेब प्रमाणीकरण और प्रदर्शन सुधार में परिलक्षित होती हैं।

संस्करण इतिहास
====ODBC विनिर्देशों ====


 * 1.0: सितंबर 1992 में रिलीज़ हुई
 * 2.0: c. 1994
 * 2.5
 * 3.0: c. 1995, इंटरसॉल्व के जॉन गुडसन और IBM के फ्रैंक पेलो और पॉल कॉटन ने ODBC 3.0 को महत्वपूर्ण इनपुट प्रदान किया
 * 3.5: c. 1997
 * 3.8: c. 2009, विंडोज 7 के साथ
 * 4.0: जून 2016 में घोषित विकास SQL सर्वर 2017 के साथ पहले कार्यान्वयन के साथ सितंबर 2017 को जारी किया गया और 2018 के अंत में अतिरिक्त डेस्कटॉप ड्राइवर Github पर अंतिम कल्पना

====डेस्कटॉप डेटाबेस ड्राइवर्स ====
 * 1.0 (1993-08): पेजअहेड सॉफ्टवेयर द्वारा निर्मित SIMBA क्वेरी प्रोसेसर का उपयोग किया गया।
 * 2.0 (1994-12): ओडीबीसी 2.0 के साथ प्रयोग किया जाता है।
 * 3.0 (1995-10): विंडोज 95 और विंडोज एनटी वर्कस्टेशन या एनटी सर्वर 3.51 को सपोर्ट करता है। इस रिलीज़ में केवल 32-बिट ड्राइवर शामिल किए गए थे।
 * 3.5 (1996-10): डबल-बाइट कैरेक्टर सेट (डीबीसीएस) का समर्थन करता है, और फ़ाइल डेटा स्रोत नाम (डीएसएन) के उपयोग को समायोजित करता है। Microsoft Access ड्राइवर को RISC संस्करण में Windows 95/98 और Windows NT 3.51 और बाद के ऑपरेटिंग सिस्टम के लिए अल्फा प्लेटफॉर्म पर उपयोग के लिए जारी किया गया था।
 * 4.0 (1998 के अंत में): पिछले संस्करणों के एएनएसआई प्रारूप के लिए अनुकूलता के साथ माइक्रोसॉफ्ट जेट इंजन यूनिकोड प्रारूप का समर्थन करें।

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

ODBC के मामले में, ड्राइवर कई कार्यों को समाहित करते हैं जिन्हें कई व्यापक श्रेणियों में विभाजित किया जा सकता है। फ़ंक्शंस का एक सेट मुख्य रूप से उस DBMS को खोजने, कनेक्ट करने और डिस्कनेक्ट करने से संबंधित है जिससे ड्राइवर बात करता है। एक दूसरे सेट का उपयोग ODBC सिस्टम से SQL कमांड को DBMS में भेजने के लिए किया जाता है, आंतरिक रूप से समर्थित किसी भी कमांड को परिवर्तित या व्याख्या करने के लिए। उदाहरण के लिए, एक DBMS जो कर्सर (डेटाबेस) का समर्थन नहीं करता है, ड्राइवर में इस कार्यक्षमता का अनुकरण कर सकता है। अंत में, आदेशों का एक और सेट, जो ज्यादातर आंतरिक रूप से उपयोग किया जाता है, का उपयोग DBMS के आंतरिक स्वरूपों से डेटा को मानकीकृत ODBC प्रारूपों के सेट में परिवर्तित करने के लिए किया जाता है, जो C भाषा स्वरूपों पर आधारित होते हैं।

एक ODBC ड्राइवर एक ODBC-अनुपालन एप्लिकेशन को डेटा स्रोत, सामान्य रूप से DBMS का उपयोग करने में सक्षम बनाता है। कुछ गैर-डीबीएमएस ड्राइवर मौजूद होते हैं, ऐसे डेटा स्रोतों के लिए जैसे कॉमा-सेपरेटेड वैल्यू फाइल्स, ड्राइवर के अंदर एक छोटा डीबीएमएस लागू करके। अधिकांश DBMSs के लिए ODBC ड्राइवर मौजूद हैं, जिनमें Oracle डेटाबेस, PostgreSQL, MySQL, Microsoft SQL सर्वर (लेकिन एसक्यूएल सर्वर कॉम्पैक्ट के लिए नहीं), अनुकूली सर्वर एंटरप्राइज़, SAP HANA शामिल हैं। और आईबीएम Db2. क्योंकि विभिन्न तकनीकों की अलग-अलग क्षमताएँ होती हैं, अधिकांश ODBC ड्राइवर ODBC मानक में परिभाषित सभी कार्यक्षमताओं को लागू नहीं करते हैं। कुछ ड्राइवर मानक द्वारा परिभाषित नहीं की गई अतिरिक्त कार्यक्षमता प्रदान करते हैं।

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

ODBC में ड्राइवर मैनेजर (DM) ये सुविधाएँ प्रदान करता है। डीएम स्थापित ड्राइवरों की गणना कर सकता है और इसे एक सूची के रूप में प्रस्तुत कर सकता है, अक्सर जीयूआई-आधारित रूप में।

लेकिन ODBC प्रणाली के संचालन के लिए अधिक महत्वपूर्ण डेटा स्रोत नाम (DSN) की DM की अवधारणा है। DSN, स्वयं DBMS की तुलना में किसी विशिष्ट डेटा स्रोत से कनेक्ट करने के लिए आवश्यक अतिरिक्त जानकारी एकत्र करते हैं। उदाहरण के लिए, एक ही MySQL ड्राइवर का उपयोग किसी भी MySQL सर्वर से कनेक्ट करने के लिए किया जा सकता है, लेकिन स्थानीय निजी सर्वर से कनेक्ट करने के लिए कनेक्शन की जानकारी इंटरनेट-होस्टेड सार्वजनिक सर्वर से कनेक्ट करने के लिए आवश्यक जानकारी से अलग है। डीएसएन इस जानकारी को एक मानकीकृत प्रारूप में संग्रहीत करता है, और डीएम इसे कनेक्शन अनुरोध के दौरान ड्राइवर को प्रदान करता है। डीएम में मानव पठनीय नामों का उपयोग करते हुए डीएसएन की सूची प्रस्तुत करने और विभिन्न संसाधनों से जुड़ने के लिए रन-टाइम पर उनका चयन करने की कार्यक्षमता भी शामिल है।

डीएम में आंशिक रूप से पूर्ण डीएसएन को बचाने की क्षमता भी शामिल है, कोड और तर्क के साथ उपयोगकर्ता को रनटाइम पर किसी भी लापता जानकारी के लिए पूछने के लिए। उदाहरण के लिए, एक आवश्यक पासवर्ड के बिना एक DSN बनाया जा सकता है। जब कोई ODBC एप्लिकेशन इस DSN का उपयोग करके DBMS से कनेक्ट करने का प्रयास करता है, तो सिस्टम रुक जाएगा और उपयोगकर्ता को जारी रखने से पहले पासवर्ड प्रदान करने के लिए कहेगा। यह एप्लिकेशन डेवलपर को इस प्रकार का कोड बनाने से मुक्त करता है, साथ ही यह जानने के लिए कि कौन से प्रश्न पूछने हैं। यह सब ड्राइवर और DSNs में शामिल है।

ब्रिजिंग कॉन्फ़िगरेशन
एक ब्रिज एक विशेष प्रकार का ड्राइवर है: एक ड्राइवर जो दूसरी ड्राइवर-आधारित तकनीक का उपयोग करता है।

ओडीबीसी-टू-जेडीबीसी (ओडीबीसी-जेडीबीसी) पुल
एक ODBC-JDBC ब्रिज में एक ODBC ड्राइवर होता है जो डेटाबेस से जुड़ने के लिए JDBC टाइप 1 ड्राइवर की सेवाओं का उपयोग करता है। यह ड्राइवर ODBC फ़ंक्शन-कॉल को JDBC मेथड-कॉल में ट्रांसलेट करता है। प्रोग्रामर आमतौर पर ऐसे ब्रिज का उपयोग करते हैं जब उनके पास कुछ डेटाबेस के लिए ODBC ड्राइवर की कमी होती है लेकिन JDBC ड्राइवर तक उनकी पहुंच होती है। उदाहरण: OpenLink ODBC-JDBC ब्रिज, SequeLink ODBC-JDBC ब्रिज।

जेडीबीसी-टू-ओडीबीसी (जेडीबीसी-ओडीबीसी) पुल
JDBC-ODBC ब्रिज में एक JDBC ड्राइवर होता है जो लक्ष्य डेटाबेस से जुड़ने के लिए ODBC ड्राइवर नियुक्त करता है। यह ड्राइवर JDBC विधि (कंप्यूटर विज्ञान) कॉल्स को ODBC फंक्शन कॉल्स में ट्रांसलेट करता है। प्रोग्रामर आमतौर पर ऐसे पुल का उपयोग करते हैं जब किसी दिए गए डेटाबेस में JDBC ड्राइवर की कमी होती है, लेकिन ODBC ड्राइवर के माध्यम से पहुँचा जा सकता है। सन माइक्रोसिस्टम्स ने JVM में एक ऐसा ब्रिज शामिल किया, लेकिन इसे स्टॉप-गैप माप के रूप में देखा, जबकि कुछ JDBC ड्राइवर मौजूद थे (बिल्ट-इन JDBC-ODBC ब्रिज को Java 8 में JVM से हटा दिया गया था) ). सूर्य ने उत्पादन वातावरण के लिए अपने पुल का इरादा कभी नहीं किया, और आम तौर पर इसके उपयोग के खिलाफ सिफारिश की। स्वतंत्र डेटा-एक्सेस विक्रेता JDBC-ODBC ब्रिज डिलीवर करते हैं जो दोनों तंत्रों के लिए मौजूदा मानकों का समर्थन करते हैं, और जो JVM बिल्ट-इन से कहीं बेहतर प्रदर्शन करते हैं। उदाहरण: OpenLink JDBC-ODBC ब्रिज, SequeLink JDBC-ODBC ब्रिज।

ओएलई डीबी-टू-ओडीबीसी पुल
एक OLE DB-ODBC ब्रिज में एक OLE DB प्रदाता होता है जो लक्ष्य डेटाबेस से जुड़ने के लिए ODBC ड्राइवर की सेवाओं का उपयोग करता है। यह प्रदाता OLE DB विधि (कंप्यूटर विज्ञान) कॉल का ODBC फ़ंक्शन कॉल में अनुवाद करता है। प्रोग्रामर आमतौर पर ऐसे पुल का उपयोग करते हैं जब किसी दिए गए डेटाबेस में OLE DB प्रदाता की कमी होती है, लेकिन ODBC ड्राइवर के माध्यम से पहुँचा जा सकता है। Microsoft एक, MSDASQL.DLL, Microsoft डेटा एक्सेस कंपोनेंट्स सिस्टम घटक बंडल के हिस्से के रूप में, अन्य डेटाबेस ड्राइवरों के साथ, COM-जागरूक भाषाओं (जैसे मूल दृश्य) में विकास को आसान बनाने के लिए शिप करता है। तृतीय पक्षों ने भी ऐसा विकसित किया है, विशेष रूप से OpenLink सॉफ़्टवेयर जिसके ODBC डेटा स्रोतों के लिए 64-बिट OLE DB प्रदाता ने अंतर को भर दिया जब Microsoft ने अपने 64-बिट OS के लिए इस ब्रिज को शुरू में हटा दिया। (Microsoft ने बाद में नरमी दिखाई, और Windows Server 2008 के साथ शुरू होने वाले 64-बिट Windows और Windows Vista SP1 को MSDASQL के 64-बिट संस्करण के साथ भेज दिया गया है।) उदाहरण: OpenLink OLEDB-ODBC ब्रिज, SequeLink OLEDB-ODBC ब्रिज।

ADO.NET-to-ODBC ब्रिज
एक ADO.NET-ODBC ब्रिज में एक ADO.NET डेटा प्रदाता | ADO.NET प्रदाता होता है जो लक्ष्य डेटाबेस से जुड़ने के लिए ODBC ड्राइवर की सेवाओं का उपयोग करता है। यह प्रदाता ADO.NET मेथड (कंप्यूटर साइंस) कॉल्स को ODBC फंक्शन कॉल्स में ट्रांसलेट करता है। प्रोग्रामर आमतौर पर ऐसे पुल का उपयोग करते हैं जब किसी दिए गए डेटाबेस में ADO.NET प्रदाता की कमी होती है, लेकिन ODBC ड्राइवर के माध्यम से पहुँचा जा सकता है। Microsoft, C Sharp (प्रोग्रामिंग भाषा)|C# में विकास को आसान बनाने के लिए, अन्य डेटाबेस ड्राइवरों के साथ मिलकर, Microsoft डेटा एक्सेस कंपोनेंट्स सिस्टम घटक बंडल के भाग के रूप में शिप करता है। तीसरे पक्ष ने भी ऐसा विकसित किया है। उदाहरण: OpenLink ADO.NET-ODBC ब्रिज, SequeLink ADO.NET-ODBC ब्रिज.

यह भी देखें

 * जीएनयू डेटा एक्सेस
 * जावा डाटाबेस कनेक्टिविटी (जेडीबीसी)
 * विंडोज ओपन सर्विसेज आर्किटेक्चर
 * ओडीबीसी प्रशासक

संदर्भ

 * Bibliography




 * Citations

बाहरी संबंध

 * Microsoft ODBC Overview
 * IBM i ODBC Administration
 * Presentation slides from www.roth.net
 * Microsoft ODBC & Data Access APIs History Article.
 * Github page: Microsoft ODBC 4.0 Specification