我是設計ETL過程的新手。目前我有兩個數據庫,一個是應用程序每天使用它的實時數據庫。另一個是數據倉庫。如何在執行ETL過程時減少對OLTP的影響
我在活動數據庫中有一張表,它定期插入新的數據。目標是每天晚上ETL過程會將實時數據庫中的數據傳輸到數據倉庫,然後刪除實時數據庫中的數據。
由於缺乏知識,我得到的解決方案是實現一些稱爲滾動表的方法。基本上在現場數據庫,我有兩個具有相同結構的表。我稱他們爲tblLive1和tblLive2。我也有一個同義詞叫tblLive。所有插入都在同義詞上完成。同義詞將指向其中一個表格。
當我運行ETL過程時,我有一個存儲過程會丟棄並創建一個新的同義詞,指向tblLive2。這允許ETL過程在不影響應用的情況下轉換來自tblLive1的數據。假定ETL過程需要一個小時才能運行,並且我不希望ETL過程鎖定表,阻止應用程序向它插入新數據。
該解決方案應該在理論上工作,但不夠優雅。
我相信這個問題是一個常見問題,有沒有其他的解決方案呢?
你正在使用哪個數據庫以及該數據庫的哪個版本?答案很可能取決於數據庫的高度依賴性,除非您真的需要嘗試創建數據庫不可知解決方案的開銷。 – 2011-02-23 20:53:20
我現在正在使用SQL Server,但這個概念也適用於Oracle。 – dsum 2011-02-24 02:03:19