周志敏,岳国英,陈忠文,毛 辉
(浙江水利水电专科学校计算机与信息工程系 杭州310018)
Internet的发展为各种跨区域应用需求提供了基础,基于Web的应用系统越来越多,使得网络上的数据传输效率成为瓶颈。随着Web应用的普及和发展,人们对数据传输效率越来越关注,期望越来越高,Web应用与数据传输效率之间的矛盾也越来越突出。因此,使应用程序按需、高效、准确地进行数据传输是Web应用系统设计与开发人员需重点考虑的问题之一[1,2]。
在现实应用中,数据传输效率问题并没有统一的答案,因此,数据传输策略也没有统一的标准。从应用目的角度出发,不同的应用对数据传输效率的要求也不一样。例如,对于银行、证券等应用系统,会将数据传输的安全性、可靠性放在首位,其次才是数据的传输速度;而在一些以信息服务为主的应用系统中,会将数据传输速度(响应速度)放在首位。但是,无论怎样的应用系统,肯定是既要考虑数据的安全性、可靠性,又要考虑数据的传输速度,本文重点讨论后者。
Web应用系统的数据主要以数据库方式存储。合理的数据建模、恰当的查询语句都可以提高应用系统的数据传输效率。从数据库角度考虑,影响数据传输效率的因素与对策主要有以下几点。
(1)优化数据结构
在对应用系统的数据进行建模时,既要遵循数据库设计的规范化要求,又要考虑具体的应用对数据的要求,从而合理地设计数据结构,以快捷高效地组织与管理数据。
(2)合理设计索引
利用索引可以提高数据查询的效率,特别是在数据量大的表中效果尤为明显。对于经常作为查找关键字的属性,DBA(data base administrator)应将其作为索引关键字建立索引。但是不管是聚簇索引还是非聚簇索引,都需要对数据进行动态排序(不同的是,前者是对数据进行物理重排,故一个表中只能有一个聚簇索引;后者是对数据进行逻辑重排,故一个表中允许有多个非聚簇索引)。所以,当对表进行增、删、改时,表中的数据都会根据索引关键字重新排序,这会产生系统开销。因此,对于频繁修改或重复值较多的属性,不宜作为索引关键字。
(3)合理地使用视图
视图是由若干个表或视图组成的一个逻辑表。为不同的应用合理地设计视图,不仅可以过滤掉不必要的数据项(在某种程度上加强了数据的安全性),避免程序员对数据组织不必要的理解难度,加强DBA和程序员的数据使用职责,而且可以简化应用程序中的SQL语句,减少服务器端执行SQL的响应时间,从而提高数据传输效率。
(4)合理地使用主动数据库技术
随着数据库技术的广泛应用和深入发展,应用领域对数据库系统主动服务的要求越来越多[3,4]。各种DBMS产品也都具有不同程度的主动数据服务功能。这些功能按一定条件触发并自动在DB Server上执行,减少了应用程序与DB Server的通信次数,从而提高数据处理的响应速度。
通常Web应用系统是一个由客户端、应用服务器、数据库服务器组成的3层结构[5],如图1所示。Web应用系统的业务流程一般是根据从客户端采集的用户需求,访问数据库得到数据集,在应用服务器上组织数据,然后在客户端进行页面显示。
根据图1,针对应用系统业务流程的执行方案有3种:方案1是将其放在“应用程序”层中;方案2是将其放在“ORDBMS(object relational data base management system)”层中;方案3是将其部分放在“应用程序”层,部分放在“ORDBMS”层。
对于方案1,由于对业务流程的执行动作全部放在“应用程序”层中,不仅使得系统对数据库的操作只能在被动服务状态下完成,而且所有数据都需要在网络上传输,数据传输占用网络开销较大。
对于方案2,当业务流程需要主动数据库服务时,采用触发器完成,不需要应用程序调用(即与应用程序无关)[6,7];当业务流程不需要主动数据库服务时,采用数据库对象存储过程完成,使其成为应用程序调用的一个外部过程,这样就可以将系统的业务流程全部封装在“ORDBMS”层中。如此,不仅可以充分利用“ORDBMS”的主动服务性能,使得业务流程具有逻辑独立性,便于系统的维护[8];同时,由于系统的业务流程在数据库服务器端完成,减小了网络资源开销,加强了系统安全,提高了应用系统的数据传输效率。
对于方案3,可以将数据量特大的业务流程放在“应用程序”层,处理时将其分解为若干个数据分组分别传输,以均衡网络负载(如果这些数据整体传输,可能会引起网络长时间堵塞)。对于数据传输量不大、传输次数单一的业务流程,也可以放在“应用程序”层。而对于一般的业务流程,应该放在“ORDBMS”层,以减少网络开销,提高数据传输效率。
定义1(交易)用户为某一需求对应用程序进行操作,应用程序成功地执行了此操作,并将操作结果反馈给用户,将该过程称为一次交易(或一笔交易)。交易是最小的用户需求确定的一次业务流程。
定义2(数据)在交易中,当数据是通过SQL命令获取时,将一条SQL命令获取的数据称为一种数据。
一笔交易往往从页面采集用户提供的数据,应用程序做出判断,如果用户提供的数据正确,则访问数据库,获取用户需要的数据,然后传给客户端组织页面进行显示。这个过程按数据传输批次可分为多批次传输和单批次传输两种。
定义3(ADMP方法)对于一笔交易所需要的n(n>0)种数据,若应用程序分为n次向数据库服务器发出数据处理请求,数据库将每次数据处理的结果依次传给应用程序。这种数据请求、处理与传输的过程称为多批次处理方法,简记为ADMP方法。
一笔交易数据采用ADMP方法的流程如图2所示。
在ADMP处理方法中,n种数据请求形成一个等待队列。数据库接受一个数据处理请求时,应用程序处于等待状态,数据库服务器处理完一个请求,需要将结果传输给应用程序,应用程序继续执行,再向数据库服务器发出下一个数据处理请求,服务器再处理,依次处理n个请求,直至数据处理请求队列为空,并且将结果传输给应用程序,应用程序再将结果传递给客户端组织页面进行显示,本次交易结束。
定义4(ADSP方法)对于一笔交易所需要的n(n>0)种数据,若应用程序只向服务器发出一次请求,将该交易需要的所有数据通过调用事先在数据库中设计好的存储过程进行处理,然后将结果整体回传给应用程序。这种数据请求、处理与传输的过程称为单次处理方法,简记为ADSP方法。
ADSP方法需要DBA将这笔交易所需要的全部数据的处理过程,在数据库中形成一个存储过程PRO(x1,x2,…)(一种数据库对象)。交易时,应用程序只需要调用该存储过程,数据库服务器会将交易所需要的全部数据一次性传输给应用程序。其流程如图3所示。
在上述讨论的诸策略中,合理地设计数据库、规划应用系统的业务处理方案,对提高数据传输效率非常重要。这些与DBA、系统分析师、软件设计师的经验密切相关,而且没有严格的标准和有效的度量方法,只有靠技术人员的项目经验优化数据传输策略,提高数据传输效率。但业务流程中的数据传输单位是可以定义的,而且软件开发人员可以界定,这里将针对ADMP方法和ADSP方法进行时间复杂度分析,并通过实践进行比较。
设一笔交易涉及n种数据,应用系统与数据库服务器进行一次通信需要准备、确认、等待、传输等,合计时间为t0。对于第k种数据的处理请求,数据处理所需要的时间记为tk,将处理结果传输给应用程序所需要的时间记为Δtk。采用ADMP方法所需的总时间记为T1;采用ADSP方法时,传输结果数据所需要的时间为Δt,所需的总时间记为T2。记,则有:
可见,采用ADSP方法时,网络传输准备的时间复杂度为O(1);采用ADMP方法时,其网络传输准备的时间复杂度为O(n)。另外,T0是数据库服务器准备交易数据所用的时间,是一个定值,两种方法所需时间相同。根据交易的定义,一般情况下Δt远远小于(除非一笔交易所需要的数据量大到网络传输困难,此种交易可考虑分多次处理)。因此,以交易为单位进行数据传输,可以明显提高系统效率。实验也证实了此结论。
笔者在开发 “基于Web的技术职称申报与评审系统”时,对一些交易,首先采用ADMP方法进行数据传输,发现时间响应不满足要求后,对其进行改进,采用ADSP方法进行数据传输,传输效果比较明显。对同一组实验数据,采用不同数据传输方法对响应时间进行了比较,结果见表1。
本文讨论了Web应用系统的数据传输策略与效率问题,列举了影响数据传输的因素和对应策略。DBA、系统分析师、软件设计师的项目经验对数据传输策略有很大影响,需要软件设计与研发人员认真研究,确定合理的方案。本文给出了ADMP和ADSP两种数据传输方法的定义,从理论角度分析了两种方法的时间复杂度,并通过实例对两种传输方案进行了比较。证明了在一笔交易有多种数据请求时ADSP方法的高效性,该方法对提高Web应用系统中的数据传输效率有明显的效果。
表1 采用ADMP和ADSP方法的传输效率比较
1 许富龙,刘明,龚海刚等.延迟容忍传感器网络基于相对距离的数据传输.软件学报,2010,21(3):499~501
2 Pasztor B,Musolesi M,Mascolo C.Opportunistic mobile sensor data collection with SCAR.Proceedings of the 4th IEEE Int’l Conference on Mobile Ad-hoc and Sensor Systems,Piscataway,IEEE Press,2007:1~12
3 李庆忠,王海洋,姜跃平等.一种改进的主动规则的系统执行模型分析.软件学报,2002,13(1):111~116
4 孙明,姜跃平,董继润.支持复合事件的主动规则的可终止性分析.计算机研究与发展,1998,5(5):460~463
5 Guoying Yue,Sukui Lu,Ke Lu,et al.Application research of active database in MIS.International Conference of Management Engineering and Information Technology,2009
6 张峰,张莉莉.触发器在数据处理过程中的应用研究.计算机工程与科学,2008,30(5):156~158
7 熊中敏,郝忠孝.含有非独立型触发环的主动规则集归约算法研究.计算机科学,2006,33(6):163~167
8 李红燕,李战怀,唐世渭.ORDBMS中主动性规则的研究与实现.软件学报,2001,12(9):1 329~1 335