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