Best-Practices

從一個 OLTP 系統到另一個系統的數據 ETL 的最佳實踐是什麼?

  • May 10, 2011

首先,我想說明我是開發人員而不是 DBA,所以我試圖從最好的做法的角度來解決這個問題,而不是僅僅假設我可以在沒有“程式碼”的情況下有效地完成所有事情任何問題。

好的,現在開始挑戰。我將更新兩個不同 DBMS 中的數據。一個是我們 iSeries 系統上的 DB2 for i。另一個是 AIX 上的 DB2。我知道這些版本的 DB2 之間存在一些差異。不確定我是否會遇到這些差異。我們有一些可以被視為“查找數據”的數據(即,可能填充下拉框的數據等。換句話說,使用者或程序查找並使用數據,而不是“輸入”來自業務使用者的數據)。此查找數據由我們公司的特定部門維護。我們正在編寫一個新系統來替換我們的舊系統。遺留系統駐留在 System i 上。新系統作為 Java EE 應用程序駐留在 AIX 上。

我想知道獲取這些數據、轉換它並載入它的最佳方法是什麼?我們購買了一個 ETL 工具(IBM InfoSphere DataStage),但可能還沒有使用它,因為我們沒有人接受過該工具的培訓,而且我們以前從未使用過 ETL 工具。我們一直是一家擁有多個“帽子”的開發人員的商店。最近,我們正在嘗試過渡到擁有 DBA 並以正確的方式做事。

所以我負責提出一個設計,因為這只適用於我們離開我們的遺留系統之前,我從管理層得到的感覺是他們想要一個自定義程式碼程序來處理這個 ETL(至少在我們在 DataStage 上做得更好之前)。

作為開發人員,我通常會嘗試讀取以某種方式排序的數據,然後逐個循環瀏覽我的所有記錄並對其進行轉換,然後一次寫入每個記錄,或者“註銷”對可以在末尾進行批量插入的文件的更新。

作為一名開發人員,我不知道這是否真的是正確/明智的做法?有什麼想法嗎?我從中提取的表中的數據將在 40 到 60,000 條記錄之間,所以沒什麼大不了的,但是當我知道 SQL 和其他數據庫工具和策略可以更好地處理事情時,在程序中單獨處理仍然很多。

有什麼想法或建議嗎?我很感激任何製作。

我還開始了一個類似的主題,我標記為“從一個 OLTP 系統到另一個第 2 部分的數據 ETL 的最佳實踐是什麼?”

使用您最熟悉的工具。你的情況看起來很簡單,只持續很短的時間。如果您必須長時間保持此功能並執行,您最終可能會使用更高級的工具,您可以在其中定義要為您執行的轉換和同步的規則。這樣做更容易維護和記錄。學習曲線可能有點陡峭。另一方面,您可以使用此案例來訓練自己。沒有緊急的截止日期,當它變得更緊急時,您可能會在一天內建構家庭烹飪版本。

引用自:https://dba.stackexchange.com/questions/2099