Другие архитектуры драйверов

Некоторые драйверы ODBC не строго соответствуют описанной выше архитектуре. Это может быть вызвано тем, что драйверы выполняют обязанности, отличные от традиционных драйверов ODBC, или не являются драйверами в обычном смысле.

Драйвер как средний компонент

Драйвер ODBC может находиться между диспетчером драйверов и одним или несколькими драйверами ODBC. Если драйвер в средней части способен работать с несколькими источниками данных, он выступает в качестве Dispatcher вызовов ODBC (или в соответствующих методах) другим модулям, которые фактически обращаются к источникам данных. В этой архитектуре драйвер в середине принимает некоторую роль диспетчера драйверов.

Еще один пример такого рода драйвера — программа Spy для ODBC, которая перехватывает и копирует функции ODBC, передаваемые между диспетчером драйверов и драйвером. Этот слой можно использовать для эмуляции драйвера или приложения. К диспетчеру драйверов, этот слой является драйвером; для драйвера этот слой является диспетчером драйверов.

Разнородные модули Join

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

Архитектура разнородного ядра соединения

Эта архитектура предоставляет общий интерфейс для приложения для доступа к данным из разных баз данных. Он может использовать общий способ извлечения метаданных, например сведения о специальных столбцах (идентификаторы строк), и может вызывать общие функции каталога для получения сведений о словаре данных. Например, вызывая функцию ODBC SQLStatistics, приложение может извлекать сведения о индексах соединяемых таблиц, даже если таблицы находятся в двух отдельных базах данных. Обработчику запросов не нужно беспокоиться о том, как метаданные хранятся в базах данных.

Приложение также имеет стандартный доступ к типам данных. ODBC определяет общие SQL типы данных, с которыми сопоставляются типы данных, относящиеся к субд. Приложение может вызывать SQLGetTypeInfo для получения сведений о типах данных в разных базах данных.

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

ODBC на сервере

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

Архитектура драйверов ODBC на сервере

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

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