2010-09-12 43 views
2

我確定這是一個很難回答的模糊問題,但我會很感激任何關於此主題的一般想法。DTS/SSIS與Informatica Power Center

讓我給你一個簡單的背景。

十年前,我們用來寫入數據負載,讀取來自傳統應用程序的輸入平面文件,並將它們加載到我們的Datamart中。最初,我們的加載程序是用VB6編寫的,並且通過平面文件和每個記錄進行了簡化,執行以下一般過程:

1)查找記錄。如果找到,更新 2)其他插入新記錄

然後我們最終改變這一過程中使用SQL Server來DTS在一個臨時表中的平面文件,然後我們會進行大規模的集基地參加在臨時表與目標生產表一起,從臨時表中獲取數據並使用它來更新目標表。插入了未加入的記錄。

這是對流程的簡化,但本質上,流程從迭代方法轉爲「基於集合」,不再執行更新1記錄。結果,我們獲得了巨大的業績增長。

然後,我們創建了我認爲在DLL中使用此方法執行常見功能/更新模式的強大共享函數集。它極大地抽象了開發,真正縮短了開發時間。

然後Informatica PowerCenter是一個ETL工具,它想要在該工具上標準化並重寫使用DTS的舊VB負載。

我聽說PowerCenter以迭代方式處理記錄,但我知道它確實會做一些優化技巧,所以我很好奇Informatica如何執行。

有沒有人有任何使用DTS或SSIS的經驗,能夠做出一個腸道性能預測哪一般會表現更好?

回答

5

我加入了使用Informatica PowerCenter 8.1.1的組織。雖然我不能說一般的Informatica設置,但我可以說在這家公司Informatica是非常低效的。主要的問題是Informatica在後端生成了一些非常不健康的SQL代碼。當我看到它使用Profiler進行的操作以及查看文本日誌時,它爲每行需要插入/更新/刪除的操作生成單獨的插入,更新和刪除語句。我沒有試圖修復Inf​​ormatica實施,而是簡單地將其替換爲SSIS 2008.

我在Informatica中遇到的另一個問題是管理並行化。在DTS和SSIS中,並行化任務都非常簡單 - 不要定義優先級約束,並且您的任務將並行運行。在Informatica中,您定義了一個起點,然後爲並行運行流程定義分支。我無法找到一種方法來限制並行進程的數量,除非我通過鏈接工作組或任務明確定義它們。

就我而言,SSIS大大優於Informatica。我們的Informatica加載過程耗時約8-12小時。我們使用SSIS和SQL Server代理作業的加載過程大約需要1-2個小時。我確定我們是否適當調整了Informatica,我們可以將負載減少到3-4小時,但我仍然認爲它不會有太大改善。

+1

當然,SSIS附帶SQL Server,因此您可以免費使用它。 – HLGEM 2010-09-17 21:11:23