锁定老帖子 主题:一次小项目的思考
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间: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等等这些快。存储过程调试很方便,很容易发现问题和修改。存储过程对异构平台的融合十分有利。
再有,要用存储过程可别拿性能说事,真正对性能要求达到顶点的项目照样都是高级语言做的,比如电信的在线计费系统,道理很简单,一、用c++我们可以人为控制关键数据进内存的动作,现在过程还没有这个功能,二、像c、c++这些语言编译出来的是直接运行的机器码,存储过程不是。
真正对项目性能影响最大的一是sql语句的质量,二是代码的质量。记住,java或c#写的高质量代码的性能是远超plsql或tsql写的低质量的代码的性能的,而用高级语言,尤其是oo语言可以相对容易的写出高质量的代码。至于单独的sql语句的性能你在高级语言里写不好,在过程里也写的好不到哪去~~
没啥说的,就一句:“牛呀!”
至于icefishc…… 太偏激了。
|
|
返回顶楼 | |
发表时间:2009-09-02
唉,想说点什么,但说不出来,有点“眼前有景道不得,崔颢题诗在上头。”的感觉。
散乱的说点吧: 语言排行榜上 PL/SQL 排在12位,使用率0.982%,差高级语言太远了。 一直感觉高级语言能更好的使用数据结构,如hashMap,难道sql的效率能超过经典的数据结构吗,sql也是由类似c语言之类的东西实现的吧。 使用指针(类指针)可以很好的组织数据,比二维表的形式好多了。 数据库的优势在持久化, 持久化了以后你要自己处理数据就有传输耗费。 传输耗费真的很大吗?内网传输速度早就大大超过硬盘读取速度了。 数据库厂商为什么还不改革? |
|
返回顶楼 | |
发表时间:2009-09-03
徐风子 写道 唉,想说点什么,但说不出来,有点“眼前有景道不得,崔颢题诗在上头。”的感觉。
散乱的说点吧: 语言排行榜上 PL/SQL 排在12位,使用率0.982%,差高级语言太远了。 一直感觉高级语言能更好的使用数据结构,如hashMap,难道sql的效率能超过经典的数据结构吗,sql也是由类似c语言之类的东西实现的吧。 使用指针(类指针)可以很好的组织数据,比二维表的形式好多了。 数据库的优势在持久化, 持久化了以后你要自己处理数据就有传输耗费。 传输耗费真的很大吗?内网传输速度早就大大超过硬盘读取速度了。 数据库厂商为什么还不改革? 这个倒是有点不同的观点,pl/sql,在语言排行榜上,排在12位,并不能说明pl/sql就是差,或是什么,关键是因为sql的应用面太窄了。只几个英文单词的简单组合,就可以实现对数据的管理,不可谓不“高级”啊。 |
|
返回顶楼 | |
发表时间:2009-09-03
rainlife 写道 这个倒是有点不同的观点,pl/sql,在语言排行榜上,排在12位,并不能说明pl/sql就是差,或是什么,关键是因为sql的应用面太窄了。只几个英文单词的简单组合,就可以实现对数据的管理,不可谓不“高级”啊。
应用面窄吗?现在哪个程序没有数据库,其实程序说白了就是对信息的处理。 几个单词? C语言还就十几个关键字呢。 其实sql只是一个数据操作工具,说语言可能有些不恰当。 |
|
返回顶楼 | |
发表时间:2009-09-03
徐风子 写道 rainlife 写道 这个倒是有点不同的观点,pl/sql,在语言排行榜上,排在12位,并不能说明pl/sql就是差,或是什么,关键是因为sql的应用面太窄了。只几个英文单词的简单组合,就可以实现对数据的管理,不可谓不“高级”啊。
应用面窄吗?现在哪个程序没有数据库,其实程序说白了就是对信息的处理。 几个单词? C语言还就十几个关键字呢。 其实sql只是一个数据操作工具,说语言可能有些不恰当。 SQL的全称叫Structured Query Language,中文翻译为结构化查询语言。老外对SQL的定义本就是一门语言,说工具也有道理,但Java跟C#之类的高级也可以算是数据操作工具呀。兄台的观点有点勉强呢。 |
|
返回顶楼 | |
发表时间:2009-09-03
我也想说几句。
首先我必须声明的是,跟各位牛人比起来我只能算是一只不入流的菜鸟,不过我还是想说说自己的体会。 也许是因为我入行的时间不到两年,也没参与过多么大型的项目,可能也是跟带我入行的人有关吧。总之呢,数据库思维对我的影响还不是很深,当然,这也导致了数据库的功力明显不足。 在我看来,数据库对于我来说只是数据存储的工具而已,如果我高兴,我甚至可以把数据存储到xml中,甚至是按照一定规则存储到文本文件,只是操作上不如直接使用数据库的方便。(当然,前提条件是我是整个项目组的leader) 举个例子吧,设计一个权限管理系统,我完全可以将系统的角色、资源、权限信息全部储存到数据库中,也可以存储到xml文件中,甚至是Properties文件。只是存储到这些文本文件中,必须自己定义一定的规则,相对于数据库来说比较麻烦。 至于前文很多数据库牛人有提到使用存储过程来完成一些业务逻辑,我持的是反对观点。 虽然我不是很懂数据库,但至少有一点我想大家还是认可的吧,不同的数据库支持的SQL标准不一样,存储过程的写法可能也不同。如果业务逻辑写在存储过程上,那么如果是做行业软件,也就是说接的项目有一部分业务逻辑是相通的,也就是部分代码可以共用,那假如说把业务逻辑写在存储过程上,那我是不是要根据这些可以公用的东东,写几个不同的数据库的存储过程?当然,具体是不是这样我也不是很清楚,经验有限,实在很难把握这其中的关键。 |
|
返回顶楼 | |
发表时间:2009-09-03
徐风子 写道 rainlife 写道 其实sql只是一个数据操作工具,说语言可能有些不恰当。
SQL的全称叫Structured Query Language,中文翻译为结构化查询语言。老外对SQL的定义本就是一门语言,说工具也有道理,但Java跟C#之类的高级也可以算是数据操作工具呀。兄台的观点有点勉强呢。 嗯,也算是一种语言,但相比起其他语言来说sql功能太单一了,其他语言至少可以控制IO、调用外部程序等等功能。 sql更多的像是附加在其他语言上的一个“工具”。 说他是工具也没啥不好的意思,我是期望他如果能在语言级别上做出更多的发展或许更好。比如有面向对象的特性,函数式编程的特性。其实sql也能做到的,不过这样离现在意义上的sql就远了,变得不伦不类了,也可能那些大公司也是明白了这点,才死守现在的模式。 |
|
返回顶楼 | |
发表时间:2009-09-03
其实,如果自己的架构师来写一套自己的持久方案的话,也行.只不过说,相对于Hibernate ORM等这些来说,可能会在某一方面比较偏弱.
|
|
返回顶楼 | |
发表时间:2009-09-04
以后就会知道的了
|
|
返回顶楼 | |
发表时间:2009-09-05
做小项目和大项目不同,做项目和做产品又不同。
就拿做产品来说,你要面对N多个客户,客户的需求又驱动你的产品升级,你产品的升级又要对客户提供支持。 所以数据存储必须是完全在你掌控之下,只有这样你才可能对它优化或者提供升级方案。所以数据库结构设计产品设计的重中之重。 |
|
返回顶楼 | |