首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署多客户端应用程序(最佳实践)

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

Stack Overflow用户
提问于 2015-09-02 07:35:47
回答 1查看 2K关注 0票数 1

(我不确定这是否是发表这个问题的最佳地点。如果没有,请将我重定向到适当的堆栈交换站点。)

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

这样做的目的是每个客户只能访问自己的数据。假设客户端是应用程序安装的所有者。每个安装都可以有多个用户。

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

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

备选案文1

要做到这一点,最简单的办法是:

  • 更改数据库,以便每个相关表都知道其“所有者id”。
  • 更改所有SQL查询,以便每个用户只获取与其“所有者id”相关的数据。

(我不要求用户必须是多个客户机/安装的公共用户)。

然而,这个解决方案有几个缺点:

  1. 需要更改大多数SQL代码;
  2. 可能会有一些性能影响,因为数据库将有更多的数据(所有安装的数据)。
  3. 将不同客户端的数据混合在同一个数据库中可能会导致一些问题(如果有错误,那么某人就更容易访问其他人的数据);

因此,我更倾向于将数据隔离的另一种选择。

选项2

我正在考虑的另一种选择是:

  1. 每次安装时,请从托管公司购买一个DB。
  2. 提出一个配置方案,允许将每个安装与应该执行连接的数据库相关联。

例如,如果用户访问http://very-nice-app.com/client-3/,代码就知道它必须连接到数据库名- For -client-3。这可能是通过一些独立于主代码加载的配置文件来实现的。

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

问题

我的问题是,对于这种部署,有什么更好的选择。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-10 21:27:45

由于这并不是一个非常受欢迎的主题,所以我将留下一些链接,这些链接是我发布这个问题后发现的:

Best practices for creating multiple web app instance

http://forums.devshed.com/mysql-help-4/practice-opinions-multi-user-multi-organisation-web-app-812530.html

我在DBA Stack Exchange中也提出了这个问题,在这里,文章有一个评论和一个答复,导致了一个简短的讨论:

https://dba.stackexchange.com/questions/114330/web-application-for-software-as-a-service-shared-database-or-multiple-database/

简而言之,“这取决于”:)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32347154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档