应该使用什么策略将此源类型加载到DWH?

时间:2017-02-17 16:36:21

标签: database data-warehouse

猜猜我们在企业中有一个索赔管理应用程序。 这个应用程序有不同的表,如:

  1. 声明类型
  2. 声明日志
  3. 声明表
  4. 用户表
  5. 用户声明关系表
  6. 该应用允许用户创建新的声明类型(1),然后管理员可以接受此类型或删除它。此外,此应用程序允许声明创建(3),并记录它。这也记录了ip和其他参数(2)。最后,我们有一个用户表,因为只有一些用户可以创建声明(4),还有一个表存储每个用户创建的声明(5)。

    所有这些表都有外键和主键,必须遵守这些键以确保应用程序的正确可用性。

    现在,我们想将其加载到DWH中。必须每天截断并加载所有表,因为所有表都可以有新行,甚至每天都有已删除的行。在这种情况下,我们有两种方法可以做到这一点:

    • 加载每个没有FK和PK的表。然后DWH就像一个备份,因为在原始表中检查数据完整性。
    • 使用PK和FK加载表。 DWH还检查数据完整性,但是ETL进程必须擦除FK,然后可以截断表以最终重建FK并再次加载表。我不知道它是否会对数据库造成任何复杂情况。

    当源确保数据完整性时,DWH的正确方法是什么? DWH应该使用关系密钥检查数据完整性,还是仅存储数据以创建报告和仪表板?

    如果报告和仪表板可能第一个选项有效,但如果此数据是通过加载到另一个必须与原始应用程序爆炸相同关系的应用程序的批量进程会发生什么?

1 个答案:

答案 0 :(得分:0)

答案可能取决于您正在实施数据仓库的数据库。所以我会给你一个Oracle特定的答案。 一般来说,建议是创建PK / FK,但使用{{1}}。这具有创建定义关系的元数据的效果,但没有DW中可能不需要的索引。 PK / FK关系允许Oracle执行许多其他方式无法实现的优化。