ODBC (Open Database Connectivity)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:06, 16 февраля 2019.
ODBC
Odbc logo.png
Разработчики: Microsoft Corporation
Постоянный выпуск: 3.8
Операционная система: Windows
Тип ПО: Data Access API
Веб-сайт odbc

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

Архитектура

В архитектуре ODBC имеется четыре компонента[Источник 2]:

Рисунок 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].

ODBC и JDBC

Оба продукта являются популярным выбором на рынке.

Ключевые отличия между ODBC и JDBC

  • ODBC- стандартный интерфейс прикладного программирования для взаимодействия и доступа к системам управления базами данных, тогда как JDBC- интерфейс прикладного программирования на Java для определения возможностей доступа клиента к БД.
  • ODBC может быть реализован и улучшен на любых языках(например, C, C++, Java и т.д.), тогда как JDBC- только на Java.
  • ODBC процедурный API, а JDBC- объектно-ориентированный.
  • ODBC основан на сервере Microsoft IIS и реализован в системах на базе Windows. JDBC используется на сервере Apache Tomcat и основан на веб-сервере на основе Linux, также работает на серверах приложений JBoss и IBM.
  • ODBC выполняется на основе модели архитектуры безопасности Windows NT, JDBC работает на основе модели безопасности Java.
  • ODBC зависим от платформы Windows, тогда как JDBC независима от платформы, следовательно, может работать на платформе базы Windows или Linux.
  • Архитектура ODBC состоит из четырех компонентов, а JDBC поддерживает как двухуровневые, так и трехуровневые модели обработки БД, в основном из двух уровней: JDBC API и JDBC Driver API.

Источники

  1. ODBC - Overview // Microsoft Docs. Дата обновления: 19.01.2017. URL: https://docs.microsoft.com/en-us/sql/odbc/reference/odbc-overview?view=sql-server-2017 (дата обращения 20.12.2018)
  2. ODBC - Architecture // Microsoft Docs. Дата обновления: 19.01.2017. URL: https://docs.microsoft.com/en-us/sql/odbc/reference/odbc-architecture?view=sql-server-2017 (дата обращения 20.12.2018)
  3. ODBC - Applications // Microsoft Docs. Дата обновления: 19.01.2017. URL: https://docs.microsoft.com/en-us/sql/odbc/reference/applications?view=sql-server-2017 (дата обращения 20.12.2018)
  4. ODBC - Drivers // Microsoft Docs. Дата обновления: 19.01.2017. URL: https://docs.microsoft.com/en-us/sql/odbc/reference/drivers?view=sql-server-2017 (дата обращения 20.12.2018)
  5. ODBC - Driver Architecture // Microsoft Docs. Дата обновления: 19.01.2017. URL: https://docs.microsoft.com/en-us/sql/odbc/reference/driver-architecture?view=sql-server-2017 (дата обращения 20.12.2018)