CakePHP App-Structure:一个DB& App与多个DB&应用

时间:2012-01-09 15:14:37

标签: php database-design cakephp multi-user application-structure

我有一个简短的概念问题:

最近,我开始开发一个应用程序,我可以(在运行中)创建客户端,而这些客户端又可以创建包含许多其他内容(自己的登录等)的项目。

网址结构为“example.com/client1/project1”,供用户访问其项目。到目前为止一切顺利,我用DB-Model和路由等管理了所有这些。

结构示例:

-> Client -> Project -> User
                     -> Forum -> Topic -> Post
                     -> Message
                     -> Setting
                     -> [...] (you get the gist)

但是,只有少数客户端(< 15),所以我想知道为每个客户端使用SEPARATE app-folder和DB是否更好。因为这样,我也可以分别为每个客户推出升级。


这是我对此事的初步想法(单独安装):

Pro:单独的应用

  • 能够为每个客户分别推出更新和新功能(很可能某些客户不喜欢某些新功能)
  • 一个数据库中的错误只会影响一个客户端

Contra:单独的应用

  • 在监控所有应用程序方面的更多维护工作&全局应用更新(但考虑到客户端数量这不是真正的问题)
  • 可能会因为不同的版本而变得混乱。
  • 无法实施可以访问所有应用程序的superadmin(需要在应用程序级别完成)
  • 难以创建共享功能和数据(例如,为客户计费)
  • 糟糕的做法?

如果曾经希望合并所有安装,那么这不会是一个问题,因为所有内容都基于UUID。此外,我仍然会实现客户端模型,其余的都依赖于它:这样,只需将数据库和客户端文件合并到一个应用程序安装中(假设每个人都想要相同的功能)

注意:在任何情况下都会共享CakePHP核心库:所以这不是问题所在。

在这种情况下你会怎么想?我能看到的唯一问题是账单:

但是从每个客户端内部调用中央数据库让它知道“嘿,我刚刚创建了需要收费的内容”并不是一个问题。

如果我在单个应用中执行此操作 - 如何从某些更新中排除某些客户端?或者我应该只是强迫每个人习惯任何新功能?

1 个答案:

答案 0 :(得分:2)

由于您还提到了管理费用,如果有一项要求使其绝对必要,我只会选择“单独的应用程序”。

修改: 您不需要使用不同的数据库模式来微调每个客户端的可用功能