论坛首页 Java企业应用论坛

一次小项目的思考

浏览 51998 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-09-05  
  个人觉得要使用hibernate的一些项目对效率的要求都不是特别的高,尤其是银行业务之类的的系统,如果使用Herbinate肯定不能够适应用户的需求的;即使在其他的一些项目中如果用到Hibernian这些东西一般都需要很好的去理解对象和关系,越深刻越好,不然也会严重影响效率!
0 请登录后投票
   发表时间:2009-09-06  
通常帖子到了最后面几贴,水平都特别的菜。
0 请登录后投票
   发表时间:2009-09-07  
原子操作中有需要可以使用存储过程,但这也只是为了提高效率,如果是为了处理逻辑,还是交由上层控制才好。
0 请登录后投票
   发表时间:2009-09-07  

[quote="zgsheng"]sql当然是语言,sql92定义了大部分标准. 开发界分成两部分,一部分搞纯理论,鼓吹各种各样的新理论,新模型,在理论上都相当美好,在实际应用中基本完全无用最后真的能成为业界标准,能实际应用的,百无其一.国内各位所谓大拿提出的理论截止目前似乎无一可行.主要原因应该是国内这些人都还太年轻. 业界浮躁,都想一步登天.有几个人能踏下心来,心无旁骛的做设计,做代码,实践出真理的呢?[/quote]

 

貌似有点含沙射影~

0 请登录后投票
   发表时间:2009-09-11  
ray_linn 写道
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的质量高于一切,所以更加不可废弃数据库建模。

     首先,你说的这个“parser”和存储过程的“编译”完全是两码事啊。parser是指数据库对一条sql求得其执行计划和完整执行路径的过程,拿oracle举个例子:如果oracle“认为”你要执行的这条sql和它以前执行过的一条sql(数据库启动以后)是“一模一样”的,那么oracle就会把以前那条sql的执行计划(在sga里)直接拿来用,否则就在sga里生成之,这个过程才叫“parser”。而我之前所说的“编译”,是指把人写的代码翻译成机器能看懂的代码。此“编译”非彼“parser”啊。

 

     我客户端送一个sql给db,何来“编译”一说,而且我绑定变量后也不是每次都“parser”的啊?(当然有时也要认为强制要求数据库重新parser已经绑定变量的语句,这就是更深的东西了)而你的sp,即使编译完了,要是没有充分绑定变量可是每次都要“parser”一下的呦~~

 

     下面我们说说你大谈的esql吧,我高级语言的流程是:送sql--返回结果集--高级端处理结果集。sp的流程是:送命令--数据库出结果集并处理--返回处理后的结果集。而且从这些流程上是不能真正看出io压力的不同的,要看还是要去卷组、或用iostat什么的看。

 

     总之,我认为在一个系统中高级语言和sp是“大客车”和“大货车”的关系,客车载人,货车载货。但在中国你也会看到有些货车的后车厢里坐满了农民工,这种现象是真实存在的,但这就是合理的吗?恐怕不是吧~~。

 

     还是那句老话,猫吃鱼,狗吃肉,奥特曼打小怪兽。大家各自做好各自的本职工作发挥自己的特长。关系到数据处理的用sp,复杂业务逻辑用高级语言,此二者相辅相成,切不可偏废。

 

     最后,并不是我偷换了什么概念,而是你自己的基础知识还不太够啊~~~,不过从你的回复我也大概看明白你为什么这么“力挺”存储过程了~~

0 请登录后投票
   发表时间:2009-09-11  
icefishc 写道
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 请登录后投票
论坛首页 Java企业应用版

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