2012-02-18 62 views
0

我们正在计划一个SAAS应用程序。多个数据库或单个数据库?

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

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

回答

2

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

关于性能(如果你有SaaS和一个数据库),有很多方法可以做到分区和其他性能改进技术(复制举例来说)这要是你结束了性能问题,你可以实现...在在这种情况下,你将只需要维护一个数据库。

+0

谢谢!非常有帮助,这将帮助我采取正确的方法(单个数据库) – 2012-02-18 18:19:58

3

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

另一方面,多个数据块意味着更多的管理开销,并且当您提交需要架构修改的增强时,也会有更多的工作。

1

这是一个设计权衡

业绩无关,与多个VS单一的数据库,除非你打算分布式数据服务器模式(单独的服务器上的每个数据库)。

保持多个数据库为您添加一些不必要的工作。让我们假设你不知道将要发生什么事情,哪个是最好的解决方案(如果客户需要很多改变,数据库的规模会迅速增加......),在这种情况下,我建议从一个数据库开始,如果业务正在迅速成长,那么你可以轻松地分离每个客户分贝。

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

1

如果是软件即服务,那么你可能要考虑的韧性,以及简单的性能。

就我个人而言,我会为所有客户端使用单个数据库,但要通过负载均衡将其复制到多个服务器上,以确保在月末/发薪日。这也可以让您在发生服务器崩溃时进行故障转移。

对于一个较大的应用程序,我甚至可以考虑一个或两个数据库服务器具有读/写管理,有多个只读的报告数据库服务器,再次使用复制。你可以拿一台服务器停机快,离线和一致的数据库备份,同时仍保留的在线访问。

相关问题