【IT168 技术文章】
1 引言
当为客户开发一个定制的数据库应用时,我们考察了采用客户/服务器体系结构(Client/Server Architecture)的必要性。为什么要采用C/S体系结构?先进、性能、潮流等都不是问题的实质。真实答案来自对客户现在、未来和潜在需求的研究。
2 C/S体系结构简介
2.1 C/S结构的数据库应用
最简单的C/S体系结构的数据库应用,由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,称为应用服务器,一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户程序运行在用户自己的电脑上,对应于服务器电脑,可称为客户电脑。当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果。
在典型的C/S数据库应用中,数据的储存管理功能,是由服务器程序独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号不准重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)这背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序可以变的非常“瘦小”,麻烦的事情,都交给了服务器和网络。在C/S体系的下,数据库真正变成了公共、专业化的仓库,受到独立的专门管理。
2.2 非C/S结构的应用
与C/S体系形成对比,传统的数据库应用体系结构,例如基于主机-多终端的系统,或基于LAN上文件服务器运做的多用户系统,数据库是属于应用程序“私有的”,即使它也可以将数据文件放置在某台机器上供不同的用户共同访问(这种情形,称为“文件服务器”),但所有的操作、规则,都是在一个包罗万象的应用程序内部实现的。应用程序因此具有最大的复杂性,即使是原班开发人马,要想对已有功能加以扩充也是很困难的,当数据库稍具复杂性(比如有稍多相互关联的表与规则),其他的人员开发另外的程序共同操作这个数据库的数据,几乎不具可行性。
3 是否采用C/S体系结构的讨论
3.1 当前确定的需求
在这个案例中,已经确定的需求,就是建立一个集中、统一的数据库,实现更新、查询和格式化打印输出操作。访问者分布在总公司(约30人的规模,集中办公,连结于一个小型的LAN中)和外地的子公司(同样是集中办公,连结于一个比总公司大的LAN中)。每一处典型的同时访问人数,在10人以下。两处都有机会更新数据库中的数据。理想的情况下当然是两处的数据随时保持一致,但在特别关键的信息可以随时通过电话、传真等方式直接交换的情况下,两地的信息每隔一至二天交换更新一次,是可以接受的,这也就是目前的实际情况,从业务人员的立场上,尚没有提出在这个周期上作出戏剧性的改变的要求。针对当前的已经明确的需求,作出如下讨论:
采用C/S架构,选择适当的数据库平台,可以实现数据库数据的真正“统一”,分布于两地的数据同步完全交由数据库系统去管理,逻辑上,两地的操作者都直接访问同一个数据库。它的有效实现,有这样一些问题:
如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,这需要高昂的投资和复杂的技术支持,高的维护成本。
可以根据实际的需要,采用“间歇”同步策略,通过合理分配两地的工作(这一点是现实业务中已经很好地实现的),基本可以避免分别更新数据可能对业务带来的问题。对数据库同步更新的间隔,可以天为最小单位,在这样的同步需求下,采用复杂和昂贵的“分布式数据库”管理技术[注1],是不划算的。
在该案例中,当前需求的一个重要特征,是在LAN中的多用户操作。进一步分析该客户的要求可以得知,数据更新的频率是很低和集中于少数用户的。大量可能的并发性操作来自查询。
对于本例的应用要求和环境,采用基于网络文件服务器开发非C/S结构的应用,也完全可以满足,虽然C/S结构下的多用户应用可以更好(比如更完善的用户共享特性,用户管理,以及更好地平衡服务器与客户机之间的负荷,大幅度降低网络传输的负荷等),但就用户立场而言,并没有采用C/S结构直接的必要性。
[注1]:应当说明,对于其他的架构的数据库体系,同样可以实现分布式的数据存储与管理,但从本例实现的角度看,比起基于C/S架构的体系,要复杂和昂贵。
3.2 潜在和不确定的需求
在电脑应用定制开发的领域,要想真正令客户满意,就必须真正理解用户的需求,尤其是那些潜在的需求。比如,上述对数据同步更新频率的需求,是基于现在的业务方式与节奏的,一旦电脑系统投入应用,改变了整个作业的节奏,就可能提出更高的要求。此外,公司的业务量的不断发展,客户对于公司作出反映的时间的提高,都会导致对电脑系统需求的提高。
在这个案例中,用户的应用方式和规则具有不确定性和不断改变发展的特征,但数据库描述的基本对象却具有相对稳定、有序扩充的特点,因而数据库的结构相对稳定,也就是说,基于对实体的深入分析和抽象作出的数据表是相对稳定的,随着未来的发展,多数的变化将是新表的增加及数据项的增加,而较少更改。
针对这个特征最直接有效的策略,就是将易变的部分(应用和应用规则)和相对稳定的部分(数据和基本属性、结构)分离,这正是C/S结构数据库应用的典型模式。
从原理和经验上看,对本案例或类似的应用,C/S结构是目前技术条件下,能较好适应不确定和变化的需求环境的比较现实的方案。它可以令我们以较低的投入,实现将易变与稳定的要素分离,快速地增添和替换“瘦小”而互相独立的前台应用,保持数据的连续性和继承性。