共用方式為


其他驅動程式架構

部分 ODBC 驅動程式不會完全符合先前所述的架構。 這可能是因為驅動程式會執行傳統 ODBC 驅動程式以外的工作,或非正常情況的驅動程式。

驅動程式作為中間元件

ODBC 驅動程式可能位於驅動程式管理員和一或多個其他 ODBC 驅動程式之間。 當中間的驅動程式能夠使用多個資料來源時,對其他實際存取資料來源的模組來說,會作為 ODBC 呼叫的發送器 (或經適當轉譯的呼叫)。 在此架構中,中間的驅動程式會承擔驅動程式管理員的部分角色。

這種驅動程式的另一個範例是 ODBC 的 spy 程式,它會攔截並複製驅動程式管理員與驅動程式之間傳送的 ODBC 函式。 這一層可用來模擬驅動程式或應用程式。 對驅動程式管理員而言,這一層可能是驅動程式;對驅動程式而言,這一層可能是驅動程式管理員。

異質聯結引擎

部分 ODBC 驅動程式是以查詢引擎為基礎建置,以執行異質聯結。 在異質聯結引擎的其中一個架構中 (請見下圖),對應用程式而言,驅動程式會顯示為驅動程式,但對另一個驅動程式管理員執行個體而言,則可能是應用程式。 此驅動程式會針對每個聯結的資料庫,在驅動程式中呼叫個別 SQL 陳述式,以處理應用程式的異質聯結。

Architecture of a heterogeneous join engine

此架構提供一個通用介面,供應用程式存取不同資料庫的資料。 應用程式可以以一般方式來擷取中繼資料,例如特殊資料行的資訊 (資料列識別碼),而且可以呼叫通用目錄函式來擷取資料字典資訊。 例如,應用程式可以呼叫 ODBC 函式 SQLStatistics,來擷取要聯結資料表上索引的相關資訊,即使資料表位於兩個不同的資料庫也是如此。 查詢處理器不需要擔心資料庫儲存中繼資料的方式。

應用程式也有資料類型的標準存取權。 ODBC 會定義 DBMS 特定資料類型所對應到的通用 SQL 資料類型。 應用程式可以呼叫 SQLGetTypeInfo 來擷取不同資料庫上資料類型的相關資訊。

當應用程式產生異質聯結陳述式時,此架構中的查詢處理器會剖析 SQL 陳述式,然後為每個要聯結的資料庫產生個別 SQL 陳述式。 查詢處理器可以使用每個驅動程式的相關中繼資料,來判斷最有效率的智慧型聯結。 例如,當陳述式將一個資料庫上的兩個資料表聯結至另一個資料庫的一個資料表時,查詢處理器就可以聯結那一個資料庫上的兩個資料表,再聯結另一個資料庫的結果。

伺服器上的 ODBC

可以在伺服器上安裝 ODBC 驅動程式,即可在任何一系列用戶端電腦上使用應用程式。 在此架構中 (請參閱下圖) ,每個用戶端上都會安裝驅動程式管理員和單一 ODBC 驅動程式,並在伺服器上安裝另一個驅動程式管理員和一系列 ODBC 驅動程式。 如此一來,每個用戶端即可存取在伺服器上使用和維護的各種驅動程式。

Architecture of ODBC drivers on a server

此架構的其中一個優點是高效率的軟體維護和設定。 驅動程式只需要在同一個位置更新:在伺服器上。 藉由使用系統資料來源,可以在伺服器上定義資料來源,供所有用戶端使用。 用戶端上不需要定義資料來源。 連線共用可用來簡化用戶端連線至資料來源的流程。

用戶端上的驅動程式通常是非常小型的驅動程式,會將驅動程式管理員呼叫傳輸至伺服器。 其磁碟使用量可能遠小於伺服器上功能完整的 ODBC 驅動程式。 在此架構中,如果伺服器具有更多運算能力,則可釋放用戶端資源。 此外,安裝備份伺服器和執行負載平衡來將伺服器使用最佳化,可以增強整體系統的效率與安全性。