数据库系统开发

*2004年左右写的资料,留个底!数据库系统开发 

一.   系统架构分析

现有的数据库应用系统,无论是小型桌面数据库应用系统,还是大型的分布式应用系统,其系统架构一般有C/S架构及N-Tier架构(分布式).C/S为传统桌面数据库系统中加入了数据引擎(Database Engine).原有的桌面系统为直接操控数据文件(库),其数据文件或库一般称为Flat File式的.如.dat,.dab,.mdb等.C/S则以Database Engine为中间界面,使各种系统可以透过统一的接口访问不同的数据库(关系式数据库系统 RDBMS或Flat Files).Windows封装的ODBC,及Borland公司提供的BDE,最新的ADO,Java的JDBC都是数据引擎.对于N-Tier则表示在应用系统的数据组织中数据录入,数据处理及数据存储分割开来.在C/S架构中,客户端的处理工作较为繁重,需要即时的进行数据检索,汇总,存储,有效性检查等等.虽然目前的硬件水平大有改善,但对于中型及大型的应用环境前端的处理能力受限,而且大多数客户都希望有瘦客户端系统的实现,以降低整体的系统投资.在此状况下,系统的架构加以延伸,将数据处理功能改由后台(中间层)统一处理,也即是Application Server..同样是因为Application Server承载了诸多的功能,而使得它的稳健性关系全局,所以在有些大型系统了担供分布数据处理能力及备用服务器切换功能.

      中间层的实现方法有MTS,MIDAS,DCOM(COM+)等.MIDAS为Boland公司提供给使用Borland开发工具的系统厂商使用.编程的首推为C++,它的执行效率高.其次是Delphi(Cbuilder).Delphi(Cbuilder)为N-Tier的实现提供了完整的Solution,开发效率高.其他开发工具在中间层的实现上都不如前两者.

二.   数据库组织

数据库在传统意义上公公是数据存储的地方,大部分人理所当然的认为数据库的功能也就公限于存储,检索,汇总等功能.即使是软件人员,也存在这样的偏见.事实上,自从SQL(Structure Query Language)诞生后,数据库的功能已从传统功能上演变成具有强大数据处理能力,且可提供有限二次开方能力.在这些方面,都要优于应用系统.对于一些数据库系统其织方式正度图突破关系式数据库系统的限制,向OODBMS系统演化.对MS SQL Server,View,Trigger,StoreProcedure,UserDefinedFunction的应用,T-SQL支持都使得MS SQL Server可以提供较前台应用程式更为稳妥,更为高效的数据处理功能.当然如Sybase及Orcale要比MS SQL Server更为强大.

许多程序员在开发数据库系统时,大都忽略了数据库的潜能,忽略了数据库自身的优化能力,而有了前台应用程式主控一切的错误决策.

同样一套高效,稳健的数据库应用系统,对数据库功效的发挥应当是极佳的.数据库系统设计的优劣同样反应出一套应用系统的整体性能.

一个好的数据库系统设讦应包括对以下特性的考量:

1.       数据表组织符合何级范式

2.       数据关联关系是否明确

3.       数据相关的表间及表内处理

4.       常用的大批量数据处理方法

  特别是在MS SQL Server 2000已有Formula的设定,这一点很重要,也反应出了市场对此项的需求。所谓Formula的设定,即是设定一个Field的来源同其他字段依赖关系。简单而言,在实际应用中有A=B+C,有此设定系统可以设定AField的Formula为B+C则数据库在提交新的B或C值时自动更新A值,从而省去系统在前台的处理。这对数据库系统有重要意义,目前几乎所有的软件公司都希望有兼容性极强的产品,以应付不同的需求。但事实上许多的客户的应用规则都是千差万别的,而这里的规则正可以抽象为公式。这一类的规则如成本计算,薪资计算等等。许多公司也意识应当尽量提取各种应用中的共性,但他们在将理念付之实现时,却倾向于前台实现。一方面是不愿意在数据库系统做枯燥的工作。另一方面则是没有方法实现公式的解读。便如果从效能上出发,对公式的实现是唯一可以在兼容性和高效之间取得平衡的办法。这一点就需要对SQL Server好好了解一下了。(SQL Server提供的函数和存储过程都很好的数据处理机制)

三. 界面的组织

            任何一个系统都有自己的风格,但不能以个人观点决定,在系统中各个界面都要统一的规范如对控件布局,字体,Color的规定。如果需要录入的界面就要注意到可操作性。客户的偏爱不同,就会对操作方法有所要求。而操作是否简易方便也可反应系统设计的功力。对于录入界面,录入点的切换需要有序可循,一般为由左至右,由上及下。另外注意界面上文字靠左,数据靠右,这些都是界面设计的基本涵养。

四. 报表的组织

报表格式也应遵循文字靠左,数字靠右的规则。报表的输出至关重要,而报表输出的准确性,直接反映系统数据处理的准确性。报表的输出应有一定次序,无论是Group或主从表者要注意其顺序排列方法。对需要汇总或换行的部分都要处理得当。对于报表输出的数据的基本要求是数据完整准确,格式正确。

如果软件公司有能力,应提供相应报表自定义功能,以及报表输出到其他格式文档的接口,这样会保证日后系统稳定的运行和适当的扩展,增强系统的弹性.

五. 系统维护能力的考察

            对于许多*的软件公司,其研发团队在*,在大陆只设有一个客修部门,甚至没有客修部门。如果没有客修部门,则必须将一些信息反馈以*才可进行处理,其间传递信息的有效性,及时性可能较难保证,这样的客服质量是不高的。如果在大陆设有客修部门,最好有一定的研发团队,这样在一些Bug的处理上,顾问就可以同程序员准确进行有效的沟通,对较为紧急的事件,也可以及时处理。总之一点,能不能有效进行客服工作,要看其顾问同客修(研发)人员的沟通能力。

            考察一家软件公司亦可通过考察其文档的规范性入手,是否推行了软件工程相关的管理思想。如考察其有没有通过ISO或CMMI的相关认证。当然任何一家合法的软件公司都符合CMMI-I.其文档的规范性可以保证日后服务有章可循。因为目前软件人员整体流动性大,一旦程序员异人,还可以凭借有效的文档记录,继续提供有效的服务,保证服务的延续性。一般情况下我们可以要求其提供系统分析报告,系统设计及数据库设计等方面的文档或文档范本,就可以较为全面评估其软件开发能力,客修水平。

         对一家管理软件公司在管理理念(顾问水平),系统设计(开发水平)上同时进行考察才可最大限度的保证上百万,甚至上千万的资金投入有效地运用。

上一篇:LDAP & it's implementation


下一篇:使用Filter时产生java.lang.IllegalStateException异常解决办法