论坛首页 综合技术论坛

探讨用存储过程的优劣

浏览 84566 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-01-24  
to liuchuan98:
我点名了,请你告诉我为什么sp的版本控制很难搞。你用了很字。
这跟我自己的经验对不上,所以我一定要知道你们在搞什么。为什么会有这个问题出来。
我想知道这里边到底存在什么误解。
0 请登录后投票
   发表时间:2011-01-24  
很多人直接在数据库创建 sp,而不是用文件保存起来,就不好用 版本控制系统
0 请登录后投票
   发表时间:2011-01-24   最后修改:2011-01-24
lobbychmd 写道
很多人直接在数据库创建 sp,而不是用文件保存起来,就不好用 版本控制系统


我kao,我忍不住了。这也能怪到sp身上??!!

你们太强大了。

0 请登录后投票
   发表时间:2011-01-24  
ironsabre 写道
liuchuan98 写道
说说存储过程的缺点吧:
1.运维复杂,业务变化导致的存储过程变化太难受,个人的切身体会,特别是存储过程长的时候:一.可读性太差,如果中间被人改个两三次,就更难受了,如果涉及到三、四个表,不懂业务的就很难读懂了;二.可复用性差,这是过程代码的典型劣势,不是说它没有复用性,但它的复用性和面向对象比起来是差一大截的;三.可维护性差,版本控制很难搞,不像代码环境能集成版本控制软件;且主、备和开发环境的不能随时同步。
2.不能使用对象缓存,也就是说客户请求除了少部分通过客户端缓存和页面缓存,大部分请求都直接捅到数据库了,浪费了利用应用服务器资源的机会。


已经有三个人说过版本控制很难搞了,我问了前面两个人,都没有回答我,请你来告诉我,sp的版本控制跟java有什么区别。请告诉我,一定要告诉我。

还有你前面说的可读性差什么的跟sp没任何关系。你写Java一样可以一个类写1万行。这是程序员的水平问题。
从来没有人说过sp就是一个过程到底的。

存储过程是编译在数据库系统里面的,以2进制形式存在,无法直接使用版本管理控制。CVS、SVN、GIT哪个也无法直接操作数据库管理存储过程版本。唯一的办法就是把存储过程代码保存在SQL文件中。而这个文件和数据库里面的存储过程的同步是需要人为维护的。等于中间需要人工多一道手。万一忘了文件和数据库更新,那么版本就会不一致。
而java等语言的代码本身是以文本形式存在的,可以直接用版本控制系统管理。
0 请登录后投票
   发表时间:2011-01-24  
魔力猫咪 写道
ironsabre 写道
liuchuan98 写道
说说存储过程的缺点吧:
1.运维复杂,业务变化导致的存储过程变化太难受,个人的切身体会,特别是存储过程长的时候:一.可读性太差,如果中间被人改个两三次,就更难受了,如果涉及到三、四个表,不懂业务的就很难读懂了;二.可复用性差,这是过程代码的典型劣势,不是说它没有复用性,但它的复用性和面向对象比起来是差一大截的;三.可维护性差,版本控制很难搞,不像代码环境能集成版本控制软件;且主、备和开发环境的不能随时同步。
2.不能使用对象缓存,也就是说客户请求除了少部分通过客户端缓存和页面缓存,大部分请求都直接捅到数据库了,浪费了利用应用服务器资源的机会。


已经有三个人说过版本控制很难搞了,我问了前面两个人,都没有回答我,请你来告诉我,sp的版本控制跟java有什么区别。请告诉我,一定要告诉我。

还有你前面说的可读性差什么的跟sp没任何关系。你写Java一样可以一个类写1万行。这是程序员的水平问题。
从来没有人说过sp就是一个过程到底的。

存储过程是编译在数据库系统里面的,以2进制形式存在,无法直接使用版本管理控制。CVS、SVN、GIT哪个也无法直接操作数据库管理存储过程版本。唯一的办法就是把存储过程代码保存在SQL文件中。而这个文件和数据库里面的存储过程的同步是需要人为维护的。等于中间需要人工多一道手。万一忘了文件和数据库更新,那么版本就会不一致。
而java等语言的代码本身是以文本形式存在的,可以直接用版本控制系统管理。


我跟你无法交流,打住。
0 请登录后投票
   发表时间:2011-01-24  
真想不到有人智商会无限低下到这种程度。不解释还不知道,一解释,哎。
0 请登录后投票
   发表时间:2011-01-24  
还有一点。svn 等代码管理工具是一个 C/S 的结构。 存储在服务器,副本运行在本地。

而存储过程是运行在服务器,所以比较容易发生更改的冲突。
0 请登录后投票
   发表时间:2011-01-24  
ironsabre 写道
真想不到有人智商会无限低下到这种程度。不解释还不知道,一解释,哎。


你乍跟咱们这些智商这么低下的人这么认真的讨论呢 
0 请登录后投票
   发表时间:2011-01-24  
可读性差可以这么理解,存储过程是一种面向过程的脚本语言。 从语言发展的角度来开确实比OO 可读性差一些。

另外貌似sp 不太好做自定义函数。因此很多都是一大段代码到底,这也是可读性差的一个体现。不过我没用过 oracle.
0 请登录后投票
   发表时间:2011-01-24  
houxinyou 写道
感觉楼主的系统是用了N久之前的框架,除了做页面基本不用改什么,把存储过程在配置文件中一设置就OK的那种.项目的环境也很确定,不是互联网应用,最多几百个客户端,并发也不是很多.项目不论怎么发展,客户端也基本是固定,无非就是加一个模块,增加点功能.而且说的不好听一点,很有可能是那种一锤子买卖,项目验收后基本上就啥也不管了.维护的事给钱都不一定管的不管的那种!这样的程序,界面漂亮一点,业务端和数据库只要有一处做的稍好一些就不会出性能问题.也不可能发展到楼上各位所说的那种还需要集群的程度.能把程序和数据库分到两台电脑上都是相当不错的了,多数情况下都是在一台电脑上.


我解释一下。
1、系统不是N久之前的框架,一直以来我们用的是以Spring+struts为底层扩展而来的框架,一点都不用存储过程。
2、项目环境确定,因为从技术选型到服务器安装调试一条龙都是我们决定的。
3、确实不是面向互联网的应用,所以我们的前端是flex。
4、不是一锤子买卖,是要一直维护下去的项目。项目验收后,一直在做扩展和优化。
5、tomcat和mysql分别部署的,而且还有tokyo cabinet做缓存,两台os都是centos5.5。

严格说起来,这是我们公司的产品,顺应客户的要求做定制化。

0 请登录后投票
论坛首页 综合技术版

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