OLE DB और ODBC डेटा स्रोतों में क्या अंतर है?


171

मैं धुरी के बारे में एक एमएस एक्सेल मदद लेख पढ़ रहा था और आश्चर्य करता हूं कि ओएलई डीबी और ओडीबीसी स्रोतों से उनका क्या मतलब है

... आपको एसक्यूएल संपत्ति के बजाय कमांडटेक्स्ट संपत्ति का उपयोग करना चाहिए, जो अब मुख्य रूप से माइक्रोसॉफ्ट एक्सेल के पुराने संस्करणों के साथ संगतता के लिए मौजूद है। यदि आप दोनों गुणों का उपयोग करते हैं, तो CommandText गुण का मान पूर्वता लेता है।

के लिए OLE DB स्रोतों , CommandType संपत्ति CommandText संपत्ति के मूल्य का वर्णन करता है।

के लिए ODBC सूत्रों , CommandText संपत्ति कार्यों वास्तव में एसक्यूएल संपत्ति की तरह, और संपत्ति की स्थापना डेटा का कारण बनता है ताज़ा करने ...

मैं वास्तव में आपके छोटे उत्तरों की सराहना करता हूं।


2
Microsoft SQL Server 2012 के साथ डेटा वेयरहाउस को लागू करने वाली इस पुस्तक के अनुसार, बस एक साइड नोट : "Microsoft ने घोषणा की है कि निकट भविष्य में कुछ बिंदु पर, OLBC DB कनेक्शन के लिए समर्थन ODBC कनेक्शन के पक्ष में हटा दिया जाएगा।"
बी। बर्गडॉर्न

2
6 अक्टूबर 2017 से, यह अनिर्दिष्ट है। ब्लॉगs.msdn.microsoft.com/sqlnativeclient/2017/10/06/…/
बोगी जैमर

जवाबों:


147

ADO: ActiveX डेटा ऑब्जेक्ट्स के अनुसार , 2001 में ओ'रेली मीडिया द्वारा प्रकाशित जेसन टी। रोफ की एक पुस्तक (यहां उत्कृष्ट आरेख), वह ठीक वही कहता है जो MOZILLA ने कहा था।

(उस किताब के पेज 7 से सीधे)

  • ODBC केवल रिलेशनल डेटाबेस तक पहुँच प्रदान करता है
  • OLE DB निम्नलिखित सुविधाएँ प्रदान करता है
    • इसके प्रारूप या स्थान की परवाह किए बिना डेटा तक पहुंच
    • ODBC डेटा स्रोतों और ODBC ड्राइवरों की पूर्ण पहुँच

इसलिए ऐसा लगता है कि OLE DB SQL- आधारित डेटा स्रोत THRU के साथ ODBC ड्राइवर परत के साथ सहभागिता करता है।

वैकल्पिक शब्द

मुझे यकीन नहीं है कि यह छवि सही है। मैं जिन दो कनेक्शनों के बारे में निश्चित नहीं हूं, वे ADO.NET के माध्यम से ADO C-api, और OLE DB के माध्यम से SQL- आधारित डेटा स्रोत के लिए ODBC हैं (क्योंकि इस आरेख में लेखक OLE DB की पहुँच के माध्यम से ODBC नहीं डालता है, जो मेरा मानना ​​है कि एक गलती है)।


7
यदि OLE DB SQL डेटा स्रोतों से कनेक्ट करने के लिए ODBC का उपयोग करता है, तो किसी भी SQL डेटा स्रोत, जो OLE DB द्वारा समर्थित है, को ODBC द्वारा समर्थित होना होगा, हालाँकि यह मामला नहीं है - मूल चित्र सही होना चाहिए (और यह एक नहीं है) )।
डैनी व्रोड

8
दरअसल कभी-कभी OLE DB ODBC ड्राइवर को लपेटता है, कभी-कभी ऐसा नहीं होता है। यहाँ देखें
bobobobo

3
यह प्रविष्टि jamesmccaffrey.wordpress.com/2006/05/02/odbc-vs-ole-db कहती है कि SQL DS के लिए, OLEDB ODBC के माध्यम से जाता है।
हर्नान

1
@ दानवीरवरोध आह, कोई बात नहीं। मैं "किसी भी SQL डेटा स्रोत जो OLE DB द्वारा समर्थित है ..." में महत्वपूर्ण क्वालिफायर से चूक गया । मैं इस तथ्य के बारे में बात कर रहा था कि चूंकि ओएलई डीबी गैर-आरडीबीएमएस डेटा स्रोतों का समर्थन करता है, इसलिए ओएलई डीबी द्वारा समर्थित डेटा स्रोतों के अनफ़िल्टर्ड सेट के लिए ओडीबीसी द्वारा समर्थित लोगों का सुपरसेट होना संभव है।
असद सईदुद्दीन 3

4
ADO.NET ADO को लपेटता नहीं है। ADO.NET क्लासेस आमतौर पर अपने डेटाबेस या डेटाबेस नेटवर्क लाइब्रेरी से सीधे बात करते हैं, किसी अन्य प्रदाता / ड्राइवर लेयर के माध्यम से नहीं। उदाहरण के लिए, System.Data.SqlClientप्रबंधित कोड में टीडीएस प्रोटोकॉल को संभालता है, केवल नेटवर्क पर टीसीपी / नामांकित पाइप्स / आदि ट्रांसमिशन को संभालने के लिए मूल कोड का उपयोग करता है। उन डेटाबेस के लिए जिनके पास स्वयं का प्रबंधित प्रदाता नहीं है, आप System.Data.OleDbOLE DB System.Data.Odbcको लपेटने के लिए या ODBC को लपेटने के लिए उपयोग कर सकते हैं , लेकिन इसकी अनुशंसा नहीं की जाती है।
माइक डिम्मिक

55

ODBC: - केवल रिलेशनल डेटाबेस के लिए (Sql Server, Oracle आदि)

OLE DB: - रिलेशनल और नॉन-रिलेशनल दोनों डेटाबेस के लिए। (Oracle, Sql- सर्वर, एक्सेल, कच्ची फ़ाइलें, आदि)


4
गलत, दोनों ड्राइवरों के आधार पर गैर-संबंधपरक स्टोर से बात कर सकते हैं।
एंडी डेंट

1
नहीं, ODBC के साथ आप सम्‍मिलित CSV- फ़ाइल्स को छोड़ सकते हैं, न केवल संबंधपरक डेटाबेस को।
वर्नफ्राइड डॉमशिट

गलत! पाठ फ़ाइल और XML ODBC ड्राइवर भी हैं।
स्कॉट चू

1
मुझे लगता है कि यह सही नहीं है ... Open Database Connectivity (ODBC) is Microsoft's strategic interface for accessing data in a heterogeneous environment of relational and non- relational database management systems. support.microsoft.com/en-us/kb/110093
uzay95

11
lol, यो लोग 2009 या 2016 में ODBC के बारे में बात कर रहे हैं ...? बात ठीक थी।
यौषा अलायबौ

42

यहाँ मेरी समझ (गैर-आधिकारिक) है:

ODBC अधिकांश सॉफ्टवेयर विक्रेताओं द्वारा समर्थित प्रौद्योगिकी-अज्ञेयवादी खुला मानक है। OLEDB COM-युग से एक प्रौद्योगिकी-विशिष्ट Microsoft का एपीआई है (COM .NET से पहले एक घटक और अंतर-तकनीकी तकनीक थी)

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

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

गैर-Microsoft दुनिया में ODBC- आधारित डेटा प्रदाता और क्लाइंट व्यापक रूप से उपयोग किए जाते हैं और कहीं नहीं जा रहे हैं।

Microsoft बबल OLEDB के अंदर देशी .NET API के पक्ष में चरणबद्ध निर्माण किया जा रहा है जो उस डेटा स्रोत के लिए मूल ट्रांसपोर्ट लेयर के ऊपर है (जैसे MS SQL सर्वर के लिए TDS)।


20

ODBC और OLE DB दो प्रतिस्पर्धी डेटा एक्सेस टेक्नोलॉजीज हैं। SQL सर्वर के बारे में विशेष रूप से, Microsoft ने दोनों को अपनी पसंदीदा भविष्य दिशा के रूप में प्रचारित किया है - हालांकि अलग-अलग समय पर।

ODBC

ODBC टेबल-जैसे डेटा तक पहुँचने के लिए एक उद्योग-व्यापी मानक इंटरफ़ेस है। यह मुख्य रूप से डेटाबेस के लिए विकसित किया गया था और रिकॉर्ड के संग्रह में डेटा प्रस्तुत करता है, जिनमें से प्रत्येक को खेतों के संग्रह में वर्गीकृत किया गया है। प्रत्येक क्षेत्र का अपना डेटा प्रकार होता है, जिसमें उस प्रकार का डेटा होता है, जिसमें वह होता है। प्रत्येक डेटाबेस विक्रेता (Microsoft, Oracle, Postgres,…) अपने डेटाबेस के लिए ODBC ड्राइवर की आपूर्ति करता है।

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

OLE DB

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

जबकि सभी डेटाबेस में ODBC ड्राइवर होते हैं, लेकिन उन सभी में OLE DB ड्राइवर नहीं होते हैं। हालाँकि, OLE और ODBC के बीच एक इंटरफ़ेस उपलब्ध है, जिसका उपयोग यदि आप OLE DB- जैसे फैशन में करना चाहते हैं तो कर सकते हैं। इस इंटरफ़ेस को MSDASQL (Microsoft OLE DB प्रदाता ODBC के लिए) कहा जाता है।

SQL सर्वर डेटा एक्सेस टेक्नोलॉजीज

के बाद से एसक्यूएल सर्वर (1) माइक्रोसॉफ्ट द्वारा बनाई गई है, और (2) माइक्रोसॉफ्ट डेटाबेस मंच, दोनों ODBC और OLE DB इसके लिए एक प्राकृतिक फिट कर रहे हैं।

ODBC

चूंकि अन्य सभी डेटाबेस प्लेटफार्मों में ओडीबीसी इंटरफेस था, इसलिए Microsoft को स्पष्ट रूप से SQL सर्वर के लिए एक प्रदान करना था। इसके अलावा, माइक्रोसॉफ्ट एक्सेस में मूल डिफ़ॉल्ट तकनीक DAO, सभी बाहरी डेटा स्रोतों से बात करने के मानक तरीके के रूप में ODBC का उपयोग करता है। इसने ODBC इंटरफ़ेस को साइन योग्यता रहित बना दिया। SQL सर्वर 2000 के साथ जारी SQL Server के लिए संस्करण 6 ODBC ड्राइवर अभी भी आसपास है। अपडेट किए गए संस्करण नए डेटा प्रकारों, कनेक्शन प्रौद्योगिकियों, एन्क्रिप्शन, HA / DR आदि को संभालने के लिए जारी किए गए हैं जो बाद के रिलीज के साथ दिखाई दिए हैं। 09/07/2018 के अनुसार, सबसे हालिया रिलीज़ v13.1 "SQL सर्वर के लिए ODBC ड्राइवर" है, जो 23/03/2018 को जारी किया गया है।

OLE DB

यह माइक्रोसॉफ्ट की अपनी तकनीक है, जिसे वे लगभग 2002 से 2005 तक मजबूती के साथ बढ़ावा दे रहे थे, इसके साथ ही एडीओ परत भी। वे स्पष्ट रूप से उम्मीद कर रहे थे कि यह पसंद की डेटा एक्सेस तकनीक बन जाएगी। (उन्होंने यहां तक ​​कि एक्सेस 2002/2003 में डेटा तक पहुंचने के लिए एडीओ को डिफ़ॉल्ट विधि बनाया।) हालांकि, यह अंततः स्पष्ट हो गया कि यह कई कारणों से नहीं होने वाला था, जैसे:

  1. दुनिया Microsoft तकनीकों और ODBC से दूर जाने वाली नहीं थी;
  2. DAO / ODBC ADO / OLE DB की तुलना में तेज़ था और MS Access में पूरी तरह से एकीकृत था, इसलिए यह एक प्राकृतिक मौत नहीं थी;
  3. Microsoft द्वारा विकसित की जा रही नई प्रौद्योगिकियाँ, विशेष रूप से ADO.NET, ODBC से सीधे बात कर सकती हैं। ADO.NET OLE DB से सीधे बात कर सकता है (इस प्रकार ADO को बैकवाटर में छोड़कर), लेकिन यह (ADO के विपरीत) केवल इस पर निर्भर नहीं था।

इन कारणों और अन्य के लिए , Microsoft ने वास्तव में OLE DB को v11 (SQL Server 2012) के बाद SQL सर्वर रिलीज़ के लिए डेटा एक्सेस तकनीक के रूप में चित्रित किया। इस बिंदु से पहले कुछ वर्षों के लिए, वे SQL सर्वर मूल क्लाइंट का उत्पादन और अद्यतन कर रहे थे, जो ODBC और OLE DB दोनों तकनीकों का समर्थन करता था। हालांकि 2012 के अंत में, उन्होंने घोषणा की कि वे SQL सर्वर में देशी रिलेशनल डेटा एक्सेस के लिए ODBC के साथ संरेखित होंगे, और बाकी सभी को भी ऐसा करने के लिए प्रोत्साहित किया। उन्होंने आगे कहा कि v11 / SQL सर्वर 2012 के बाद SQL सर्वर रिलीज़ सक्रिय रूप से नहीं होगा OLE DB का समर्थन !

इस घोषणा ने विरोध का तूफान भड़का दिया। लोगों को यह समझने में नुकसान हो रहा था कि एमएस अचानक एक ऐसी तकनीक क्यों निकाल रहा था, जिसे बनाने में उन्हें सालों लग गए थे। इसके अलावा, एसएसएएस / एसएसआरएस और एसएसआईएस, जो एमएस-लिखित अनुप्रयोग थे, जो कि एसक्यूएल सर्वर से जुड़े थे, पूरी तरह से या आंशिक रूप से ओएलई डीबी पर निर्भर थे। फिर भी एक और शिकायत यह थी कि OLE DB में कुछ वांछनीय विशेषताएं थीं, जो ODBC पर वापस पोर्ट करना असंभव लग रहा था - आखिरकार, OLE DB में कई अच्छे बिंदु थे।

अक्टूबर 2017 में, माइक्रोसॉफ्ट ने अधिकृत और आधिकारिक तौर पर बिना पदावनत किए गए OLE DB का चयन किया । उन्होंने एक नए ड्राइवर (MSOLEDBSQL) के आसन्न आगमन की घोषणा की जिसमें मूल क्लाइंट 11 का मौजूदा फीचर सेट होगा और यह मल्टी-सबनेट फेलओवर और टीएलएस 1.2 समर्थन भी पेश करेगा। ड्राइवर को मार्च 2018 में जारी किया गया था।


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

6

बहुत ही बुनियादी स्तर पर वे अलग-अलग डेटा स्रोतों (यानी डेटाबेस) के लिए बस अलग-अलग एपीआई हैं। OLE DB नया और यकीनन बेहतर है।

आप विकिपीडिया में दोनों पर अधिक पढ़ सकते हैं:

  1. OLE DB
  2. ODBC

यानी आप ODBC ड्राइवर या OLE DB ड्राइवर का उपयोग करके उसी डेटाबेस से जुड़ सकते हैं। उन मामलों में डेटाबेस व्यवहार में अंतर जो आपकी पुस्तक को संदर्भित करता है।


4
आईटी से संबंधित कई विषयों के साथ, चीजें लगभग पूरी तरह से आ गई हैं। SQL 2012 OLE DB नेटिव प्रदाता का समर्थन करने के लिए अंतिम संस्करण था और अनुप्रयोगों को अब ODBC पर वापस जाना चाहिए। SQL सर्वर Technet.microsoft.com/en-us/library/hh967418.aspx
क्रिस वुड

4
"OLE DB नया और यकीनन बेहतर है" यह 2008 में नहीं बल्कि 2014 में सच हुआ होगा।
माइकल डेविड वॉटसन

@MichaelDavidWatson तो आप क्या कहेंगे। बेहतर ओडीबीसी ओडर OLEDB का उपयोग करें? मुझे यथासंभव विभिन्न SQL डेटाबेस का समर्थन करने की आवश्यकता है। और जैसा कि यह इंगित करता है, OLE DB एक ODBC डेटा स्रोत तक भी पहुँच सकता है। तो आप क्यों कहेंगे "OLE DB नया है और यकीनन बेहतर है" अभी भी 2015 में गलत है? :)
लकीलीक

@LuckyLikey MS ने OLEDB और SQL सर्वर को अब सपोर्ट नहीं किया है (SS 2012 इसे सपोर्ट करने वाला आखिरी था)। msdn.microsoft.com/en-us/library/hh967418.aspx
Robino

5

दोनों डेटा प्रदाता हैं (एपीआई जो आपका कोड डेटा स्रोत से बात करने के लिए उपयोग करेगा)। 1998 में ओबल्ड को ओडीबीसी के लिए एक प्रतिस्थापन के रूप में पेश किया गया था (1992 में शुरू किया गया था)


5

3

मुझे सभी विवरणों पर यकीन नहीं है, लेकिन मेरी समझ यह है कि OLE DB और ODBC दो API हैं जो विभिन्न प्रकार के डेटाबेस से जुड़ने के लिए उपलब्ध हैं, जिनमें से प्रत्येक के सभी कार्यान्वयन विशिष्ट विवरणों से निपटने के लिए नहीं हैं। OLE DB पर विकिपीडिया लेख के अनुसार , OLE DB ODBC के लिए Microsoft का उत्तराधिकारी है, और कुछ सुविधाएँ प्रदान करता है जो आप ODBC के साथ नहीं कर सकते हैं जैसे डेटाबेस स्रोतों के रूप में स्प्रैडशीट तक पहुँचना।


2

Microsoft वेबसाइट पर, यह दर्शाता है कि मूल OLEDB प्रदाता सीधे SQL सर्वर पर लागू होता है और अन्य OLEDB प्रदाता को ODBC के लिए OLEDB प्रदाता कहा जाता है, जैसे अन्य डेटाबेस तक पहुँचने के लिए, जैसे Sysbase, DB2 आदि। OLEDB प्रदाता के अंतर्गत विभिन्न प्रकार के घटक होते हैं। अधिक के लिए MSDN पर वितरित क्वेरीज़ देखें ।


0

ODBC केवल रिलेशनल डेटाबेस के लिए काम करता है, यह गैर-रिलेशनल डेटाबेस जैसे Ms Excel फ़ाइलों के साथ काम नहीं कर सकता है। जहां ओलेबड सब कुछ कर सकता है।


-3

यह जानने के लिए कि M $ OLEDB क्यों निवेश करता है, आप OLEDB की तुलना ODBC से नहीं कर सकते। इसके बजाय, आपको डीएलओ, आरडीओ या एडीओ के साथ ओएलईडी की तुलना करनी चाहिए। बाद वाला काफी हद तक SQL पर निर्भर करता है। हालाँकि, OLEDB COM पर निर्भर करता है। लेकिन ODBC पहले से ही कई वर्षों का है, इसलिए इसको मापने के लिए OLEDB-ODBC पुलों की आवश्यकता है। मुझे लगता है कि एक बड़ी तस्वीर है जब M $ OLEDB का आविष्कार करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.