`
zq0459
  • 浏览: 33914 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

技术选型带来的困扰

阅读更多
公司接到一个ERP系统改造的项目,数据库采用原有的AS400上的DB2 5.4。数据量巨大,大约有30年的历史了,而且表之间没有关联关系。由于本人技术能力有限,所以在技术选型时感到很迷茫。迷茫的原因是一方面要考虑到系统性能问题,另一方面还要考虑开发的难易程度和系统健壮性,等等一系列问题。
我将目前比较流行的技术方案分别做了一个demo,并且以查询10万条数据为标准做性能测试。结果如下:

方案名称                第一次执行耗时 第二次执行耗时 第三次执行耗时
Struts+Jdbc                 2192ms 1315ms 1299ms
Struts+Spring(JdbcTemplate) 2335ms 1317ms 1299ms
Struts+Ibatis                 3081ms 1525ms 1458ms
Struts+Spring+ibatis         4172ms 2969ms 2938ms
Struts+Hibernate    Java.lang.OutOfMemoryError: Java heap space

测试方法是在Action中调用DAO中的方法,在调用方法前和返回数据后,打印当前时间来计算查询所耗费的时间。
开始的时候想采用Struts+Spring+ibatis这个方案,但是通过测试后,发现这个方案的耗时要比采用Struts+Spring(JdbcTemplate)高出将近2秒。Struts+Spring(JdbcTemplate)在性能上占有一定的优势,可是在编写代码上总是给人一种不太舒服的感觉,代码如下:
public List<Employee> getEmployeeList() {
  
// TODO Auto-generated method stub
String sql = "select * from employee where id<?;";

return jdbcTemplate.query(sql, new Object[]{100000}, new RowMapper(){
public Object mapRow(ResultSet rs,int index)throws SQLException{
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setDempId(rs.getInt("emp_id"));
employee.setEmpId(rs.getInt("dept_id"));
employee.setFirstName(rs.getString("first_name"));
employee.setLastName(rs.getString("last_name"));
employee.setJobCat(rs.getString("job_cat"));
employee.setSalary(rs.getInt("salary"));

return employee;

}


});


}
可能一直使用Hibernate的原因吧,总感觉这段代码不太舒服。而且Spring(JdbcTemplate)没有提供分页功能,实现起来比较麻烦。
希望各位高手能给在下一些建议?谢谢先!



2008/05/07补充:
由于昨天没机会看帖子,今天刚回来就看到这篇帖子已经出现在了首页。
激动之余发表两点感谢:
1.狂谢热心参与本次讨论的各位朋友们,小弟将会把最终的项目案例与大家分享,希望能为中国软件事业的崛起贡献微薄之力。
2.感谢javaeye提供了这样好的交流平台,希望今后越做越好。


分享到:
评论
6 楼 Godlikeme 2008-05-05  
接楼上的说明,解释的很清晰,我的问题就在于:
lz并没有说明改造要采用原来的数据模型,需要lz明确。
如果采用新的数据模型,就可以考虑不用ibatis,具体情况具体分析。
我通过对lz描述的意图的猜测是,要采用新的数据模型,把就有系统中数据移植,转换到新的模型下。
5 楼 fight_bird 2008-05-05  
Godlikeme 写道
fight_bird 写道
涉及遗留数据库用ibatis为好

你这个用例太难得了,希望能多交流。


能不能详细说明下,什么样的情况下 涉及遗留系统用ibatis好,好处在什么地方?

遗留系统一般以数据库为核心,很多系统的数据库表设计并不符合OO设计的原则,如出于性能考虑而出现的大聚合表:用单表的若干组字段代替若干个主从表结构。

举个大聚合表的实例:一个税务系统的纳税人缴款单表,10年前基于PB设计的sybase库,一个表有230多个字段,包含纳税人信息、30多个税种交欠数据、滞纳金信息、税种退税规则设定......,用Hibernate来处理会很别扭,用ibatis就方便得多。

虽说真正符合关系数据库设计原则的表设计并不和OO映射矛盾,但对于遗留系统,在当时有很多的理由采取各种非正规的表设计方式:大聚合表、离散表、多重冗余,对于这些表,sql层面的灵活性就十分重要!
4 楼 Godlikeme 2008-05-04  
fight_bird 写道
涉及遗留数据库用ibatis为好

你这个用例太难得了,希望能多交流。


能不能详细说明下,什么样的情况下 涉及遗留系统用ibatis好,好处在什么地方?
3 楼 fight_bird 2008-05-04  
涉及遗留数据库用ibatis为好

你这个用例太难得了,希望能多交流。
2 楼 Godlikeme 2008-05-04  
AX400? AS400?
用10万条来做性能测试,靠谱么?是不是数据量太小了点。至少要百万往上吧。
不太明白为什么struts+hibernate会outof memory, 10万条都取出来也没多少内容。>100M?
这么点数据查询就这么慢,数据库有问题吧,或者代码逻辑有问题。

我觉得有几方面比较关键,
新的数据模型如何能够兼容旧模型又能满足业务要求。
数据如何移植,从旧数据模型映射到新数据模型中。
关键数据 数据量有多大。
1 楼 rainlife 2008-05-04  
实际上SSH这个架构,已经算是相当成熟了,对于hibernate,可以使用一些性能优化的方式,robbin好像有相关的一个帖子,性能上还是比较不错的,我们现在的项目,持久层是基于hibernate与iBatis的,hibernate主要是用来保存对象,而一些复杂的查询,则使用iBatis来生成SQL,最终交由hibernate处理(可以看一下appfuse的方式),个人感觉性能还是不错的,至于表现层,可以选择的还是比较多的,这个,要看贵公司的开发人员的表示层框架的熟悉程序以及深度了。

相关推荐

    中小型制造企业信息化解决方案

    随着政府大力推进中小型企业上网工程,越来越多的企业正面临企业信息化方向发展及技术选型的困扰,而对于种类繁多的方案、建议,使得企业决策人在信息化建设方案的选择上无从下手。Internet的普及,已使得企业信息化...

    自动化产品选型-汇川伺服选型软件应用

    这款软件不仅提供全面的选型指导,还避免了查阅大量手册可能带来的困扰和不准确性。 首先,打开“汇川技术”官方网站,通过“工业自动化”分类下的“伺服”入口,用户可以轻松找到产品选型工具。这个工具包括了多种...

    论对当前智能建筑发展中的一些认识和看法.docx

    此外,智能建筑的设计和实施过程中,由于建设单位对智能建筑的复杂性和技术要求理解不全面,往往导致弱电系统的设计、采购、施工和管理出现问题,给后期运营带来困扰。 电气技术在智能建筑中扮演着至关重要的角色。...

    关于连锁企业信息化建设的思考.pdf

    例如,自动补货系统虽好,但若基础管理不到位,库存准确性不足,强行实施只会带来困扰。 再者,信息管理需要勇于面对挑战和失败。信息系统的稳定性至关重要,但为了追求完善,企业不能因害怕短暂的不稳定而停止改革...

    某医院预约挂号管理系统的毕业设计.doc

    在技术选型上,本系统采用了J2EE框架进行开发,这是一套成熟的、面向企业级应用的Java开发平台,具备良好的可扩展性和安全性。数据库方面选择了MySQL,作为开源、免费的关系型数据库管理系统,其高效稳定且易于维护...

    腾讯云微服务架构体系TSF介绍.docx

    腾讯云微服务架构体系TSF采用了如下策略和技术选型: 1. **在线协同**:通过Swagger UI进行在线接口定义,确保跨团队协作的顺畅,避免因接口变更带来的困扰。 2. **部署原则**:利用Docker进行服务打包和自动化部署...

    《飞算全自动软件工程平台建设与实战经验.pdf》

    它可能提供了一个统一的平台,使得前端、后端、数据库设计、测试等各环节能够更加协同地工作,减少了因技术选型和变更带来的困扰。 最后,该平台的愿景可能是通过结合管理制度和管理工具,实现真正的“人+制度”的...

    网页设计与开发项目设计

    良好的文档应包括项目概述、技术选型原因、功能描述、代码结构、API接口说明以及部署和维护指南等。这不仅有助于团队间的协作,也有利于未来项目的维护和升级。 总的来说,这个"网页设计与开发项目设计"涵盖了从...

    公交查询系统设计与实现论文

    总的来说,这篇论文详细探讨了公交查询系统的各个关键要素,从需求分析到系统实现,再到技术选型,全面展示了构建此类系统的过程。通过这样的系统,可以有效提升城市公共交通的服务质量和效率,降低市民出行的困扰。

    失物招领本科毕业设计答辩ppt

    随着校园规模的扩大和学生人数的增长,即使在疫情环境下,校园内的物品丢失率也持续上升,给师生带来了一定的经济损失和精神困扰。因此,设计并实施一个基于微信小程序的失物招领平台显得尤为必要。该平台不仅能帮助...

    通信各种专用词汇缩写查询软件

    在通信领域,专业术语和缩写词的使用十分广泛,这常常给初学者或非专业人士带来困扰。"通信各种专用词汇缩写查询软件"正是为解决这一问题而设计的工具,它无需安装,用户可以方便地查询通信领域的各种词汇及其缩写。...

    述职报告合集9篇.docx

    这两点在IT行业中同样适用,无论是软件开发项目还是技术团队管理,都需要团队协作来完成复杂的任务,同时,优化资源分配,比如合理安排开发人员、测试人员的角色,或者在技术选型上考虑成本效益,都是提高项目成功...

    AGV的特点及适用场景.docx

    市场需求的快速增长使得AGV市场日益繁荣,但也带来了产品选型的困扰。企业在选择AGV时,需要充分了解自身需求,参考AGV选型手册,确保选购到最适合自身生产流程的AGV型号,以最大化投资回报。 总的来说,AGV凭借其...

    基于移动终端的智能裁缝系统的设计.pdf

    尽管文章主要讨论了智能裁缝系统的开发设计,但其提及的移动终端应用开发和服务器技术对于理解现代互联网应用的构建和技术选型也具有一定的参考意义。结合移动设备的便携性和智能分析能力,这样的系统有望在未来的...

    高低压成套开关设备智能化控制系统的设计与运用分析 (2).pdf

    综上所述,高低压成套开关设备的智能化控制系统设计需综合考虑测温技术的选型与优化,同时推动国内企业提升自主研发能力,改进绝缘材料性能,以促进我国电力行业向更高效、更安全的方向发展。而随着科技的不断进步,...

    医院信息系统集成平台建设与体会.docx

    综上所述,医院信息系统集成平台的建设是一项系统工程,它不仅涉及技术选型和架构设计,还涵盖了标准制定、风险管理等多个层面。通过有效的集成,医院可以提升服务质量,优化内部管理,为科研、管理和未来发展提供强...

    毕业设计-失物招领系统

    《失物招领系统设计与实现》 失物招领系统是一种常见的信息管理平台,它旨在帮助人们在丢失物品或找到他人遗失的...通过合理的技术选型和细致的规划,我们可以构建出高效、实用的失物招领平台,为日常生活带来便利。

    基于微信小程序的医院挂号小程序设计与实现论文.docx

    1. **技术选型**: - **前端技术**:采用微信小程序框架进行开发,支持跨平台运行。 - **后端技术**:采用B/S架构,使用Node.js作为服务器端语言,配合MySQL数据库存储数据。 2. **功能模块**: - **用户注册登录...

    离线编程技术在机器人点焊项目中的应用.doc

    离线编程技术在机器人点焊项目中的应用是一个关键的技术手段,它极大地提高了焊接机器人的工作效率和灵活性。...这种技术的成熟和发展,无疑为现代汽车制造中的自动化焊接工艺带来了革命性的改变。

Global site tag (gtag.js) - Google Analytics