SQLServer2008中的业务逻辑

SQLServer2008中的业务逻辑,sql,sql-server,business-logic,Sql,Sql Server,Business Logic,如果有DBA的话,我正在制作一个相当大的软件,目前最大的问题之一是将业务逻辑放在哪里。虽然存储过程更容易动态修复,但处理需求可能会大大降低数据库的速度。我也不想让应用程序处理所有的业务逻辑,因为我希望它是一个不需要用户前端操作的“自我维持实体” 我的想法是创建一个在某个地方的中央服务器上运行的服务,并让客户端通过该服务进行连接。该服务将维护所有业务逻辑,并充当所有数据库操作的前端 想法?对没有 我愿意承认,我还缺少一些关键概念,需要阅读一些文献。将所有业务逻辑都放在服务器端就可以了。 不把它放在

如果有DBA的话,我正在制作一个相当大的软件,目前最大的问题之一是将业务逻辑放在哪里。虽然存储过程更容易动态修复,但处理需求可能会大大降低数据库的速度。我也不想让应用程序处理所有的业务逻辑,因为我希望它是一个不需要用户前端操作的“自我维持实体”

我的想法是创建一个在某个地方的中央服务器上运行的服务,并让客户端通过该服务进行连接。该服务将维护所有业务逻辑,并充当所有数据库操作的前端

想法?对没有


我愿意承认,我还缺少一些关键概念,需要阅读一些文献。

将所有业务逻辑都放在服务器端就可以了。
不把它放在服务器端也可以

事实上,这取决于你。
如果存储过程看起来不像sql,那么可以创建一个新的存储过程


以下是。

将所有业务逻辑都放在服务器端很好。
不把它放在服务器端也可以

事实上,这取决于你。
如果存储过程看起来不像sql,那么可以创建一个新的存储过程

以下是。

您所说的“业务逻辑”是什么意思

我见过聚合和其他基于集合的操作在客户端代码中完成的情况,以及SQL中可怕的RBAR操作,这些操作应该在其他地方完成


SQL是一种有其位置的工具:如果您正在处理大型数据集、联接、聚合等,那么SQL就是执行此操作的地方。其他任何东西都是对SOA理想的奴性服从

我的方法是考虑存储的PROC或SQL所做的事情:它是中间层的一部分,以避免在过程代码中设置基于集合的操作,还是作为纯数据完整性/持久性降低? 如果您的业务逻辑是100%基于集合的,那么您不需要中间层(编辑:基于客户端代码),除非它非常薄。

您所说的“业务逻辑”是什么意思

我见过聚合和其他基于集合的操作在客户端代码中完成的情况,以及SQL中可怕的RBAR操作,这些操作应该在其他地方完成


SQL是一种有其位置的工具:如果您正在处理大型数据集、联接、聚合等,那么SQL就是执行此操作的地方。其他任何东西都是对SOA理想的奴性服从

我的方法是考虑存储的PROC或SQL所做的事情:它是中间层的一部分,以避免在过程代码中设置基于集合的操作,还是作为纯数据完整性/持久性降低?


如果您的业务逻辑是100%基于集合的,那么您不需要中间层(编辑:基于客户机代码),除非它非常薄。

我强烈建议使用传统的n层方法,其中至少有UI层、业务层(如C#程序集或Java等价物)和数据访问。请参阅:


我在一家公司工作,那里所有的业务逻辑都在过程中,维护成本比必须的要高得多,它将我们限制在特定版本的sql server上,不可扩展,等等。简而言之,除非你的应用程序是简单的一次性应用程序,我不会在数据库中放入任何业务逻辑。

我强烈建议采用传统的n层方法,其中至少有UI层、业务层(如C#assembly或Java等效)和数据访问。请参阅:


我在一家公司工作,那里所有的业务逻辑都在过程中,维护成本比必须的要高得多,它将我们限制在特定版本的sql server上,不可扩展,等等。简而言之,除非你的应用程序是简单的一次性应用程序,我不会在数据库中放入任何业务逻辑。

我建议您密切关注您所认为的业务逻辑与引用完整性约束之间的差异

确保所有保持数据有意义关联的约束都在数据库层中就位。i、 如果你需要层叠一些删除或插入-当你需要验证一些基本数据值以使一切都有意义时。。。这些都应该在数据库中


然后确定客户端、中间层服务器或数据库是否适合任何其他业务逻辑。

我建议您密切关注您所认为的业务逻辑与参考完整性约束之间的差异

确保所有保持数据有意义关联的约束都在数据库层中就位。i、 如果你需要层叠一些删除或插入-当你需要验证一些基本数据值以使一切都有意义时。。。这些都应该在数据库中


然后确定客户机、中间层服务器或数据库是否适合任何其他业务逻辑。

多年来,我看到客户机应用程序来来往往,但数据库仍然存在

因此,现在我对大多数业务逻辑使用存储过程。三大优势:

  • Bug fix部署只需一瞬间,无需停机
  • 默认情况下为多用户
  • 更少的管道代码(无数据访问层)

多年来,我看到客户机应用程序来来往往,但数据库仍然存在

因此,现在我对大多数业务逻辑使用存储过程。三大优势:

  • Bug fix部署只需一瞬间,无需停机
  • 默认情况下为多用户
  • 更少的管道代码(无数据访问层)

我同意您的架构。如果您不想在数据库层或应用层上管理业务逻辑,那么中间服务层肯定是合适的。我同意您的体系结构。如果不希望管理数据库或应用程序上的业务逻辑