http://dev.csdn.net/develop/article/21/21018.shtm
数据访问接口体系及数据对象模型探讨(Beat 1.0)
81_RedStar81@163.com
TomHornson.student@www.sina.com.cn
个人文集:
http://www.csdn.net/develop/author/netauthor/RedStar81/
一、数据访问接口体系探讨
1.Open Client/Open Server
C/S结构的中间件具体来说是配置在客户端和服务器端的软件包(注2::).Sybase Open Client/Open Server使分布式异构环境下的互操作成为可能.这里我们简述Sybase C/S 中间件的工作原理.Open Client 是客户端的API,它使客户端应用程序和第三方的工具软件把SQL语句和远程过程调用(RPC)通过网络发送给Sybase SQL Server,或经由Open Server应用(以利用Open Server开发为标志的应用)发送到其它的数据源(数据库系统或Objects Managents或普通的数据存储体)或其它类型的服务器.从Open Client API调用到信道传输有两种很重要的行为发生,TDS(同于Telnet、Ftp等属于应用层协议)格式化程序负责将上层的以API调用为标志的SQL或RPC等转化为TDS消息包而支持多种传输规程的网络库把TDS包按对应客户端与服务器端通信协议的封装格式化.自然在客户端,信道传输行为发生之前,同于其它的网络应用还有很多的行为(具体参看有关协议模型的资料).Open Server是服务器端的API,它允许客户机以SQL语句或RPC形式向一个非Sql Server数据源或其它类型的服务器发送请求.而后使该数据源或特殊服务器以标准的TDS格式向客户端送回状态和数据.Open Server可构成较为理想的C/S结构环境,即所有的客户端能按统一的方式与所有的服务器交互,而所有的服务器亦能按统一的方式接受客户端的请求,并以标准的格式向客户端返回结果.作为扩展,我们这里再介绍点关于Open Client/Open Server的知识,以便读者在下面详细探讨的ODBC体系分析中看到一些历史的技术因素.事实上,正如上面所述,Open Client/Open Server都是API,到Sybase System 11为止,成熟的API包含客户端的DB-Library、Client-Library和服务器端的Server-Library还有公共的CS-Library.重要的特性对比列举如下
1.Client-Library 优于 较老的DB-Library 而且Client-Library是与SQL无关的.
2.DB-Library 不支持服务器端的游标.Client-Library功能全面,支持所有类型的游标,包括敏感和不敏感游标
3.Open Server 是服务器端的API,用来开发服务器端应用.提供一致的数据访问框架能力.Open Server应用既可与Sybase通信又可与非Sybase通信而Sybase SQL Server 连接其它的数据源需要利用Open Server API开发Sybase Open GetWay.
这里稍微提一下,通过对Open Client/Open Server实现的功能、当时数据库系统服务特性、ODBC等较晚出现的接口体系、现时数据库系统服务特性的综合分析对比, 你会发
现Open Client 应用(Open Client Application,包含Sybase Open GetWay、Normal DataSource Application、Mail Open Client 及其它的一些体现统一的数据访问框架的应用)在后来的数据接口体系中亦可实现同样功能但是实现的方式、功能的实现体及其分布大不相同.虽然到现时还有一些影子.
2.ODBC(Open DataBase Connectivity : 开放数据库连接)
ODBC是Microsoft Windows Open Standards Architecture (WOSA,Windows开放服务体系)的重要组成部分,由Microsoft公司于1991年底发布,短短几年已成为事实上的工业标准.它建立了一组规范,提供了一套分层(随着层的扩展,数据服务能力不断的增强)的标准API(支持SQL),它解决了嵌入式SQL接口的非规范核心,数据应用系统用它来访问任何提供了ODBC驱动程序(一组DLL)的数据库,结束了过去针对不同的数据库系统开发须掌握相应数据访问API的时代.事实上,可将ODBC体系看作统一的数据访问界面,而使这种统一的数据访问成为可能的就是各数据库产品厂商提供的相应的ODBC Provider(ODBC提供者即ODBC 驱动),但ODBC一般只能用于关系数据库,很难访问对象数据库或其它非关系数据库或数据系统.下面简述ODBC体系的组成和工作原理. ODBC规范阐释,ODBC体系有四个组成部分:Application、Driver Manager、Driver、Data Source.(如下图).
结合现实的高层开发工作流程如下:
1.数据应用系统首先获得在ODBC数据源管理器中建立的DSN(存储了与数据提供程序连接的详细信息包含数据库位置、数据库类型及相应的ODBC驱动程序等),然后 Driver Manager依赖一种叫做数据库独立的交流(Database Indepedent Communications Technology)的技术与数据源建立联系(其中涉及客户端和服务器端多种Agent对象的问题,详情不叙,可参见下图).
2.Driver Mangaer调用特定ODBC驱动程序将ODBC标准API转化为适用于具体数据库系统的函数调用(数据库特征不同之处也在这里翻译如SQL语法差异等),然后经由客户端的Request Agent发送到数据源.
3.数据源Database Agent处理操作,将结果返回到客户端的Request Agent,再向上经Driver(这里会有翻译和标准化错误码的行为)、Driver Mangaer返回给Application.
需要说明的是定义和操作光标、维护事务、负责任何与访问数据源的必要软件层进行交互(包括与底层网络或文件系统接口的软件)等行为亦由驱动程序完成.
结合ODBC API调用顺序描叙工作流程:初始化(分配环境--->分配连接句柄--->与服务器连接--->分配语句句柄)-------->SQL处理(语句处理和检索部分)-------->终止(释放语句句柄--->与服务器断开--->释放连接句柄--->释放环境).
3.OLE DB(Object Link and Embedding DataBase)
随着网络技术和数据库技术的不断发展,现在的应用系统对数据集成的要求越来越高.有必要将不同的地方,不同的格式(如关系型数据库和操作 系统中的文件、电子表格、电子邮件、多媒体数据以及目录服务信息或主机系统中的IMS和VSAM数据等等)的数据集成.传统的解决方案是使用大型的数据库系统,把所有这些数据都移到数据库系统中,然后按照操作数据库的办法对这些数据进行访问,这样做虽然能够按统一的方式对数据进行各种操作,这种间接访问方式带来了很多问题,比如数据更新不及时、空间资源的冗余和访问效率低等等
此时Microsoft公司的通用数据访问技术(UDA)应运而生,它使数据应用系统能通过实现标准OLE DB接口的数据提供者来访问各种各样的数据,而不管数据驻留在何处,也不需要进行数据转移或复制、转换.
OLE DB作为一种数据访问接口体系,体现了Microsoft的通用数据访问(UDA)策略的理念.UDA能够通过标准接口来访问各种类型的数据.同于ODBC体系它也提供了一套标准API,不过OLE DB API是完全基于COM的,其特点是采用了多层模型.在COM通信层的一侧是数据另一侧则是数据使用者.这种基于COM的通信可被概括为在抽象对象(如DataSource、Session、Command 和 Rowset)上执行的操作.因此,当使用者连接到DataSource,打开 Session,发出Command,并返回数据Rowset时,便会出现这种情况.
事实上,OLE DB是系统级的编程接口,它定义了一组COM接口,这组接口封装了各种数据
系统的访问操作,这组接口为数据使用者和数据提供者建立了标准,OLE DB还提供了一组标准
的服务组件,用于提供查询、缓存、数据更新、事务处理等操作,因此数据提供方只需实现一
些简单的数据操作.在使用方就可以获得全部的数据控制能力.
待续:
4. JDBC(Java DataBase Connectivity : Java数据库连接)
二、数据对象模型探讨(待续)
附录:美国著名数据库产品记事(参考)