天天看点

MySQL的数据库访问接口mysql-connectors

<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>