多个数据库还是单个数据库?

时间:2012-02-18 14:44:05

标签: php mysql performance security saas

我们正在计划SAAS申请。

现在我们在数据库点。我们所有客户的单一关系数据库或每个客户的多个数据库? 我认为单个数据库可以,但采取适当的设计和安全性。 性能怎么样?

这是一个工资单SAAS,因此每个客户都需要根据他的公司进行员工管理。

4 个答案:

答案 0 :(得分:3)

如果您使用单个数据库,它还会影响您的备份和安全注意事项。通过将其全部放入单个数据库中,备份/恢复将影响所有客户。它还会影响您的缩放决策。每个客户的数据库意味着您可以添加新的数据库服务器和重新平衡数据库。单个数据库意味着您可能需要在将来进行集群。

另一方面,多个dbs意味着更多的管理开销,而且当您提供需要修改架构的增强功能时,还会有更多工作。

答案 1 :(得分:2)

这取决于您是否将独立维护每个客户的申请。如果它是“经典”SAAS应用程序,您将拥有许多客户端,并且您还没有准备好更改应用程序,直到大多数客户端需要进行一些更改,那么您应该执行一个数据库。另一方面,如果您只是为5个客户端托管解决方案,并且可能发生客户端3想要不同的东西(很可能是工资单应用程序)并且您想要满足他的要求,那么请使用单独的数据库。

关于性能(如果您有SaaS和一个数据库),有很多方法可以进行分区,以及其他性能改进技术(例如复制),如果最终遇到性能问题,可以实现这些技术......例如,您只需要维护一个数据库。

答案 2 :(得分:1)

这是一项设计权衡

性能与多个与单个数据库无关,除非您计划分布式数据服务器模型(每个数据库位于单独的服务器上)。

保留多个数据库为您添加一些不必要的工作。让我们假设您不知道将要发生什么,哪个是最佳解决方案(如果客户需要进行大量更改,数据库的大小会迅速增加......)在这种情况下,我建议从一个数据库开始,如果是业务快速增长,然后您可以轻松地分离每个客户数据库。

爱因斯坦:Everything should be made as simple as possible; But not simpler.

答案 3 :(得分:1)

如果它是软件即服务,那么您可能需要考虑恢复能力以及简单的性能。

就个人而言,我会为所有客户端选择一个数据库,但是会在负载均衡的多个服务器上复制它,以确保在月末/发薪日同时点击它时能够获得良好的性能。这也可以在一台服务器崩溃时为您提供故障转移。

对于更大的应用程序,我甚至可以考虑使用一个或两个具有读/写管理功能的数据库服务器,使用多个只读数据库服务器进行报告,再次使用复制。您可以关闭单个服务器以进行快速,离线和一致的数据库备份,同时仍保留在线访问权限。