【问题标题】:CakePhp Multiple tenants - single DB versus multiple DBsCakePhp 多租户 - 单个数据库与多个数据库
【发布时间】:2012-05-03 10:09:57
【问题描述】:

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

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

不幸的是,这有很多缺点 - 可管理性:必须在所有现有数据库中更改数据库 - 创建的 SQL 脚本方法笨拙,不像我们希望的那样可靠 - 我们希望允许用户从主页(例如 www.site.com)登录,但目前我们不能这样做,因为子域决定了要使用的数据库。 - 我们希望有一个中心位置来保存指标/客户使用情况。

因此,对于我们的应用程序的数据库结构的最佳解决方案是什么,我们感到困惑/不确定。

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

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

非常感谢,

kSeudo

【问题讨论】:

    标签: database cakephp saas


    【解决方案1】:

    只是我的建议:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多