北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3 数据库应用系统体系结构
? 数据库应用系统的发展经历了主机 /终端模式,
客户机 /服务器模式之后, 随着 Internet的发
展, 又出现了浏览器 /服务器模式, 以及分布
式数据库体系结构 。
3.3.1简介
3.3.2客户机 /服务器结构
3.3.3 C/S结构的数据库管理系统
3.3.4 C/S结构的数据库系统
3.3.5浏览器 /服务器模式
3.3.6分布式数据库体系结构
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.1简介
? 早期数据库系统是 集中式的体系结构, 所有访
问数据库的应用程序以及用户终端发送并接受
数据的通信都在一个宿主计算机 (UNIX大型或
小型机 )上运行 。
? 随着 PC机的兴起,单用户的 DBMS出现,DBMS的功
能和数据库应用功能结合在一个应用程序中,
数据库应用处理用户输入和屏幕输出的同时,
也处理对数据库中数据的访问 。
? 基于 PC的单用户 DBMS不支持事务处理和回退恢
复,不能保证数据的安全和完整, 但查询速度
并不一定慢 。
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.1简介
? 基于 PC的 多用户 DBMS建立在文件服务器前提下, 客户
端运行服务器的应用程序, 文件服务器将客户申请的
文件传送给客户机器, 数据处理过程在客户机器上进
行 。 这种方式网络传输的是数据文件, 传输量大, 数
据锁定在解决并发时存在困难 。
? 事务处理的性质使数据库系统从集中式, PC系统过渡
到客户机 /服务器系统, 并使分布式系统成为可能 。
? 客户机 /服务器 系统最本质的特点在于:客户 PC运行数
据库应用 (界面处理 ),数据库服务器运行全部或大部
分 DBMS(数据处理 )。 服务器运行 SQL,将查询结果传送
到客户端, 减少了网络信息的传输,系统采用数据锁定,
事务技术, 存储过程等数据库技术保证数据完整一致
准确 。
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.2客户机 /服务器结构
? 客户机 /服务器 (Clien/Server)结构可以
指硬件结构,也可以指软件结构 。
– 硬件结构 指某项任务在两台或多台计算机之
间进行分配,客户机来运行提供用户接口和
前端处理的应用程序,服务器提供可供客户
机使用的各种资源和服务。
客户机在完成某一项任务时,通常要利用
服务器上的共享资源和服务器提供的服务。
在一个客户机 /服务器体系结构中可以有多
台客户机、多台服务器。
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.2客户机 /服务器结构
– 软件结构 指把一个应用系统按照逻辑功能分
成四个组成部分,用户界面、应用表示逻辑、
事务逻辑、数据管理,按照其相对角色的不
同区分为客户端和服务器端软件。客户软件
能够请求服务器软件的服务。客户软件和服
务器软件可以分布在网络中不同的计算机节
点上,也可以放置在同一台计算机上。
终端 数据库
应用程序
用户
界面
应用
逻辑
事务
逻辑
数据管

GUI 3GL
4GL
SQL ORACLE
DB2
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.2客户机 /服务器结构
? 常见 C/S体系有两层结构和三层结构 。
? 两层 C/S结构 的基本工作方式:客户程序运行用户的应
用程序,向数据库服务器发送 SQL请求, 数据库服务器
接受客户机的请求,并将处理结果返回客户端 。
一个功能强大的客户应用开发语言和一个多用途的
用于传送客户请求到服务器的机构是整个两层结构的
核心 。 在一个数据存取事件中, 数据由服务器实施存
储和访问, 数据库引擎负责处理从客户端发来的请求 。
把 SQL语言从客户机传送到服务器上必须能识别服务
的标识符或由一个应用程序接口来完成, 还必须知道
服务器的位置, 数据组织形式以及数据如何定义 。 在
服务器中, 请求将得到存储逻辑和处理的进一步优化,
例如使用权限, 完整性, 并发控制等 。
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.2客户机 /服务器结构
? 两层 C/S结构具体又分为两种实现方式:
– 一种是客户端完成界面显示和应用逻辑,服务器完
成事务逻辑和数据管理。这种情况是以客户为中心
的。
这种方式下,表示部分和应用逻辑耦合紧密,比
较适用于应用相对简单、数据访问量不大的情况。
– 另一种以服务器为中心,一些重要的应用逻辑放在
服务器上,充分利用服务器的计算能力,通常以存
储过程和触发器出现,减少网络压力,提高系统性
能。
这种方式下,存储程序依赖于特定数据库,不同
数据库间的移植不太容易。
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.2客户机 /服务器结构
? 把两层结构中服务器部分和客户端部分的应用
单独划分出来, 即形成三层 C/S结构 。
? 在 X/Open DTP标准中描述了三层 C/S模型:由
应用程序定义各种操作来执行完成特定任务,
它定义事务的范围并把服务要求提交给事务管
理器, 通信管理器及一个或多个资源管理器 。
资源管理器提供应用程序的事务间的服务,
通常是一个数据库 。
事务管理器提供事务的服务 。 如果事务跨越
多个平台, 那么其中一个的事务管理器为该事
务的事务管理器 。
通信管理器提供通信服务的接口以及管理应
用层协议 。
北京邮电大学软件学院 郭文明 2003.06
,数据库设计与开发, 讲义
3.3.2客户机 /服务器结构
? 数据库应用的三层 C/S结构将应用分成表示部
分, 应用逻辑 (或称商业逻辑 ),数据访问部分 。
三层 C/S结构使各部分相互独立并单独实现,
分别称为客户, 应用服务器和数据库服务器 。
? 三层 C/S结构中数据在发送到网络之前由功能
服务器加以过滤, 网络流量会减少, 另外客户
端并不是直接同数据库打交道, 而是通过中间
层的统一调用来实现, 在 灵活性和独立性方面
较好, 适合于不同数据库的互联 。
客户 1
应用服务器 数据库数据库服务器
客户 N

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