我对人们在许多应用程序访问的数据库中使用存储过程的方法感到好奇。具体地说,您是倾向于为每个应用程序保留不同的存储过程集,还是尝试使用共享集,还是混合使用?
一方面,当发生模型更改或类似的情况且理想情况下维护较少时,重用SP允许较少的更改。另一方面,如果应用程序的需求不同,则对一个应用程序的存储过程的更改可能会中断其他应用程序。我应该指出的是,在我们的环境中,每个应用程序都有自己的开发团队,他们之间的沟通很差。不过,数据团队有更好的沟通,并且主要负责存储过程的编写。
谢谢!
发布于 2008-09-17 15:34:10
这完全取决于您的抽象策略。是将存储过程视为离散的抽象点,还是将其视为调用它们的应用程序的另一部分。
这个问题的答案将告诉你如何管理它们。如果它们是离散的抽象,它们可以共享,就像你需要新的功能,你需要添加新的过程。如果它们是调用它们的应用程序的一部分,它们就不应该被共享。
发布于 2008-09-17 15:28:41
应该基于要返回的数据创建存储过程,而不是基于发出请求的应用程序。如果您有一个为GetAllItems的存储过程,它应该返回数据库中的所有项。如果其中一个应用程序想要按类别获取所有项目,请创建GetAllItemsByCategory。存储过程的业务规则没有理由根据请求数据的应用程序而改变。
发布于 2008-09-17 15:30:28
我的经验是,多个应用程序共享SP是一种痛苦的原因。事实上,我认为拥有一个由多个应用程序直接访问的数据库并不是最好的长期架构。
我推荐并且已经实现的模式是,每个数据库应该只有一个应用程序“拥有”,并提供API(服务等)。供其他应用程序访问和修改数据。
这有几个优点:
https://stackoverflow.com/questions/84453
复制相似问题