我想请教下各位大虾,
现在程序中使用SQL存储过程真过时了吗?难道用在程序中使用了SQL存储过程就真的打乱了项目的三层架构思想吗?
最近我在一个公司听到公司里面的软件设计总监和某经理在某位员工说到程序中使用存储过程的时候尽然说使用SQL存储过程已经过时了,那是老的旧的设计思想,而且使用了SQL存储过程的话打破了软件的多层架构的思想,他们把所有的本来可以使用DB服务器上的资源的计算全都搬到自己程序中的业务层来运算,本来使用存储过程可以让报表跑的更快的,他们不用存储过程,而在他们的业务层去算,到最后软件的报表生成速度让每个客户都埋怨说太久了。
大家说说现在存储过程真的是过时的东西吗 ?打乱了程序的多层架构思想吗?
我到现在都想不通为什么他们有这样的想法。明明用存储过程可以让报表效率更高为什么不用呢?难道是这位所谓的软件设计总监和某经理从来没用过存储过程,而且也不会写存储过程?
现在程序中使用SQL存储过程真过时了吗?难道用在程序中使用了SQL存储过程就真的打乱了项目的三层架构思想吗?
最近我在一个公司听到公司里面的软件设计总监和某经理在某位员工说到程序中使用存储过程的时候尽然说使用SQL存储过程已经过时了,那是老的旧的设计思想,而且使用了SQL存储过程的话打破了软件的多层架构的思想,他们把所有的本来可以使用DB服务器上的资源的计算全都搬到自己程序中的业务层来运算,本来使用存储过程可以让报表跑的更快的,他们不用存储过程,而在他们的业务层去算,到最后软件的报表生成速度让每个客户都埋怨说太久了。
大家说说现在存储过程真的是过时的东西吗 ?打乱了程序的多层架构思想吗?
我到现在都想不通为什么他们有这样的想法。明明用存储过程可以让报表效率更高为什么不用呢?难道是这位所谓的软件设计总监和某经理从来没用过存储过程,而且也不会写存储过程?
但个人认为这也只是从系统的大结构(或称为架构)来看的。是啊,除了表现层,逻辑层、存储层都由DBMS实现了,确实没有分层概念了。
那是不是这样的设计就很失败呢,不尽然。
(1)、我们回头想一想,为什么要分层?分层的目的是多方面的,其中应当包括一条提高系统可读性。存储过程的可读性比一般开发语言差吗?影响代码可读性的主要因素是语言吗?
(2)、所谓分层概念,是不是也要区分逻辑分层和物理分层,前者在设计考虑,再细分当然还有架构设计、模块/子系统设计、详细/代码设计等;后者则是系统的物理实现,部署方式上的分层。如果设计得当,存储过程代码是不是也能够做到松散耦合、结构优良、条理清晰、层次分明呢?至于部署实现上的分层,实际上可能考虑性能和安全性多一些,结构倒是其次了4、当然,实际应用中完全用存储过程来实现整个系统很少(但不是不可能,特别是现在大型DBMS在报表展现上已经做到相当程度了)。原因主要考虑的是移植性方面,毕竟不会有人乐于每天做代码移植性工作。但正如楼主好多人说的,在做大计算量的报表时,很多系统都会使用存储过程。原因当然主要是考虑性能因素,试想,如果一个报表需要几分钟才能出来,没有用户能够接受的。
试想你的客户今天说MSSQL比较好,你给他写了存储过程,实现了业务,过半年,他说听说Oreacle比较好,要换Oreacle你怎么移植,从头来做吗??想必是难以完成的任务!!!
存储过程这个东西对于数据库软件本身依赖性太大,不同的数据库内部语言不一样,调用方法不一样,一旦改了数据库,还真是噩梦.所以我只是在数据库内部用存储过程,外部的程序基本上和数据库打交道的都是标准的sql语言.