DTS/SSIS与Informatica Power Center

Cha*_*adD 3 ssis dts informatica-powercenter

我确信这是一个很难回答的模糊问题,但我对此问题的一般看法表示感谢.

让我快速给你一个背景.

十年前,我们曾经写过数据加载从传统应用程序读取输入平面文件并将它们加载到我们的Datamart中.最初,我们的加载程序是用VB6编写的,并通过平面文件进行了修改,对于每个记录,执行了这个一般过程:

1)查看记录.如果找到,请更新它2)否则插入新记录

然后我们最终改变了这个过程,使用SQL Server来对临时表中的平面文件进行DTS,然后我们将在临时表上使用目标生产表执行大规模集合基本连接,从临时表中获取数据并使用它更新目标表.插入了未加入的记录.

这是对流程的简化,但实际上,流程从迭代方法变为"基于集合",不再一次执行更新1条记录.结果,我们获得了巨大的性能提升.

然后我们在DLL中创建了一个强大的共享函数集,用于使用这种方法执行常用函数/更新模式.它极大地抽象了开发,真正缩短了开发时间.

然后,一个ETL工具Informatica PowerCenter出现了,mgt希望对该工具进行标准化并重写使用DTS的旧VB负载.

我听说PowerCenter迭代地处理记录,但我知道它确实做了一些优化技巧,所以我很好奇Informatica将如何表现.

有没有人有任何使用DTS或SSIS的经验,能够做出通常表现更好的直觉性能预测?

Reg*_*ser 6

我加入了一个同时使用Informatica PowerCenter 8.1.1的组织.虽然我不能代表一般的Informatica设置,但我可以说在这家公司Informatica的效率非常低.主要问题是Informatica在后端生成了一些非常奇怪的SQL代码.当我查看它使用分析器进行的操作以及查看文本日志时,它为每个需要插入/更新/删除的行生成了单独的insert,update和delete语句.我没有试图修复Inf​​ormatica实现,而是简单地用SSIS 2008替换它.

我对Informatica的另一个问题是管理并行化.在DTS和SSIS中,并行化任务非常简单 - 不要定义优先约束,并且您的任务将并行运行.在Informatica中,您定义一个起点,然后并行地定义运行进程的分支.我找不到限制并行进程数量的方法,除非我通过链接worklet或任务明确定义它们.

就我而言,SSIS的表现大大优于Informatica.我们使用Informatica的加载过程大约需要8-12个小时.我们使用SSIS和SQL Server代理作业的加载过程大约需要1-2个小时.我确信如果我们对Informatica进行了适当的调整,我们可以将负载减少到3-4小时,但我仍然认为它不会做得更好.