目前,众多的厂商推出了行行色色的数据库系统,它们在性能、价格和应用范围上各有千秋。一个综合信息系统的各部门由于需求差异等原因,往往会存在多种数据库,它们之间的互连访问成为一个棘手的问题,特别是当用户需要从客户机端访问不同的服务器时。微软提出的开放式数据库互连(Open-DataBase-Connectivity,即ODBC)成为目前一个强有力解决方案,并逐步成为Windows和Macintosh平台上的标准接口,并推动了这方面的开放性和标准化。
一、ODBC的产生和发展
关系型数据库产生后很快就成为数据库系统的主流产品,由于每个DBMS厂商都有自己的一套标准,人们很早就产生了标准化的想法,于是产生了SQL,由于其语法规范逐渐为人所接受,成为RDBMS上的主导语言。最初,各数据库厂商为了解决互连的问题,往往提供嵌入式SQL API,用户在客户机端要操作系统中的RDBMS时,往往要在程序中嵌入SQL语句进行预编译。由于不同厂商在数据格式、数据操作、具体实现甚至语法方面都具有不同程度的差异,所以彼此不能兼容。
长期以来,这种API的非规范情况令用户和RDBMS厂商都不能满意。在80年代后期,一些著名的厂商包括Oracle、Sybase、Lotus、Ingres、Informix、HP、DEC等结成了SQL Access Group(简称SAG),提出了SQL API的规范核心:调用级接口(Call Level Interface),简称CLI。
1991年11月,微软宣布了ODBC,次年推出可用版本。1992年2月,推出了ODBC SDK 2.0版。ODBC基于SAG的SQL CAE草案所规定的语法,共分为Core、Level 1、 Level 2三种定义,分别规范了22、16、13共51条命令,其中29条命令甚至超越了SAG CLI中原有的定义,功能强大而灵活。它还包括标准的错误代码集、标准的连接和登录DBMS方法、标准的数据类型表示等。
由于ODBC思想上的先进性,且没有同类的标准或产品与之竞争,它一枝独秀,推出后仅仅两三年就受到了众多厂家与用户的青睐,成为一种广为接受的标准。目前,已经有130多家独立厂商宣布了对ODBC的支持,常见的DBMS都提供了ODBC的驱动接口,这些厂商包括Oracle、Sybase、Informix、Ingres、IBM(DB/2)、DEC(RDB)、HP(ALLBASE/SQL)、Gupta、Borland(Paradox)等。目前,ODBC已经成为客户机/服务器系统中的一个重要支持技术。
二、ODBC的基本思想与特点
ODBC的基本思想是为用户提供简单、标准、透明的数据库连接的公共编程接口,开发厂商根据ODBC的标准去实现底层的驱动程序,这个驱动对用户是透明的,并允许根据不同的DBMS采用不同的技术加以优化实现,这就利于不断吸收新的技术而趋完善。
这同时也就是数据库驱动的思想,它很类似于Windows中打印驱动的思想。在Windows中,用户安装不同的打印驱动程序,使用同样一条打印语句或操作,就可很容易地实现在不同打印机上打印输出,而不需要了解内部的具体原理。ODBC出现以后,用户安装不同的DBMS驱动就可用同样的SQL语句实现在不同DBMS上进行同样的操作,而且无需预编译。ODBC带来了数据库连接方式的变革。在传统方式中,开发人员要熟悉多个DBMS及其API,一旦DBMS端出现变动,则往往导致用户端系统重新编建或者源代码的修改,这给开发和维护工作带来了很大困难。在ODBC方式中,不管底层网络环境如何,也无论采用何种DBMS,用户在程序中都使用同一套标准代码,无需逐个了解各DBMS及其API的特点,源程序不因底层的变化而重新编建或修改,从而减轻了开发维护的工作量,缩短了开发周期。
概括起来,ODBC具有以下灵活的特点:
1. 使用户程序有很高的互操作性,相同的目标代码适用于不同的DBMS;
2. 由于ODBC的开放性,它为程序集成提供了便利,为客户机/服务器结构提供了技术支持;
3. 由于应用与底层网络环境和DBMS分开,简化了开发维护上的困难。