SQL Server 2008:N个小型数据库VS 1个具有N个架构的数据库

时间:2009-10-09 13:09:54

标签: sql sql-server database-design sql-server-2008 schema

我有一个数据库服务器,主数据库很少,几十个小数据库。

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

前一段时间只有少数几个小的,但现在我有超过20个它们将随着支持的数据源的数量进一步增长。

我刚刚将所有服务器环境迁移到SQL Server 2008,并且现在有一些时间进行清理/重构,我想将所有数据导入数据库合并到一个数据库中,并使用{{1}分开它们。

问题0:针对所述情况的其他任何想法?

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

问题2: !!!:在separate schema实施中要小心谨慎吗?


编辑-1:将问题2突出显示为当前最“未答复”的问题。

5 个答案:

答案 0 :(得分:5)

在您的实例中,我可能会将数据库合并为一个。我真的没有理由将它们分开,合并它们会减少你需要做的工作量来支持备份等。如果你从数据源导入一次数据然后再也不再使用登台表,我可以看到提出单独的数据库来处理数据转换的原因。由于您持续使用这些表,我宁愿将它们保持在一起,这样我只需要到一个地方找到生产数据的完整端到端状态和数据加载状态。

2008非常擅长处理数据库分区,如果数据库分区太大,或者出于安全原因需要分离数据,您可以获得单个数据库的好处,例如具有几个较小的数据库。你不会得到多个较小的dbs。

答案 1 :(得分:3)

当我们迁移时,我们遇到了一个非常相似的情况,我最终将所有内容都移动到一个 - 你所暗示的大型导入数据库。但是,我们没有使用模式将它们分开。

答案 2 :(得分:3)

由于数据库是参照完整性和备份的单位,如果要为不需要在同一时间表上备份的分段引入大量数据,最简单的方法是将其保存在单独的数据库中

您可以使用具有多个文件组和不同备份的单个数据库,但这需要更多设计。

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

答案 3 :(得分:2)

所有先前的答案对我有用,特别是关于有选择地组合数据库的评论 - 如果有些非常繁忙,非常大或过程敏感数据,您可能希望将它们分开,或者在单独的分组中。这样可以更轻松地配置备份/恢复和磁盘/驱动器分配(为忙碌的人员分配他们自己的一组主轴)。

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

答案 4 :(得分:1)

我会将所有导入登台表放在一个数据库中,与常规生产数据库分开,因为备份需求可能非常不同。此数据库还应包含SSIS包的配置管理,任何日志记录表,任何导入元数据表(我们跟踪每次运行的导入以及该运行的状态以及有关导入的大量其他内容,例如文件名,正常文件大小等。用于研究问题和为处理添加检查。我们使用客户端的模式,然后使用针对导入/导出过程实现的对象的附加模式(日志,元数据)等)