OLE DB

OLE DB (англ. Object Linking and Embedding, Database, иногда записывается OLEDB, OLE-DB) — набор COM-интерфейсов, которые позволяют приложениям унифицировано работать с данными разных источников и хранилищ информации. Разработана Microsoft в качестве дальнейшего развития технологии доступа к данным и должен был прийти на замену и в качестве преемника ODBC, расширяя набор функций для поддержки более широкого круга нереляционных источников данных, таких как объектно-ориентированные базы данных или электронные таблицы, и для которых не обязательно использовать SQL.

OLE DB отделяет хранилище данных от приложения, которое должно иметь доступ к нему через набор абстракций, состоящий из источника данных (DataSource), сессии (Session), команды (Command) и набора строк (Rowset). Это было сделано для предоставления унифицированного доступа к различным видам и источникам данных и изоляцию специфики взаимодействия с конкретным хранилищем. OLE DB концептуально разделена на потребителей (клиентов) и поставщиков (провайдеров). Потребителем является приложение, которому необходим доступ к данным, а поставщик реализует интерфейс доступа к данным и, следовательно, обеспечивает информацией потребителя.

Спецификация OLE DB является частью Microsoft Data Access Components (MDAC), представляющей собой группу технологий Microsoft, формирующих основу для единого и всеобщего способа разработки приложений для доступа к данным практически любого хранилища. В состав MDAC входят, к примеру, сервисы OLE DB (пул подключений и прочее) и компоненты ADODB.

Провайдеры OLE DB могут предоставлять доступ как к простым хранилищам данных, в виде текстовых файлов и электронных таблиц, так и к «настоящим» базам данных под управлением Oracle Database, Microsoft SQL Server, Sybase ASE, Firebird и Interbase. Также возможен доступ и к иерархическим хранилищам данных таких, как системы электронной почты.

Поскольку различные хранилища данных могут иметь разные возможности, поставщики OLE DB, как правило, не поддерживают все интерфейсы, описанные в спецификации OLE DB. Доступные возможности поставщика данных определяются через запрос указателей на COM интерфейсы его объектов или через чтение информационных свойств источника данных (DataSource). Отметим, что поставщик данных может реализовывать и предоставлять свои собственные COM-интерфейсы и структуры данных, не описанные в спецификации OLE DB.

Существует устойчивое мнение, что OLE DB ориентирован в большей степени на MS SQL, однако это не так. Типы данных «массивы» и несколько параллельных транзакций в рамках одного подключения, поддерживаемых спецификацией OLE DB, в MS SQL не поддерживаются, но присутствуют в других серверах баз данных (Firebird, Interbase). Если и есть некая «ориентированность», то она распространяется только на операционную систему. Поскольку OLE DB основано на COM-технологии, а полноценная поддержка COM есть только в Windows, то OLE-DB-провайдеры существуют только для операционных систем семейства Windows.

Долгое время Microsoft рекомендовала использовать OLE DB взамен ODBC, но с анонсом Microsoft SQL Server 2014 было объявлено[1], что прекращается поддержка «родного» OLE DB для этого продукта и остаётся только поддержка ODBC. Скорее всего это относилось к «чистому» OLE-DB-провайдеру для MSSQL (SQLOLEDB), а не к «Native SQL Client» (SQLNCLI), в котором были объединены провайдеры OLE DB и драйверы ODBC. Однако со стороны это выглядело как полный отказ от OLE DB как от технологии. В октябре 2017 года было объявлено об ошибочности этого решения и анонсирован выпуск обновленного OLE DB провайдера для MSSQL[2].

Примечания править

  1. Converting SQL Server Applications from OLE DB to ODBC | Microsoft Docs. Дата обращения: 13 февраля 2014. Архивировано 7 сентября 2014 года.
  2. Announcing the new release of OLE DB Driver for SQL Server – Microsoft SQLNCli team blog. Дата обращения: 21 марта 2018. Архивировано 6 марта 2018 года.

Ссылки править