论坛首页 Java企业应用论坛

开发中的困惑!

浏览 8584 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-07-25  
现在在公司里边如果存储过程写的牛逼的话,那薪水是大大的啊
0 请登录后投票
   发表时间:2010-07-25  
mercyblitz 写道
javabrother 写道

 来到这家公司已经快三月了,有点不是很习惯,就是喜欢在sql中写逻辑,在sql中写逻辑是要少些很多的代码,听同事他看见在3000多行的sql,完全没有oop,听着就晕!我sql比较弱哦。

  不知道前辈们怎么看的。谢谢!

 

关键点还是在需求,如果需要在大规模并发访问数据的情况下,尽量传输和返回数据小,同时保证在数据库那端处理时间要小。对于复杂的SQL, 我的建议是简化SQL,把一次SQL语句拆分为几次来做。好处有:

1.SQL属于解释性的语言,关系型数据库解释时间可能比较长。

2.关系型数据一般地使用文件系统,在并发中,I/O瓶颈容易发生。

3.简短的SQL,更好地预编译和缓存结果(如果数据库支持的话)。

4.粒度更小的SQL,易于理解和维护。同时,提高重用性和扩张性,并且有利于SQL迁移(越短的SQL,越接近于标准)。

5.简短的SQL,有利于发挥编程语言性能和语义,弥补RMDB的不足。

 

1. 用预编译

2. 生产环境一般都很牛逼,而且有专职dba调优

3. 更好的预编译,哪里来的结论?除非碰到数据库的bug;简短的sql能更好的缓存结果,你了解数据库么,读读oracle的文档再来吧

4. 迁移sql?你说的是迁移数据库?从来没有考虑过,除非oracle倒闭了

5. 据我所知,有不少公司正考虑将代码迁移到存储过程中。

0 请登录后投票
   发表时间:2010-07-25  
能解决问题才是王道
0 请登录后投票
   发表时间:2010-07-25  
坏孩子 写道
mercyblitz 写道
javabrother 写道

 来到这家公司已经快三月了,有点不是很习惯,就是喜欢在sql中写逻辑,在sql中写逻辑是要少些很多的代码,听同事他看见在3000多行的sql,完全没有oop,听着就晕!我sql比较弱哦。

  不知道前辈们怎么看的。谢谢!

 

关键点还是在需求,如果需要在大规模并发访问数据的情况下,尽量传输和返回数据小,同时保证在数据库那端处理时间要小。对于复杂的SQL, 我的建议是简化SQL,把一次SQL语句拆分为几次来做。好处有:

1.SQL属于解释性的语言,关系型数据库解释时间可能比较长。

2.关系型数据一般地使用文件系统,在并发中,I/O瓶颈容易发生。

3.简短的SQL,更好地预编译和缓存结果(如果数据库支持的话)。

4.粒度更小的SQL,易于理解和维护。同时,提高重用性和扩张性,并且有利于SQL迁移(越短的SQL,越接近于标准)。

5.简短的SQL,有利于发挥编程语言性能和语义,弥补RMDB的不足。

 

1. 用预编译

2. 生产环境一般都很牛逼,而且有专职dba调优

3. 更好的预编译,哪里来的结论?除非碰到数据库的bug;简短的sql能更好的缓存结果,你了解数据库么,读读oracle的文档再来吧

4. 迁移sql?你说的是迁移数据库?从来没有考虑过,除非oracle倒闭了

5. 据我所知,有不少公司正考虑将代码迁移到存储过程中。

1.预编译一定能够提高性能?

2.不知道是否了解NoSQL和10times内存数据库没有,和DBA没有关系,而且在海量数据中,他们并不能解决关系型数据库内在的问题。

3.解释型语言都有这个问题,越长越复杂的语句时间消费越多。如果不是,请您举反例来。

4.迁移数据是很常见的,比如SQLServer迁移到Oracle,除了SQL脚本,还有应用程序代码,工作量巨大。

5.存储过程有其优点,不过存储过程没有标准化。第一、迁移是一个问题。第二,在开发团队中,不是每一个人都熟悉存储过程,更不要说多种数据库的。第三、对于多变输入参数,在修改后的SQL,需要重新编译,反而牺牲性能,并且影响其他操作。建议您看一下:

http://en.wikipedia.org/wiki/Stored_procedure#Disadvantages

 

在鄙人的经验中,没有听过和实践一站式的解决方案。没有什么完美的架构,只有适合和不断改良的架构。架构中,简单才是美。

 

如果对某个知识了解,那么请使用实际开发场景。大家可以坐下来,相互探讨和学习。其他的话,我不多说了。

0 请登录后投票
   发表时间:2010-07-26  
java的优点是分布式,如果什么都交给数据库,数据库也会不堪重负...
虽然有的中间件是很搓,但是如果使用分布式设置集群,那么压力就能得到缓解.
数据库也舒服多了...
0 请登录后投票
   发表时间:2010-07-26  
我们是单行数据hql,小数据量sql,大数据量存储过程,赞同小粒度简单sql的观点,就算是oracle也是有bug的,有些复杂用法会不稳定的出现问题...我就遇到过左连接+窗口函数出现bug.多出好几万条数据...
0 请登录后投票
   发表时间:2010-07-26  
mercyblitz 写道
坏孩子 写道
mercyblitz 写道
javabrother 写道

 来到这家公司已经快三月了,有点不是很习惯,就是喜欢在sql中写逻辑,在sql中写逻辑是要少些很多的代码,听同事他看见在3000多行的sql,完全没有oop,听着就晕!我sql比较弱哦。

  不知道前辈们怎么看的。谢谢!

 

关键点还是在需求,如果需要在大规模并发访问数据的情况下,尽量传输和返回数据小,同时保证在数据库那端处理时间要小。对于复杂的SQL, 我的建议是简化SQL,把一次SQL语句拆分为几次来做。好处有:

1.SQL属于解释性的语言,关系型数据库解释时间可能比较长。

2.关系型数据一般地使用文件系统,在并发中,I/O瓶颈容易发生。

3.简短的SQL,更好地预编译和缓存结果(如果数据库支持的话)。

4.粒度更小的SQL,易于理解和维护。同时,提高重用性和扩张性,并且有利于SQL迁移(越短的SQL,越接近于标准)。

5.简短的SQL,有利于发挥编程语言性能和语义,弥补RMDB的不足。

 

1. 用预编译

2. 生产环境一般都很牛逼,而且有专职dba调优

3. 更好的预编译,哪里来的结论?除非碰到数据库的bug;简短的sql能更好的缓存结果,你了解数据库么,读读oracle的文档再来吧

4. 迁移sql?你说的是迁移数据库?从来没有考虑过,除非oracle倒闭了

5. 据我所知,有不少公司正考虑将代码迁移到存储过程中。

1.预编译一定能够提高性能?

2.不知道是否了解NoSQL和10times内存数据库没有,和DBA没有关系,而且在海量数据中,他们并不能解决关系型数据库内在的问题。

3.解释型语言都有这个问题,越长越复杂的语句时间消费越多。如果不是,请您举反例来。

4.迁移数据是很常见的,比如SQLServer迁移到Oracle,除了SQL脚本,还有应用程序代码,工作量巨大。

5.存储过程有其优点,不过存储过程没有标准化。第一、迁移是一个问题。第二,在开发团队中,不是每一个人都熟悉存储过程,更不要说多种数据库的。第三、对于多变输入参数,在修改后的SQL,需要重新编译,反而牺牲性能,并且影响其他操作。建议您看一下:

http://en.wikipedia.org/wiki/Stored_procedure#Disadvantages

 

在鄙人的经验中,没有听过和实践一站式的解决方案。没有什么完美的架构,只有适合和不断改良的架构。架构中,简单才是美。

 

如果对某个知识了解,那么请使用实际开发场景。大家可以坐下来,相互探讨和学习。其他的话,我不多说了。

你都做的什么项目呀,数据库老是移来移去的,你想想,如果中国移动先用了oracle数据库,然后换乘DB2的数据库,那是多么大的工作量啊,上次做个版本的升级还忙了好长一段时间呢。

0 请登录后投票
   发表时间:2010-07-26  
3000多行的应该是存储过程吧,一个sql还没见过这么长的,有的数据库sql有长度限制了,应该到不了这么长
0 请登录后投票
   发表时间:2010-07-26  
oakeye 写道
beeke 写道
这个做法也很正常。我们就有这样的项目:

它一个银行的核心系统
几千万一台的数据库服务器足够强大
开发人员以前大多熟悉C语言,精通SQL调优,不怎么熟悉OO,并且他们为此项目服务了很多年
项目永远也不用考虑到移植


我参与做过一个海外项目,一般程序员甚至连普通的SQL都不用,哪怕是简单的插入数据,都有专人写存储过程。

另外,比起tuxedo这类老资格的中间件,J2EE远不如吹嘘的稳定和快速。把压力推向数据库,使得系统更加稳定,调优也更加容易

核心都是这样  不用吵什么java还是c  全是存储过程。。。


保险行业的核心系统的核心计算也都是存储过程。
0 请登录后投票
   发表时间:2010-07-26   最后修改:2010-07-26
效率比较高

但我不是很喜欢,而且如果换数据库就傻了
0 请登录后投票
论坛首页 Java企业应用版

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