http://www.csdn.net/develop/author/netauthor/RedStar81/
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还提供了一组标准
的服务组件,用于提供查询、缓存、数据更新、事务处理等操作,因此数据提供方只需实现一
些简单的数据操作.在使用方就可以获得全部的数据控制能力.
OLE DB体系包括以下几个组成部分(下图示):
数据提供者(Data Provider) 提供数据存储的组件和数据,数据小到普通的文本文件、大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者的例子.有 的文档把这些软件组件的开发商也称为数据提供者.
数据服务提供者(Data Service Provider) 位于数据提供者之上、从过去的数据库管理系统中分离出来、独立运行的功能组件,例如查询处理器和游标引擎(Cursor Engine),这些组件使得数据提供者提供的数据以表状数据(Tabular Data)的形式向外表示(不管真实的物理数据是如何组织和存储的),并实现数据的查询和修改功能.SQL Server 7.0 的查询处理程序就是这种组件的典型例子.
业务组件(Business Component) 利用数据服务提供者、完成某种特定业务信息处理、可以重用的功能组件.分布式数据库应用系统中的中间层(Middle-Tier)就 是这种组件的典型例子.
数据消费者(Data Consumer) 任何需要访问数据的系统程序或应用程序,除了典型的数据库应用程序之外,还包括需要访问各种数据源的开发工具或语言.
当然上图侧重非关系数据系统的示意.如今,几乎所以的关系数据库厂商都提供了OLE DB Provider以投入OLE DB新体系.当然对于只能获得ODBC Provider的用户,只要你再获得OLE DB-ODBC Bridge也是可以的.(图示如下:以ORACLE系统为例)
自然,各数据库厂商的OLE DB Provider大体功能同于ODBC Provider.对各数据库系统的独特功能提供支持、对特定数据访问进行优化等等.
4.JDBC(Java DataBase Connectivity : Java数据库连接)
Internet/intranet及相应环境下的应用系统的发展,造就了今日的Java.自然在Java数据应用系统中,JDBC是首选方案.与ODBC类似,JDBC为Java开发人员提供了一套标准的数据访问API.
JDBC是SunMicroSystem公司的JavaSoft分部提出的Java数据应用访问的标准API.JDBC是基于X/OpenSQL的调用级接口(这也是ODBC的基础).JDBC可保证JDBCAPI在其它通用SQL级API之上实现.这也意味着所有支持ODBC的数据库不加任何修改能够与JCBC协调工作. JDBC设计很多借鉴于ODBC:
1.JDBC与ODBC都是基于X/Open的SQL调用级接口
2.JDBC很多设计思想沿袭了ODBC,包括许多抽象和SQL CLI实现
3.JDBC的总体结构类似于ODBC,有四个组件:应用程序、驱动程序管理器、驱动程序和数据源,工作原 理亦大体同于ODBC. 此外:
1.JDBC保持了ODBC的基本特性,也独立于特定数据库.
2.使用相同源代码的应用程序通过动态加载不同的JDBC驱动程序,可以访问不同的DBMS.连接不同的 DBMS时,各个DBMS之间仅通过不同的URL进行标识.
3.JDBC的DatabaseMetaData接口提供了一系列方法,可以检查DBMS对特定特性的支持,并相应确定有什 么特性,从而能对特定数据库的特性予以支持
4.JDBC也支持在应用程序中同时建立多个数据库连接,采用JDBC可以很容易地用SQL语句同时访问多个 异构的数据库,为异构的数据库之间的互操作奠定基础.
然而,由于基于Java,具有对硬件平台、操作系统异构性的支持.这主要因为ODBC基本用C开发,而JDBC用Java开发.Java语言,具有与平台无关、移植性强、安全性高、稳定性好、分布式、面向对象等众多优点,JDBC使“100% 纯Java”解决方案成为可能.利用Java的平台无关性更适合于Internet上异构环境的数据库应用.此外,JDBC驱动程序管理器可内置,也可通过Web浏览器自动下载,无须安装、配置,ODBC驱动程序管理器和ODBC驱动程序必须在每台客户机上分别安装、配置.
上面提及,JDBC与ODBC组成、工作原理基本相同,事实上,即使有区别,那也只因为驱动程序的解决方案有差异.一般,Java的驱动解决方案有四种:1.JDBC-ODBC Bridge 2.本机API/集团式Java驱动程序 3.网络协议/全Java 4.本机协议/全Java
二、数据对象模型探讨(待续)
附录:美国著名数据库产品记事(参考)
二、数据对象模型探讨(待续)
------------------------------------------------声明---------------------------------------------------
本文档顺数据库应用发展历史而下,以数据访问接口和数据对象模型的发展、特征、相
互之间的区别为主线,描述了它的轨迹.希望对数据系统开发者有些帮助.
本文中,久远的信息(对本人来说)系参考书籍,有错误之处,请指出
81_redstar@163.com
本文档标以版本,目的在于希望大家阅读之后,
发现不妥或错误或需要补充的地方,联系我,对之进行修改,以完善之.
使之成为持久的网上参考资料.
Beat 1.0 2003.2.25
-----------------------------------