CakePhp多个租户 - 单个数据库与多个数据库

时间:2012-05-03 10:09:57

标签: database cakephp saas

我们正在开发CakePHP中的一个应用程序,供多家公司使用。我们希望确保应用程序的性能,可伸缩性,代码可管理性和安全性。

我们当前的测试版为每位客户创建了一个新数据库。当一家新公司加入该网站时,我们运行一个SQL脚本来创建一个空白数据库。 这具有以下优点:   - 更好的安全性(公司用户彼此分开)   - 我们可以通过子域设置数据库(IE:monkey.site.com,使用site_monkey数据库)   - 单一代码库。   - SQL查询的性能通常非常好,因为数据分散在较小的数据库中。

现在不幸的是,这有许多缺点   - 可管理性:必须在所有现有数据库中对数据库进行更改   - SQL脚本的创建方法很笨重,并不像我们想的那样可靠   - 我们希望允许用户从主页(EG。www.site.com)登录,但我们目前无法执行此操作,因为子域确定要使用的数据库。   - 我们希望保持指标/客户使用的中心位置。

因此,对于我们的应用程序的数据库结构的最佳解决方案,我们已经被撕裂/未定。

目前我们看到三个选项:   - 保持多个数据库设计   - 将所有公司合并到一个数据库中,并通过'companyId'识别每个公司   - 某种拆分模型,其中某些表位于“核心数据库”中,而其他表位于客户特定数据库中。

你们能否就你认为我们应该如何做到这一点提供一些宝贵的建议? 任何反馈/信息将不胜感激。

非常感谢,

k Seudo

1 个答案:

答案 0 :(得分:2)

只是我的建议:

我认为最好将客户相关数据保存在不同数据库中,并将认证相关数据保存在公共数据库中。因此,当用户登录时,您应该拥有一个包含该用户所属域的条目,并重定向到该域并访问相应的数据库和数据。

再次关注数据库的更改,您需要分别在每个数据库中实现更改。我认为这也有一些优点。有些客户可能会根据他们的流程要求进行一些更改。因此,如果要为不同的客户保留单独的数据库,则可以轻松管理。