Odbc драйвер что это

Обновлено: 05.07.2024

В предыдущих двух статьях данного цикла, опубликованных в КомпьютерПресс 4, 5’2000, мы обсудили наиболее характерные особенности современных настольных и серверных СУБД и предоставляемые ими возможности. Мы также рассмотрели наиболее популярные настольные СУБД — dBase, Paradox, FoxPro, Access, MSDE, а также наиболее популярные серверные СУБД — Oracle, Informix, DB2, Sybase, Microsoft SQL Server.

Отметим, что при выборе СУБД необходимо иметь представление, с помощью каких средств разработки будет создаваться информационная система на основе данной СУБД, а также о том, каким образом разработанные приложения будут манипулировать данными. От того, правильно ли выбран механизм доступа к данным, зависит очень многое, в частности производительность приложений, возможность применения тех или иных функциональных особенностей данной СУБД, простота разработки пользовательского интерфейса и ряд других факторов.

Какими бывают механизмы доступа к данным

Существует несколько способов доступа к данным из средств разработки и клиентских приложений.

Подавляющее большинство систем управления базами данных содержит в своем составе библиотеки, предоставляющие специальный прикладной программный интерфейс (Application Programming Interface, API) для доступа к данным этой СУБД. Обычно такой интерфейс представляет собой набор функций, вызываемых из клиентского приложения. В случае настольных СУБД эти функции обеспечивают чтение/запись файлов базы данных, а в случае серверных СУБД инициируют передачу запросов серверу баз данных и получение от сервера результатов выполнения запросов или кодов ошибок, интерпретируемых клиентским приложением. Библиотеки, содержащие API для доступа к данным серверной СУБД, обычно входят в состав ее клиентского программного обеспечения, устанавливаемого на компьютерах, где функционируют клиентские приложения.

В последнее время Windows-версии клиентского программного обеспечения наиболее популярных серверных СУБД, в частности Microsoft SQL Server, Oracle, Informix, содержат также COM-серверы, предоставляющие объекты для доступа к данным и метаданным.

Использование клиентского API (или клиентских COM-объектов) является наиболее очевидным (и нередко самым эффективным с точки зрения производительности) способом манипуляции данными в приложении. Однако в этом случае созданное приложение сможет использовать данные только СУБД этого производителя, и замена ее на другую (например, с целью расширения хранилища данных или перехода в архитектуру «клиент-сервер») повлечет за собой переписывание значительной части кода клиентского приложения — клиентские API и объектные модели не подчиняются никаким стандартам и различны для разных СУБД.

Другой способ манипуляции данными в приложении базируется на применении универсальных механизмов доступа к данным. Универсальный механизм доступа к данным обычно реализован в виде библиотек и дополнительных модулей, называемых драйверами или провайдерами. Библиотеки содержат некий стандартный набор функций или классов, нередко подчиняющийся той или иной спецификации. Дополнительные модули, специфичные для той или иной СУБД, реализуют непосредственное обращение к функциям клиентского API конкретных СУБД.

Отметим, что достоинством универсальных механизмов является возможность применения одного и того же абстрактного API, а во многих случаях — COM-серверов, компонентов, классов для доступа к разным типам СУБД. Поэтому приложения, использующие универсальные механизмы доступа к данным, легко модифицировать, если необходима смена СУБД. При этом нередко модификация затрагивает не код приложения как таковой, а настройки доступа к данным, содержащиеся в реестре или внешних файлах. Однако за подобную универсальность порой приходится платить невозможностью доступа к уникальной функциональности, специфичной для конкретной СУБД, снижением производительности приложений, а также усложнением процедуры поставки приложения — ведь в его состав нужно включать библиотеки, ответственные за реализацию универсальных механизмов, драйверы для тех или иных СУБД, а также обеспечивать настройки, необходимые для их правильного функционирования.

Наиболее популярными среди универсальных механизмов доступа к данным можно назвать следующие:

    Open Database Connectivity (ODBC).

Универсальные механизмы ODBC, OLE DB и ADO фирмы Microsoft представляют собой по существу промышленные стандарты. Что касается механизма доступа к данным BDE фирмы Borland, то он так и не стал промышленным стандартом, однако до недавнего времени применялся довольно широко, так как до выхода Delphi 5 был практически единственным универсальным механизмом доступа к данным, поддерживаемым средствами разработки Borland на уровне компонентов и классов.

Наиболее часто используемые в приложениях способы доступа к данным схематически изображены на рис. 1.

Как видно из приведенной схемы, в общем случае приложение, использующее базы данных, может применять следующие механизмы доступа к ним:

    Непосредственный вызов функций клиентского API (или обращение к COM-объектам клиентских библиотек).

В мире вычислений есть множество непонятных концепций ODBC. для конечного пользователя это значок на панели управления Microsoft® Windows®. Для программиста приложения это библиотека, содержащая подпрограммы доступа к данным. Ко многим другим, это ответ на все возможные проблемы доступа к базе данных.

Первая и самое главное, ODBC является спецификацией для API базы данных. Этот API не зависит ни от одной СУБД или операционной системы; Хотя в этом руководстве используется C, API ODBC не зависит от языка. API ODBC основан на спецификациях CLI из Open Group и ISO/IEC. ODBC 3. x полностью реализует обе эти спецификации — более ранние версии ODBC были основаны на предварительных версиях этих спецификаций, но не полностью реализовали их, и добавляет функции, которые часто требуются разработчикам приложений баз данных на основе экранов, таких как прокручиваемые курсоры.

Функции API ODBC реализуются разработчиками драйверов, связанных с СУБД. Приложения вызывают эти функции в этих драйверах для доступа к данным независимо от СУБД. Диспетчер драйверов управляет взаимодействием между приложениями и драйверами.

несмотря на то, что корпорация майкрософт предоставляет диспетчер драйверов для компьютеров под управлением Microsoft Windows® 95 и более поздних версий, написал несколько драйверов odbc и вызывает функции odbc из некоторых приложений, каждый может писать приложения и драйверы odbc. На самом деле, большинство приложений и драйверов ODBC, доступных сегодня, написаны компаниями, отличными от Майкрософт. более того, драйверы и приложения ODBC существуют на® Macintosh и различных UNIXных платформах.

чтобы помочь разработчикам приложений и драйверов, корпорация майкрософт предлагает пакет средств разработки программного обеспечения ODBC (SDK) для компьютеров под управлением Windows 95 и более поздних версий, которые предоставляют диспетчер драйверов, библиотеку DLL установщика, средства тестирования и примеры приложений. корпорация майкрософт разработала с программным обеспечением висиженик, чтобы перенести эти пакеты sdk на Macintosh и различные платформы UNIX.

Важно понимать, что ODBC предназначен для предоставления возможностей баз данных, а не дополнять их. Таким образом, средства записи приложений не должны предполагать, что использование ODBC приведет к внезапному преобразованию простой базы данных в полнофункциональное ядро реляционной базы данных. И не являются модулями записи драйвера для реализации функциональности, не найденной в базовой базе данных. исключением является то, что разработчики, создающие драйверы, которые напрямую обращаются к данным файлов (например, к данным в файле Xbase), необходимы для создания ядра субд, поддерживающего по крайней мере минимальную функциональность SQL. еще одно исключение заключается в том, что компонент ODBC Windows SDK, который ранее включался в пакет SDK для компонентов доступа к данным (MDAC), предоставляет библиотеку курсоров, которая имитирует прокручиваемые курсоры для драйверов, реализующих определенный уровень функциональности.

Приложения, использующие ODBC, отвечают за любые функции межбазовых баз данных. Например, ODBC не является разнородным механизмом соединения и не является обработчиком распределенных транзакций. Однако, поскольку он не зависит от СУБД, он может использоваться для создания таких межбазовых инструментов.

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

На примере баз данных Firebird и InterBase даны рекомендации, которые помогут вам при выборе средства доступа.

Преимущества использования стандартных интерфейсов

    Можно выделить следующие преимущества такого подхода:
  • Независимость клиентского приложения от деталей реализации источника данных.
  • Легкий переход между версиями серверов баз данных.
  • Возможность работы приложения с несколькими серверами баз данных.
  • Поддержка со стороны большого числа средств разработки.

Идея состоит в том, что разработчикам легче реализовать один стандартный интерфейс, чем поддерживать множество базы данных с различным API.

Что такое ODBC драйвер?

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

ODBC драйвер представлял собой реализацию ODBC API на языке C. Вызовы ODBC API транслировались на API конкретной базы данных.

Источники данных ODBC

OLE DB, в отличие от ODBC, является объектно-ориентированным API, основанным на COM-интерфейсах.

OLE DB провайдеры могут работать не только с реляционными базами данных, но и с любой другой информацией которую можно представить в табличном виде. Например: OLE DB провайдер для служб каталогов или Jet OLE DB провайдер, позволяющий извлекать данные из Excel и Outlook.

В OLE DB можно работать и с ODBC драйвером при помощи специального провайдера (OLE DB Provider for ODBC drivers), который умеет подключаться к источникам данных ODBC. Данная схема помогала в случае отсутствия OLE DB провайдера для конкретной базы данных. На сегодняшний день поддержка этого драйвера прекращена.

Источники данных OLE DB

Для подключения через OLE DB не требуется регистрация источника данных в системе, как это принято в ODBC. Вся информация хранится либо в файлах с расширением udl, либо указывается непосредственно в строке подключения.

Для редактирования подключения OLE DB с расширением udl ассоциирован редактор связей с данными Data Link. Он поддерживает расширенную настройку провайдера данных за счет включения в свой интерфейс дополнительных страниц, о которых ему сообщает выбранный OLE DB провайдер.

Чтобы запустить редактор Data Link создайте пустой файл с расширением udl и запустите его на выполнение.

Управляющие последовательности ODBC (ODBC Escape Sequences)

Развитие языка SQL сделало его реализации в различных базах данных несовместимыми между собой. Для решения проблемы совместимости были предложены управляющие последовательности ODBC (ODBC Escape Sequences). Они позволили писать SQL запросы, которые были бы совместимы с большинством баз данных.

ADO и DAO

Библиотека ADO поддерживается следующими средствами:

  • в Visual Studio: Visual C++ и Visual Basic;
  • Microsoft Office, Visual Basic For Applications.
  • Скриптовые языки VBcript, JavaScript, WSH
  • Остальные, поддерживающие COM.

Интеграция с Microsoft Office

Средства Microsoft Office поддерживают загрузку данных и через OLE DB и через ODBC. Полноценное использование всех офисных средств управления данными зависит от возможностей конкретных OLE DB провайдеров и ODBC драйверов.

Для пользователей Firebird и InterBase такая поддержка есть.

Microsoft MS SQL Server

SQL Server позволяет обращаться из Transact SQL к базам данных других серверов, включая Firebird и InterBase через технологию Linked Server.

Linked Server взаимодействует только с OLE DB провайдерами и не поддерживает ODBC дравейра.

Business Intelligence

В состав SQL Server входят три средства Business Intelligence:

ODBC Firebird, ODBC InterBase или все же OLE DB?

ODBC драйвера

ODBC драйвера Easysoft распространяются отдельно для Firebird и отдельно для InterBase:

На сайте Easysoft достаточно внушительный список ODBC драйверов, но нет информации о дате последних обновлений драйверов для Firebird и InterBase. Судя по номерам поддерживаемых версий, изменения происходили достаточно давно.

Для того чтобы скачать эти драйвера, необходимо зарегистрироваться на сайте EasySoft.

OLE DB

В состав решения входят 2 OLE DB провайдера. Подробнее о назначении каждого читайте здесь

Заключение

На мой взгляд, выбор технологии доступа для Firebird и InterBase очевиден, но, несмотря на это каждый месяц посетители поисковых систем ищут магические ODBC Firebird driver и ODBC InterBase driver для создания новых приложений.

Между тем выбор средства доступа к базе данных, как и самой базы данных, является основой приложения и от этого выбора может зависеть не только производительность, скорость разработки, но и успех проекта в целом.

Дополнительная информация с сайта IBProvider

ODBC (Open DataBase Connectivity) — широко применяемый прикладной программный интерфейс (API) для доступа к БД. Основан на спецификациях Call-Level Interface из Open Group и ISO/IEC для функций API БД и использует SQL [Источник 1] .

Содержание

Архитектура


Рисунок 1 – Архитектура ODBC

  1. Приложения
  2. Диспетчер драйверов
  3. Драйвер
  4. Источник данных

На рисунке 1 можно увидеть архитектуру ODBC.

Приложения

Приложения — это программа, которая вызывает API ODBC для доступа к данным. Большинство приложений делятся на три категории [Источник 3] :

Универсальные приложения

Универсальные приложения предназначены для работы с множеством разных СУБД. Примеры включают электронную таблицу или пакет статистики, который использует ODBC для импорта данных дальнейшего анализа и текстовый процессор, который использует ODBC для получения списка рассылки из базы данных.

Вертикальные приложения

Вертикальные приложения выполняют один тип задачи, например, ввод заказов или отслеживание производственных данных и работать со схемой БД, контролируемый разработчиком приложения. Для конкретного клиента приложение работает с одной СУБД. Например, малое предприятие может использовать приложение с dBase, хотя большая организация может использовать его с Oracle.

Приложение использует ODBC таким образом, что приложение не привязано к любой из СУБД, несмотря на то, что он может быть привязан к ограниченному числу СУБД, которые предоставляют аналогичные функциональные возможности. Таким образом, разработчик приложения может продавать приложение независимо от СУБД. Вертикальные приложения совместимы при разработке, но иногда модифицируются, чтобы включить несовместимый код, когда клиент выбрал СУБД.

Пользовательские приложения

Пользовательские приложения используются для выполнения определенных задач в одной компании. Например, приложение в крупной компании может собирать данные о продажах с нескольких подразделений (каждый из которых использует различные СУБД) и создать единый отчет. ODBC используется в том случае, когда он представляет собой общий интерфейс и предотвращает программистов от необходимости обучения нескольким интерфейсам. Такие приложения обычно не являются функционально совместимыми и записываются в определенном СУБД и драйверов.

Число задач является общим для всех приложений, независимо от того, как они используют ODBC. В общем, они во многом определяют поток любого приложения ODBC. Например:

  • Выбор источника данных и подключение к нему.
  • Отправка инструкции SQL для выполнения.
  • Извлечение результатов (если таковые имеются).
  • Ошибки обработки.
  • Фиксация или откат транзакции, заключив инструкцию SQL.
  • Отключение от источника данных.

Диспетчер драйверов

Диспетчер драйверов существует главным образом для удобства программистов и решает ряд общих проблем для всех приложений. К ним относятся определения, какой драйвер следует загрузить на основании имени источника данных, загрузка и выгрузка драйверов и вызов функций в драйверах.

Драйвера

Драйверы — это библиотеки, которые реализуют функции в API ODBC. Каждый специфичен для конкретной СУБД. Например, драйвер для Oracle не может напрямую обращаться к данным в СУБД с Informix. Драйверы раскрывают возможности базовых СУБД. Они не требуются для реализации возможностей, не поддерживаемых в СУБД. Если базовая СУБД не поддерживает внешние соединения, то драйвер не нужен. Единственным серьезным является то, что драйверы для СУБД, которые не имеют автономных механизмов БД, таких как Xbase, должен реализовать механизм СУБД, поддерживающий по крайней мере минимальный объем SQL [Источник 4] .

Задачи драйвера

Определенные задачи, выполняемые драйверами включают:

  • Подключение и отключение от источника данных.
  • Проверка ошибки функций, не проверяется диспетчером драйверов.
  • Запуск транзакций. Этот процесс прозрачен для приложения.
  • Отправка инструкций SQL к источнику данных для выполнения. Драйвер должен изменить ODBC SQL в конкретный СУБДSQL.
  • Отправка и извлечение данных из источника данных, в том числе преобразование типов данных, определенной в приложении.
  • Отображение ошибок, связанных с СУБД в ODBC SQLSTATE.

Архитектура драйвера

Файловый драйвер

Драйвер обращается к физическими данными напрямую. В этом случае драйвер выступает в качестве драйвера и источника данных, то есть он обрабатывает вызовы ODBC и инструкции SQL. Например, драйверы dBase являются файловыми драйверами, поскольку dBase не предоставляет автономный механизм базы данных, который драйвер может использовать. Разработчики файловых драйверов должны создавать свои собственные механизмы баз данных.

СУБД драйверы

Драйвер обращается к физическим данным через отдельное ядро СУБД. В этом случае драйвер обрабатывает только вызовы ODBC, он передает инструкции SQL в ядро БД для обработки. Например, драйверы Oracle являются драйверами на основе СУБД, поскольку Oracle имеет автономный механизм БД, который использует драйвер. Где находится ядро базы данных не имеет значения. Оно может находиться на той же машине что и драйвер или на другом компьютере в сети. К нему можно получить доступ через шлюз [Источник 5] .

Читайте также: