计算机工程
COMPUTERENGINEERING
1999年 第25卷 第5期  Vol.25 No.5 1999



一种基于构件的DBMS体系结构模型及其实现技术
张文祥 方潜生
摘要 分析了商业数据库管理系统的特点，提出了基于构件的数据库管理系统结构模型DBCAM，并给出了具体的实现技术。
关键词 构件 数据库管理系统结构模型 协高器 映射器
A Kind of DBMS Architecture Model Bases on Software Components
and Its Implementation Technology 
Zhang Wenxiang
（Zhangjiakou Teacher's College Zhangjiakou 075000)
  Fang Qiansheng
(Anhui Institute of Architecture Hefei 230000)
[Abstract]By analyzing characters of commerce DBMS,this paper puts forward a kind of database architecure model bases on sofware components and its implementation technology .
[Key words] Software components;DBCAM;Coordinate ware;Map ware
　　我们在开发和调研了日本东和公司的百货业管理系统(标准版)、上海华联环球商厦商业管理系统、四川云龙商厦商业管理系统、北京双安百货商场商业管理系统、北京百盛百货商场商业管理系统的基础上，发现商业MIS有下特点：①商业管理发展到今天其运作模式已基本成熟，各商场的人工管理模式大同小异；②各商业MIS的不同主要表现在计算机模拟人工管理之水平的不同，有的商场全面模仿人工管理，有的仅部分替代了人；③一个最突出、最有趣的现象是同一计算机管理水平的商业MIS系统的运作内核往往相同，而界面的表现形式和操作方式千差万别：④操作界面显示给操作者的全是领域术语。
　　据上分析，可以得到如下启示和开发原则：①应把开发重点放在针对某一领域的、尽量含盖这一领域所有企业规则的服务器构件集上，并且利用服务器构件达到企业规则和M1S系统支撑数据(即与领域知识无关的数据，如时间等)的隐藏；②服务器构件提供给界面应用程序的接口除功能模块调用接口外，还应有相关领域术语的一个集合，使界面应用程序的开发者仅仅面对单纯的模块调用和领域术语，不需了解整个系统。
　　按上述原则开发应用系统将带来以下益处：
　　(1)可达到成熟的数据库技术和新兴的构件技术的结合，提高应用软件的开发效率，因构件一般都经过反复测试和实际应用，具有高可靠性和高效率，因而也提高了整个应用系统的可靠性和运行效率。
　　(2)可对目前大量己投入使用的M1S系统进行改造，使其具有演变性和重组性，以适应领域技术的发展和变化，提高企业的管理水平和竞争力。
　　(3)应用系统的维护工作和软件开发人员的流动一直是捆扰软件行业的一个严重问题，用服务器构件的思想指导应用软件的开发，可促使开发人员分为服务器构件开发人员和客户软件开发人员两类，因客户程序的开发不要求开发人员吃透用户需求文挡，并且商品化的数据库前端开发工具又具有很好的易用性，可使新投入的开发人员迅速上手；又因构件具有参数化、可定制、可演变的特点，因此可把部分维护工作交给用户，以解决软件的难维护问题。
1 基于构件的数据库管理系统结构模型(DBCAM)
1.1 客户
　　领域数据库管理系统的前端(一般安装在C／S系统的客户计算机上)，是人机交互的接口。它通过协调器提出局部或全局操作的申请，至于协调器向哪些服务器构件发出指令，对于客户是透明的，这样非常容易增加新的客户。它相当于COM中的构件对象用户。
1.2 协调器
　　负责全局信息共享的协调，直接响应客户的全局操作请求。它把全局操作请求分解成若干个子操作，并发往服务器。它相当于构件系统模型CSM的软件总线(SoftwareBus)。它包括服务器构件调用接口、映射器、互操作器3部分。
　　(1)服务构件操作调用接口　对客户提供一个标准的操作界面，客户对构件对象服务器构件)的操作必须通过此接口。DBCAM的接口相当于COM的接口，其定义也是“在构件对象上实现的一组与语义相关的功能”，即一组操作模块调用名。
　　(2)映射器　由相关领域术语集合、局部模式(即领域框架)存储、客户请求分析部分和表接口生成部分组成。在数据库系统中，前端客户要对后台的数据库进行操作，必须针对某个表或多个表，除了操作调用接口外还必须有数据库表的接口。映射器通过对客户请求的分析、模式匹配生成客户与服务器构件间的数据表接口(或库接口)，并对局部数据处理器和存储进行包装，以达到对部分信息进行隐藏的目的。映射器的分析、匹配和生成3种操作都是静态完成的，在客户与服务器构件之间的表接口生成后，客户和服务器间的通信就不需要映射器的介入，其功能相当于CORBA的静态调用接口或COM的连接机制。
　　(3)互操作器　客户的全局请求通过互操作器分解成若干局部操作，并启动、协调若干个相应服务器构件的操作共同完成某个任务。其功能相当于CORBA的对象请求代理机制ORB。
1.3 服务器构件(库构件)
　　由局部数据处理器和局部数据存储组成，完成特定任务的操作(子程序)和相关数据的存储(数据库、数据库的一个表或多个表)。局部数据处理器和局部数据存储器相当于COM的服务器(构件对象)。
2 DBCAM的实现技术
2.1 客户的实现
　　对于任何一个基于C/S的MIS系统，客户端的主要任务是完成人机交互，而交互的信息、无一例外都是一些与领域有关的、公共的、明了的专业术语。例如：商品编码、商品价格、商品数量等，操作人员仅对与这些领域术语相关的数据进行增、删、改、查，这些术语在数据库中实质上是实体对象的属性，对应到关系数据库中就是数据库表中的字段。在DBCAM体系中，因服务器构件提供了功能调用接口和领域术语集接口，所以开发者面对的好像是一个单一的数据库表，至于这个表与其它数据库表之间的交叉引用和操作已被服务器构件所隐藏，因而可迅速开发出客户程序来。又因大部分前端开发工具都支持多级继承和数据封装，因而可将有共性的客户制作成构件以实现软件的重用。
2.2 服务器构件的实现
　　将一些领域相关、功能相对独立的多个(或一个)数据库表、表中的数据和表上的操作在逻辑上集中在一起就构成服务器构件，其中数据库表和数据组成局部数据存储，表上的操作构成局部数据处理器。DBCAM中的局部数据处理器利用关系数据库系统中的存储过程来完成的。存储过程是一组编译后存放在服务器数据库端的SQL语句，在客户端的应用程序中可直接对它们进行调用。因为它们完成的业务功能带有领域通用性和共享性的特点，因此可重用。例如，在商业管理系统中的销售部分可分离出：批发销售、后台销售、退货销售、代销商品销售、POS机数据采集等服务器构件，它们分别由相关的数据库表和存储过程组成。
2.3 协调器的实现
　　协调器对客户构件是一个接收请求的接口。对服务器构件除是下达命令的外接口外，更主要的任务是协调各服务器构件的工作。它包括服务器操作调用接口、映射器和互操作器。
　　(1)映射器 它在逻辑上由专业术语集合、局部模式(即领域框架)存储、客户请求分析部分和表接口生成部分组成，在物理上有一个数据库表(映射表)和处理程序组成。专业术语集合实质上是服务器构件中多个数据库表中的字段名(也是专业术语)的并集。这个专业术语集存储在映射表的一个字段中，其它的字段分别存储服务器构件的各数据库表的字段名。客户的开发人员仅能看到这个并集中的字段，他要对那些字段进行操作就选择哪些，映射器的处理程序根据客户对字段的选择来确定客户到底对哪些数据库表进行操作，即进行模式匹配，然后动态地建立一个数据库的视图(或一个临时表)－表接口，客户程序仅仅通过此表接口进行数据库的操作，就像客户仅操作一个单表。
　　(2)互操作器 通过数据库提供的存储过程和触发器机制来实现。因为目的是构造针对某领域的构件和系统，所以各个数据库表之间的关联关系是有一定规律的，因而可以用存储过程和触发器来实现这种关联。例如，在MIS系统中常常碰到这种情况，当更新了某个表中的数据时另一个表中的数据也必须随之变化，这种数据间的连动关系用触发器和存储过程来实现是最恰当的。这也就达到了数据库表之间联系的隐藏。
　　(3)调用接口　存储在后台机器上的过程调用名。
2.4 一个例子
　　在商业管理系统的出入库管理子系统中涉及3个主要的数据库表为：①移管表，主要字段有移出地编码、商品编码、移管请求数、移管出货数、移管接收数、移入地编码等；②出库表，主要字段有移出地编码、商品编码、出库请求数、出库实绩数、接收地编码等；③采购员移管表，主要字段有移出地编码、商品编码、采购员请求数、移入地编码等。我们在制作出入库管理服务器构件时，要建立专业术语集合到实际数据库表的对应―映射表，见表1。
表1 出入库服务器构件映射表
术语集合移管表出库表采购员移管表
移出地编码商品编码商品编码商品编码
移管请求数移管请求数　　
移管出货数移管出货数　　
移管接收数移管接收数　　
出库请求数　出库实绩数　
出库实绩数　出库实绩数　
出库请求数　　　
采购员请求数　　采购员请求数
移入地编码移入地编码移入地编码移入地编码

　　在开发出入库管理子系统的客户应用时，开发者仅需在此表的第一字段(专业术语的集合)中选择要显示的专业术语，如移出地编码、移管请求数、移入地编码，然后由协调器的分析部分对开发者的选择进行分析和匹配，发现此客户程序要操作的表是移管表，此时由表接口生成一个视图，这个视图对移管表进行了包装，客户的所有的操作都是基于此视图而不是移管表。
　　在对上面生成的视图进行操作时，如更新了移管出库数，此时也必须更新其它的表，如商品在库表的商品在库数字段。这种连锁数据的更新由互操作器完成，也可以通过服务器的操作调用接口调用某过程来完成。
　　由上面的叙述可以看出协调器提供给客户程序开发者的仅仅是一个单表和几个过程调用名，又因服务器实现的功能具有领域普遍性，所以既可以达到软件重用和开发简单的目的，又可满足特定业务的需求。
　　在开发中应注意两条原则：①粒度划分的原则：服务和客户的粒度划分可大可小，没有一个统一的标准。粒度太大，一般通用性小，代码重用率低；而粒度太小，虽然组装灵活、重用性好，但组装的工作量大、管理麻烦。一般应按语义相关性原则对数据库的表和其上的操作进行集中，构成一个局部处理对象。②利用数据库产品在客户和服务器之间分置处理功能，将与特定业务有关的功能放在客户程序中处理，将通用或共享的处理功能放在服务器构件中实现。
3 小结
　　(1)基于构件的数据库系统结构模型DBCAM尽管也适用于小型数据库系统，但用于小的应用系统意义不大，它的着眼点是针对基于C/S的中大型关系数据库系统，如Sybase，MS SQL Server、Oracle等。
　　(2)客户有可能是构件也有可能不是，要看其重用性。
　　(3)此模型的目的是达到服务器构件(库构件)的重用，至于界面构件(客户构件)和耦合构件的集成和重用不在本文中讨论。
　　(4)协调器对服务器构件进行了“包装”。“包装”与面向对象技术中的“封装”不完全相同，面向对象中的“封装”提供了数据隐藏的机制，而本文是利用成熟的数据库―关系数据库系统构造应用软件，因而仅将数据库的表及建立在它们之上的操作“包装”成服务器构件，只是隐藏了部分数据和操作，在服务器构件和客户之间还有数据的流动。
作者简介：张文祥 男，35岁，讲师，主攻方向为数据库及构件重用技术
作者单位：张文祥 张家中师范专科学校 张家口 075000）
　　　　　方潜生 安徽建筑工业学院 合肥 230000）
参考文献
1 车敦仁,周立柱.软件体系结构、应用平台及框架仓库技术.计算机研究与发展，1996(7)：53
2 吕丽民，陈火旺.OOFMD软件的重用与集成分析.计算机学报，1996(3)：8
收稿日期：1998-06-30
