目前,我有一个使用symfony框架用php编写的应用程序。与其在托管服务器上为客户单独安装,我想转移到as SaaS模型,为所有客户安装一次,可以运行谷歌代码或其他基于云的服务。虽然我想要一个好的框架带来的好处,但我并不依赖于PHP。
因此,挑战是:如果所有客户都在使用相同的应用程序,那么我们就可以找到一种方法来隔离每个客户的数据。例如,客户确实拥有管理员访问权限,并且可以管理自己的用户和隐私。在简单的层次上,您可以在每个表中使用一个组织标识符,并将其添加到所有数据库操作中。然而,大多数应用程序框架都使用某种类型的ORM,而我还没能找到一种能够在对应用程序代码的影响最小的情况下轻松地/似乎可以简化这一点的应用程序框架。
有没有人看过这个,有没有解决这个问题的好方法?
发布于 2011-07-02 16:05:23
正如Itay所说,multi-tenant system是一种常见的需求。不久前,我对这个问题做了一些研究,遇到了一个很好的演示文稿,介绍了处理这个问题的不同方法,以及每种方法的优缺点:http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html
此特定演示文稿面向Rails受众,但其原则与任何语言都是相同的。
发布于 2011-07-02 15:17:35
您描述的方法很常见,PHP (其中一个优势)将允许您相对轻松地进入ORM代码并根据需要对其进行修改。
第二种方法是为每个组织创建一个单独的数据库,并为共享资源创建一个联合数据库。
有点设计上的挑战(但只是一点点)。
如果你真的很大,那么你甚至需要为每个组织考虑一个单独的DB服务器(我想说在99.99999%的情况下这是一个严重的夸张)。
发布于 2012-02-27 18:01:34
这篇MSDN文章很好地概述了多租户中的数据架构:http://msdn.microsoft.com/en-us/library/aa479086.aspx
https://stackoverflow.com/questions/6555637
复制相似问题