<a href="#sec-1">1. 資料庫通路接口概述</a>
<a href="#sec-2">2. mysql 的資料庫通路接口</a>
大部分流行的關系資料庫産品采用的都是 c/s 架構。是以,應用程式要通路資料庫的資料就必須和各種資料庫用戶端(也稱為資料庫通路接口)打交道。可以這麼認為,每一種流行的程式設計語言都需要一個對應的資料庫通路接口。以 mysql 為例,它提供了 c、c++、java、.net、python 等各種語言的接口實作。oracle 等曆史較長的商用軟體通常還支援在各種進階程式設計語言(cobol、c 等等)中嵌入 sql 語句,這一類的實作有時也會被歸入資料庫通路接口。所有這些接口中,jdbc、odbc 可能是最為大家熟悉和使用的,是以這些接口也被統稱為 xdbc。odbc 的接口設計常為人所诟病,但它在市場競争中勝出,成為事實上的标準,并被成功的納入了 sql 标準,成為了 sql/cli。jdbc 随後也參照odbc 進行了接口定義。
很多資料庫産品的實作語言是 c/c++,它們首先提供的接口也是 c/c++ 類型。為了達到最好的性能表現,最好是能為每種語言都實作 100% native 的接口。實際情況沒有這麼完美,往往是先有 c 語言的實作,然後在基于它完成其他各種語言的實作,因為這種方式可以很快提供所需要的接口。感興趣的同學可以去看 jdbc 的四種實作方式。xdbc 已經被标準化了,為了考察不同的實作是否符合标準,曾經有不同的組織做了一些相容性測試集。例如:quest 的 odbc test suite、oracle/sun 的 jdbc test suite。
提供各種各樣的接口。
嚴格符合标準定義。
跨作業系統/cpu 等不同的平台。
相容資料庫伺服器的不同版本。
與不同的軟體(如中間件、驅動程式管理器)相容。
各種不同的接口代碼需要的開發環境存在很大的不同。odbc、.net data provider 之類的在 windows 上采用 cmake、visual studio 比較友善(odbc 在 linux 上還需要 unixodbc 等驅動程式管理器)。jdbc 需要用到 jdk、ant、junit、hibernate 等。為了準确了解 mysql 接口的實作,wireshark 之類的協定分析工具也是必不可少的。
<a href="http://validator.w3.org/check?uri=referer">validate</a>