时间:2022-11-19 18:30:01 | 来源:信息时代
时间:2022-11-19 18:30:01 来源:信息时代
数据库应用编程接口 : 应用程序访问数据库的接口。数据库应用系统包括数据主体和数据客体两个主要部分,数据客体即数据库,数据主体是操作员(人)或应用程序。主客体之间存在数据交换。
在数据库发展初期,应用环境是一种单机、集中式的工作环境,应用逻辑相对简单,数据交换一般表现为简单直接的人一机交互方式,通过SQL语句实现数据交换。
随着数据库应用规模与范围的扩大,应用环境从单机、集中式逐步发展为多机、网络的形式,应用逻辑也日益复杂。由于数据库管理系统自身的局限性,要开发一个完整的应用系统,还需要与程序设计语言相配合。于是,数据交换的数据主体由人演变为应用程序,并且应用程序逐步与数据分离,这就需要应用程序访问数据库的接口,即数据库应用编程接口(application program interface,API)。
数据库API经历了几个发展阶段,在这些发展阶段中出现了多种类型的数据库API。
早期数据库API有两种形式,一种是基于通用程序设计语言(主语言)开发应用程序;另一种是基于专用语言(将SQL与程序设计融于一体的自含式SQL)开发应用程序。前者需要用预编译程序将SQL语句先转换为主语言编译程序理解的代码,然后编译并装配到数据库,即执行嵌入式SQL; 后者通常需要调用和执行存储过程。这两种类型的数据库API执行速度较快,但使用起来不够方便,因为数据库及数据库管理系统的多样性决定了数据库API的多样性,而不同的数据库API会给数据库应用系统的开发、维护和更新带来麻烦。目前,普遍使用的数据库应用系统结构是客户/服务器(C/S)或浏览器/服务器(B/S)方式。不管哪种方式,都有可能出现多个应用建立于同一个数据库的情况,甚至同一个应用的数据来自多个不同的数据库。特别是在网络环境下,数据和应用往往位于不同的网络节点,多个应用节点可能访问同一个数据节点,一个应用节点也可能访问多个数据节点。这样,建立统一的数据交换接口就显得尤为重要,于是,应用程序访问数据库的接口标准及相应的接口应运而生。此处所说的数据库API通常指的就是标准数据库API。标准数据库 API 基本上都是调用级接口(call level interface),即不需要预编译SQL语句或编制存储过程,而是通过调用函数的方式实现与数据库服务器的数据交换。
最初,SQL访问小组(SAG,现已合并到X/Open联盟)提出一个调用级接口(call level interface,CLI)标准,规定了在一个用标准程序设计语言编写的应用中执行数据库语言SQL语句的一系列结构和过程,这些过程独立地执行SQL语句,这就是SQL/CLI。有了SQL/CLI,应用程序通过调用函数的方式实现与数据库服务器的数据交换。其具体方法是,对网络中的不同数据源根据SQL/CLI标准,设置一组统一的数据交换函数,客户端对数据库服务器提出请求的SQL语句以函数的参数形式出现,连同函数本身一起传递至服务器执行。
SAG将SQL/CLI放在1992年公布的SQL语言标准(SQL-92)的附录中,并先后提交给微软、ANSI和ISO等组织。1992年,SQL/CLI作为微软开放数据库连接(open database connectivity,ODBC)标准发布(不同版本ODBC标准在原有基础上有不同程度的扩充); 1995年SQL/CLI成为ISO标准;1996年SQL/CLI正式作为SQL语言标准的第3部分公布。
理论上,一个符合SQL/CLI标准的数据库API可以帮助用户编写可移植的对任何数据源都独立的应用程序,但实际上并不那么简单。目前可用的SQL/CLI有很多种,主要由一些数据库厂商和第三方独立厂商或组织实现并提供,如Oracle的OCI和GLUE、IBM的DB2 UDB和DRDA、微软的ODBC、Sybase的OPEN Client和OPEN Server、SAG的CLI、X/Open的CLI、Borland的IDAPI等。它们基本上符合SQL/CLI标准(其中微软的ODBC和DB2 UDB CLI等产品还同时符合微软发布的ODBC标准),但用法不尽相同。从性能上讲,这些SQL/CLI使用灵活,但速度较慢,通常被用在决策支持系统中。
自微软发布ODBC标准并推出ODBC接口之后,其他厂商也推出符合ODBC标准的ODBC接口产品。ODBC实际上是CLI标准的一个具体实现,它为基于C、C++、C#、BASIC等语言的应用程序提供了一种访问各种数据源的统一的函数调用级接口。ODBC不仅在Windows平台得到应用,也扩展到其他平台,如Unix。
为方便用户开发应用程序,微软又推出远程数据对象(remote data object,RDO),它是基于ODBC的一个对象模型层。
继ODBC之后,为方便用户开发基于多种数据源(结构化/非结构化)的应用程序,并提高数据库访问效率,微软又推出数据库嵌入式链接对象(object link embedded database,OLE DB),并进一步封装OLE DB。先后推出网络化多媒体数据对象(activeX data object,ADO)和ADO.NET,其中ADO比原始的OLE DB开发包更加丰富,便于用户快速开发出数据库应用程序,特别是在Web数据库访问中获得广泛应用。
在Internet环境下,公用网关接口(common gateway interface,CGI),可使用户直接在浏览器上对数据库进行操纵。但它难以实现网页数据的动态更新,逐渐被ADO技术所取代。
此外,微软还推出过数据访问对象(data access object,DAO),它是为桌面数据库用户设计的数据库访问对象,基于Microsoft Jet数据库引擎。
上述这些接口基本上是为C语言、C++语言和BASIC语言的应用程序设计的。随着Java程序设计语言的日益广泛应用,SUN公司推出了为Java语言程序专门设计的数据库访问接口JDBC,以及基于J2EE平台的数据库访问对象(DAO)。
JDBC最初是作为J2SE开发工具包的一部分,后来作为单独的标准发布。JDBC标准同样遵循SQL-92标准。从JDBC 3.0版开始,JDBC标准逐步提供SQL-99标准中被数据库产品所广泛支持的特性。该标准还规定以面向对象的方法来简化应用编程。Java应用代码通过JDBC接口可以比较方便地访问数据库、提交SQL语句和接收结果等。