部分 ODBC 驅動程式並不嚴格遵循前述架構。 這可能是因為駕駛員執行的職責與傳統ODBC駕駛不同,或並非正常意義上的駕駛。
驅動單元作為中間組件
ODBC 驅動程式可能位於驅動程式管理器與一個或多個其他 ODBC 驅動程式之間。 當中間驅動程式能夠處理多個資料來源時,它會充當 ODBC 呼叫(或經過適當轉譯的其他呼叫)的調度器,將這些呼叫發送給實際存取資料來源的其他模組。 在此架構中,中間的驅動程式扮演部分驅動管理員的角色。
另一類驅動程式的例子是 ODBC 的間諜程式,它會攔截並複製驅動程式管理器與驅動程式之間傳送的 ODBC 函式。 此層可用於模擬驅動程式或應用程式。 對驅動程式管理器來說,該層看起來就是驅動程式;對驅動程式而言,該層看起來就是驅動程式管理員。
異質拼接引擎
部分 ODBC 驅動程式建立在查詢引擎上,用於執行異質連接。 在異質聯結引擎的一種架構中(見下圖),驅動程式看起來對應用程式是驅動程式,而在另一個驅動程式管理器的實例中則是應用程式。 此驅動程式透過在每個連接的資料庫的驅動程式中呼叫不同的 SQL 陳述式,來處理應用程式的異質連接。
圖
此架構提供應用程式存取不同資料庫資料的共通介面。 它可以使用通用方式來擷取中繼資料,例如關於特殊欄位(列識別碼)的資訊,並且可以呼叫常見的目錄函式來擷取資料字典資訊。 例如,透過呼叫 ODBC 函式 SQLStatistics,應用程式可以取得待連接資料表索引的資訊,即使這些資料表位於兩個獨立的資料庫中。 查詢處理器不必擔心資料庫如何儲存元資料。
應用程式同時具備標準的資料型態存取權限。 ODBC 定義了 DBMS 專用資料型態被映射到的常見 SQL 資料型態。 應用程式可以呼叫 SQLGetTypeInfo ,以取得不同資料庫中資料型態的資訊。
當應用程式產生異質連接語句時,此架構中的查詢處理器會解析該 SQL 語句,然後為每個待加入的資料庫分別產生 SQL 語句。 透過利用每個驅動程式的中繼資料,查詢處理器能判斷最有效率且智慧的連接方式。 例如,如果該陳述句將一個資料庫上的兩個資料表與另一個資料庫的一個資料表連接起來,查詢處理器可以在將結果與另一個資料庫的資料表合併之前,先將該資料庫中的兩個資料表合併。
伺服器上的 ODBC
ODBC 驅動程式可以安裝在伺服器上,讓任一系列用戶端機器上的應用程式都能使用。 在此架構中(見下圖),每個用戶端安裝一個驅動程式管理器和一個 ODBC 驅動程式,伺服器上則安裝另一個驅動程式管理器及一系列 ODBC 驅動程式。 這讓每個用戶端都能存取伺服器上使用並維護的各種驅動程式。
此架構的一大優點是軟體維護與配置效率高。 驅動程式只需在伺服器端更新。 透過使用系統資料來源,可以在伺服器上定義資料來源供所有用戶端使用。 資料來源不必在用戶端定義。 連線池可用來簡化用戶端連接資料來源的流程。
客戶端的驅動程式通常是非常小的驅動程式,負責將驅動程式管理員的呼叫傳送到伺服器。 其佔用空間可明顯小於伺服器上功能完整的 ODBC 驅動程式。 在此架構中,若伺服器擁有更多運算能力,客戶端資源可被釋放。 此外,安裝備用伺服器並進行負載平衡,優化伺服器使用,也能提升整個系統的效率與安全性。