我正在构建一个数据仓库。我需要从不同的来源获取数据并将它们放在一起,以便我可以生成报告。我会做很多表格的加入。我说的可能总共有20张桌子,每张桌子将从100mb到5演出。
我想知道是否应该为每个表创建不同的数据库,因为每个表可能具有完全不同的数据集类型。
例如,我可能有一张表有1 GB的汽车设计数据。我将在这些汽车上另外有一张3 GB的销售数据表。
将这些数据库分成不同的数据库是否合适?
请告诉我需要哪些其他信息来告知我这种情况。
答案 0 :(得分:6)
如果存在逻辑或业务分离,请务必将它们放在不同的数据库中。这只是干净的数据应用程序开发。但是,如果您要加入或合并不同的数据集,则可以通过使用单个数据库来节省一些开销和管理成本。总共20个表不是很多(我正在开发一个拥有大约3700个表的系统,尽管〜1600个是审计)。请记住,如果你有一个像样的模型,索引等,SQL Server可以扩展到数TB的数据。
如果您关注仓库的性能,则可以将该服务器充满RAM和硬盘。要正确利用硬盘驱动器,您需要考虑利用多个文件/文件组并适当地对表格进行分析。
答案 1 :(得分:5)
分裂到不同的数据库通常是为了传播I / O负载。在SQL Server中,如果要在多个磁盘组/磁盘之间传播I / O,则可以在数据库本身中拥有不同的文件组。在仓储方案中,您经常处理数据库存储的SAN解决方案,并且根据您的方案,这些方法不会真正关注性能方面,如果计划得当,其他方式可能会为您提供额外的性能。
你也有表格分区,你可以看看你不断增长的数据库,但在我看来,只要确保你有足够的旧记忆,它将比花费时间和精力担心数据库和文件更有益于你
我们在一个数据库文件中运行100gig数据库,性能非常出色。许多频繁访问的数据虽然驻留在内存中,但是通过良好的表结构和逻辑索引,您可以立即拥有响应式仓库。
答案 2 :(得分:3)
如果您打算在这些表之间建立外键关系(听起来就像你那样),那么我会把它全部保存在一个数据库中。通常,我使用单独的数据库来完全分离数据体。
如果你将它们分开,那么当你尝试同时查询时,你会遇到一些有趣的挑战。