Web applications 多客户端应用程序的部署(最佳实践)

Web applications 多客户端应用程序的部署(最佳实践),web-applications,deployment,multiple-instances,multiple-databases,Web Applications,Deployment,Multiple Instances,Multiple Databases,(我不确定这是否是发布此问题的最佳位置。如果不是,请将我重定向到相应的stack exchange站点。) 我希望为多个客户端部署一个web应用程序 这个想法是每个客户只能访问他或她的数据。假设客户机是应用程序安装的所有者。每个安装可以有多个用户 我希望所有的安装都在我自己的主机中,这样我就可以更好地控制代码和业务模型(客户实际上将为服务的使用付费) 我正在寻找执行这种部署的技术选项 [备选案文1] 一个简单的选择是: 更改数据库以使每个相关表都知道其“所有者id” 更改所有SQL查询,以便每

(我不确定这是否是发布此问题的最佳位置。如果不是,请将我重定向到相应的stack exchange站点。)

我希望为多个客户端部署一个web应用程序

这个想法是每个客户只能访问他或她的数据。假设客户机是应用程序安装的所有者。每个安装可以有多个用户

我希望所有的安装都在我自己的主机中,这样我就可以更好地控制代码和业务模型(客户实际上将为服务的使用付费)

我正在寻找执行这种部署的技术选项

[备选案文1] 一个简单的选择是:

  • 更改数据库以使每个相关表都知道其“所有者id”
  • 更改所有SQL查询,以便每个用户仅获取与其“所有者id”相关的数据
(我不要求一个用户与多个客户端/安装共用)

但是,此解决方案有几个缺点:

  • 需要更改大多数SQL代码
  • 由于数据库将有更多的数据(所有安装的数据),因此可能会对性能产生一些影响
  • 在同一数据库中混合不同客户端的数据可能会导致 一些问题(如果有bug,对某人来说更容易结束) 访问其他人的数据) 因此,我更喜欢数据隔离的替代方案

    [备选案文2] 我正在考虑的一个备选方案是:

  • 对于每个安装,从托管公司购买一个DB
  • 提出一个配置方案,允许将每个安装与应该执行连接的数据库相关联
  • 例如,如果用户访问代码,则代码知道它必须连接到database-name-For-client-3。这可能是通过一些独立于主代码加载的配置文件来实现的

    这解决了潜在的数据泄漏问题,但需要维护多个数据库(如果DB表发生更改,则必须跨多个安装完成)。这可能是自动化的

    [问题] 我的问题是,对于这种部署,有哪些更好的替代方案


    谢谢。

    由于这不是一个非常流行的主题,我将留下一些我在发布问题后找到的链接:

    我还在DBA Stack Exchange中提出了一个问题,帖子中有一条评论和一个回复,这导致了一个简短的讨论:


    简而言之,“视情况而定):

    你最终会得到什么?@Frank_Vr-什么都没有,因为我们没有推进应用程序/服务的创建,尽管不是出于技术原因。我的感觉是,从长远来看,多数据库选项会更好——因为数据管理的特殊性(如从备份中恢复)。