需要多租户数据库架构的建议吗?

Mut*_*. V 1 php mysql database database-design database-schema

我们正在使用SaaS模型中的PHP和MySQL开发项目,每个租户都可以使用我们的Module Creator和Form Builder为自己创建模块.

当他们动态创建新模块时,我们正在为特定租户创建新表.因此每个租户都有不同的架构.

我建议使用每个租户的每个数据库,但我的经理希望将所有租户保留在单个数据库中,因为我们已经继续升级我们的项目.

现在我的想法是为每个租户提供2个DB; 一个是Master DB,它对所有租户都是通用的,下一个是辅助DB,它是为每个人创建的表.

Dev*_*Dev 8

有多种方式可以设计多租户应用程序

1)单个数据库,单个代码库

使用单个数据库并将所有客户端数据存储在单个数据库中.您必须在所有表中添加"clientid"字段,并修改所有SQL查询以选择正确的"clientid".如果您已有一个租户应用程序,则代码中需要进行大量修改.

优点:易于管理数据库和更新; 没有重复.缺点:如果您错过了SQL查询中的"clientid",则可能会导致另一个客户端出现问题.

2)多个数据库,单个代码库

为每个客户端创建单独的数据库.您现有的单租户代码库无需修改.您只需修改配置文件以根据客户端选择数据库.

优点:极少的代码库修改,易于确保客户端数据不会混杂.缺点:要管理多个数据库,因此在数据库架构更新时,您必须更新每个数据库.

3)多个数据库,多个代码库

创建一个单独的数据库并复制每个客户端的完整代码.根本不需要修改.

优点:无需修改代码库,轻松保证客户端数据不会混杂,便于客户端执行特定的修改.缺点:需要管理多个数据库/代码,以便在数据库架构/代码更新时,您必须为每个客户端手动更新.

因此,现在您可以决定哪种选项最适合您的项目要求.