锁定老帖子 主题:开发中的困惑!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-25
现在在公司里边如果存储过程写的牛逼的话,那薪水是大大的啊
|
|
返回顶楼 | |
发表时间: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. 据我所知,有不少公司正考虑将代码迁移到存储过程中。 |
|
返回顶楼 | |
发表时间:2010-07-25
能解决问题才是王道
|
|
返回顶楼 | |
发表时间: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
在鄙人的经验中,没有听过和实践一站式的解决方案。没有什么完美的架构,只有适合和不断改良的架构。架构中,简单才是美。
如果对某个知识了解,那么请使用实际开发场景。大家可以坐下来,相互探讨和学习。其他的话,我不多说了。 |
|
返回顶楼 | |
发表时间:2010-07-26
java的优点是分布式,如果什么都交给数据库,数据库也会不堪重负...
虽然有的中间件是很搓,但是如果使用分布式设置集群,那么压力就能得到缓解. 数据库也舒服多了... |
|
返回顶楼 | |
发表时间:2010-07-26
我们是单行数据hql,小数据量sql,大数据量存储过程,赞同小粒度简单sql的观点,就算是oracle也是有bug的,有些复杂用法会不稳定的出现问题...我就遇到过左连接+窗口函数出现bug.多出好几万条数据...
|
|
返回顶楼 | |
发表时间: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的数据库,那是多么大的工作量啊,上次做个版本的升级还忙了好长一段时间呢。 |
|
返回顶楼 | |
发表时间:2010-07-26
3000多行的应该是存储过程吧,一个sql还没见过这么长的,有的数据库sql有长度限制了,应该到不了这么长
|
|
返回顶楼 | |
发表时间:2010-07-26
oakeye 写道 beeke 写道 这个做法也很正常。我们就有这样的项目:
它一个银行的核心系统 几千万一台的数据库服务器足够强大 开发人员以前大多熟悉C语言,精通SQL调优,不怎么熟悉OO,并且他们为此项目服务了很多年 项目永远也不用考虑到移植 我参与做过一个海外项目,一般程序员甚至连普通的SQL都不用,哪怕是简单的插入数据,都有专人写存储过程。 另外,比起tuxedo这类老资格的中间件,J2EE远不如吹嘘的稳定和快速。把压力推向数据库,使得系统更加稳定,调优也更加容易 核心都是这样 不用吵什么java还是c 全是存储过程。。。 保险行业的核心系统的核心计算也都是存储过程。 |
|
返回顶楼 | |
发表时间:2010-07-26
最后修改:2010-07-26
效率比较高
但我不是很喜欢,而且如果换数据库就傻了 |
|
返回顶楼 | |