数据库接口的发展历史

        为了能用同样的方法访问不同的数据库,一些软件厂商提出通用的数据库接口标准,如微软的ODBC、DAO、RDO、OLEDB和ADO接口,还有Borland公司的BDE接口等,这些接口对各类数据库的驱动程序进行了封装,应用程序只需通过标准的语法访顺接口程序,接口程序会根据情况调用不同的驱动程序来访问相关的数据库。这样从应用程序的角度来看,访问各种数据库(包括符合规范的末知数据库)的方法是一样的。

         当市场上出现众多的数据库产品之后,Borland和微软都制字了数据库访问的规范,其中微软推出了ODBC(Open DataBase Connectivity)规范,而Borland公司推出了BDE(BorlandDatabase Engine)规范。在推出的初期,BDE的性能比ODBC要好,但随着微软对ODBC的改进,以及对操作系统的垄断,ODBC标准最终占据了多数市场。到现在,BDE只是Borland产品线上的数据库访部标准,只有C++Builder和Delphi等开发工具在一直使用BDE接口。

         微软的ODBC接口是作为一组API函数提供的,应用程序通过API访问ODBC接口,ODBC接口再通过相关数据库的驱动程序访问数据库。当需要访问一种新的数据库时,只需要使用新的数据库驱动程序替代旧的驱动程序,应用程序即可照常运行,而无须修改代码。

         由于ODBC使用比较底层的API接口,凡是可以调用API的语言都可以使用ODBC接口,这样,C、VC++、和Win32汇编等语言都能方便的使用ODBC接口,但是在VB、ASP中的VBScript等比较高级的语言中使用API却是非常麻烦的事情,所以微软件设计了DAO接口来供这些语言访问数据库。

         由于DAO(DataAccess Objects)是面向对象的接口,所以它可以很方便地在VB中使用,但,ADO在内部通过Jet引擎来访问数据库,Jet引擎本来是专门Access数据库设计的。虽然用它访问Access数据库时很快也很有效,但访问非Access数据库时(如SQL Server和Oracle),Jet引擎将通过ODBC访问数据库(如下图所示)。所以,访问除了Access之外的数据库时,DAO的速度比较慢。

        为了克服这种缺陷,微软新设计了RDO(Remote Data Objects)接口,与DAO类似,RDO也是一个面向对象的接口,它都直接和ODBC接口对话,相当于在上图上去掉了Jet引擎这一层,从而使性能得到了提高。

         ODBC、DAO、RDO接口只能用来访问关系型数据库,但是应用程序也经常需要访问非关系型的数据源,如Microsoft Exchange Server中的邮件、文本和图形、目录服务数据,甚至自定义的数据对象等。为此,微软设计了OLEDB(Object Linking andEmbedding, Database)接口。

         OLEDB接口也建立于ODBC之上,这个接口对关系型的数据库和非关系型的数据源提供了一致的访问。当访问关系型的数据库时,它仍然调用ODBC接口,对于非关系型的数据源,它使用与数据源相对应的驱动程序。这些驱动程序被称为OLEDB Provider。

         与ODBC、DAO和RDO接口相比,OLEDB解决了非关系型数据的访问方式,使访问的数据类一型得到了很大的扩展,但从编程的角度看,OLEDB使用的是COM接口而不是API接口,COM接口是一种二进制接口,调用的过程中大量的地使用了指针变量,这对C和VC++并不成问题,但由于VB和VBScript等高级语言不提供指针数据类型,所以无法直接调用OLEDB。

         所以,在此基础上微软又推出了另一个数据访问对象模型:ADO(ActiveX Data Objects),由于ADO接口也是面向对象的,所以可以被VB使用。如下图,ADO接口是以OLEDB为基础而封装的,它为VB等高级语言提供了OLEDB的所有功能。ADO接口和OLEDB接口的关系就类似于RDO接口和ODBC接口的关系。

         这些接口的差别在于层次、功能和接口封装方式的不同。具体使用哪种接口要看需要访问的数据类型,以及使用的语言能支持哪种接口封装方式,如VB程序访问关系型数据库时,可以使用ADO、DAO或者RDO接口,但是要访问非关系型的数据库时,就只能使用ADO接口了。而VC++程序既可以使用ADO接口,也可以使用OLEDB或都最底层的ODBC接口。

         现在再来详细看看ODBC接口的组成。ODBC接口的架构如下图所示。当应用程序访问某种类型的数据库时,首先将相关的信息告诉ODBC管理器,这些信息包括使用的驱动程序名称,需要访问的数据库名称,用户名和密码等。ODBC管理器根据这些信息选择合适的驱动程序连接到指定的数据库后,就可以使用SQL语句进行数据库的操作了。

一些简写:

ODBC: Open DataBase Connectivity

BDE: Borland Database Engine

DAO: Data Access Objects

RDO: Remote Data Objects

OLEDB: Object Linking and Embedding, Database

ADO: ActiveX Data Objects

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值