北京邮电大学软件工程研究生的课程数据库设计开发3.pptx
3.3 3.3 数据库应用数据库应用(yngyng)(yngyng)系统体系结系统体系结构构数据库应用系统的发展经历了主机/终端(zhn dun)模式、客户机/服务器模式之后,随着Internet的发展,又出现了浏览器/服务器模式,以及分布式数据库体系结构。3.3.3 C/S结构的数据库管理系统 3.3.4 C/S结构的数据库系统第一页,共41页。早期数据库系统是集中式的体系结构,所有访问数据库的应用程序以及用户终端发送并接受数据的通信都在一个宿主计算机(UNIX大型或小型机)上运行。随着PC机的兴起,单用户的DBMS出现,DBMS的功能和数据库应用功能结合在一个应用程序中,数据库应用处理用户输入和屏幕(pngm)输出的同时,也处理对数据库中数据的访问。基于PC的单用户DBMS不支持事务处理和回退恢复,不能保证数据的安全和完整,但查询速度并不一定慢。第二页,共41页。基于PC的多用户DBMS建立在文件服务器前提下,客户端运行服务器的应用程序,文件服务器将客户申请的文件传送给客户机器,数据处理过程在客户机器上进行。这种方式网络传输的是数据文件,传输量大,数据锁定在解决并发时存在困难。事务处理的性质使数据库系统从集中式、PC系统过渡到客户机/服务器系统,并使分布式系统成为可能(knng)。客户机/服务器系统最本质的特点在于:客户PC运行数据库应用(界面处理),数据库服务器运行全部或大部分DBMS(数据处理)。服务器运行SQL,将查询结果传送到客户端,减少了网络信息的传输,系统采用数据锁定、事务技术、存储过程等数据库技术保证数据完整一致准确。第三页,共41页。客户机/服务器(Clien/Server)结构可以指硬件(yn jin)结构,也可以指软件结构。硬件(yn jin)结构指某项任务在两台或多台计算机之间进行分配,客户机来运行提供用户接口和前端处理的应用程序,服务器提供可供客户机使用的各种资源和服务。客户机在完成某一项任务时,通常要利用服务器上的共享资源和服务器提供的服务。在一个客户机/服务器体系结构中可以有多台客户机、多台服务器。第四页,共41页。软件结构指把一个应用系统按照逻辑功能分软件结构指把一个应用系统按照逻辑功能分成四个组成部分成四个组成部分:用户界面、应用表示逻辑、用户界面、应用表示逻辑、事务逻辑、数据管理,按照其相对角色的不事务逻辑、数据管理,按照其相对角色的不同区分同区分(qfn)(qfn)为客户端和服务器端软件。为客户端和服务器端软件。客户软件能够请求服务器软件的服务。客户客户软件能够请求服务器软件的服务。客户软件和服务器软件可以分布在网络中不同的软件和服务器软件可以分布在网络中不同的计算机节点上,也可以放置在同一台计算机计算机节点上,也可以放置在同一台计算机上。上。终端终端(zhn dun)数据库数据库应用程序应用程序用户用户界面界面应用应用逻辑逻辑事务事务逻辑逻辑数据管数据管理理GUI3GL4GLSQLORACLEDB2第五页,共41页。常见C/S体系有两层结构和三层结构。两层C/S结构的基本工作方式:客户(k h)程序运行用户的应用程序,向数据库服务器发送SQL请求,数据库服务器接受客户(k h)机的请求,并将处理结果返回客户(k h)端。一个功能强大的客户(k h)应用开发语言和一个多用途的用于传送客户(k h)请求到服务器的机构是整个两层结构的核心。在一个数据存取事件中,数据由服务器实施存储和访问,数据库引擎负责处理从客户(k h)端发来的请求。把SQL语言从客户(k h)机传送到服务器上必须能识别服务的标识符或由一个应用程序接口来完成,还必须知道服务器的位置、数据组织形式以及数据如何定义。在服务器中,请求将得到存储逻辑和处理的进一步优化,例如使用权限、完整性、并发控制等。第六页,共41页。两层C/S结构具体又分为两种实现方式:一种是客户端完成界面显示和应用逻辑,服务器完成事务逻辑和数据管理。这种情况是以客户为中心的。这种方式下,表示部分和应用逻辑耦合紧密,比较适用(shyng)于应用相对简单、数据访问量不大的情况。另一种以服务器为中心,一些重要的应用逻辑放在服务器上,充分利用服务器的计算能力,通常以存储过程和触发器出现,减少网络压力,提高系统性能。这种方式下,存储程序依赖于特定数据库,不同数据库间的移植不太容易。第七页,共41页。把两层结构中服务器部分和客户端部分的应用单独划分出来,即形成三层C/S结构。在X/Open DTP标准中描述了三层C/S模型:由应用程序定义(dngy)各种操作来执行完成特定任务,它定义(dngy)事务的范围并把服务要求提交给事务管理器、通信管理器及一个或多个资源管理器。资源管理器提供应用程序的事务间的服务,通常是一个数据库。事务管理器提供事务的服务。如果事务跨越多个平台,那么其中一个的事务管理器为该事务的事务管理器。通信管理器提供通信服务的接口以及管理应用层协议。第八页,共41页。数据库应用的三层C/S结构将应用分成表示部分、应用逻辑(或称商业逻辑)、数据访问部分。三层C/S结构使各部分相互独立(dl)并单独实现,分别称为客户、应用服务器和数据库服务器。三层C/S结构中数据在发送到网络之前由功能服务器加以过滤,网络流量会减少,另外客户端并不是直接同数据库打交道,而是通过中间层的统一调用来实现,在灵活性和独立(dl)性方面较好,适合于不同数据库的互联。客户客户(k h)1应用服务器应用服务器数据库数据库数据库服务器数据库服务器客户客户(k h)N第九页,共41页。基于三层模型的应用系统:应用逻辑层:最普遍的处理方案是使用存储过程和触发器。从客户机角度看存储过程是一个单独的事件,可以在服务器上执行复杂的操作,事务的完成或取消最终控制权交给(jio i)用户;使用存储过程可避免通过网络传送SQL语句,也不必将数据通过网络传回来进行处理。数据层:定义正确的数据表和选择合适的存储方案,优化数据库的性能,使数据库快速、可靠、准确的响应用户的请求。如建立索引,优化设置。表示层:表示层主要承担人机界面的任务应用系统的性能优化设计是一项系统的工作,三层模型为系统的开放性扩充和性能优化提供了很大的空间和灵活性,但单纯的三层结构并不一定是最优的。第十页,共41页。3.3.3 C/S3.3.3 C/S结构结构(jigu)(jigu)的数据库管理系的数据库管理系统统C/S数据库管理系统通常通过高性能的锁定、事务提交、参照完整性、存储过程和触发器等数据管理技术实现多用户下良好(lingho)的数据完整性和并发控制。C/S结构数据库系统的分层模型应用程序数据库API网络(wnglu)/通信接口网络/通信接口数据管理客户管理DBMS存储文件客户端服务器数据/网络协议第十一页,共41页。3.3.3 C/S3.3.3 C/S结构结构(jigu)(jigu)的数据库管理的数据库管理系统系统客户端网络接口:是在客户端负责客户应用与数据库服务器通信,将数据信息编码或解码,提供发送/接受的逻辑通道。网络接口层协议的目的是为了减少网络传送的字节数目,它建立在基础网络协议(TCP/IP、IPX、SAN等)之上。编码协议主要有两种:通信与远程过程调用(Remote Procedure Call,RPC)。通信是指前端应用与DBMS之间的信息传输采用的报文形式,编码协议有:TABULAR(Microsoft)、SQL*Net(Oracle)、DRDA(IBM)。远程过程调用是一种由客户制定而由服务器来执行的函数调用。客户端数据管理层:用于客户应用与服务器数据库进行交互时所必需的登录管理和数据库连接以及提交语句(yj)、返回结果和处理错误。客户端数据管理层实际上就是开发人员或应用程序使用的数据库API。如DB_Library(Microsoft、Sybase)、OCI(Oracle)和SQLRuntime(IBM).第十二页,共41页。3.3.3 C/S3.3.3 C/S结构结构(jigu)(jigu)的数据库管理的数据库管理系统系统服务器端的客户管理:客户管理程序的作用是协调客户端的通信要求,为每个客户联系建立合法的数据通信渠道,为在网络上传送而使信息格式化,管理多种客户请求线程。服务器端的数据管理:数据管理程序处理每个客户的数据服务请求,验证和解析SQL请求,优化数据操作,生成存取计划,建立不同形式的锁控制并发,对数据库中数据的访问(存取计划)。客户对数据库的访问可以理解为:服务器端正确(zhngqu)解析客户发出的SQL请求,并作出回应或发回出错信息。第十三页,共41页。3.3.3 C/S3.3.3 C/S结构结构(jigu)(jigu)的数据库管理的数据库管理系统系统基于不同DBMS的差异和对不同SQL语言版本的支持,客户应用必须考虑采用何种数据库访问策略:选择开发客户应用的开发环境和选择适当的应用程序接口(API)。所有的客户机服务器数据库厂商都有自己支持的程序设计工具箱,他们可以独立建立定制的客户应用。特定于专门数据库的设计工具,提供了对本数据库最完美的支持,但可能忽略对其他数据库的全力支持,选择第三方厂商的开发应用集成环境,是对该空隙(kngx)的有力补充,他们往往注意数据库共性的同时,通过各种技术为异质数据库提供不同支持,如ODBC。第十四页,共41页。3.3.3 C/S3.3.3 C/S结构结构(jigu)(jigu)的数据库管理的数据库管理系统系统为了使客户应用能同时访问多种数据库,(既包括网络数据库,又包括单机数据库),应用开发环境所采用的技术往往有两种途径:支持诸如(zhr)ODBC这样的公共数据库接口API专门设计同时驱动多种安装在客户端的数据库驱动程序管理层。许多应用开发集成环境同时采用这两种途径,以便提高产品的通用性。如Delphi的 BDE(Borland Database Engine)。第十五页,共41页。3.3.4 C/S3.3.4 C/S结构结构(jigu)(jigu)的数据库系统的数据库系统C/SC/S系系统统的的并并发发控控制制:C/SC/S系系统统必必须须提提供供封封锁锁机机制制,事事务务编编程程要要尽尽可可能能避避免免死死锁锁,并并允允许许死死锁锁的的发发生生及及提提供供解解决决死死锁锁的的方方案案,保保证证并并发发执执行行的的同同时时维维护护(wih)(wih)数数据据的的一一致致。封封锁锁机机制制可可以以由由DBMSDBMS自自动控制,也可以通过显式加锁完成。动控制,也可以通过显式加锁完成。C/SC/S系系统统的的完完整整性性约约束束:在在C/SC/S系系统统中中,数数据据完完整整性性约约束束是是在在服服务务器器上上定定义义,并并由由服服务务器器来来检检查查约约束束,这这样样能能方方便便地地实实现现对对数数据据库库的的完完整整性性和和一一致致性性控控制制。如如果果由由客客户户机机检检查查约约束束,检检查查逻逻辑辑必必须须包含在每一个应用程序中,既浪费又容易出错。包含在每一个应用程序中,既浪费又容易出错。第十六页,共41页。3.3.4 C/S3.3.4 C/S结构结构(jigu)(jigu)的数据库系统的数据库系统C/SC/S系系统统(xtng)(xtng)的的安安全全性性控控制制:DBMSDBMS通通常常运运行行在在后后台台服服务务器器上上,自自身身已已具具备备安安全全管管理理功功能能。应应用用程程序序运运行行在在前前端端客客户户机机上上,安安全全性性问问题题由由开开发发者者自自己己设设计计。如如何何将将后后台台DBMSDBMS的的安安全全机机制制与与前前端端应应用用程程序序的的安安全全机机制制有有机机结结合合起起来来,形形成成统统一一的的安安全全保保密密机机制制。可可以以选选择以下几种方案:择以下几种方案:内内核核级级透透明明代代理理:每每个个数数据据库库应应用用只只建建立立一一个个真真正正的的数数据据库库帐帐号号(RootRoot),它它具具有有对对系系统统(xtng)(xtng)应应用用所所涉涉及及的的数数据据库库实实体体进进行行操操作作的的全全部部权权限限。为为每每一一个个系系统统(xtng)(xtng)操操 作作 人人 员员 分分 别别 创创 建建 一一 个个 应应 用用 系系 统统(xtng)(xtng)帐帐号号,放放在在数数据据库库中中的的UsersUsers表表中中。每每次次应应用用程程序序在在客客户户端端执执行行时时,首首先先以以RootRoot登登录录数数据据库库,然然后后执执行行登登录录程程序序,与与UsersUsers表表结结合合,实实现现应应用用系系统统(xtng)(xtng)登登录录。UsersUsers表表中中的的内内容容需需加加密密保保存存,数数据据的加密和解密通过应用程序完成。的加密和解密通过应用程序完成。第十七页,共41页。3.3.4 C/S3.3.4 C/S结构结构(jigu)(jigu)的数据库系统的数据库系统用户授权机制:后台服务器系统除了操作系统具有用户授权机制:后台服务器系统除了操作系统具有严格的用户等级机制外,严格的用户等级机制外,DBMSDBMS也具有严格的用户授也具有严格的用户授权管理机制。前端应用程序的安全机制与权管理机制。前端应用程序的安全机制与DBMSDBMS的安的安全机制统一起来,可以增强安全保密功能。全机制统一起来,可以增强安全保密功能。具体做法:从功能出发将整个系统细分为若干具体做法:从功能出发将整个系统细分为若干个可分配的最小权限单元,这些权限即对数据库中个可分配的最小权限单元,这些权限即对数据库中所涉及的表、视图的增删改查。然后运用角色或工所涉及的表、视图的增删改查。然后运用角色或工作组的概念,结合各种系统使用人员的工作性质,作组的概念,结合各种系统使用人员的工作性质,为系统创建各种操作等级,并为每个等级相应地授为系统创建各种操作等级,并为每个等级相应地授予不同的权限。用户等级及每种等级所对应的默认予不同的权限。用户等级及每种等级所对应的默认权限组合建立权限组合建立(jinl)(jinl)对照字典,管理员可以方便对照字典,管理员可以方便地增加等级或改变某一等级的默认权限。地增加等级或改变某一等级的默认权限。在统一管理下,既方便又可防止用户绕过应用在统一管理下,既方便又可防止用户绕过应用逻辑直接操作数据库的可能。逻辑直接操作数据库的可能。第十八页,共41页。3.3.4 C/S3.3.4 C/S结构结构(jigu)(jigu)的数据库系统的数据库系统智能型日志:智能型日志:DBMSDBMS的日志系统是为了保障事务故障、系统的日志系统是为了保障事务故障、系统故障和介质故障的恢复。智能型日志是数据库应用系统设故障和介质故障的恢复。智能型日志是数据库应用系统设计的为了跟踪系统使用情况的记录,相当于飞机的计的为了跟踪系统使用情况的记录,相当于飞机的黑匣黑匣子子。在系统中,智能型日志将记录:自某用户登录时起,。在系统中,智能型日志将记录:自某用户登录时起,到其退出系统时止,这段时间中执行的所有操作,包括登到其退出系统时止,这段时间中执行的所有操作,包括登录失败操作,具体内容有执行某操作的用户名、执行操作录失败操作,具体内容有执行某操作的用户名、执行操作的计算机的计算机IPIP地址、操作类型、操作对象、执行时间等。一地址、操作类型、操作对象、执行时间等。一旦系统发生故障或受到非授权用户的恶意攻击,通过查询旦系统发生故障或受到非授权用户的恶意攻击,通过查询日志系统的记载可追溯到事件发生的所有过程。另外,日日志系统的记载可追溯到事件发生的所有过程。另外,日志系统还可以使系统管理员分类检索日志内容,通过智能志系统还可以使系统管理员分类检索日志内容,通过智能推理日志内容,寻找推理日志内容,寻找(xnzho)(xnzho)系统中可能存在的不安全因系统中可能存在的不安全因素。如对同一帐号的连续三次登录失败,系统自动冻结该素。如对同一帐号的连续三次登录失败,系统自动冻结该帐号或封锁工作站。帐号或封锁工作站。第十九页,共41页。3.3.4 C/S3.3.4 C/S结构结构(jigu)(jigu)的数据库系统的数据库系统备份及恢复机制:数据库管理系统提供了事务故障、系备份及恢复机制:数据库管理系统提供了事务故障、系统故障的恢复例程,介质故障的恢复要靠统故障的恢复例程,介质故障的恢复要靠DBADBA来进行。来进行。DBMSDBMS提供的数据恢复机制并不能满足所有的应用情形。提供的数据恢复机制并不能满足所有的应用情形。为了防止存储设备的异常损坏,可以采用可热插拔为了防止存储设备的异常损坏,可以采用可热插拔的磁盘容错阵列或双机热备份等技术。为了防止人为的的磁盘容错阵列或双机热备份等技术。为了防止人为的失误或破坏,可建立强大的数据库触发器以备份重要数失误或破坏,可建立强大的数据库触发器以备份重要数据的更新操作,对删除操作,将被操作的记录全部存储据的更新操作,对删除操作,将被操作的记录全部存储在备份库中,对更新操作,可以备份执行过的在备份库中,对更新操作,可以备份执行过的SQLSQL语句语句等等。保证在任何情况下,重要数据均能有效地得到恢等等。保证在任何情况下,重要数据均能有效地得到恢复。复。只有将系统日志与备份数据有机地结合在一起只有将系统日志与备份数据有机地结合在一起(yq)(yq),才能实现系统安全的,才能实现系统安全的万无一失万无一失。第二十页,共41页。3.3.5 3.3.5 浏览器浏览器/服务器模式服务器模式(msh)(msh)随着Internet和Web技术的发展,大量的商业活动在 Internet展 开。在 典 型 的 C/S体 系 中,为Internet中的每一个用户安装一前端应用程序已不再现实,在自己的Web站点上同时保存某一应用程序的多个特定平台的版本也不可行。客户端安装某种具有一定翻译功能的统一的构件,充当用户与Internet之间的一个接口,同时是大部分应用程序运行的主要环境外壳,这一构件即浏览器。对于浏览器而言,程序和数据的具体位置并不重要,只需知道(zh do)它们的URL(通用资源定位符)。第二十一页,共41页。3.3.5 3.3.5 浏览器浏览器/服务器模式服务器模式(msh)(msh)基于浏览器/服务器计算模式的系统应运而生,它继承了C/S模式的优点,十分容易地实现了不同网络间的连接。目前应用广泛的浏览器/服务器计算模式主要是浏览器以超文本的形式向Web服务器提出访问数据库的请求,Web服务器接到客户(k h)请求后,激活对应的CGI程序将超文本HTML语言转化为SQL语法,将这个请求交给数据库,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理结果集返回CGI程序。CGI再将结果集转化为HTML,并由Web服务器转发给请求方的浏览器。第二十二页,共41页。3.3.5 3.3.5 浏览器浏览器/服务器模式服务器模式(msh)(msh)在浏览器/服务器模式中,客户端的标准配置是浏览器,业务处理功能处理从C/S代码中分离出来,由独立(dl)的应用服务器处理,Web服务器成为应用处理的标准配置,数据处理仍然由数据库服务器处理.浏览器/服务器模式是三层分布结构,即浏览器-Web服务器-数据库服务器.Web浏览器Web浏览器Web浏览器Web服务器数据库应用(yngyng)文件系统数据库应用数据库服务器数据库服务器数据库服务器客户层Web服务层数据库层第二十三页,共41页。3.3.5 3.3.5 浏览器浏览器/服务器模式服务器模式(msh)(msh)浏览器/服务器的三种工作方式:简单式:Web浏览器需要一个HTML页面时就提交一个URL地址到Web服务器,Web服务器从Internet上检索到所需的本地或远程的网页,并将页面返回到浏览器。也可使用Java Applet、ActiveX和Java Bean来加强表达。该模型只限于使用HTTP协议进行通信。交互式:在打开与服务器连接及传输数据以前,HTML获取用户输入的表单、文本域、按钮,通过这些内容(nirng)取得与用户的交互。HTTP服务器将输入信息传递服务器程序或某个脚本进行处理,Web服务器再从DBMS服务器中检索数据,然后返回浏览器,最后中断浏览器和服务器连接。该模型已经是三层结构,但每一个浏览器和服务器间的通信都要建立一个连接,造价昂贵。第二十四页,共41页。3.3.5 3.3.5 浏览器浏览器/服务器模式服务器模式(msh)(msh)分布式:客户程序是由可下载的Java编写,当HTTP服务器将含有Java小应用程序(Java Applet)的页面下载到浏览器时,小应用程序在浏览器中运行并通过构件与传输服务器上的小服务程序(Servlet)通信会话,小服务程序收到信息后,经过JDBC、ODBC或本地方法向数据库服务器发出请求,数据库服务器接到命令后,再将结果传给Servlet,最后送至浏览器。这种方式引入了分布式计算构件概念,使得函数也可以在网络上传递。这样,在网络环境下,不同电脑、不同操作系统之间的应用程序就可以彼此沟通,达到“平台无关”。该模型已不再局限于Web服务器和HTTP协议(xiy),还有DCOM,CORBA协议(xiy)等。浏览器/服务器模式引发了另外一个专门的技术领域Web数据库。第二十五页,共41页。3.3.6 3.3.6 分布式数据库体系结构分布式数据库体系结构DB1DB1DB1计算机1计算机1计算机1通讯(tngxn)网络北京(bi jn)重庆(zhn qn)上海银行系统背景:数据库系统+计算机网络第二十六页,共41页。3.3.6 3.3.6 分布式数据库体系结构分布式数据库体系结构基本特性(txng)分布性:数据存储在不同场地上。与集中式数据库不同。逻辑整体性:数据逻辑上是相互联系的一个整体。与分散在计算机网络不同站点上的一组没有相互联系的本地数据库区别开来。定义 DDBS(Distributed Data Base)是一个数据集合,这些数据,分布在计算机网络的不同计算机上,网络中每个结点具有独立处理的能力,可以执行局部应用,同时每个结点也能通过网络通讯支持全局应用。分布式数据库强调场地自治性(局部应用)以及自治场地之间的协作性(全局应用)。“在自治的结点之间协同工作”第二十七页,共41页。3.3.6 3.3.6 分布式数据库体系结构分布式数据库体系结构体系结构G-概念模式:定义DDBS中数据的整体逻辑结构,数据如同没有分布一样。分片模式:每一个关系可以(ky)分为若干互不相交的部分,每一部分称为一个片段。分布模式:定义片段的存放地点。G-外模式外模式(msh)G-外模式外模式(msh)G-概念模式概念模式分片模式分片模式分布模式分布模式L-概念模式概念模式L-概念模式概念模式L-内模式内模式L-内模式内模式L-DBL-DB第二十八页,共41页。3.3.6 3.3.6 分布式数据库体系结构分布式数据库体系结构数据在分布式数据库的存储途径复制系统维护关系(gun x)的几个完全相同的副本,这些副本存储在不同的结点上。分片关系(gun x)被划分为几个片段,各个片段存储在不同的结点上。分片方式水平分片:将关系(gun x)r按行分为若干子集r1,r2,rn,每个子集ri称为一个水平片段。一个水平片段可以看成是关系(gun x)上的一个选择。垂直分片:将关系(gun x)r按列分为若干属性子集r1,r2,rn,每个子集ri称为一个垂直片段。一个垂直片段可以看成是关系(gun x)上的一个投影。第二十九页,共41页。3.3.6 3.3.6 分布式数据库体系结构分布式数据库体系结构导出分片:导出水平分片,分片的条件不是关系本身属性条件,而是其它关系的属性条件。混合分片:关系按某种方式分片后,得到的片段再按另一种方式继续分片。复制+分片关系被划分为几个片段,系统为每个片段维护几个副本。数据项的命名(mng mng)每个数据项(关系、副本、片段)必须有唯一的名字,在分布式数据库系统中必须保证在不同的结点上不会用同一个名字来代表不同的数据项。第三十页,共41页。3.3.6 3.3.6 分布式数据库体系结构分布式数据库体系结构分布(网络)透明性分片透明性:用户或应用程序只对全局关系进行操作而不必(bb)考虑关系的分片。如果分片模式改变了,通过调整全局模式与分片模式之间的映象关系来保持全局模式不变。位置透明性:用户或应用程序不必(bb)了解片段的存储位置。局部数据模型透明性:用户或应用程序不必(bb)了解局部场地上使用的是哪种数据模型。分布式数据库系统(DDBS)的组成:全局用户、局部用户;全局数据库(GDB)、局部数据库(LDB);全局数据库管理系统(GDBMS)、局部数据库管理系统(LDBMS);全局数据分配(GDD)、局部数据分配(LDD)。第三十一页,共41页。3.4 3.4 中间件中间件在分布式计算环境中,有两层的C/S模式、三层的C/S模式、三层的B/S模式以及多层的计算模式,不同层次之间需要相互通信。在两层系统中,关系数据库开发商提供一些专用库和驱动程序来访问数据库。由这些专用程序对不同网络协议进行抽象,在写客户应用程序时无需考虑数据库的实际位置(wi zhi),客户层应用程序可以链接适当的动态或静态库与数据层进行通信,这些动态或静态库保证了请求和数据格式的一致、访问优化、分布式服务管理,称为中间件(如ODBC)。第三十二页,共41页。3.4 3.4 中间件中间件多层系统中需要更复杂的关系实现跨网络、跨层次的通信,客户应用程序需要一种通信模型,来协调应用程序的不同平台。当这种模型实现后,就出现了为这样的客户应用程序提供中间件基础的标准。多层系统中中间件是建立在一种通信模型基础之上。中间件定义(dngy):中间件(Middleware)是分布式环境中保证操作系统、通信协议、数据库之间进行对话、互操作的软件系统。在C/S环境中,中间件同时存在于客户端和服务器端,负责客户和服务器间的请求和回答。在分布式环境中,中间件允许不同服务器之间相互通信。第三十三页,共41页。3.4 3.4 中间件中间件中间件作用(zuyng):保证网络中各部件之间透明地连接,即隐藏网络部件的异构性,保证不同网络、不同DBMS和某些访问语言的透明性。网络透明性:能支持所有类型网络。服务器透明性:不管服务器的DBMS是何种型号,一个好的中间件都能通过SQL语言连接起来。语言透明性:客户机可用任何语言进行请求和接受回答,并保证数据类型的相互转换。第三十四页,共41页。3.4 3.4 中间件中间件由于用途不同,存在不同种类的中间件,主要有数据访问中间件、远程过程调用中间件、分布式事务处理中间件、对象调用以及面向消息的中间件等。不同种类的中间件基于不同的通信模型。为了满足不同客户实现(编程语言)的需要,中间件技术(jsh)在近10年中得到极大发展。第一个获得广泛认可的中间件技术(jsh)是远程调用中间件(RPC)。使用远程过程调用,客户可以在远程计算机上执行C语言函数。对于远程过程调用体系结构来说,ONCRPC(Open Network Computing RPC)和 DCE(Open Groups Distributed Coputing Environment)是主流标准。第三十五页,共41页。3.4 3.4 中间件中间件随着面向对象语言的流行(lixng),分布式中间件也朝面向对象方向发展,OMG(对象管理组织)提出了CORBA(Common Object Request Broker Architecture),微软提出了COM(Component Object Model),都是规范分布式对象体系结构的尝试。许多开发商推出了基于这些规范的中间件。IBM早在20世纪90年代初就提出了系统对象模型SOM(System Object Model)。为了避开与微软竞争,IBM也转向了CORBA。第三十六页,共41页。3.4 3.4 中间件中间件ODBC(Open Database Connect)它是由Microsoft 公司于1991 年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件。它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互来实现对数据库的操作,避免了在应用程序中直接调用与数据库相关的操作,从而提供了数据库的独立性。传统的数据库编程方式是主语言+DML。由于各厂商的SQL版本不同,不同厂商的DBMS在客户机与服务器之间使用的通信协议不同,使得特定的前端应用不能访问不同的数据库。因此有必要建立(jinl)一个公共的、与数据库无关的应用程序设计接口(Application Programming Interface,API)。最先推出的公共API是微软的ODBC。它以C/S结构为设计基础。第三十七页,共41页。3.4 3.4 中间件中间件使用ODBC开发数据库应用程序时,在应用程序中调用(dioyng)标准的ODBC函数和SQL语句,通过加载的驱动程序将逻辑结构映射到具体的DBMS,即连接数据库和存取数据库的底层操作由驱动程序驱动各个数据库完成.ODBC数据应用程序驱动程序管理器SQLServer驱动程序Oracle驱动程序Foxpro驱动程序Sybase驱动程序DB2 驱动程序DBDBDBDBDBSQLServer数据源Oracle数据源Foxpro数据源Sybase数据源DB2数据源第三十八页,共41页。3.4 3.4 中间件中间件驱动(q dn)程序管理器是一个动态连接库(DLL),用于连接各种DBS的DBMS驱动(q dn)程序,管理应用程序和DBMS驱动(q dn)程序之间的交互作用。驱动(q dn)程序也是一个动态连接库(DLL),当应用程序调用SQLConnect时,驱动(q dn)程序管理器加载驱动(q dn)程序。ODBC规范定义的驱动(q dn)程序有两种类型:单层驱动(q dn)程序和多层驱动(q dn)程序。单层驱动(q dn)程序:单层驱动(q dn)程序不仅要处理ODBC函数调用,还要解释执行SQL语句,执行DBMS功能。单层驱动(q dn)程序本身是一个数据库引擎,尽管该数据库可能位于网络的任何地方,但由它直接可完成对数据库的操作,Xbase DBS的驱动(q dn)就属于这种。应用程序把存放数据库的服务器作为文件服务器使用,在网络中传输的是整个数据库文件。第三十九页,共41页。3.4 3.4 中间件中间件多层驱动程序:多层驱动程序只处理应用程序的ODBC函数调用和数据转换,它将SQL语句传递给数据源服务器,由DBMS解释执行SQL语句。SQL Server等数据库的DBS就属于这种。使用多层驱动程序,在数据库服务器上实现对数据库的各种操作,在网络中只传输用户请求和数据库处理结果。应用程序的主要功能是:调用ODBC函数,递交(djio)SQL语句给DBMS,检索出结果并进行处理。应用程序的操作可包括:连接数据库;向数据库发送SQL语句;为SQL语句执行结果分配存储空间,定义所读取数据的格式;处理错误;向用户提交处理结果;请求事务的提交和回退操作;断开与数据源的连接。第四十页,共41页。作业作业(zuy)(zuy):1.一个典型的数据库应用程序有哪四部分组成(z chn)?2.客户机和服务器的任务各是什么?3.从C/S的结构看,其发展趋势如何?4.举例说明C/S系统开发中的并发控制、安全控制等管理问题。5.分布式数据库系统的优点缺点是什么?6.结合实际谈谈B/S模式中的中间件。第四十一页,共41页。