大型数据库项目经验分享
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大型数据库项目经验分享
作者:清华紫光高级工程师 董国兴
创新性应用
在很多项目中,尤其是国家投资的全国性大型项目,针对系统需求,往往会采用高端的软硬件设备,在进行选型时也是充分考虑如何把这些产品的功能特性应用到实际的系统
中去,使之更好的适应工作的需要。
大型项目体系结构复杂,使用的产品新,很难套用已有或者其他项目的模式,因此创新对系统来说成了必然的选择,尤其是对后台数据库系统的创新。
我国的政务工作也在不断的改进,为了更好更迅速的为广大人民提供服务,我们的政务系统也需要与实际的工作流程相符合,因此会经常需要对应用系统及数据库系统进行升级,也会经常为了实现某项功能而引入数据库方面的新应用。
如何面对这些需求,对我们数据库管理人员提出很高的要求,不但要求对数据库的全面掌握和了解,还要求具有灵活应用的水平。下面举例说明:
1、高级复制在系统切换方面的妙用
Oracle高级复制主要是为分布式数据库模式设计的,功能是实现多节点之间的数据传输,一般多用于业务系统存在上下级关系的系统中,例如,在检察院系统中,下级院的数据要上报给上级院,经过上级院审批后,再下发给下级院,中间这一过程是通过Oralce高级复制来实现的。
在一次对24×7的实时应用系统进行系统切换时,为了实现不中断业务应用,对Oracle高级复制进行了深入分析,认为其能够满足系统切换时的数据迁移。首先,在新服务器部署应用系统,并将逻辑备份的大部分数据导入系统,对于少量的数据则采用Oracle高级复制,使得在进行逻辑备份后所产生的少量数据通过刷新快照,将数据传输过去,在一段时间后,两套系统的数据完全相同。这时,可以在两套系统并行运行一段时间后,进行切换。
同样,这套的方法也适当于Sybase复制。
2、透明网关的使用
数据库发展到今天,经历了多个阶段,使的不同的系统在数据库的发展历史中采用了不同厂家的产品,为了能够从不同厂商的数据库中制取数据,目前很多软件开发商都是编写了专门的应用程序,其实Oracle在DB2都提供了类似的功能,下面以Oracle为例进行论述。
一套基于Oracle的应用系统,需要从SQL Server里提取数据,为了能够实时快速的提取最新数据,在Oracle里配置了透明网关。可以直接使用Oracle的SQL*PLUS从SQL Server里提取数据。
3、数据库与操作系统脚本相结合
有许多应用,在数据库级完成的并不是很好,引起的原因较多,这时可以
从操作系统级来辅助数据库解决这个问题。例如:对Oracle同步影响最大的是网络的不正常通讯,会引起数据刷不过的情况,在工作时间又不能采取全部刷新的方式,则可以在操作系统级每天定时检测网络状况,如果网络经常出现异常,则在晚上对数据进行全部刷新,保证第二天的正常使用。
另外,还可使用数据库常规功能之外的功能,例如RAC、Dataguard、ASM、Grid等。
行业借鉴经验
由于所参加的项目多数为国家投资的重点建设项目和政府行业项目,具有比较大的影响,容不得半点差错,因此必须要有一套成熟的工作方法。
通过6年的工作经验,针对这些大型项目和政府行业,总结出了一些相关经验,详细如下:
1、数据库结构设计要灵活,针对日益改进的政务流程模型以及未来可能出台的新政策所需要的内容预留可以修改和升级的余地。
2、“做最坏的打算,往最好处去做。”针对政府行业对响应速度有着较高的要求,在系统建设过程中,提前预料可能发生各种突发事件,并针对每一项做出应对方法,在出现问题时,能够在最短的时间内解决问题,及时救火。
3、“主机与数据库不分家。”在大型政务系统建设里,用户将主机系统与数据库系统看的同样重要,因为较大的应用系统,对主机资源需求较大,而高端的主机系统也是一个庞大复杂的巨系统,为了使系统能够稳定运行,必须首先要对主机做好技术工作,主机是基础,只有基础做好了,才能够使数据库运行的更好,然后一层层做上去,针对具体问题,具体分析。
4、要从全局来设计系统和规划系统,并为将来的扩展做好基础工作,能够提供整体解决方案,完成这些工作通常会承受很大的压力,因为在做小项目时,可能经过思考一下就能将方案的轮廓做出来,但是针对大型政务系统,必须要经过缜密的思考才能完成,不能出现任何错误。首先要有全局观,从整体的角度来考虑问题和设计规划,然后逐步分解,细化,赶到生成可以实施的方案。同时,提供整体解决方案,在将已有的各种资源、需求以及未来需求的基础上,分析业务流程和业务变革方向,提出一整套的先进而全面的方案。
5、“了解业务,理解业务。”从一定意义上来说,对业务逻辑的理解程度直接决定了系统建议的成功与否,很多项目失败并不是在后面阶段失败的,而是一开始就由于不了解业务逻辑而埋下了失败的伏笔。尤其是我国的政府行业正在向“服务型政府”转变,将有大量的信息系统直接面对大众,从这个角度来看,更加突出了以业务带应用,以
应用推进信息化发展,可见对业务逻辑的理解应该摆到一个重中之重的位置上来看待。
6、要有敏锐的洞察力和创新能力,对同一问题准备多套解决办法,当一种方法失效时,我们还可以有其他方法来解决,使系统停止时间减到最小,达到电子政务的要求。
7、要有良好的文笔,做出的方案必须符合政府行业的规定,用语要恰当。当进行手册或者教材编写时,要求尽量详细,使用中文化版本,力争做到图文并茂。
8、要有过良好政治素养,做到不该问不问,不该说的不说。
应用难点技巧
在这些大型系统中,数据库工程师面临最大的困难就是要有全局观,这是一个比较宽泛的问题,如何解决这个难题?我认为应当在对方案理解的基础上,总结出应用的提纲和关键点,了解其整体框架结构。
在实施阶段,数据库工程师遇到的难点是:其中的具体技术细节会多一些,但是这时通常会对数据库师的综合能力有着很大的挑战,数据库工程师不能只懂数据库,对主机系统也要非常精通才能够做好数据库工作。另外与数据库密切相关的技术还有中间件技术、网络技术等。
数据库工程师面临另一个问题是:需要加强数据库原理和基础的理解。在解决各种数据库难点时,一些工程师在参照手册进行解决问题,不出问题则罢,一出问题,根本无从下手,这从一个侧面充分反映了基础知识和原理的重要性,只有吃透数据库原理和基础,才能够遇到问题而不乱,才能够进行一步的分析和排错。例如:Oracle报ORA-01555的错误,引起这种错误的原因有多种,具体是哪一种,如何来确定,都需要对数据库的运行原理有深刻的理解,而不是简单的回复“回滚段过小”。
数据库技术的不断发展, 数据库工程师不得不面临创新能力的挑战,从小的方面来说是掌握更多技能,从大的方面来说可以实现更多应用,为信息化建设助力。数据库创新最显著的效果是能够为信息化建设节约大幅成本,提高个人工作效率,“机器和数据库能干的事不要用人来干”。例如:使用SQL语句生成SQL脚本,这样的技巧在多节点的大型项目中使用的相对比较频繁。另外还可以使操作系统的shell脚本来执行自动化检测功能,例如:在对多个节点进行网络可用性及数据库可用性,则可以通过shell首先检测网络,如果网络没有问题,刚调用数据库命令,如果网络有问题,则返回错误。
安全系统是政府行业普遍比较重视的一个方面,对数据库的设计和管理要包括其安全性的考虑。例如:在数据库设计方面,可以专门设计一个表用来存放专用的用户
及加密口令等数据,使用户在登陆后进行一下用户转换;在数据库管理方面开启审计功能,开启logminor,安装最新安全补丁,适当赋权,口令修改等。
数据库工程师还面临着如何配置步骤繁琐的系统问题和如何确认是系统的BUG。这些都可以过数据库原厂商网站或者专门的用户组和新闻组来查询解决。例如:Oracle可以使用metalink,Sybase可以使用Sybase用户组论坛,DB2可以使用redbooks等。