锁定老帖子 主题:JEE中实用存储过程的合适场景(讨论贴)
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-17
存储过程操作数据库很快,起码比oci、odbc、jdbc等等这些快。存储过程调试很方便,很容易发现问题和修改。存储过程对异构平台的融合十分有利。
以上这些都是总结前面帖子的,我再补充一点存储过程本身是具有编写前端展示功能的,包括web展示和图形界面展示。 有了以上诸多优点我想存储过程应该一统编程语言世界了吧,可是编程界第一语言叫java、第二叫c++、第三叫c、第四叫c#.....后面还有很多。 存储过程在哪?这么优秀的语言为什么这么不被重视?美欧日本这些国家的程序员都是白痴?整个编程行业的所有经验和选择都是错的?只有中国这个“软件不发达国家”的东西是完全正确的?当然不是。 我以前所在公司曾经用存储过程实现全套的话单采集+计费+信控+ocs系统A,485人月,700万预算。之后我有有幸接触了新加波一个公司照搬at&t最新架构的相似系统B,135人月550万预算,这个项目只在统计、汇总数据部分使用了存储过程,其余由c++ + java完成,而其预算还是在大部分人员和开发都是新加波本地的,成本远高于中国的情况下的。想起A项目,我只想说两个字-恶心。 如果有在国内几个大型电信类软件公司工作的同志,应该知道,这些公司梦寐以求的最终目标就是像国外一样实现项目的产品化,而这之中最大的绊脚石就是技术的落后陈旧,其中就包括大量使用存储过程所带来的弊病。 我本人在各式各样的项目中也算是写过些存储过程,没有30万行也有20多万行了,我总结这其中的经验就是,国内对存储过程的滥用和整体架构、技术的老旧。那些所谓的“经过时间考验的项目”不过是使用过时、陈旧技术的代表,它们仍然存在,但这并不证明它们是最优的。而高级语言带来的开发成本的缩减往往是惊人的! 国内的软件公司无一例外是在现有项目上拆拆改改来做新需求,而这些项目的技术和架构起码都是10年前的了,早就过时的了,所以要看还是看看整个编程世界的发展方向比较有参考价值吧! 当然存储过程也绝不是一无是处,在进行数据汇总、聚合等操作时存储过程时必然的选择,但复杂逻辑还是交给更适合的其他语言实现吧。也就是说不涉及业务逻辑的、单纯数据的操作应交给存储过程。 总之,对于任何技术、语言绝对不能排斥,但更不能迷信!还有就是别把眼界限死在国内这些落后的东西上,应该多向前看看。 |
|
返回顶楼 | |
发表时间:2009-07-17
ironsabre 写道 unsid 写道 企业完全可以下一个定量的定义,比如
存储过程 中间件 数据库迁移 难 易 编写生产率 低 高 调优能力 强 弱 逻辑重用 异构平台,强 异构平台,弱 大数据汇总 易 难 性能 高 低 触发约束机制 强 弱 这个总结很经典,但是还需要量化,比如性能高,系统需要多高的性能才迫使你使用存储过程,是因为要求某个运算响应在2秒之内,用java写实现不了?是因为某个操作反复从数据库取值,数据传输消耗的时间远远大于运算的时间?我相信一个系统不可能所有业务全放在数据库上,需要放在上面的业务和全部业务比,总归是少数。 我们是这么做的.简单的存储,查询是在Java里的,但复杂的业务逻辑全部用pl/sql.这样做可以节省大量的代码量.而且pl/sql的调试特别方便.这是多年下来的实际工程经验, 就我所知,我们行业内部,大部分的金融,保险,证券的行业软件都是这样做的.这些软件都较大型,专业(业务逻辑极复杂),经得起时间考验的.不是那种政府网站之类的简单应用. 存储过程有一个麻烦在于,其打包非常不方便,如果是写成java代码,用ant或者maven构建成war在任何环境都能直接发布,让人不用操心,如果用存储过程,相当于产生了外部依赖,构建的时候步骤就复杂一些。 |
|
返回顶楼 | |
发表时间:2009-07-17
unsid 写道 ironsabre 写道 unsid 写道 企业完全可以下一个定量的定义,比如
存储过程 中间件 数据库迁移 难 易 编写生产率 低 高 调优能力 强 弱 逻辑重用 异构平台,强 异构平台,弱 大数据汇总 易 难 性能 高 低 触发约束机制 强 弱 这个总结很经典,但是还需要量化,比如性能高,系统需要多高的性能才迫使你使用存储过程,是因为要求某个运算响应在2秒之内,用java写实现不了?是因为某个操作反复从数据库取值,数据传输消耗的时间远远大于运算的时间?我相信一个系统不可能所有业务全放在数据库上,需要放在上面的业务和全部业务比,总归是少数。 我们是这么做的.简单的存储,查询是在Java里的,但复杂的业务逻辑全部用pl/sql.这样做可以节省大量的代码量.而且pl/sql的调试特别方便.这是多年下来的实际工程经验, 就我所知,我们行业内部,大部分的金融,保险,证券的行业软件都是这样做的.这些软件都较大型,专业(业务逻辑极复杂),经得起时间考验的.不是那种政府网站之类的简单应用. 存储过程有一个麻烦在于,其打包非常不方便,如果是写成java代码,用ant或者maven构建成war在任何环境都能直接发布,让人不用操心,如果用存储过程,相当于产生了外部依赖,构建的时候步骤就复杂一些。 存储过程是直接拿源代码发布到数据库里,非常方便.何来打包非常不方便之说? |
|
返回顶楼 | |