论坛首页 Java企业应用论坛

一次小项目的思考

浏览 52010 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-08-25   最后修改:2009-08-25
ray_linn 写道
TheMarine 写道
但是我们使用缓存,为什么非得在1秒内执行完呢?




1. 缓存是种中立技术,无论采用app或者采用SP,都可以使用。
2. 缓存是会“脏”的,越繁忙的系统,缓存就越容易“脏”。
3. 集群缓存技术更复杂,也更容易“脏”。


有道理,兄台从实际出发,现阶段数据库在某些领域确实还是不可动摇.我在前面回复也说过,思想是不错,但是很难实现,过于理想.原文当中的描述,就是非常理想化的,缓存不考虑脏,内存成本和内存管理成本不考虑,故障导致的内存数据丢失不考虑,等等;如果可以很好的解决这些,应该还是正确的方向吧.
但是兄台不能否认数据库确实已经是瓶颈,再如何的调优在单机上都是有极限的.

0 请登录后投票
   发表时间:2009-08-25  
TheMarine 写道
ray_linn 写道
TheMarine 写道
但是我们使用缓存,为什么非得在1秒内执行完呢?




1. 缓存是种中立技术,无论采用app或者采用SP,都可以使用。
2. 缓存是会“脏”的,越繁忙的系统,缓存就越容易“脏”。
3. 集群缓存技术更复杂,也更容易“脏”。


有道理,兄台从实际出发,现阶段数据库在某些领域确实还是不可动摇.我在前面回复也说过,思想是不错,但是很难实现,过于理想.原文当中的描述,就是非常理想化的,缓存不考虑脏,内存成本和管理成本不考虑,故障导致的内存数据丢失不考虑,等等;如果可以很好的解决这些,应该还是正确的方向吧.
但是兄台不得不否认数据库确实已经是瓶颈,再如何的调优在单机上都是有极限的.




理论上,SQL调优比APP调优更简单吧,这是SP的一大优势。在面向对象里调优SQL语句更复杂,很多语句都不是人所能控制的。

0 请登录后投票
   发表时间:2009-08-25  
ray_linn 写道
rainlife 写道
TheMarine 写道
但是我们使用缓存,为什么非得在1秒内执行完呢?

这正是我上面回复的,提出一个比较极端的问题,以此说明app无济于事。但事实上,采用app,并非是为了能够让db在1秒钟能够处理完10000条insert或10000条update。


从执行效率上看,SP永远是冠军。

呵呵,从执行效率上来说,写010101,绝对的冠军。不过,应该还没有人用pl sql来写个web application吧。呵呵,扯蛋的说法了, ray_linn兄莫怪啊。
0 请登录后投票
   发表时间:2009-08-25   最后修改:2009-08-25
rainlife 写道
ray_linn 写道
rainlife 写道
TheMarine 写道
但是我们使用缓存,为什么非得在1秒内执行完呢?

这正是我上面回复的,提出一个比较极端的问题,以此说明app无济于事。但事实上,采用app,并非是为了能够让db在1秒钟能够处理完10000条insert或10000条update。


从执行效率上看,SP永远是冠军。

呵呵,从执行效率上来说,写010101,绝对的冠军。不过,应该还没有人用pl sql来写个web application吧。呵呵,扯蛋的说法了, ray_linn兄莫怪啊。


从我周围的应用来说,有很多intranet web application都是JDBC+SP的,通常这些系统的数据压力都比较大,比如Sales下单的系统,生产线物料系统。

我本来也是APP的绝对拥趸,后来还是TOM那本<oracle高级编程>的影响。
0 请登录后投票
   发表时间:2009-08-25  
我个人觉得,数据库真的太累了!我刚学开发,时间不久。在我们公司我大部人员特别依懒于数据库,我觉得不是特别好!至少我的程序要比他们快,或许是我实现在了我自己人的一个开发环境我有一个不上的缓冲区进行支持,他们从来不用!
0 请登录后投票
   发表时间:2009-08-25  
ray_linn 写道
ubotutwin 写道
ray_linn 写道
楼主去用hibernate去做个总分轧平吧,

横向按账户的借贷方,纵向按科目,科目有借方科目,贷方科目,借贷双方科目,某些科目的借方 要与另外一些科目的贷方相当。

 

     就从这一句就知道你对编程的理解很浅薄,你以为你罗列的zhe这些复杂的条件限制你用个procedure写出来是很强的事?搞清楚,越是复杂的逻辑越是高级语言的强项!要用存储过程完成那些十分复杂的逻辑不论在语言支持上还是库支持上都不行。最简单的道理就是--要是存储过程真的能干,那世界前三的编程语言为什么没有tsql、plsql这些语言?别告诉我说这些语言不能写web,不能写ui什么的,它们都能,可是没人会用它们来完成这些功能。

 

     在中国“结构化查询语言”的意义和“为人民服务”一样都是被理解的变了味道的东西。高级语言好比大客车,sql好比大货车,客车用来载人,货车用来载货,但在一些地方也能看到一群群的农民工们挤坐在货车后面的车厢上,那能说这就是合理的?货车载人就是“坚若磐石”的真理?还是各司其职才能充分发挥各自的长处吧。

 

     再有,别再拿国内那几个落后的电信bss提供商说事了,他们的架构无一不是购买或抄袭国外90年代的过时技术,它们代表的只是落后而已。at&t和思科前几年个系统构型就已经是领域优先的了。

 

 


口气好大,差点没把我吓死。

买CICS和Tuxedo的都是傻子吧?

 

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

    以上这些都是总结前面帖子的,我再补充一点存储过程本身是具有编写前端展示功能的,包括web展示和图形界面展示。
   
    有了以上诸多优点我想存储过程应该一统编程语言世界了吧,可是编程界第一语言叫java、第二叫c++、第三叫c、第四叫c#.....后面还有很多。

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

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

    如果有在国内几个大型电信类软件公司工作的同志,应该知道,这些公司梦寐以求的最终目标就是像国外一样实现项目的产品化,而这之中最大的绊脚石就是技术的落后陈旧,其中就包括大量使用存储过程所带来的弊病。

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

 

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

 

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

11 请登录后投票
   发表时间:2009-08-25  
其实还是要考虑国情的。在立足国情的大背景下,存储过程的重要性,是不言而喻滴。
对于大多数人来说,我们没法去考虑最先进的技术。
就如中国的航空发动机,目标只是在十年内赶上美国上世纪80年代技术水平,没办法,这是大环境决定的。
软件业是服务业,这个宗旨得牢记
0 请登录后投票
   发表时间:2009-08-25  
完全支持楼上。

我们公司正在把所有存储过程的东西往JAVA转。

转到了java层面,才能通过分布式扩展系统性能,否则押宝在数据库上,优化带来的效果实在有限。
0 请登录后投票
   发表时间:2009-08-25   最后修改:2009-08-25
ray_linn 写道
我本来也是APP的绝对拥趸,后来还是TOM那本<oracle高级编程>的影响。

赞一个!绝大多数发对数据库的,其实未成真正理解数据库。数据库也有cache,还有各种各种的数据库。不了解的人容易偏激,缺乏评价能力,乱说。
0 请登录后投票
   发表时间:2009-08-25  
rain2005 写道
小型项目可以,大型项目就别想了。

一般大型的企业应用都是由资深业务人员(这些人只注重业务,不注重技术)定的数据库结构,开发根本主导不了。这就是国内的现状。





这也反映了一个事实,现在技术不值钱(除非是大牛),业务值钱,很多公司也只注重业务,对技术人员根本不重视。
0 请登录后投票
论坛首页 Java企业应用版

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