в чем разница между OLE DB и ODBC источниками данных?



Я читал статью справки MS Excel о pivotcache и задаюсь вопросом, что они подразумевают под источники OLE DB и ODBC




...Вы должны использовать свойства commandtext
свойство, а не свойство SQL ,
которая сейчас существует в первую очередь для
совместимость с более ранними версиями
Microsoft Excel. Если вы используете оба
свойства, свойство CommandText
значение имеет приоритет.



на источники OLE DB, CommandType
свойство описывает значение
Свойство CommandText.



на источники ODBC, CommandText
функции свойства точно так же, как
Свойство SQL и установка свойства
вызывает обновление данных...




Я очень ценю ваши короткие ответы.

677   11  

11 ответов:

по данным ADO: объекты данных ActiveX, книга Джейсона т. Роффа, опубликованная O'Reilly Media в 2001 году (отличная диаграмма здесь), он говорит именно то, что сказал MOZILLA.

(непосредственно со страницы 7 этой книги)

  • ODBC предоставляет доступ только к реляционным базам данных
  • OLE DB предоставляет следующие возможности
    • доступ к данным независимо от его формата или расположение
  • полный доступ к источникам данных ODBC и ODBC-драйвера

таким образом, казалось бы, что OLE DB взаимодействует с источниками данных на основе SQL через уровень драйвера ODBC.

alt text

Я не уверен на 100%, что это изображение правильно. два соединения, в которых я не уверен, являются ADO.NET через ADO C-api и OLE DB через ODBC к источнику данных на основе SQL (потому что в этой схемы в автор не помещает доступ OLE DB через ODBC, что я считаю ошибкой).

ODBC: - только для реляционных баз данных (Sql Server, Oracle и т.д.)

OLE DB:-для реляционных и нереляционных баз данных. (СУБД Oracle, SQL-сервер, в Excel, RAW-файлы, и т. д.)

вот мое понимание (неавторитарное):

ODBC-это технология-агностический открытый стандарт, поддерживаемый большинством поставщиков программного обеспечения. OLEDB - это технологических API Microsoft из COM-эры (COM был компонентом и технологией взаимодействия до .NET)

в какой-то момент различные поставщики datasouce (например, Oracle и т. д.), желая быть совместимыми с потребителями данных Microsoft, разработали oledb-провайдеров для своих продуктов, но по большей части OLEDB остается стандартом только для Microsoft. Теперь, большинство Microsoft источники данных обеспечивают доступ как к ODBC, так и к OLEDB, в основном для совместимости с устаревшими потребителями данных ODBC. Кроме того, существует поставщик OLEDB (оболочка) для ODBC, который позволяет использовать OLEDB для доступа к источникам данных ODBC, если это необходимо.

с точки зрения особенностей OLEDB существенно богаче, чем ODBC, но страдает от синдрома "одно кольцо к правилу" (чрезмерно общий, чрезмерно сложный, не самоуверенный).

в не-Microsoft мире ODBC-провайдеры данных и клиенты широко используются и никуда не денутся.

внутри Microsoft bubble OLEDB постепенно сворачивается в пользу собственных API .NET, построенных поверх любого собственного транспортного уровня для этого источника данных (например, TDS для MS SQL Server).

на самом базовом уровне это просто разные интерфейсы для разных источников данных (т. е. базы данных). OLE DB является более новым и, возможно, лучше.

вы можете прочитать больше на обоих в Википедии:

  1. OLE DB
  2. ODBC

т. е. вы можете подключиться к той же базе данных с помощью драйвера ODBC или драйвера OLE DB. Разница в поведении базы данных в этих случаях - это то, о чем говорится в вашей книге.

оба являются поставщиками данных (API, который ваш код будет использовать для общения с источником данных). Oledb, который был введен в 1998 году, должен был заменить ODBC (введен в 1992 году)

ODBC и OLE DB-это две конкурирующие технологии доступа к данным. В частности, что касается SQL Server, Microsoft продвигала их обоих в качестве своего предпочтительного будущего направления - хотя и в разное время.

ODBC

ODBC-это отраслевой стандартный интерфейс для доступа к табличным данным. Он был разработан в основном для баз данных и представляет данные в коллекциях записей, каждая из которых сгруппирована в коллекцию полей. Каждое поле имеет свой тип данных подходит к типу данных, которые он содержит. Каждый поставщик базы данных (Microsoft, Oracle, Postgres, ...) предоставляет драйвер ODBC для своей базы данных.

существуют также драйверы ODBC для объектов, которые, хотя и не являются таблицами базы данных, достаточно похожи, что доступ к данным таким же образом полезен. Примеры-электронные таблицы, CSV-файлы и столбчатые отчеты.

OLE DB

OLE DB-это технология Microsoft для доступа к данным. В отличие от ODBC он включает в себя оба табличные и не табличные данные, такие как сообщения электронной почты, веб-страницы, документы Word и каталоги файлов. Однако он ориентирован на процедуры, а не на объекты, и рассматривается как довольно сложный интерфейс для разработки доступа к источникам данных. Чтобы преодолеть это, ADO был разработан как объектно-ориентированный слой поверх OLE DB и обеспечить более простой и высокоуровневый-хотя все еще очень мощный – способ работы с ним. Большое преимущество ADO в том, что вы можете использовать его для манипулировать свойствами, специфичными для данного типа источника данных, так же легко, как вы можете использовать его для доступа к тем свойствам, которые применяются ко всем типам источников данных. Вы не ограничены каким-то неудовлетворительным наименьшим общим знаменателем.

хотя все базы данных имеют драйверы ODBC, они не все имеют драйверы OLE DB. Однако существует интерфейс, доступный между OLE и ODBC, который можно использовать, если вы хотите получить к ним доступ в OLE DB-like моде. Этот интерфейс называется MSDASQL (Поставщик Microsoft OLE DB для ODBC).

технологии доступа к данным SQL Server

Так как SQL Server (1) сделан Microsoft, и (2)the платформа базы данных Майкрософт, и ODBC и OLE DB естественная пригонка для ее.

ODBC

поскольку все другие платформы баз данных имели интерфейсы ODBC, Microsoft, очевидно, должна была предоставить один для SQL Server. В дополнение к этому, DAO, оригинальная технология по умолчанию в Microsoft Access, использует ODBC как стандартный способ общения со всеми внешними источниками данных. Это сделало интерфейс ODBC непременным условием. Драйвер ODBC версии 6 для SQL Server, выпущенный с SQL Server 2000, все еще существует. Были выпущены обновленные версии для обработки новых типов данных, технологий подключения, шифрования, HA / DR и т. д. которые появились с последующими релизами. По состоянию на 09/07/2018 самым последним релизом является v13.1 "ODBC Driver for SQL Server", выпущенный на 23/03/2018.

OLE DB

это собственная технология Microsoft, которую они активно продвигали примерно с 2002 по 2005 год, а также сопровождающий ее уровень ADO. Они явно надеялись, что это станет предпочтительной технологией доступа к данным. (Они даже сделали ADO методом по умолчанию для доступа к данным в Access 2002/2003.) Однако в конечном итоге стало очевидно, что этого не произойдет по ряду причин, таких как:

  1. мир не собирался превращаться в Технологии Microsoft и подальше от ODBC;
  2. DAO / ODBC был быстрее, чем ADO / OLE DB, а также был полностью интегрирован в MS Access, поэтому не собирался умирать естественной смертью;
  3. новые технологии, которые разрабатывались Microsoft, в частности ADO.NET, можно также поговорить непосредственно с ODBC. ADO.NET может поговорить непосредственно с Оле DB также (таким образом, оставляя ADO в заводи), но это было не так (в отличие от ADO) исключительно зависит от него.

по этим причинам и другие, на самом деле, Microsoft устаревшая OLE DB как технология доступа к данным для выпусков SQL Server после версии v11 (SQL Server 2012). В течение нескольких лет до этого момента они создавали и обновляли собственный клиент SQL Server, который поддерживал технологии ODBC и OLE DB. Однако в конце 2012 года они объявили, что будут согласовываться с ODBC для собственного реляционного доступа к данным в SQL Server, и призвали всех остальных сделать то же самое. Они далее заявили, что выпуски SQL Server после v11 / SQL Server 2012 будут активно не поддержка OLE DB!

Это заявление вызвало бурю протеста. Люди были в недоумении, почему MS внезапно осудила технологию, на которую они потратили годы, чтобы заставить их взять на себя обязательства. Кроме того, SSAS/SSRS и SSIS, которые были написаны MS-приложениями, тесно связанными с SQL Server, полностью или частично зависели от OLE DB. Еще одна жалоба заключалась в том, что У OLE DB были определенные желательные функции, которые казалось невозможным перенести обратно в ODBC – в конце концов, у OLE DB было много хороших моментов.

в октябре 2017 года Microsoft смягчилась и официально не устаревший OLE DB. Они объявили о скором появлении нового драйвера (MSOLEDBSQL), который будет иметь существующий набор функций собственного клиента 11, а также будет вводить отказоустойчивость нескольких подсетей и поддержку TLS 1.2. Водитель был освобожден в марте 2018 года.

Я не уверен во всех деталях, но я понимаю, что OLE DB и ODBC-это два API, которые доступны для подключения к различным типам баз данных без необходимости иметь дело со всеми конкретными деталями реализации каждого из них. Согласно статья Википедии о OLE DB, OLE DB является преемником Microsoft для ODBC и предоставляет некоторые функции, которые вы, возможно, не сможете сделать с ODBC, такие как доступ к электронным таблицам в качестве источников базы данных.

на веб-сайте Microsoft он показывает, что собственный поставщик OLEDB применяется к SQL server напрямую, а другой поставщик OLEDB называется поставщиком OLEDB для ODBC для доступа к другой базе данных, такой как Sysbase, DB2 и т. д. Существуют различные виды компонентов под Oledb провайдером. Смотрите распределенные запросы на MSDN дополнительные.

ODBC работает только для реляционных баз данных, он не может работать с нереляционными базами данных, таких как файлы Ms Excel. Где Олебд может сделать все.

чтобы узнать, почему M$ изобретает OLEDB, вы не можете сравнить OLEDB с ODBC. Вместо этого вы должны сравнить OLEDB с DAO,RDO или ADO. Последний в значительной степени опирается на SQL. Однако OLEDB полагается на COM. Но ODBC уже существует много лет, поэтому есть мосты OLEDB-ODBC, чтобы исправить это. Я думаю, что есть большая картина, когда M$ изобретает OLEDB.

Comments

    Ничего не найдено.