刷新报告数据库

时间:2010-09-30 14:29:15

标签: ssis reporting

我们目前正在为我们的项目提供OLTP sql server 2005数据库。我们计划构建一个单独的报告数据库(去规范化),以便我们可以从OLTP DB中减轻负载。我不太确定哪个是同步这些数据库的最佳方法。我们不是在寻找实时系统。 SSIS是一个不错的选择吗?我是SSIS的新手,所以不确定可行性。请提供您的意见。

2 个答案:

答案 0 :(得分:0)

每个人都对SSIS有自己的看法。但是我已经使用它多年来数据集市和我目前的环境,这是一个完整的BI安装。我个人喜欢它移动数据的能力,它仍然保持着在30分钟内移动1.13太字节的世界纪录。

至于设置,我们使用来自我们的交易数据库的日志传送来填充第二个框。然后使用SSIS对数据进行反规范化和仓库。 SSIS社区也非常庞大,网上有大量的免费培训和有用的资源。

答案 1 :(得分:0)

我们使用SSIS构建数据仓库,我们从中运行报告。它是一个很大的学习曲线,它抛出的错误并不是特别有用,它有助于擅长SQL,而不是将其视为“逐行传输” - 我的意思是你应该创建基于集合的查询sql命令任务,而不是使用大量的SSIS组件和数据流任务。

了解每个仓库都有差异,您需要决定如何做到最好。 This link可能会给你一些好主意。

我们如何实施我们的(我们有postgres后端并使用PGNP提供商,并使用链接服务器可以让您的生活更轻松):

首先,您需要在每个表中都有一个时间戳列,以便您可以在上次更改时使用。

然后编写一个查询,选择自上次运行程序包以来已更改的数据(使用审计表会有所帮助)并将该数据导入临时表。我们将此作为数据流任务运行(使用postgres)我们没有任何其他选择,尽管您可以使用对另一个数据库的正常引用(dbname.schemaname.tablename或类似的东西)或使用链接服务器查询。无论哪种方式,这个想法都是一样的。您最终会得到自查询以来发生变化的数据。

然后我们更新(基于id)已存在的数据然后插入新数据(通过左边连接表来找出当前仓库中尚不存在的内容)。

所以现在我们有一个非规范化的表,在这种情况下显示每天的工作。由此我们根据这一个的聚合值计算其他表。

希望有所帮助,这里有一些我觉得有用的好链接:

Choosing .Net or SSIS

SSIS Talk

Package Configurations

Improving the Performance of the Data Flow

Trnsformations

Custom Logging / Good Blog