`

一个问题项目的拯救过程

    博客分类:
  • JAVA
阅读更多
一个问题项目的拯救过程
【IT168技术分析评论】
  梅州农村信用社综合业务系统是梅州农信投资2000多万实施的一个电子商务系统,梅州农信综合业务系统的实施,将实现梅州农信现有业务的电子化网络联接, 并把梅州农信的综合业务系统建成为梅州银行业领先的综合业务系统,为提高梅州农信的竞争能力和业务经营决策及科学管理的水平做出积极贡献,并能够利用信息 技术为客户提供金融服务和帐务管理,尽快实现网络综合业务系统。
  项目难点与解决方案:
        梅州农信综合业务系统后台数据库为DB2数据库,前台应用采用java开发,运行在IBM AIX操作系统上。
  该项目的难点和存在的问题主要由以下几点:
  1 由于国内的银行核心业务系统后台核心大多采用c或c++开发,而梅州农信综合业务系统后台采用java开发,而java应用开发不太适合做银行后 台的核心交易处理,而且java比较占用内存资源,所以该项目难点是在整体架构设计不能改变的情况下,注定了后续的工作只能是“打补丁”的工作。
  2 数据库架构不合理,数据库的物理设计和逻辑设计不合理,需要做数据迁移。
  3 数据库做并发交易非常慢。
  4 数据库装载数据和数据移植慢。
  5 晚上做批处理的处理时间太长。
  6 报表查询时间太长,无法满足实际业务需求。
  7 数据库安全规划不合理,存在安全隐患。
  8 数据库备份和恢复策略不合理。
  对于上述问题,分别采用了如下解决方案:
  1  由于前台应用采用java开发,java应用开发不太适合做银行后台的核心交易处理,而且java比较占用内存资源,针对java比较占用内存资源的情况,需要对应用作出优化,尤其需要在应用中对java的内存使用进行垃圾回收。
  2  梅州农信综合业务系统数据库架构设计不合理,数据库设计采用了SMS表空间,而且表中索引,常规数据和大对象数据没有分割存放;SMS表空间采用目 录方式访问,并且使用大量操作系统调用(system call),读写效率低下。所以为了保证数据库高性能并发I/O,需要对原有的数据库进行重新物理架构设计并对现有数据进行数据迁移。
  3  梅州农信综合业务系统在上线初期,数据库的并发非常慢,数据库中经常存在锁表的现象,有大量的死锁(deadlock),锁等待(lock wait)和锁升级(lock escation)出现,为了解决这些问题,采用了如下解决方案:一是首先调整数据库中和锁相关的配置参数 (locklist,maxlocks,dlchktime)等参数,其次是找出系统是哪些应用和SQL长时间的持有锁,对这些应用和SQL作出调整。
  4  梅州农信综合业务系统在上线初期,需要对以往的历史数据进行移植和装载到新的数据库中,在初期他们采用了import方式来进行数据移植和装载数 据;在DB2数据库中有import和load两种数据入库方式,import的方式是非常慢的,所以采用import方式根本无法定期按时上线。为此, 重新用load编写移植脚本,这样保证了系统定期按时上线。所以,一定要采用数据库中最合理的技术来进行相应的操作。
  5  系统在上线初期,每天晚上做批处理的时间特别长(大概7个小时)左右,这是不合理的,对批处理进行监控发现批处理中存在很多对数据库的大表的 delete操作;指导应用开发人员在开发中用load的API函数来代替delete,因为直接delete会产生很多日志和锁,删除速度慢并且容易出 现表的“碎片”。经过上述调整后,批处理时间减少为3小时左右。
  6  在每天晚上的报表处理时候,报表处理速度非常慢,往往处理一张报表需要几个小时,经过分析发现报表的SQL语句非常复杂,这些SQL语句一是没有经 过调优,运行效率低下;二是对这条复杂的SQL语句没有创建最合理的索引。经过调优SQL和创建索引后,报表的速度减少为几分钟。
  7  梅州农信综合业务系统上线后,数据库安全和操作系统安全都是缺省的设置,没有经过合理的安全规划,存在严重的安全隐患。为此,对相关用户进行角色划 分并进行合理的权限分配,同时对每一个用户进行安全的审查(audit)工作,这样保证了系统安全可靠的运行。
  8  梅州农信综合业务系统上线后,数据库没有一个很好的安全和备份策略,这样存在很大的数据丢失风险。根据梅州农信数据库特点,编写相关脚本,每天晚上 对数据库做批前备份和批后备份,并把备份好的数据库和数据库日志tar到IBM 3583带库中并定期做恢复的模拟演练。
  项目成功与失败的经验归纳:
  梅州农信综合业务系统从2002年开始实施到2003年系统上线,系统虽然现在稳定的运行,不过项目中出现的一些问题还是值得后续项目深思的。
  1.业务系统前期的选型和架构设计是非常关键的,这是一个方向性的问题,成功的选型和架构设计是成功的一半,由于梅州农信选用了java平台,而java 应用开发不太适合银行业务系统后台核心帐务处理,这直接导致了运行效率的低下和对资源的消耗,如果前期他们有一个很好的高级数据库架构设计工程师也许可以 避免这些问题的出现。
  2.应用编程人员需要对业务需求有详细的了解,应该充分做好前期的业务需求分析,在梅州农信综合业务系统中经常出现很多由于前期业务需求没有做好而导致后 期重新“返工”现象,这直接影响了项目的按时上线。所以,编程人员和数据库工程师需要对企业的业务需求有更详尽的了解和分析。
  3.需要一个全面数据库人才来做数据库的物理设计和逻辑设计,梅州农信由于前期数据库物理设计和逻辑设计不合理,导致系统未能充分的利用物理资源和逻辑资源,所以后期需要对数据库重新做架构设计,而这些需要做数据迁移,这无疑增加了系统的风险性。
  4.由于前期的架构设计和选型不当,直接导致了后续的工作只能是“打补丁”的工作,这些导致了后续项目的被动性以及和其它银行系统和新上线系统的兼容性。
  5.应该为企业信息系统制定合理的安全规范以消除潜在的安全隐患。
  6.需要为企业的信息系统制定一个合理的备份恢复和灾备策略。
   总结:由于梅州农信综合业务系统的前期我并没有参加,所以在整个项目的后期出项性能问题的时候,我主要在现在的架构和选型上保证业务系统能够安全,可靠,稳定的 运行。主要负责完成梅州农信综合业务系统历史数据移植;负责完成梅州农信综合业务系统的数据库性能监控,性能调优;负责制定梅州农信数据库安全策略;负责 制定信息系统的备份和恢复策略,负责制定信息系统的异地灾难备份策略;负责完成原有的数据库的重新物理设计和数据迁移工作;负责指导编程人员编写高效的 SQL;负责构建数据库的索引并删除冗余的索引。

分享到:
评论

相关推荐

    拯救公主游戏的附件

    在编程实现中,答案可能与问题编号关联,形成一个问题-答案对,以便于检查玩家输入的答案是否正确。答案数据结构可以设计成与问题数据结构相同的形式,方便一对一对应。 总结来说,这个项目涉及到了数据结构的多个...

    拯救地球-少儿编程scratch项目源代码文件案例素材.zip

    "拯救地球"是Scratch项目中一个极具教育意义的游戏案例,旨在通过编程培养孩子们的逻辑思维能力、创新意识以及对环境保护的关注。本篇文章将深入探讨该项目的源代码,揭示其背后的设计理念,并提供一系列的学习建议...

    python拯救猫咪创作

    在“python拯救猫咪创作”项目中,我们看到了一个利用Python编程语言进行的游戏开发实例,旨在创造一个以“拯救猫咪”为主题的游戏。这个项目不仅展示了Python作为开发语言的强大功能,还体现了游戏开发的基本流程和...

    devops团队第一个项目 凤凰项目

    这本书以一个虚构的公司——GenCo的IT部门为背景,讲述了主人公Bill Palmer如何通过实施DevOps理念和方法,从危机重重的“凤凰项目”中拯救企业的故事。在这个过程中,读者不仅能了解到DevOps的核心概念,还能看到...

    少儿scratch编程项目源代码文件案例素材-4.2拯救苹果.zip

    《少儿scratch编程项目源代码文件案例素材-4.2拯救苹果.zip》是一个专门为儿童设计的编程学习资源,旨在通过趣味性的游戏案例,帮助孩子们掌握基本的编程思维和技巧。在这个项目中,孩子们将使用Scratch编程语言来...

    c#游戏-拯救大行动

    在"拯救大行动"这款游戏中,开发者旨在创建一个有趣且引人入胜的体验,让玩家扮演英雄角色,拯救掉下来的小孩。这种类型的游戏通常涉及到动态物体的碰撞检测、计分系统、时间管理以及可能的关卡设计。以下是一些核心...

    基于Java的动物拯救游戏.rar

    【标题】"基于Java的动物拯救游戏.rar"揭示了这个项目是一个使用Java编程语言开发的电子游戏,专注于动物拯救主题。在IT行业中,Java是一种广泛使用的面向对象的编程语言,以其跨平台能力和丰富的库支持而闻名,非常...

    基于Java的动物拯救游戏

    在本项目中,我们关注的是一个基于Java编程语言开发的动物拯救游戏。这款游戏不仅展示了Java在游戏开发领域的应用,还体现了编程者对于游戏逻辑、图形界面设计以及对象导向编程的理解和掌握。 首先,Java是一种广泛...

    java实现的一款拯救公主的小游戏(游戏中广搜代码部分还没实现).zip

    这是一个基于Java语言开发的小游戏项目,名为"拯救公主",主要适用于毕业设计、课程设计或者作为初学者提升编程技能的实践项目。在这个项目中,开发者可能已经实现了游戏的基础框架和部分功能,但根据标题提示,游戏...

    scratch编程项目源代码文件案例素材-拯救苹果.zip

    "拯救苹果"这个项目是一个典型的Scratch游戏案例,旨在帮助孩子们理解和实践编程概念,同时激发他们的创新思维。 在"拯救苹果.sb3"这个文件中,包含了整个项目的源代码,它是一个 Scratch 3.0 格式的项目文件。打开...

    j2me游戏拯救公主

    EclipseME是一个强大的集成开发环境(IDE),专门为J2ME应用程序和游戏提供了便利的开发工具。下面将详细探讨这款游戏背后涉及的技术和知识点。 1. **J2ME(Java 2 Micro Edition)**:J2ME是Java平台的一个子集,...

    java毕业设计之基于Java的动物拯救游戏源码.zip

    本项目是一个基于Java的动物拯救游戏,旨在帮助学习者深入理解和实践Java编程语言以及相关技术。这个毕业设计项目不仅提供了一次将理论知识应用于实际的机会,同时也展现了Java在游戏开发中的应用。 首先,项目的...

    精品商业计划书2020-《拯救爱丽丝》产品介绍新【2015手游项目路演报告】.ppt

    精品商业计划书2020-《拯救爱丽丝》产品介绍新【2015手游项目路演报告】 本次商业计划书主要介绍了《拯救爱丽丝》手机游戏的产品介绍、新特点、游戏核心系统、付费设计、版本开发情况等内容。 游戏介绍: 《拯救...

    拯救小蝌蚪HTML5游戏源码

    "拯救小蝌蚪HTML5游戏源码"是一个基于HTML5技术开发的游戏项目,它提供了游戏的完整源代码,使得开发者或者爱好者可以学习、修改或直接使用这个游戏。HTML5是现代网页开发的重要标准,它极大地扩展了浏览器对多媒体...

    项目管理案例分析课件.ppt

    在这个案例中,迈克尔·斯科菲尔德的角色就是一个项目经理,他的目标是拯救被冤枉的哥哥林肯·布鲁斯。 首先,迈克尔的越狱计划具备项目管理的特征。计划具有临时性,因为一旦目标达成,项目即告结束。目标明确,...

    类似拯救苹果的C#打字游戏

    【标题】"类似拯救苹果的C#打字游戏"是一个基于C#编程语言开发的打字练习应用,旨在通过模拟游戏的方式提升用户打字速度和准确性。这种类型的打字游戏通常将文字输入与游戏机制结合,使学习过程更加有趣且具有挑战性...

    电子政务-一种采用浮力技术垂直型电梯坠落拯救装置.zip

    浮力技术是这一装置的核心,它是基于阿基米德原理,即任何物体在液体中都会受到一个向上的浮力,等于它排开液体的重量。在电梯坠落时,浮力装置可以启动,通过充气或其他方式增大自身的体积,从而产生足够的浮力使...

    软件工程拯救期末考试系列-期末试卷第一套

    例如,**内容耦合** 是耦合级别最高的形式,它表示一个模块直接操作另一个模块的数据结构。 ### 总结 以上知识点涵盖了软件工程中的多个重要概念,包括敏捷开发中的冲刺、模块化设计、软件生命周期、项目管理、...

    《拯救大兵瑞恩》观后感.docx

    - 影片中关于是否应该牺牲多名士兵去拯救一个人的道德争议,反映了现实世界中技术应用时面临的伦理困境。如同IT领域中隐私保护与技术创新之间的平衡问题。 #### IT知识拓展: - **隐私保护技术**:随着大数据和人工...

    ETF拯救世界微博合集,6月

    他指出,某些言论或行为可能在某个时间点是合适的,但在另一个时间点则可能不再适用。 - 这一点对于投资者来说尤为重要,因为它关乎个人声誉和投资决策的有效性。 3. **教育咨询案例**: - E大提到了一个具体的...

Global site tag (gtag.js) - Google Analytics