项目经验-林欣灏

项目一:移动外轮理货系统

项目简介(功能与用途):

使港口外理业务电子化,实现与相关用户单位和监管部门的电子数据交换;使理货数据可携带,达到现代集装箱作业的高效、准确的要求。
主要功能目标:
1、 理货单证电子流转
2、 理货过程动态跟踪
3、 理货质量快速检查
4、 理货事故责任评估
5、 理货资料受控管理
6、 理货数据深度分析
7、 理货信息有度共享

理货系统结构图:

图例说明:
1、报文收发器A:从码头数据库取得理货所需的装卸船计划、箱信息、预配载图,生成报文,自动发往EDI中心;
2、报文收发器B:接收从码头传来的数据,将新数据写入外理数据库,再将外理作业后的数据生成报文,传到EDI中心;
3、EDI中心将报文解析后,生成WEB报表,供海关、船贷、货贷等用户单位的查询。

项目难点与解决方案:
现在正在使用的系统是第3版,用到的数据库系统为sybase ianywhere 9i 和 Sybase Adaptive

Server Enterprise 12.5 for solaris,其中PDA部分采用ultralite 作为移动数据库,移动数据库与中心数据库之间的数据交换采用同步技术,通过自建的同步服务器处理同步逻辑。
原来的PDA采用的系统是pocket 2002,该系统有个重要缺陷是掉电掉数据,对实际应用造成很大的不便,随着microsoft mobile 5的推出,这个缺陷才得到解决,也促使我们对原PDA上的软件系统的升级。问题是,sybase ianywhere 9i的对mobile 5的支持不充分,使老程序不能在新PDA上平滑升级,究其原因是,mobile 5建立在.net 架构上,不兼容pocket 2002/2003上的应用程序,这意味着PDA代码要全部重写;另外还有一个难题是,mobile 5上的.net版本比sybase ianywhere 9i支持的.net要高,电话咨询sybase 公司的产品部,由于我们采用的全是最新的东西,对方不能给我们任何经验上的指导和建议,也不能确定当前的ianywhere版本能不能很好的支持mobile 5,一般与新操作系统配套的升级产品至少要延后三个月或更久的时间才推出,只能一切自己来。
由于.net版本不同,我们采用就低不就高的策略,将原定的编译环境从visual studio 2005降到visual studio 2003(因为visual studio 2005中最低的.net链接库版本都比sybase ianywhere 9i中支持的版本高);为降低项目风险,我们把技术难点整理出来,分别写最简的demo进行测试和评估,决定应用程序功能编码的最佳选型。在大家的努力下,三周顺利完成理货软件系统第3版的升级。

项目成功与失败的经验归纳:
采用新技术时,在规划和设计上要留有弹性,不追求部分特性的应用,坚守自己对通用理论的理解,想出简单的办法从最难的地方做起,这也是建立团队信心和把握项目进度的关键;对需求的充分理解是项目成功的关键,要有化难为简的能力,从我们系统版本1到版本3,每一次的升级都伴随着对需求的更加确定,反映出的变化是应用程序的功能在增多,结构在变简,代码在变少。

你在项目中岗位与贡献:
需求分析,解决方案编写,系统体系结构设计,攻关demo编码

项目二:物流电子商务平台

项目简介(功能与用途):
针对传统物流企业的物流商务平台,具体功能和用途如图



项目难点与解决方法:
本项目是在一个传统物流企业长期的信息化积累的基础上发展起来的,和一般电子商务平台的不同之处是,要保护原有的软硬件系统的投资,在技术选型上,以实用为主。该项目更像一个整合集成系统,在设计和实施过程中,涉及不同的数据库平台(有sybase、oracle、sql server、mysql),不同开发语言的业务应用软件。为了不给现有的正在使用的系统造成影响,我们建立专用的开发服务器,将已有系统的不同类型数据库中的部分历史数据导入统一的单一类型数据库中,对新开发的程序经过安全和稳定性测试后,才逐一上线试用,数据库接口主要采用的是odbc和jdbc,并把连接接口设计为可配置,方便程序跨数据库的移植。

项目成功与失败的经验归纳:
该项目于2004年底成功通过科技部和交通部验收。由于工作的头绪比较多,在设计上,要把各个工作界面划清楚,新系统与旧系统的,新数据库与旧数据库的,数据库之间需要交换的,数据上共享的和私有的等等;严格的文档管理、代码管理、bug管理和定期的项目进度碰头会,都是采用开源软件,文档和代码采用svn进行管理,bug采用bugfree进行管理,这些管理软件配置好自动电子邮件,项目组成员全部

采用邮件通知来推进工作和完成交流。

你在项目中岗位与贡献:
项目管理、部分资料编写、数据库E-R图设计

项目三:汽车售票系统

项目简介(功能与用途):
用于汽车站的长短途售票,包括车站售票、车站检票、车辆调度、财务统计和发班计划大屏幕显示五个子系统。数据库系统采用sql server 2000。

售票界面预览:


项目难点与解决方法:
该系统集合长短途汽车站的特点量身打造,系统比较强调的是响应时间,特别是在节假日高峰期,计算机的出票时间和检票时间成为车站用户关心的重点。
该系统在使用到两年以后,出票时间和检票时间开始变慢。我们开始怀疑是sql server 特有的吃内存现象造成的(sql server服务器随着开机时间的增长,逐渐增加自己的缓存,直到服务器内存被使用到100%)。因为是实时的应用系统,客户身上的发生的现象不容易在实验环境模拟出来,通过尝试对sql server数据库采取优化配置后,效果不明显,决定在软件本身的编码上下功夫找原因。
过程大致如下,首先找出我们怀疑的sql语句,在sql server的“查询分析器”中进行时间测试,比如:
declare @d datetime
set @d=getdate()
.............................
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

其中省略号部分插入你怀疑的sql语句块,执行完后,将输出该段语句的执行时间,如果时间超出你的预期,然后再对它进行进一步分析。经过分析后,发现导致速度变慢的主要原因是表中数据量太大,造成执行sql时较多的逻辑读和预读操作。解决办法我们主要采取两种,一是为数据库的相关表新增少量索引,以提高检索效率;二是优化前后台代码中的sql语句,重新梳理逻辑,逻辑越简单越好,在select中少用函数,越少越好。比如一个简单的去左右空格函数trim,在数据量很大时,都要影响不少效率。
看看我们某段代码优化前和优化后的对比:

执行语句:
DECLARE @P013 datetime, @P014 varchar(48), @P015 varchar(30), @P016 varchar(30), @P017 varchar(2), @P018 int, @P019 int SELECT @P013 = '1900-1-1 0:0:0.000', @P014 = '', @P015 = '', @P016 = '', @P017 = '', @P018 = 0, @P019 = 0

execute bus_ticket_sale_process @busid = '99002', @bus_gono = '0299', @stopid = '0208', @aboarddate = '2006-5-8 23:59:0.000', @sellqty = 1, @selltype = 0, @sellmode = 0, @empid = '9999', @ticketno = '0792184', @sellwindowno = '001', @singleprice = 12.50, @sellprice = 13.0000, @product_time = @P013 output , @corpnamestr = @P014 output , @drivedatestr = @P015 output , @drivetimestr = @P016 output , @stopsiteno = @P017 output , @retncode = @P018 output , @saleretcode = @P019 output SELECT @P013, @P014, @P015, @P016, @P017, @P018, @P019

优化前:
表 'TICKET_NO'。扫描计数 1,逻辑读 2 次,物理读 2 次,预读 0 次。
表 'TICKET_PLAN'。扫描计数 1,逻辑读 1539 次,物理读 0 次,预读 0 次。
表 'BARCODE'。扫描计数 1,逻辑读 6785 次,物理读 1 次,预读 6864 次。
语句执行花费时间(毫秒) = 4936

优化后:
表 'TICKET_NO'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。
表 'TICKET_PLAN'。扫描计数 1,逻辑读 3 次,物理读 0 次,预读 0 次。
表 'BARCODE'。扫描计数 1,逻辑读 6785 次,物理读 0 次,预读 0 次。
语句执行花费时间(毫秒) = 393

由此可见一斑。

项目成功与失败的经验归纳:
当一个一直使用很好的数据库应用软件,在使用一段时间后,速度变慢,调优的最有效方式还是代码逻辑,虽然靠代码提速的办法存在极限,但它能达的空间还是非常值得我们去尝试。在这个过程中,能够有手段写出测速代码是考验一个管理员或程序员功底的有效途径之一。

你在项目中岗位与贡献:
调优策划和代码编写。 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值