我同意Ozzy - 我这是为在线数据库产品做的。我们有一个主数据库,基本上有一个美化的用户表。每个客户都有自己的数据库。这样做的好处是我可以轻松地将一个客户数据库从服务器A移动到服务器B [mysql],并且可以通过命令行工具轻松实现。还要对大型表进行维护,删除/添加索引可能会搞砸你的应用程序,特别是如果说,添加索引会锁定表[mysql]。它会影响每个人。据推测,使用较小的数据库,当您需要推出模式级别更改时,您可以更好地避免这种情况并拥有更多选项。我只是喜欢灵活性。
选项3是最具可扩展性的。虽然起初可能看起来更复杂,但它可以完全自动化,并且可以避免您对未来的头痛。您还可以通过在多个服务器上安装客户端数据库来提高性能,从而提高效率。
多年前我设计的 Innomatic ,用于在PHP中构建SaaS应用程序的开源平台,我选择了第三种选择: 的 多租户代码 强> 和 的 单租户数据库 强> 。
根据我的经验,这是最具扩展性的选项,但它还需要一组脚本来在更新代码,数据库方案,启用应用程序到租户等时传播更改。
因此,我在构建基于组件的可扩展引擎方面付出了很多努力,以完全自动化所有这些任务并最大限度地减少系统管理工作。如果你想采用第三种选择,我强烈建议建立这样的架构。