论坛首页 Java企业应用论坛

一次小项目的思考

浏览 52004 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-09-02   最后修改:2009-09-02
ubotutwin 写道
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语句的性能你在高级语言里写不好,在过程里也写的好不到哪去~~

 

没啥说的,就一句:“牛呀!”

 

 

至于icefishc…… 太偏激了。

 

0 请登录后投票
   发表时间:2009-09-02  
唉,想说点什么,但说不出来,有点“眼前有景道不得,崔颢题诗在上头。”的感觉。

散乱的说点吧:
语言排行榜上 PL/SQL 排在12位,使用率0.982%,差高级语言太远了。
一直感觉高级语言能更好的使用数据结构,如hashMap,难道sql的效率能超过经典的数据结构吗,sql也是由类似c语言之类的东西实现的吧。
使用指针(类指针)可以很好的组织数据,比二维表的形式好多了。

数据库的优势在持久化,
持久化了以后你要自己处理数据就有传输耗费。
传输耗费真的很大吗?内网传输速度早就大大超过硬盘读取速度了。

数据库厂商为什么还不改革?
0 请登录后投票
   发表时间:2009-09-03  
徐风子 写道
唉,想说点什么,但说不出来,有点“眼前有景道不得,崔颢题诗在上头。”的感觉。

散乱的说点吧:
语言排行榜上 PL/SQL 排在12位,使用率0.982%,差高级语言太远了。
一直感觉高级语言能更好的使用数据结构,如hashMap,难道sql的效率能超过经典的数据结构吗,sql也是由类似c语言之类的东西实现的吧。
使用指针(类指针)可以很好的组织数据,比二维表的形式好多了。

数据库的优势在持久化,
持久化了以后你要自己处理数据就有传输耗费。
传输耗费真的很大吗?内网传输速度早就大大超过硬盘读取速度了。

数据库厂商为什么还不改革?

这个倒是有点不同的观点,pl/sql,在语言排行榜上,排在12位,并不能说明pl/sql就是差,或是什么,关键是因为sql的应用面太窄了。只几个英文单词的简单组合,就可以实现对数据的管理,不可谓不“高级”啊。
0 请登录后投票
   发表时间:2009-09-03  
rainlife 写道
这个倒是有点不同的观点,pl/sql,在语言排行榜上,排在12位,并不能说明pl/sql就是差,或是什么,关键是因为sql的应用面太窄了。只几个英文单词的简单组合,就可以实现对数据的管理,不可谓不“高级”啊。

应用面窄吗?现在哪个程序没有数据库,其实程序说白了就是对信息的处理。

几个单词? C语言还就十几个关键字呢。

其实sql只是一个数据操作工具,说语言可能有些不恰当。
0 请登录后投票
   发表时间:2009-09-03  
徐风子 写道
rainlife 写道
这个倒是有点不同的观点,pl/sql,在语言排行榜上,排在12位,并不能说明pl/sql就是差,或是什么,关键是因为sql的应用面太窄了。只几个英文单词的简单组合,就可以实现对数据的管理,不可谓不“高级”啊。

应用面窄吗?现在哪个程序没有数据库,其实程序说白了就是对信息的处理。

几个单词? C语言还就十几个关键字呢。

其实sql只是一个数据操作工具,说语言可能有些不恰当。


SQL的全称叫Structured Query Language,中文翻译为结构化查询语言。老外对SQL的定义本就是一门语言,说工具也有道理,但Java跟C#之类的高级也可以算是数据操作工具呀。兄台的观点有点勉强呢。
11 请登录后投票
   发表时间:2009-09-03  
我也想说几句。
首先我必须声明的是,跟各位牛人比起来我只能算是一只不入流的菜鸟,不过我还是想说说自己的体会。
也许是因为我入行的时间不到两年,也没参与过多么大型的项目,可能也是跟带我入行的人有关吧。总之呢,数据库思维对我的影响还不是很深,当然,这也导致了数据库的功力明显不足。
在我看来,数据库对于我来说只是数据存储的工具而已,如果我高兴,我甚至可以把数据存储到xml中,甚至是按照一定规则存储到文本文件,只是操作上不如直接使用数据库的方便。(当然,前提条件是我是整个项目组的leader)
举个例子吧,设计一个权限管理系统,我完全可以将系统的角色、资源、权限信息全部储存到数据库中,也可以存储到xml文件中,甚至是Properties文件。只是存储到这些文本文件中,必须自己定义一定的规则,相对于数据库来说比较麻烦。
至于前文很多数据库牛人有提到使用存储过程来完成一些业务逻辑,我持的是反对观点。
虽然我不是很懂数据库,但至少有一点我想大家还是认可的吧,不同的数据库支持的SQL标准不一样,存储过程的写法可能也不同。如果业务逻辑写在存储过程上,那么如果是做行业软件,也就是说接的项目有一部分业务逻辑是相通的,也就是部分代码可以共用,那假如说把业务逻辑写在存储过程上,那我是不是要根据这些可以公用的东东,写几个不同的数据库的存储过程?当然,具体是不是这样我也不是很清楚,经验有限,实在很难把握这其中的关键。
0 请登录后投票
   发表时间:2009-09-03  
徐风子 写道
rainlife 写道
其实sql只是一个数据操作工具,说语言可能有些不恰当。

SQL的全称叫Structured Query Language,中文翻译为结构化查询语言。老外对SQL的定义本就是一门语言,说工具也有道理,但Java跟C#之类的高级也可以算是数据操作工具呀。兄台的观点有点勉强呢。


嗯,也算是一种语言,但相比起其他语言来说sql功能太单一了,其他语言至少可以控制IO、调用外部程序等等功能。
sql更多的像是附加在其他语言上的一个“工具”。

说他是工具也没啥不好的意思,我是期望他如果能在语言级别上做出更多的发展或许更好。比如有面向对象的特性,函数式编程的特性。其实sql也能做到的,不过这样离现在意义上的sql就远了,变得不伦不类了,也可能那些大公司也是明白了这点,才死守现在的模式。
0 请登录后投票
   发表时间:2009-09-03  
其实,如果自己的架构师来写一套自己的持久方案的话,也行.只不过说,相对于Hibernate ORM等这些来说,可能会在某一方面比较偏弱.
0 请登录后投票
   发表时间:2009-09-04  
以后就会知道的了
0 请登录后投票
   发表时间:2009-09-05  
做小项目和大项目不同,做项目和做产品又不同。
就拿做产品来说,你要面对N多个客户,客户的需求又驱动你的产品升级,你产品的升级又要对客户提供支持。
所以数据存储必须是完全在你掌控之下,只有这样你才可能对它优化或者提供升级方案。所以数据库结构设计产品设计的重中之重。
0 请登录后投票
论坛首页 Java企业应用版

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