2017-02-17 20 views
1

猜猜我們在企業中有一個索賠管理應用程序。 此應用具有不同的表,例如:應將什麼策略應用於將此源類型加載到DWH?

  1. 權利要求類型
  2. 權利要求日誌
  3. 權利要求表
  4. 用戶表
  5. 用戶要求關係表

該應用程序允許用戶創建新的索賠類型(1),然後管理員可以承認此類型或將其刪除。此外,這個應用程序允許創建索賠(3)並記錄。這也記錄了ip和其他參數(2)。最後,我們有一個用戶表,因爲只有一些用戶可以創建索賠(4),以及一個存儲每個用戶(5)創建的索賠的表。

所有這些表都必須遵守的應用程序的可用性正確的外交和主鍵。

現在,我們希望這個加載到數據倉庫。所有表必須每天被截斷並加載,因爲所有表都可以有新的行,甚至每天都可以刪除行。在這種情況下,我們有兩種方法來執行此操作:

  • 加載沒有FK和PK的每個表。然後,DWH就像備份一樣,因爲在原始表中檢查了數據完整性。
  • 加載PK和FK的表格。 DWH也檢查數據完整性,但是ETL過程必須擦除FK,然後可以截斷表以最終重建FK並重新載入表。我不知道它是否會對數據庫造成任何複雜性。

當源確保數據完整性時,DWH的正確方法是什麼? DWH應該使用關係密鑰來檢查數據完整性,還是隻存儲數據以創建報告和儀表板?

在報告和儀表盤,也許第一個選項是有效的,但情況下,如果再將這些數據是通過加載到另一個應用程序,有爆炸這個相同的關係作爲原始應用本體方法會發生什麼?

回答

0

答案可能取決於你是在實施數據倉庫的數據庫。所以我會給你一個Oracle的具體答案。 一般來說,建議是創建PK/FK的,但使用RELY DISABLE NOVALIDATE。這具有創建定義關係的元數據的效果,但沒有DW中可能不需要的索引。 PK/FK關係允許Oracle執行一些否則無法執行的優化。

+0

如果數據倉庫使用PostgreSQL RDBMS會怎樣? – Maik

相關問題