【发布时间】:2012-05-03 10:09:57
【问题描述】:
我们正在开发一个可供多家公司使用的 CakePHP 应用程序。我们希望确保我们的应用程序的性能、可扩展性、代码可管理性和安全性。
我们当前的测试版会为每位客户创建一个新数据库。当一家新公司加入该站点时,我们运行一个 SQL 脚本来创建一个空白数据库。 这具有以下优点: - 更好的安全性(公司用户彼此分开) - 我们可以通过子域设置数据库(IE:monkey.site.com,使用site_monkey数据库) - 单一代码库。 - 由于数据分散在较小的数据库中,SQL 查询的性能通常非常好。
不幸的是,这有很多缺点 - 可管理性:必须在所有现有数据库中更改数据库 - 创建的 SQL 脚本方法笨拙,不像我们希望的那样可靠 - 我们希望允许用户从主页(例如 www.site.com)登录,但目前我们不能这样做,因为子域决定了要使用的数据库。 - 我们希望有一个中心位置来保存指标/客户使用情况。
因此,对于我们的应用程序的数据库结构的最佳解决方案是什么,我们感到困惑/不确定。
目前我们看到三个选项: - 保留多个数据库设计 - 将所有公司合并到一个数据库中,并通过“companyId”标识每个公司 - 某种拆分模型,其中某些表位于“核心数据库”中,而其他表位于客户特定的数据库中。
你们能否就您认为我们应该如何最好地做到这一点提供一些宝贵的建议? 任何反馈/信息将不胜感激。
非常感谢,
kSeudo
【问题讨论】: