多个客户的一个数据库或多个数据库?

时间:2017-04-27 12:14:10

标签: sql sql-server

我创建的Microsoft SQL服务器最初只服务于一个客户端,但我现在希望拥有多个服务器(如果事情进展顺利,最多可达数千个)。每个客户端的整个结构都是相同的,每个表中的数据只是客户端特定的。

我正在考虑将ClientID添加到几乎所有表中,并在所有函数中引用它(基本上是每个语句上的ClientID = @ClientID)。以及为每个新客户端获得新条目的Clients表

另一种方法是创建数据库[Client_Name]脚本,只要新客户端加入服务器以创建另一个客户端特定数据库及其所有相关结构和过程,就会触发该脚本。

这两种方案都有明显的优势吗?

1 个答案:

答案 0 :(得分:3)

关于如何构建此类数据库的决定不应仅针对性能问题。事实上,这可能是最不重要的问题。有些事情需要考虑:

  • 您将如何管理应用程序的更新?多个数据库可以使这更容易或更难。
  • 个别客户会进行自定义吗?这有利于多个数据库。
  • 数据的安全要求是什么?这可以是两种方式。
  • 数据的复制和恢复要求是什么?对于一个数据库,这会更容易,但不是在所有情况下都是如此。
  • 不同客户的并发使用会相互干扰吗?
  • 客户是否有责任管理自己的数据,或者这是您的产品的一部分吗?
  • 客户之间是否共享任何数据?您将如何维护公共参考表?

通常,单个数据库的性能会更好(想想占用内存的半填充数据页)。使用单个数据库(管理多个客户端数据库很麻烦)可以更轻松地进行维护和开发。但是对应用程序的实际要求应该是推动这样的决定。