以 DBMS 為基礎的驅動程式

以 DBMS 為基礎的驅動程式會與資料來源搭配使用,例如 Oracle 或 SQL Server,這些資料來源會提供獨立資料庫引擎以供驅動程式使用。 這些驅動程式會透過獨立引擎存取實體資料;也就是說,他們會向引擎提交 SQL 陳述式,並從引擎擷取結果。

由於以 DBMS 為基礎的驅動程式使用現有的資料庫引擎,因此通常比以檔案為基礎的驅動程式更容易撰寫。 雖然透過將 ODBC 呼叫轉譯為原生 API 呼叫,可以輕鬆地實作以 DBMS 為基礎的驅動程式,但也會導致驅動程式變慢。 若要更好地實作以 DBMS 為基礎的驅動程式,可使用基礎資料流通訊協定,這通常是原生 API 的功能。 例如,SQL Server 驅動程式應使用 TDS (SQL Server 的資料流通訊協定),而非使用 DB Library (SQL Server 的原生 API)。 當 ODBC 為原生 API 時,則屬於此規則的例外狀況。 例如,Watcom SQL 是一個獨立引擎,與應用程式位於相同電腦上,並作為驅動程式直接載入。

以 DBMS 為基礎的驅動程式會作為用戶端/伺服器設定中的用戶端,而資料來源則會作為伺服器。 在大部分情況下,用戶端 (驅動程式) 和伺服器 (資料來源) 位於不同電腦上,不過兩者都可能位於執行多工作業系統的相同電腦上。 第三種可能性為閘道,其位於驅動程式與資料來源之間。 閘道是一種能讓某個 DBMS 看起來像另一個 DBMS 的軟體。 舉例來說,編寫來使用 SQL Server 的應用程式也可以透過 Micro Decisionware DB2 閘道存取 DB2 資料;本產品能讓 DB2 看起來就像 SQL Server。

下圖顯示以 DBMS 為基礎的驅動程式的三種不同設定。 在第一個設定中,驅動程式和資料來源位於相同電腦上。 在第二個設定中,驅動程式和資料來源位於不同電腦上。 在第三個設定中,驅動程式和資料來源位於不同電腦上,而閘道又位於兩者之間的另一部電腦上。

Three configurations for DBMS-based drivers