CakePHP应用程序结构:一个DB&;应用程序与多个数据库&;应用程序


CakePHP App-Structure: one DB & App vs. multiple DBs & Apps

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

最近,我开始开发一个应用程序,在这个应用程序中,我可以(动态地)创建客户,而客户又可以创建有很多其他内容的项目(自己的登录等)。

URL结构是"example.com/client1/project1",用户可以访问他们的项目。到目前为止,一切都很好,我用数据库模型和路由等来管理它

示例结构:

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

然而,只有少数客户端(<15),所以我想知道是否最好为每个客户端使用单独的应用程序文件夹和DB。因为这样,我还可以分别为每个客户端推出升级。


以下是我对此事的初步想法(进行单独安装):

专业版:独立应用

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

Contra:单独的应用程序

  • 在监控所有应用程序方面进行更多的维护工作;全局应用更新(但考虑到客户端的数量,这实际上不是问题)
  • 不同的版本可能会让人感到困惑
  • 无法实现可以访问所有应用程序的超级管理员(需要在应用程序级别上完成)
  • 更难创建共享功能和数据(例如为客户计费)
  • 不良做法

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

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

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

但是,从每个客户端中调用一个中央数据库,让它知道"嘿,我刚刚创建了一些需要计费的东西"并不是问题。

如果我在单个应用程序中执行此操作,如何将某些客户端排除在某些更新之外?还是我应该简单地强迫每个人都习惯任何新功能?

由于您也提到了开销,只有在有绝对必要的要求时,我才会选择"单独的应用程序"。

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

相关文章: