(我不确定这是否是发表这个问题的最佳地点。如果没有,请将我重定向到适当的堆栈交换站点。)
我希望为多个客户端部署一个web应用程序。这样做的目的是每个客户只能访问自己的数据。假设客户端是应用程序安装的所有者。每个安装都可以有多个用户。所有安装都在我自己的主机中,这样我就可以更好地控制代码和业务模型(这是一种SaaS类型的事情)。
我正在寻找技术选项来执行这种部署。
要做到这一点,最简单的办法是:
然而,这个解决方案有几个缺点:
因此,我更倾向于将数据隔离的另一种选择。
我正在考虑的另一种选择是:
这解决了数据泄漏的潜在问题,但需要维护多个数据库(如果DB表更改,则必须跨多个安装完成)。这很可能是自动化的。
更好的方法是什么?是否有比我所指出的更好的选择?
提前谢谢你的帮助。
发布于 2015-09-07 08:55:19
这是一个老的“如何处理多租户”的问题,没有一个正确的答案。你已经很好地选择了关键点。除了“视情况而定”之外,我无法给出一个答案,但这里还有几点需要您考虑:
mixing data of different clients ... if there is a bug, its easier for someone to end up accessing some else's data和Come up with a scheme associating each installation [correct] database --如果不同的数据库处于同一台主机上,或者可以被同一台主机访问,那么这里的风险非常相似,特别是从防范蓄意攻击的角度来看,因此决定的一部分取决于您认为可以最有效地设计的潜在安全问题集合。如果您感到缺乏SQL技能,这可能会将您推向多个数据库方向,因为您对大数据大小的关注会随着客户端的增长而变得效率低下。For each installation, buy a DB from the hosting company对于SaaS解决方案,如果您正在支付每个数据库或类似的费用,则您有一个不适当的托管安排。听起来,传统的共享web主机应该是专用机器(虚拟的或物理的)或基于PaaS的平台。有关更多信息,请参见https://msdn.microsoft.com/en-us/library/aa479086.aspx、https://en.wikipedia.org/wiki/Multitenancy和搜索类似的术语以进行进一步讨论。(第一个链接来自MS,但涉及的是一般的设计角度,而不是专门针对matters的问题,它也已经有一段时间了,但是相关的问题并没有像你想象的那样在过去的十年中发生很大的变化)
https://dba.stackexchange.com/questions/114330
复制相似问题