知识大全 从疯狂痴迷数据库存储过程到彻底放弃他

Posted 数据库

篇首语:粉丝对我来说都是浮云,所以我很喜欢多云的天气。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 从疯狂痴迷数据库存储过程到彻底放弃他相关的知识,希望对你有一定的参考价值。

  很早的时候 我被我们领导灌输过一个思想 我们领导当时是做WEB出身的 他非常重视WEB的功能 在他眼里 数据库只是存放数据的箱子 不应该把过多的业务逻辑交给数据库去处理 应该只把他看做是存放数据的箱子 我们当时是用MySQL + php 那时候MySQL比较弱一些 不支持存储过程 触发器 事务等等 正好符合我们领导所提倡的理念

  后来接触了ERP 发现数据量很大 全部用VB等处理效率低 速度也慢 采用存储过程效率高 而且有些Bug 新功能只要在数据库服务器上进行修改存储过程就可以了 客户端都不用修改程序 感觉这个存储过程很强大 而且通过存储过程还可以做其他软件的数据库接口 自从那以后就疯狂痴迷于存储过程 数据库技术 经常研究这些方面的技术

  又过了些日子 接触了Oracle 发现与SQLSever里的存储过程不兼容 有些写法 用法 理念差距也很大 移植问题是个很大的麻烦 虽然理论是完全可以移植的 但是要维护 套这样的系统 麻烦很多 所以开始渐渐的放弃写存储过程这个爱好了 尽量写一些简单的SQL语句的组合 尽量把商业逻辑都写在C#里 好调试些 随着对C#语法的深入理解 商业逻辑写在C#里的开发速度 比写在存储过程里还快了很多 再接着对系统整体功能的定位 渐渐放弃了局部功能的优化思想 以考虑全局为重 不差那么 秒的性能速度提高 不在乎这些一点点的差距

  最近几年 由于对面向服务编程的深入理解 彻底放弃写存储过程了 尽量商业逻辑都写在C#里 因为客户有可能是买了正版的Oracle或者购买了正版的SQLServer 他们希望你的程序能跑在他们的正版数据库系统上 而不是为了使用你的系统 又重新购买另一套正版软件

  基于存储过程的数据库脚本的主要缺点是调试起来麻烦 数据库中的表字段变动了 也不提示关联错误 也没有版本控制 很容易丢失脚本程序 而且人人都有一个本地数据库 很容易把存储过程搞乱套了 最后会导致谁都不知道到底哪个才是最新的存储过程 而且给上百个存储过程起个合理的名称 这个命名工作统一规范化也是个要命的问题

  把商业逻辑写在C#里的好处就很多了 有相应的版本控制器 以前的代码也可以找出来 不怕丢失代码 有些修改程序等造成的错误 在开发环境编译阶段就能发现错误在哪里 好进行关联修正 多种版本的数据库上移植也简单些 也不用同时两边作战 又要维护数据的版本 又要维护程序的版本 发布时也会遇到 方面都需要更新的问题 还是单边作战比较简单一些 同时与其他系统的接口等

  交给相应的服务程序进行处理 由服务程序来负责与其他系统的交互 这个交互又比底层数据库的交互强大很多

  我曾经写过一个小软件 里面大量采用了存储过程 给我的痛苦总结下来是 数据库中的表进行了修正了 我不知道哪几个存储过程需要修正? 有时候手上好几个数据库 测试来测试去 很容易不知道到底哪个是最新的 特别是过了一年半载 再去找对应的数据库时 这个问题很明显 调试C#程序很容易 调试存储过程 相对麻烦一些 参数有变动时 还要修改存储过程的参数 有时候还有关联的存储过程需要修正 很折腾人 而且运行了 才能发现这些问题 还有这个程序只能跑在SQLServer上 还好我们用的都是D版 想安装就装了 也不要钱 若真要钱 那不是开玩笑的

  现在我们开发的很多系统里 根本看不到存储过程的影子了 当然我们也不是走极端 在平时一些简单的系统里 还真没多大必要用到存储过程 能不用就不用吧 多一事不如少一事 现在总结已经走过的路 感觉还是商业逻辑尽量写在C#里是省心省力的正确道路

cha138/Article/program/net/201311/12497

相关参考

知识大全 一个女生追个男生很久,但她感觉他不喜欢她就彻底放弃了,但他没女朋友,她会不会伤心

一个女生追个男生很久,但她感觉他不喜欢她就彻底放弃了,但他没女朋友,她会不会伤心?女生和我经历很像,他也没有女朋友.我曾喜欢过一男生将近10年时间.n次的表白,n次的拒绝....如果问会不会伤心,楼主

知识大全 如何彻底停止job

  现象  在oracle的工作队列里面执行存储过程执行出错导致队列死掉了我使用remove把作业从工作队列里面去除掉重新修改过程可是编译的时候死掉了根据以往的经验是因为过程正在执行的时候不能编译的原

知识大全 如何通过hibernate调用存储过程

用hibernate操作数据库可以通过获取的session值调用connection()方法获取connection从而调用存储过程java调用存储过程什么是存储过程?存储过程是指保存在数据库并在数据

知识大全 在存储过程中连接远程数据库并进行操作

  我们有时候需要在本地数据库的存储过程中或者在其他SQL语句中要访问一个远程数据库我们可以这样做  在存储过程中连接远程数据库并进行操作  查看远程数据库的相关数据  SERVICE_NAME  两

知识大全 数据库为什么要分库分表,数据库分库分表

数据库为什么要分库分表,数据库分库分表1基本思想之什么是分库分表?从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。2基本思想之为什么要分库

知识大全 利用 Java 存储过程简化数据库操作

利用Java存储过程简化数据库操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用Java存

知识大全 动态创建MSSQL数据库表存储过程

动态创建MSSQL数据库表存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面是利用SQ

知识大全 oracle到mysql的迁移步骤及各种注意事项

  最近公司一个项目需要将数据库进行一次迁移从oracle到mysql网上资料甚少现将我本次迁移过程中所遇到的一些问题总结于此(主要是存储过程的迁移)希望能给自己做一个日后的参考如果有幸能帮助到大家更

知识大全 如何使用ADO访问Oracle数据库存储过程

如何使用ADO访问Oracle数据库存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一关

知识大全 调用Oracle数据库中的存储过程需要两步走

调用Oracle数据库中的存储过程需要两步走  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  存储