何时在同一服务器上使用单独的 SQL 数据库?

Dan*_*don 3 sql sql-server sql-server-2008

我曾在多个 SQL 环境中工作过。在一种环境中,保存业务数据的不同表分布在多个不同的 SQL 数据库中,并且全部位于同一服务器上。

在另一种环境中,几乎所有表都保存在一个 SQL 数据库中。

我正在创建一个与另一个项目密切相关的新项目,我一直在想是否应该将新表放在同一个 SQL 数据库中或新的 SQL 数据库中。

这一切都在 MS SQL Server 上运行。

当我做出这个决定时,我需要考虑哪些因素?

Aar*_*and 5

从您的问题很难判断您的实际需求是什么,或者您会考虑将哪些数据存储在不同的数据库中。但除了戈登的观点之外,我还可以解决为什么您可能希望对属于不同客户/用户的数据使用单独的数据库的几个其他原因(并且此答案假设一种可能的数据分离,无论是通过数据库还是模式)由客户):

  • 正如我在评论中提到的,一些客户会要求将他们的数据单独存储,您可能需要以书面形式同意这一点,然后才能看到一分钱或能够确保他们的业务安全。因此,您不妨为这种不可避免的情况做好准备。

  • 将每个客户保留在自己的数据库中,如果他们的规模超出了当前服务器的容量,则可以很容易地移动他们。在我之前的工作中,我们以这种方式设计了系统,它后来拯救了我们——我们能够通过本质上相当于元数据操作的方式将客户完全转移到不同的服务器。在维护时段期间,备份数据库,将原始数据库设置为脱机,将备份恢复到新服务器,并更新配置表,告诉所有应用程序在哪里可以找到该数据库。这比尝试从其他人共享的数据库中提取所有数据要灵活得多......

  • 单独的数据库还允许您以不同的方式处理维护。一个客户需要时间点恢复,而另一个客户不需要?完美,您可以在不同的数据库上使用不同的恢复模型。比按文件组分隔并尝试实施某种文件组级备份解决方案要容易得多,并且比仅在完全恢复中处理一个大数据库要高效得多。

当然,这不是免费的,而是需要权衡。多个数据库会让一些人望而却步,但我已经管理这样一个系统 13 年了,我可以告诉您,管理 100 或 500 个基本相同的数据库并不比管理一个大型数据库中的 500 个模式复杂多少(事实上,我会说在很多方面都不太如此)。