当前位置:  开发笔记 > 后端 > 正文

存储过程 - 结束日期

如何解决《存储过程-结束日期》经验,为你挑选了6个好方法。

我正在听Hanselminutes播客; "StackOverflow使用ASP.NET MVC - Jeff Atwood和他的技术团队".在播客过程中,他们正在谈论SQL服务器,并说出"存储过程的日子已经过去"的内容.

现在我不是DBA,但这让我有点意外.我一直认为SP是速度的方式(因为它们被编译)和安全性,更不用说可扩展性和可维护性.如果不是这种情况而且SP处于最后阶段,那将取代它们或将来我们应该做些什么?



1> Steven A. Lo..:

也许我太老了,太懒,或者两者兼而有之,但我不得不反对.一次又一次的存储过程"节省了一天",因为当出现次要的后端更改或错误时,我们只需要修复存储过程,而不是在几十个桌面和Web服务器上更新桌面应用程序.此外,用户不会中断.这节省了大量精力和用户的麻烦.

此外,一些数据库操作只会在服务器上更高效,而不是在网络中来回,尤其是.当一个存储过程调用另一个存储过程调用另一个存储过程时(有或没有游标)

编辑:在SOA体系结构中,update-the-client-apps问题得到了缓解(感谢maud-dib),但是相互调用的存储过程仍然比SOA层的多个网络往返更有效.并且更新SOA层也不总是微不足道的.


该应用程序不应连接到数据库.它们应该连接到服务层.

2> Joel Coehoor..:

在现代系统上,参数化查询在服务器上进行编译和缓存,因此它们与存储过程一样快.它们具有大多数相同的安全功能.

对于为单个应用程序提供服务的数据库,将查询逻辑放在代码中的相关位置更有意义.如果没有别的东西,它可以更容易地进行源代码控制.如果你在服务器上保存存储过程,跟踪它们很快就会变得一团糟.此外,如果您使用的是ORM工具,那么无论如何您可能没有太多的实际SQL.

如果您的数据库服务于多个不同的应用程序,那么您可能仍希望使用存储过程在应用程序之间强制执行业务规则.


如果您的数据库服务于多个应用程序,那么您可能需要服务(WS/REST)层.

3> Terry G Lorb..:

我会说SP不可维护而且它们不能扩展.询问任何必须为SP重型系统添加功能的开发人员.为什么在不同的层中有一半的逻辑?没有什么可以替代的,只是不要使用'em.

谷歌搜索这篇伟大的帖子.



4> flukus..:

我一直听说如果你有多个应用程序连接到数据库,或者它使错误修复更容易,SP是好的.

这就是服务层的用途!

业务逻辑进入服务层,应用程序逻辑进入应用程序/网站.

调试和维护数百个SP(尤其是生成的SP)比维护编写良好的代码通过ORM工具与DB通信更加困难.


我喜欢ORM工具,它们可以加速开发 - 但它们无法代替复杂更新的sprocs.您可能会发现 - 通过分析 - 用sproc替换重的ORM更新将大大提高性能.假设您的数据库操作非常复杂,当然......

5> NotDan..:

如果您只关心速度,SP可能是要走的路.但是,如果您关心可扩展性或可维护性,SP可能不是最好的.我们的架构是建立在SP之上的,经过10年的代码,它很难维护并且非常多.一个好的ORM映射器可能是更好的选择.


良好的ORM是一个矛盾.

6> Murthy..:

可维护性 可能SP更好.如果维护SP的功能很难,那么在业务层组件中维护它们就更难了.

性能 缓存查询可能会对SP产生接近性能.但他们不能匹配的品种平台的跨品种数据库SP的性能.网络延迟是另一个值得关注的领域,尽管现在差距在缩小.

调试 SP可能比调试业务层+ db层放在一起相当容易.

使用SP可以有更多+ ve点.

但看节目的现代潮流,其相当"聪明"与"N"三层架构去大量的商业理由比"老" SP为基础的方法坚持.

好的系统应该兼顾两者.可能遵循80-20原则,20是SP.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有