论坛首页 Java企业应用论坛

一次小项目的思考

浏览 52011 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-08-25  
ubotutwin 写道

    再有,要用存储过程可别拿性能说事,真正对性能要求达到顶点的项目照样都是高级语言做的,比如电信的在线计费系统,道理很简单,一、用c++我们可以人为控制关键数据进内存的动作,现在过程还没有这个功能,二、像c、c++这些语言编译出来的是直接运行的机器码,存储过程不是。

 

    真正对项目性能影响最大的一是sql语句的质量,二是代码的质量。记住,java或c#写的高质量代码的性能是远超plsql或tsql写的低质量的代码的性能的,而用高级语言,尤其是oo语言可以相对容易的写出高质量的代码。至于单独的sql语句的性能你在高级语言里写不好,在过程里也写的好不到哪去~~

 

这里显然偷换了概念。

 

1.  通常C/C++是通过ESQL与数据库通讯的, ESQL最终还是发送SQL语句给数据库,数据库一样parser,编译,运行,C/C++做的APP,照样要比C/C++调用SP要慢。C胜过的,是得到数据后的处理速度,这个已经和APP或者SP无关了。

ESQL与database的通讯

http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.esqlc.doc/esqlc229.htm

2. 正因为SQL的质量高于一切,所以更加不可废弃数据库建模。

0 请登录后投票
   发表时间:2009-08-25   最后修改:2009-08-25
ubotutwin先生写了这么多字 辛苦了.
但好像没有拍到点上 ray_linn先生也没有说要一切都用sp, 而放弃通用编程语言。
引用

   存储过程操作数据库很快,起码比oci、odbc、jdbc等等这些快。存储过程调试很方便,很容易发现问题和修改。存储过程对异构平台的融合十分有利。

    以上这些都是总结前面帖子的,我再补充一点存储过程本身是具有编写前端展示功能的,包括web展示和图形界面展示。

这话啥意思座椅比方向盘跑的快? 不是一种东西不能放到一起比。

引用

    有了以上诸多优点我想存储过程应该一统编程语言世界了吧,可是编程界第一语言叫java、第二叫c++、第三叫c、第四叫c#.....后面还有很多。

    存储过程在哪?这么优秀的语言为什么这么不被重视?美欧日本这些国家的程序员都是白痴?整个编程行业的所有经验和选择都是错的?只有中国这个“软件不发达国家”的东西是完全正确的?全世界的程序员都是傻子吧?

SQL是一种DSL 不是通用编程语言 和java c++比不合适

引用

    我以前所在公司曾经用存储过程实现全套的话单采集+计费+信控+ocs系统A,485人月,700万预算。之后我有有幸接触了新加波一个公司照搬 at&t最新架构的相似系统B,135人月550万预算,这个项目只在统计、汇总数据部分使用了存储过程,其余由c++ + java完成,而其预算还是在大部分人员和开发都

    我本人在各式各样的项目中也算是写过些存储过程,没有30万行也有20多万行了,我总结这其中的经验就是,国内对存储过程的滥用和整体架构、技术的老旧。 那些所谓的“经过时间考验的项目”不过是使用过时、陈旧技术的代表,它们仍然存在,但这并不证明它们是最优的。而高级语言带来的开发成本的缩减往往是惊人 的。

这里号崇拜一下了 以250万行来算, ubotutwin先生似乎工作了七年, 共有7 * 250个工作日.  在公司在公司不可能所有的时间都在编码,按1/3的时间是编码时间(我感觉这个比例还是很高的). 我不知道ubotutwin先生是做什么的 暂且按ubotutwin先生写的代码中有一半是sql算。那么每天要写将近900行sql. 一天写900行不算什么7年来能一种保持这种效率真的很难的. 不得不赞一下.

引用
再有,要用存储过程可别拿性能说事,真正对性能要求达到顶点的项目照样都是高级语言做的,比如电信的在线计费系统,道理很简单,一、用c++我们可以人为控制关键数据进内存的动作,现在过程还没有这个功能,二、像c、c++这些语言编译出来的是直接运行的机器码,存储过程不是。

没有具体环境讨论 性能没有任何意义。
说sp性能高有2点原因:
1.  和普通sql比 省去了编译时间
2.  使用了sp通常说明将业务逻辑放到了数据库端 省去了数据传输的开销。
和我们说c/c++性能高是不同的。 这两个并不冲突 什么时候用c++什么时候用sp并不难区分

引用

    真正对项目性能影响最大的一是sql语句的质量,二是代码的质量。记住,java或c#写的高质量代码的性能是远超plsql或tsql写的低质量的代码的性能的,而用高级语言,尤其是oo语言可以相对容易的写出高质量的代码。

如果判断语言的高级程度是以语言的抽象来衡量的话 那么sql显然要比java或c#更高级。 

引用

至于单独的sql语句的性能你在高级语言里写不好,在过程里也写的好不到哪去~~

这句话反过来说也对 似乎价值不大 呵呵

0 请登录后投票
   发表时间:2009-08-25  
楼上满嘴胡话,不知道在瞎扯些什么。

怀疑你是否看懂了 ubotutwin 的意思……
0 请登录后投票
   发表时间:2009-08-26  
我觉得需要使用海量数据查询时,单纯使用框架等面向对象的数据库操作很难完成需要的功能
0 请登录后投票
   发表时间:2009-08-26  
1>无论使用什么技术,持久化现在的解决方案都是数据库,如果你能提出自己使用hiberante+自己的持久存储(比如自己写数据库)来解决的话,那是超级大牛
2>如果自己做不了持久存储,使用数据库的话,那:
   凭什么说以数据库设计,结合ORM有问题。进一步说,你使用hibernate+文件存储(自己定制hiberante的sql的引擎)也能行,但是你的解决方案有多大价值。
    你使用hibernate加上自己的设计,可以解决水平的问题,单是单点性能的问题你如何解决?绝大多说在百万级的数据下(并发<100),不需要考虑水平扩展,恰当的使用数据库,单台机器就解决了,而你只是觉得ORM是外能,根本不考虑充分利用数据库性能,用了10台机器,对客户来说会使用谁的方案。
3>终极的方案是:定制自己的存储和分布数据策略,和使用hiberante没什么关系,只是一种工具。 淘宝没有用hiberante,仍然做的很好。
0 请登录后投票
   发表时间:2009-08-26  
说来说去,我们都还是站在技术这个层面看问题,如果再往上一点,关注技术的同时再关注一下业务,在选择的时候,可能就会不一样了,从这个角度来看,技术本身没什么好不好的,能解决问题就是好的,不过有时是解决短期问题,有时需要解决长期问题而已

我也是一个技术人员,有时候也必须权衡一下,不会选择最优美的实现,有时候也很猥琐
0 请登录后投票
   发表时间:2009-08-26  
自己感觉还是传统的比较好一点,Hibernate的自动建表,有点不太放心,呵呵!
0 请登录后投票
   发表时间:2009-08-26   最后修改:2009-08-26
tianhaoleng 写道
楼上满嘴胡话,不知道在瞎扯些什么。

怀疑你是否看懂了 ubotutwin 的意思……

你也是满嘴胡话,你也不知道在瞎扯些什么。怀疑你是否看懂了icefishc 的意思。
0 请登录后投票
   发表时间:2009-08-27   最后修改:2009-08-27
楼主应该把项目应用先说明一下的。
0 请登录后投票
   发表时间:2009-09-01  
没人继续讨论了?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics