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

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

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

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

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

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

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

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

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

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

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

संस्करण इतिहास
====ओडीबीसी विनिर्देश ====


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

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

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

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

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

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

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

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

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

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

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

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

ओएलई डीबी-टू-ओडीबीसी ब्रिज
एक ओएलइ डीबी-ओडीबीसी ब्रिज में एक ओएलइ डीबी प्रदाता होता है जो गंतव्य डेटाबेस से जुड़ने के लिए ओडीबीसी ड्राइवर की सेवाओं का उपयोग करता है। यह प्रदाता ओएलइ डीबी मेथड (कंप्यूटर विज्ञान) कॉल का ओडीबीसी फ़ंक्शन कॉल में परिवर्तित करता है। सामान्यतः प्रोग्रामर ऐसे ब्रिज का उपयोग करते हैं जहाँ किसी दिए गए डेटाबेस में ओएलइ डीबी प्रदाता की कमी होती है, किन्तु ओडीबीसी ड्राइवर के माध्यम से पहुँचा जा सकता है। 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