2009-10-09 69 views
2

我有一个主数据库很少的数据库服务器,只有几十个小数据库。SQL Server 2008:N个小型数据库VS 1个数据库,N个模式

这些小型数据库是一种用于从各种源将数据导入主数据库的中间/暂存数据库。数据导入是一项日常任务。它们在结构上都非常相似,因为这些数据导入的实现类似,所以基本上它们具有定义映射,转换等的配置表以及包含导入结果的数据表。

前一段时间只出现过的小的屈指可数,但现在我有更多然后其中的20将支持数据输入的数量进一步增长。

我刚刚将所有服务器环境迁移到SQL Server 2008,现在有一些时间用于清理/重构,我正在考虑将所有数据导入数据库合并到一个数据库中,并使用database schema来分隔他们。

问题-0:没有其他的想法所描述的情况呢?

问题-1:我应该从separate database更改为separate schema

问题-2:!!!:在database schema执行中要小心的任何棘手的事情?


编辑-1:突出问题-2作为最 '悬而未决' 当前。

回答

5

在你的例子中,我可能会把数据库合并成一个。我真的没有看到让他们分开的理由,合并它们会减少您为支持备份而必须执行的工作量。如果您从数据源导入数据一次,然后再也不使用登台表,我可以看到启动单独的数据库来处理数据转换的原因。既然您持续使用这些表格,我宁愿将它们放在一起,这样我只需要到一个地方查找生产数据的完整端到端状态和数据加载状态。

2008年是在处​​理数据库分区也真的很不错,如果数据库变得太大,或者您需要单独为你与像有几个较小的优点单分贝的利益安全原因的数据。你不会得到多个更小的dbs。

3

当我们迁移,我们有一个非常类似的情况,我结束了一切移动到一个部分,有什么大的导入数据库,您已经对暗示。然而,我们并没有使用模式将它们分开。

+0

感谢,我需要使用模式分开,因为很多表/视图/ SP名称是一样的。你没有这个问题,是吗? – van 2009-10-09 13:28:56

+0

不,我没有,它的工作就好了 – ajdams 2009-10-09 14:07:29

3

因为数据库是参照完整性和备份的单位,如果你正在把大量,并不需要在相同的时间表要备份的分段数据,这可能是最简单的,以保持它在一个单独的D B。

您可以将多个文件组和不同备份用于一个数据库,但这需要更多的设计。

这将取决于的基本因素是:恢复模型,备份目标,使用模式和设计和维护文件组设计的工作量。

+0

好点,他们中的大多数都非常小,但很少有特别的更重 - 将它们分开放置在y案例。 – van 2009-10-09 13:39:08

2

所有之前的答案为我工作,尤其是你对选择性地组合数据库评论 - 如果一些非常忙,非常大的,或处理敏感数据,你可能要保持他们单独,或在不同的分组。这将使配置备份/恢复和磁盘/驱动器分配变得更加容易(让忙碌的人拥有自己的一组主轴)。

可能像大多数数据库开发人员,我处理几乎完全在dbo架构的对象,但我已经做了一些最近与其他模式的工作。我遇到的主要疑难问题是记住总是在引用任何数据库对象时指定模式。永远不要假设任何给定的连接都会引用您想要的模式中的对象 - 始终保持清晰准确!

+1

非常好的一点。我想如果我这样做,我会确保“dbo”是用户的默认模式(默认情况下是这样),但是“dbo”模式没有db对象和/或用户没有太多的权限。 – van 2009-10-09 14:26:27

1

我会把所有的进口分段表在一个数据库从常规生产DATABSE单独的备份需求可能会非常不同。这个数据库应该也包含像你的配置管理SSIS包,任何日志记录表,任何进口的元数据表的事情(我们跟踪进口的每一个运行的,这个状态运行,以及一个bazillion其他事情有关,如进口文件名,正常的文件大小等,方便自带的研究问题和增加检查的处理。我们USEA一个模式,它是客户端,然后realted的进口对象的其他架构/导出过程(原木,元数据等)

相关问题