首页 > 其他分享 >开发中为什么不建议使用 存储过程

开发中为什么不建议使用 存储过程

时间:2024-02-03 12:55:56浏览次数:33  
标签:为什么 存储 架构 数据库 逻辑 开发 过程

开发中,为什么不建议使用 存储过程?

存储过程是数据库管理系统中预编译的程序单元,它允许在数据库内直接执行一系列SQL语句。尽管存储过程有其优势(如减少网络传输、提高效率、封装业务逻辑等),但在特定情况下,它们也存在一些争议点:

  1. 可移植性:存储过程通常是与特定数据库引擎紧密相关的,这意味着当你更换数据库系统时,可能需要重写所有的存储过程。
  2. 维护性:随着业务逻辑复杂性的增加,存储过程可能会变得难以理解和维护,尤其是当其中包含大量的控制流逻辑时。相比于将业务逻辑放在应用层代码中,这会降低代码的可读性和可维护性。
  3. 版本控制与协同开发:存储过程不像应用代码那样易于进行版本控制和多人协作开发,对于大型项目而言,这可能导致团队合作效率下降。
  4. 测试与调试:相较于现代应用程序的测试工具,对存储过程进行单元测试和调试通常更为困难,尤其是在涉及复杂的业务流程时。
  5. 扩展性与灵活性:随着微服务架构和无服务器架构的发展,将业务逻辑放在应用端可以更好地实现服务解耦和水平扩展。存储过程可能无法很好地适应这些架构模式的需求。
  6. ORM兼容性:部分现代化的应用程序开发框架倾向于使用对象关系映射(ORM)技术,而存储过程与这类技术的结合可能不如直接SQL查询那么自然流畅。

然而,在特定应用场景下,例如高性能数据处理、复杂事务管理或安全性要求极高的环境中,存储过程的优势仍然显著,是否使用应根据项目的具体需求来权衡。



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

标签:为什么,存储,架构,数据库,逻辑,开发,过程
From: https://www.cnblogs.com/lovebing/p/18004542

相关文章

  • 金蝶云星空业务对象添加网络互控存储在哪些表
    一、【网控操作列表】确定后数据写入 --业务对象的操作列表《网络控制对象》主表SELECT*FROMT_BAS_NETWORKCTRLOBJECTWHEREFMETAOBJECTID='XXXX_AS_AfterOrder';--《网络控制对象》多语言 SELECT*FROMT_BAS_NETWORKCTRLOBJECT_LWHEREfidIN(SELECTFIDFROM......
  • 尤雨溪说:为什么Vue3 中应该使用 Ref 而不是 Reactive?
    每次有同学学习到 vue3 的时候,总会问:“ref 和 reactive 我们应该用哪个呢?”我告诉他:“我们应该使用 ref,而不是 reactive”。那么此时同学就会有疑惑:“为什么呢?ref 还需要 .value 处理,reactive 看起来会更加简单呢?”嗯....每当这个时候,我都需要进行一次长篇大论来解释......
  • 5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
    中台Admin(Admin.Core)中台Admin(Admin.Core)是前后端分离权限管理系统,前端UI基于Vue3开发,后端Api基于.NET8.0开发。支持多租户、接口权限、数据权限、动态Api、任务调度、OSS文件上传、滑块拼图验证、国内外主流数据库自由切换和动态高级查询。集成统一认证授权、事件总线、......
  • Golang 开发Android服务--交叉编译
    Golang开发Android服务--交叉编译移动端主要arm架构,编译命令CGO_ENABLED=0GOOS=linuxGOARCH=armgobuild-ogo_promine.goCGO_ENABLED=0GOOS=linux,指定临时环境变量不影响其它编译,也可以设置为全局环境变量。AOSP查看版本信息getprop不传参数查看所有属性值ge......
  • 起心动念 | 生成式 AI 开发实践系列的开端
    生成式AI和大模型的技术变革力量,正在逐渐影响着我们当下这个时代,全球各行各业都呈现百舸争流、万象更新的趋势。在2023年,我们通过各种面向开发者的活动,收集到了大量开发者关于基于生成式AI的开发内容需求和建议反馈。开发者们都期待我们在2024年推出更多关于生成式AI开......
  • Qt/C++音视频开发66-音频变速不变调/重采样/提高音量/变速变调/倍速播放/sonic库使用
    一、前言之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutput的采样率,可以规避这个问题,破音不在出现了,但是音调变了,倍速越大变得越快,人声越发不清晰,变得尖......
  • 短视频开发app,利用数据压缩加速大文件传输
    短视频开发app,利用数据压缩加速大文件传输当使用HTTP进行大文件传输时,我们可以考虑对大文件进行压缩。通常短视频开发app在发送请求时,都会携带accept和accept-*请求头信息,用于告诉服务器当前短视频开发app所支持的文件类型、支持的压缩格式列表和支持的语言。accept......
  • 【数据库】为什么PostgreSQL第一次查询结果很慢,第二次就变快了
    引言在PostgreSQL数据库中,我们经常会遇到这样的情况:第一次执行某个查询语句时,结果返回的速度非常慢,而当我们再次执行相同的查询语句时,速度却变得非常快。这种现象可能会让我们感到困惑,为什么同样的查询语句,第一次执行会这么慢,而第二次执行却这么快呢?PostgreSQL的查询缓存机制Po......
  • 在k8s中,有哪些存储?
    在Kubernetes(简称K8s)中,有多种内置和外部的存储解决方案,它们可以满足不同场景下的持久化存储需求。以下是一些常见的存储类型:PersistentVolume(PV):PersistentVolume是集群管理员创建并提供的存储资源,它具有一定的容量和访问模式。PersistentVolumeClaim(PVC):用户通......
  • 在 Windows 10 上使用 Visual Studio 2022 C++ 桌面开发
    工具下载链接:https://pan.quark.cn/s/c70b23901ccb环境介绍在今天的快速发展的软件开发行业中,选择合适的开发环境是非常关键的一步。对于C++开发人员来说,VisualStudio2022(VS2022)是一个强大的集成开发环境(IDE),特别是在Windows10操作系统中。安装VisualStudio2022本文将引导您......