创建新数据库时

时间:2010-07-12 11:19:36

标签: sql-server performance database-design maintainability

我有一个通用的数据库设计问题:何时创建新数据库而不是向现有数据库添加新表更好?问题与设计/可维护性以及性能问题有关。

背景:我们通过每晚将数据导入名为RM2的数据库来镜像客户的主要表格。一些新的(ASP.Net-)项目也需要访问这些数据,现在我想知道我是否应该为每个项目创建新数据库或者将他们的表与RM2合并(当前大小:37991.94 MB)。

3 个答案:

答案 0 :(得分:3)

我不一定会回答你的问题,但我会给你一些其他问题要考虑:

  1. 我应该何时将文件添加到数据库中的文件组? - 当文件太大时,“太大”可能是一个意见问题。
  2. 我应该何时向数据库添加新文件组? - 如果希望能够针对不同的数据库操作优化磁盘使用情况。
  3. 我应该何时向数据库添加新架构? - 当您拥有一组逻辑相关且可能需要不同用户默认权限的对象时。
  4. 我应该何时向我的应用程序添加新数据库? - 当您在两个数据库中的任何表之间不需要任何引用完整性时。当您不希望允许任何所有权链接的权限在两组对象之间交叉时。当您想要独立备份和恢复时。当您需要两组数据的不同SQL Server恢复模型时。
  5. 我想这可能已经回答了你的问题。 ; - )

答案 1 :(得分:1)

这不是数据库设计问题。这是一个组织问题。这个问题的组织方面比技术问题重要得多。

答案是:无论是什么让生活中最容易成为开发者

例如,你说:

  

一些新的(ASP.Net-)项目也需要访问这些数据。

这些项目与您的项目的整合程度如何?你实际上共享数据(或写入相同的表)?例如,如果您对其中一个表进行了重大更改,是否需要同时更改其他项目中的代码? (有时候很难在两个项目之间同步)。

如果您实际上没有共享数据(除了客户数据,我认为它实际上是只读的),那么使用单独的数据库(OR模式)。这使得更改变得更容易管理。

另一个技巧是在每个数据库中为客户数据提供一组视图,这些视图位于其他模式的其他地方。

因此,每个项目都有一个数据库,每个数据库中的视图都存储在一个单独的数据库中。

除非数据库位于不同的计算机上,否则性能不应成为问题。

答案 2 :(得分:0)

如果任何项目只想使用自己的数据库,您可以获得项目的其他数据库。但是如果你想获得这个数据中心,你应该为它创建一个其他共享数据库+每个项目的自我数据库。