其他驱动程序体系结构

某些 ODBC 驱动程序不符合前面所述的体系结构。 这可能是因为驱动程序执行传统 ODBC 驱动程序以外的其他职责,或者不是正常意义上的驱动程序。

驱动程序作为中间组件

ODBC 驱动程序可以驻留在驱动程序管理器和一个或多个其他 ODBC 驱动程序之间。 当中间的驱动程序能够处理多个数据源时,它充当 ODBC 调用的调度程序, (或适当转换的调用) 实际访问数据源的其他模块。 在此体系结构中,中间的驱动程序正在承担驱动程序管理器的一些角色。

这种驱动程序的另一个示例是 ODBC 的间谍程序,它截获和复制驱动程序管理器和驱动程序之间正在发送的 ODBC 函数。 此层可用于模拟驱动程序或应用程序。 对驱动程序管理器,层显示为驱动程序;到驱动程序,层显示为驱动程序管理器。

异类联接引擎

某些 ODBC 驱动程序基于查询引擎构建,用于执行异类联接。 在异类联接引擎的一个体系结构中, (看到下图) ,驱动程序显示为驱动程序,但显示为应用程序的另一个驱动程序管理器实例。 此驱动程序通过为每个联接的数据库调用驱动程序中的单独 SQL 语句,从应用程序处理异类联接。

异类联接引擎的体系结构

此体系结构为应用程序提供了一个通用接口,用于访问来自不同数据库的数据。 它可以使用常用方法来检索元数据,例如有关特殊列的信息 (行标识符) ,并且可以调用常见目录函数来检索数据字典信息。 例如,通过调用 ODBC 函数 SQLStatistics,应用程序可以检索有关要联接的表上的索引的信息,即使表位于两个单独的数据库上也是如此。 查询处理器不必担心数据库如何存储元数据。

应用程序还可以对数据类型进行标准访问。 ODBC 定义特定于 DBMS 的数据类型映射到的常见 SQL 数据类型。 应用程序可以调用 SQLGetTypeInfo 来检索有关不同数据库数据类型的信息。

当应用程序生成异类联接语句时,此体系结构中的查询处理器会分析 SQL 语句,然后为每个要联接的数据库生成单独的 SQL 语句。 通过使用有关每个驱动程序的元数据,查询处理器可以确定最有效的智能联接。 例如,如果语句将一个数据库上的两个表与另一个数据库上的一个表联接,则查询处理器可以在一个数据库上联接两个表,然后才能将结果与其他数据库中的表联接。

服务器上的 ODBC

ODBC 驱动程序可以安装在服务器上,以便应用程序可以在任意一系列客户端计算机上使用它们。 在此体系结构中, (看到下图) ,每个客户端上安装驱动程序管理器和单个 ODBC 驱动程序,另一个驱动程序管理器和一系列 ODBC 驱动程序安装在服务器上。 这样,每个客户端都可以访问服务器上使用和维护的各种驱动程序。

FIG3-5服务器

此体系结构的一个优点是高效的软件维护和配置。 驱动程序只需在一个位置更新:在服务器上。 通过使用系统数据源,可以在服务器上定义数据源供所有客户端使用。 不需要在客户端上定义数据源。 连接池可用于简化客户端连接到数据源的过程。

客户端上的驱动程序通常是一个非常小的驱动程序,用于将驱动程序管理器调用传输到服务器。 其占用空间比服务器上的功能齐全的 ODBC 驱动程序要小得多。 在此体系结构中,如果服务器具有更多的计算能力,则可以释放客户端资源。 此外,通过安装备份服务器和执行负载均衡来优化服务器使用,可以增强整个系统的效率和安全性。