2014-09-25 72 views
2

我需要一些有關我的設計的專家意見,以獲取每日增量提取。我使用的是SQL 2008 R2,並且我有一個體面的大小DB,接近100萬人的記錄及其所有屬性和與另一個人角色的關係。ETL增量提取最佳實踐

我想要做的兩件事情(至少目前)

  1. 消費者想要的東西在一個平面文件改變(新/更新)轉儲
  2. 另一位消費者只希望在一個新的數據平面文件(不同格式)。

基於這些要求,似乎只有一件事是常見的,他們都希望「今天發生了什麼變化」。因此,這裏是我的方法:

  1. 創建一個表名和LastExtractDateTime控制表的兩列
  2. 上的所有transacational創建幾乎每一個領域的所有消費者需要
  3. 階段表我有CreatedDate和LastModifiedDate表。
  4. 每天,我們假設在下午10點,填充舞臺(一個專用的SSIS包),並更改其中的內容。用於提取所有日期大於Control.LastExtractDateTime列中日期的所有新數據(基於CreatedDate)和所有更改數據(基於LastModifiedDate)的存儲過程
  5. 成功提取階段數據後,使用current更新Control.LastExtractDateTime日期。
  6. 揭開序幕,在此基礎上一個成功與否的其他SSIS包(我們有一個自定義調度)

請評論。謝謝。

+0

你可能會考慮利用變化跟蹤跟蹤您的更改,然後轉移到臨時表。更改跟蹤將監控所有更改是否有日期修改字段。我們在過程中多次運行我們的過程,因爲它使用變更跟蹤表來獲取變更,所以對產品表的影響較小。更改跟蹤在prod表格中設置簡單。 – HLGEM 2014-09-25 19:03:42

回答

0

我們使用類似的東西,除了您正在使用的設計:控制表,而我們使用Extract_Log_table。通過提取插入記錄,並提取時間,執行所花費的總時間(開始和結束時間)和行計數。 表回答像多少時間沒有考慮到提取在一個特定的一天數據的問題變得引用(比如月末,年末,週日等)

謝謝