您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 数据库系统教程――施伯乐第三版PPT10
1第10章中间件技术2本章重要概念(1)中间件的定义和作用(2)ODBC分层的体系结构:应用程序,驱动程序管理器,DB驱动程序,ODBC数据源。(3)ODBC接口:应用程序基本流程,ODBC句柄,ODBC连接,SQL语句的执行。ODBC两套符合性级别。典型的DB应用系统开发工具。3前言对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在C/S系统中必须广泛使用中间件技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。ODBC技术就是这种优秀的中间件技术。4第10章ODBC技术10.1中间件10.2ODBC结构10.3ODBC接口10.4ODBC的符合性级别10.5小结510.1中间件10.1.1中间件的定义10.1.2中间件的作用610.1.1中间件的定义定义10.1中间件(middleware)是分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。在C/S环境中,中间件同时存在于客户端和服务器端,负责客户和服务器间透明的请求和回答交换。在分布式环境中,中间件允许不同服务器之间相互通信,如数据库网关。使用中间件后,应用开发者不需关心特定环境的低层细节,通过中间件等访问数据库,有关代码不依赖于某一具体数据库及该数据库所在平台,从而可将更多的精力集中在功能的设计,所得到的应用软件也易于移植和升级。7中间件的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。●网络透明性:能支持所有类型的网络。●服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的中间件都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。●语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。10.1.2中间件的作用810.2ODBC结构10.2.1ODBC概念10.2.2ODBC的体系结构10.2.3ODBC的特性9传统的数据库编程方式是“主语言+DML”。但是一个特定的前端应用却不能访问不同数据库服务器上的数据。这主要有两个原因:●各厂商的SQL版本不同,使得不同的RDBMS提供的SQL互不兼容。●不同厂商的RDBMS在客户机与数据库服务器之间使用了不同的通信协议。而与此同时,RDBMS产品却迅速增加,因此有必要建立一个公共的、与数据库无关的应用程序设计接口(API:ApplicationProgrammingInterface)。所谓公共接口API就是为开发者提供单一的编程接口,这样同一个应用程序就可以访问不同的数据库服务器。10.2.1ODBC概念(1)10最先推出的公共API是Microsoft公司于1992年推出的ODBC产品。它以C/S结构为设计基础。ODBC技术使得应用程序与DBMS之间在逻辑上可以分离,使应用程序具有数据库无关性。每个应用程序利用相同的源代码就可访问不同的数据库系统,存取多个数据库中的数据。最早的ODBC版本1.0是在1993年8月发布的。由于1.0版本的迅速流行,2.0版本、3.0版本、3.5版本分别在1994年12月、1995年10月、1996年10月发布,每一次的发布都作了一些改进,着重于速度、对新的OS的兼容性以及对ODBC可访问的更高级DBS所具有的功能提供支持。因此,ODBC技术对C/S计算模式的发展产生了革命性的影响。10.2.1ODBC概念(2)11应用程序应用程序应用程序……SYBASE公共接口API网络软件FoxproSQLServerDB2Oracle图10.1采用API的应用编程10.2.1ODBC概念(3)12ODBC数据库应用程序驱动程序管理器SQLServer驱动程序Oracle驱动程序Foxpro驱动程序Sybase驱动程序DB2驱动程序SQLServer数据源Oracle数据源DB2数据源Sybase数据源Foxpro数据源DBDBDBDBDB图10.2ODBC的分层体系结构10.2.2ODBC的体系结构(1)131.应用程序的主要功能是:调用ODBC函数,递交SQL语句给DBMS,检索出结果,并进行处理。应用程序主要完成以下8个任务:·连接数据库;·向数据源发送SQL语句;·为SQL语句分配空间;·读取结果;·处理错误;·向用户提交处理结果;·事务提交和回退操作;·断开与数据源的连接。10.2.2ODBC的体系结构(2)142.驱动程序管理器是一个动态链接库(DLL),用于连接各种DBS的DBMS驱动程序(如Oracle、Foxpro、Sybase等驱动程序),管理应用程序和DBMS驱动程序之间的交互作用(通信)。驱动程序管理器的主要功能如下:·为应用程序加载DBMS驱动程序;·检查ODBC调用参数的合法性和记录ODBC函数的调用;·为不同驱动程序的ODBC函数提供单一的入口;·调用正确的DBMS驱动程序;·提供驱动程序信息。10.2.2ODBC的体系结构(3)153.DB驱动程序当应用程序调用函数SQLConnect时,驱动程序管理器加载驱动程序。根据应用程序的要求,驱动程序完成以下任务:·建立应用程序与数据源的连接;·向数据源提交用户请求执行的SQL语句;·根据应用程序的要求,将发送给数据源的数据或是从数据源返回的数据进行数据格式和类型转换;·把处理结果返回给应用程序;·将执行过程中DBS返回的错误转换成ODBC定义的标准错误代码,并返回给应用程序;·根据需要定义和使用光标。10.2.2ODBC的体系结构(4)16ODBC规范定义的驱动程序有两种类型:(1)单层驱动程序单层驱动程序不仅要处理ODBC函数调用,还要解释执行SQL语句,即执行DBMS的功能。图10.3是网络环境下基于单层驱动程序的ODBC结构。(2)多层驱动程序多层驱动程序只处理应用程序的ODBC函数调用和数据转换,它将SQL语句传递给数据源服务器,由DBMS解释执行SQL语句,实现用户的各种操作请求。图10.4是基于多层驱动程序的ODBC结构(两层结构),图10.5是基于网关机制的多层驱动程序的ODBC结构(三层结构)。10.2.2ODBC的体系结构(5)17工作站ODBC数据库应用程序驱动程序管理器单层驱动程序(包含DB引擎)数据库文件(*.DBF)网络文件服务器图10.3网络环境下基于单层驱动程序的ODBC结构10.2.2ODBC的体系结构(6)18ODBC数据库应用程序驱动程序管理器多层驱动程序客户端网络支撑软件服务器网络支撑软件数据库引擎数据库文件(*.DBF)DB服务器(网络)客户端SQL请求操作结果图10.4基于多层驱动程序的ODBC结构(两层结构)10.2.2ODBC的体系结构(7)19ODBC数据库应用程序客户端网络支撑软件数据库引擎数据库服务器网络支撑软件数据库网关驱动程序管理器驱动程序图10.5基于网关机制的多层驱动程序的ODBC结构(三层结构)客户浏览器(网络)的体系结构(8)20多层驱动程序与单层驱动程序的差别不仅仅是驱动程序是否具有数据库引擎的功能,二者的效率也有很大的差异。由于基于单层驱动程序的应用程序把存放数据库的服务器作为文件服务器使用,在网络中传输的是整个数据库文件,所以网络的数据通信量很大;而采用多层驱动程序的应用程序使用C/S结构,在数据库服务器上实现对数据库的各种操作,在网络中传输的只是用户请求和数据库处理的结果,从而使网络的通信量大大减少。这不仅减轻了网络的负担,而且还均衡了服务器和客户机的负载,从而提高了应用程序的运行效率,这是C/S结构的优点。10.2.2ODBC的体系结构(9)214.ODBC的数据源管理数据源(DataSourceName,简称DSN)是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。在连接中,用数据源名来代表用户名、服务器名、所连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。10.2.2ODBC的体系结构(10)22数据源分为以下三类:●用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。●系统数据源:所有用户和在WindowsNT下以服务方式运行的应用程序均可使用系统数据源。●文件数据源:文件数据源是ODBC3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。10.2.2ODBC的体系结构(11)23从ODBC的体系结构可以看出,ODBC技术有下列三个特性:(1)ODBC是一个调用层的接口。(2)ODBC定义了标准的SQL语法。(3)ODBC提供一个驱动程序管理器来管理并同时访问多个DBMS系统。10.2.3ODBC的特性2410.3ODBC接口10.3.1ODBC应用程序的基本流程10.3.2ODBC句柄10.3.3数据源的连接与断开10.3.4SQL语句的执行10.3.5查询结果的获取2510.3.1应用程序的基本流程分配环境句柄分配连接句柄与服务器连接分配语句句柄语句处理和检索与服务器断开释放语句句柄释放连接句柄释放环境句柄SQLAllocEnvSQLAllocConnectSQLConnectSQLAllocStmtSQLExecDirect(直接执行)SQLPrepare(语句预备)SQLExecute(语句执行)SQLDisconnectSQLFreeStmtSQLFreeConnectSQLFreeEnv初始化SQL处理终止图10.6ODBC应用程序的基本流程2610.3.2ODBC句柄(1)环境句柄应用程序连接句柄连接句柄连接句柄语句句柄语句句柄语句句柄(只有一个)…………图10.7三种句柄之间的关系27…………环境句柄(定义DB应用环境)连接句柄(定义一个DB连接)语句句柄(定义一个SQL语句)□□□henvhdbchstmt图10.8各种句柄之间的关系10.3.2ODBC句柄(2)28一个ODBC句柄(Handle)就是一个应用程序变量,系统用来存储关于应用程序的上下文信息和应用程序所用到的一些对象。这是“信息隐藏”的需要。ODBC使用三个句柄:环境句柄、连接句柄和语句句柄。一个环境句柄可以与多个连接句柄相连,一个连接句柄可与多个语句句柄相连,但一个应用程序只有一个环境句柄。环境句柄定义一个数据库环境,连接句柄定义一个数据库连接,语句句柄定义一条SQL语句。对于句柄,有两个ODBC函数:分配函数和释放函数。10.3.2ODBC句柄(3)291.环境句柄(EnvironmentHandles)(1)分配环境句柄函数:SQLAllocEnv(phenv)(2)释放环境句柄函数:SQLFreeEnv(henv)2.连接句柄(ConnectionHandles)(1)分配连接句柄函数:SQLAllocConnect(henv,phdbc)(2)释放连接句柄函数:SQLFreeConnect(hdbc)3.语句句柄(StatementsHandles)(1)分配语句句柄函数:SQLAllocStmt(hdbc,phstmt)(2)释放语句句柄函数:SQLFreeStmt(hstmt,fOption)10.3.2ODBC句柄(4)30(1)连接数据源的函数SQLConnect(hdbc,szDSN,cbDSN,szUID,cbUID,szAuthStr,cbAuthStr)。参数hdbc是一个
本文标题:数据库系统教程――施伯乐第三版PPT10
链接地址:https://www.777doc.com/doc-4056492 .html