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

Некоторые драйверы ODBC не строго соответствуют описанной выше архитектуре.Some ODBC drivers do not strictly conform to the architecture described previously. Это может быть вызвано тем, что драйверы выполняют обязанности, отличные от традиционных драйверов ODBC, или не являются драйверами в обычном смысле.This might be because the drivers perform duties other than those of a traditional ODBC driver, or are not drivers in the normal sense.

Драйвер как средний компонентDriver as a Middle Component

Драйвер ODBC может находиться между диспетчером драйверов и одним или несколькими драйверами ODBC.The ODBC driver may reside between the Driver Manager and one or more other ODBC drivers. Если драйвер в средней части способен работать с несколькими источниками данных, он выступает в качестве Dispatcher вызовов ODBC (или в соответствующих методах) другим модулям, которые фактически обращаются к источникам данных.When the driver in the middle is capable of working with multiple data sources, it acts as a dispatcher of ODBC calls (or appropriately translated calls) to other modules that actually access the data sources. В этой архитектуре драйвер в середине принимает некоторую роль диспетчера драйверов.In this architecture, the driver in the middle is taking on some of the role of a Driver Manager.

Еще один пример такого рода драйвера — программа Spy для ODBC, которая перехватывает и копирует функции ODBC, передаваемые между диспетчером драйверов и драйвером.Another example of this sort of driver is a spy program for ODBC, which intercepts and copies ODBC functions being sent between the Driver Manager and the driver. Этот слой можно использовать для эмуляции драйвера или приложения.This layer can be used to emulate either a driver or an application. К диспетчеру драйверов, этот слой является драйвером; для драйвера этот слой является диспетчером драйверов.To the Driver Manager, the layer appears to be the driver; to the driver, the layer appears to be the Driver Manager.

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

Некоторые драйверы ODBC создаются на основе механизма запросов для выполнения разнородных соединений.Some ODBC drivers are built upon a query engine for performing heterogeneous joins. В одной архитектуре разнородного механизма объединения (см. следующую иллюстрацию) драйвер отображается в приложении как драйвер, но он отображается на другом экземпляре диспетчера драйверов в качестве приложения.In one architecture of a heterogeneous join engine (see the following illustration), the driver appears to the application as a driver but appears to another instance of the Driver Manager as an application. Этот драйвер обрабатывает разнородное соединение из приложения, вызывая отдельные инструкции SQL в драйверах для каждой присоединенной базы данных.This driver processes a heterogeneous join from the application by calling separate SQL statements in drivers for each joined database.

Архитектура разнородного ядра соединенияArchitecture of a heterogeneous join engine

Эта архитектура предоставляет общий интерфейс для приложения для доступа к данным из разных баз данных.This architecture provides a common interface for the application to access data from different databases. Он может использовать общий способ извлечения метаданных, например сведения о специальных столбцах (идентификаторы строк), и может вызывать общие функции каталога для получения сведений о словаре данных.It can use a common way to retrieve metadata, such as information about special columns (row identifiers), and it can call common catalog functions to retrieve data dictionary information. Например, вызывая функцию ODBC SQLStatistics, приложение может извлекать сведения о индексах соединяемых таблиц, даже если таблицы находятся в двух отдельных базах данных.By calling the ODBC function SQLStatistics, for instance, the application can retrieve information about the indexes on the tables to be joined, even if the tables are on two separate databases. Обработчику запросов не нужно беспокоиться о том, как метаданные хранятся в базах данных.The query processor does not have to worry about how the databases store metadata.

Приложение также имеет стандартный доступ к типам данных.The application also has standard access to data types. ODBC определяет общие типы данных SQL, с которыми сопоставляются типы данных СУБД.ODBC defines common SQL data types that DBMS-specific data types are mapped to. Приложение может вызывать SQLGetTypeInfo для получения сведений о типах данных в разных базах данных.An application can call SQLGetTypeInfo to retrieve information about data types on different databases.

Когда приложение создает неоднородную инструкцию соединения, обработчик запросов в этой архитектуре анализирует инструкцию SQL, а затем создает отдельные инструкции SQL для каждой соединяемой базы данных.When the application generates a heterogeneous join statement, the query processor in this architecture parses the SQL statement and then generates separate SQL statements for each database to be joined. С помощью метаданных о каждом драйвере обработчик запросов может определить наиболее эффективное, интеллектуальное соединение.By using metadata about each driver, the query processor can determine the most efficient, intelligent join. Например, если инструкция соединяет две таблицы в одной базе данных с одной таблицей в другой базе данных, обработчик запросов может объединить две таблицы в одной базе данных, прежде чем присоединить результат к таблице из другой базы данных.For example, if the statement joins two tables on one database with one table on another database, the query processor can join the two tables on the one database before joining the result with the table from the other database.

ODBC на сервереODBC on the Server

Драйверы ODBC можно установить на сервере, чтобы они могли использоваться приложениями на любой серии клиентских компьютеров.ODBC drivers can be installed on a server so that they can be used by applications on any of a series of client machines. В этой архитектуре (см. следующую иллюстрацию) диспетчер драйверов и один драйвер ODBC устанавливаются на каждом клиенте, а на сервере устанавливается другой диспетчер драйверов и ряд драйверов ODBC.In this architecture (see the following illustration), a Driver Manager and a single ODBC driver are installed on each client, and another Driver Manager and a series of ODBC drivers are installed on the server. Это позволяет каждому клиенту обращаться к различным драйверам, используемым и обслуживаемым на сервере.This allows each client access to a variety of drivers used and maintained on the server.

Архитектура драйверов ODBC на сервереArchitecture of ODBC drivers on a server

Одним из преимуществ этой архитектуры является эффективное обслуживание и настройка программного обеспечения.One advantage of this architecture is efficient software maintenance and configuration. Драйверы необходимо обновлять только в одном месте: на сервере.Drivers need only be updated in one place: on the server. С помощью системных источников данных можно определить источники данных на сервере для использования всеми клиентами.By using system data sources, data sources can be defined on the server for use by all clients. Не требуется определять источники данных на клиенте.The data sources need not be defined on the client. Пул соединений можно использовать для упрощения процесса подключения клиентов к источникам данных.Connection pooling can be used to streamline the process by which clients connect to data sources.

Драйвер на клиенте обычно является очень небольшим драйвером, который передает вызовы диспетчера драйверов на сервер.The driver on the client is usually a very small driver that transfers the Driver Manager call to the server. Его размер может быть значительно меньше, чем полностью функциональные драйверы ODBC на сервере.Its footprint can be significantly smaller than the fully functional ODBC drivers on the server. В этой архитектуре ресурсы клиента могут быть освобождены, если сервер имеет больше вычислительных ресурсов.In this architecture, client resources can be freed if the server has more computing power. Кроме того, эффективность и безопасность всей системы можно улучшить, установив резервные серверы и выполнив балансировку нагрузки для оптимизации использования сервера.In addition, the efficiency and security of the entire system can be enhanced by installing backup servers and performing load balancing to optimize server use.