我有我的數據倉庫建立在Amazon Redshift上。我目前面臨的問題是,我的架構中有一個龐大的事實表(大約500M行),其中大約有10個客戶端的數據。我有定期(主要是每天)爲這個事實表生成數據並需要刷新的過程,意思是刪除舊數據並插入新生成的數據。Redshift - Data Warehouse數據刷新
問題是,這個批量刪除 - 插入操作在我的事實表中留下了一個需要耗費時間並因此不能立即完成的VACUUM的問題。而這個事實表(由於刪除數據而產生的巨大漏洞)顯着影響了快照時間,該快照時間消耗來自事實和維度表的數據並刷新其在下游呈現區域中的數據。如何在DWH環境中優化這種批量數據刷新?
我相信這應該是DWH中一個衆所周知的問題,並帶有一些推薦的解決方法。任何人都可以請指出推薦的解決方案嗎?
P.S:一種解決方案可以是爲每個客戶端創建一個表,並在其上創建一個視圖,該視圖執行所有基礎表的聯合。在這種情況下,如果我打破每個客戶端的事實表,它非常小,可以在刪除插入之後快速抽真空,但要尋找具有更好可維護性的解決方案。
太寬的問題,這取決於數據的性質和多少你到底刷新(整個表或它的一部分) – AlexYes
@AlexYes所以考慮我有數據爲10表中的客戶。有些工作爲不同的時間表產生這些客戶的數據(有些每天運行一次,有些則每週運行一次)。當它們生成數據時,我在這個表上刪除插入。根據客戶端的不同,我一次性替換的數據可能會在表格大小的10%到30%之間變化。不確定數據的性質是什麼意思? –
根據數據的性質我的意思是:如果你的實體是不可變的(例如你計算N天的綜合瀏覽量),那麼當你在第二天計算N + 1時,生成的第N天的聚合將是相同的你在第N + 10天計算它,你可以停止刷新整個表格並且只能追加。如果您的實體並非完全不可變,但在一段時間後穩定下來(例如,銷售線索隊列轉換可能發生在領先的30天內),您可以使用尾隨窗口處理數據,即僅重新處理最後X天每次 – AlexYes