为 ETL 中的每一层(提取、转换和加载)设置单独的 layer/a 专用模式可能带来哪些好处?

what are possible benefits of having separate layer/a dedicated schema for each layer in ETL (extract , transform and load)?

为 ETL 中的每一层(提取、转换和加载)使用单独的 layer/a 专用模式可能有什么好处,我的意思是一个专用层用于暂存,一个用于类型 1 持久表和一个专用 schema/layer 对于维度模型中的表?为什么不建议将所有表放在一个模式中?

谢谢, 罗杰尼什

我想说这种方法提供了清晰度。如果您在一个(或至少更少)模式上拥有所有 transform/business 逻辑,那么开发人员将更容易全面了解依赖关系以及在进行故障排除时查看的位置。这很重要,尤其是在入职新开发人员时。此外,通常在架构级别提供权限。您通常希望授予某种最终用户对维度对象的访问权限,而不是对 raw/stage 数据的访问权限。根据您的 ETL 负载和数据,模式也可用于确定可以并行加载哪些对象以减少总体加载时间。

餐厅比喻:[=​​38=]

Datawarehouse is like a restaurant. You get vegetables, ingredients from multiple groceries. But, you cannot prepare the food in the table of the customer.

  • You need separate area called store room to keep the vegetables.
  • You need separate area called kitchen top to check quality of vegetables, clean the vegetables, cut the vegetables to conform to right size for the recipe, add right ingredients and make the final recipe.
  • You need separate area called banquet hall to serve final recipe to customer.

现在,以数据仓库为例。

  • 您需要从不同的源系统获取不同的数据。其中一些来自 ORACLE,一些来自 Teradata,一些来自 Enterprise Message System 等。暂存区的目标是存储原始数据。成分之间存在依赖关系。你需要拥有所有这些来准备食谱。 您需要将它们放在暂存层中。和储藏室一样。

  • 数据经过清理、验证、符合正确的维度、添加额外的键、转换数据以适应数据仓库。这些转换大多发生在内存中。在某些情况下,表中可能存在中间存储。 是转换层。它和厨房台面一样。

  • 转换后的数据被加载到数据仓库表中。它被加载到维度模型中。 它是表示层或加载层。宴会厅,提供自助晚餐。

因此,您需要三个独立的层,以便它们都可以在不干扰其他层的情况下工作。还有其他因素,例如:

  • 与不同层有关的安全性
  • 源数据问题排查
  • 历史数据维护
  • 满足合规性
  • 完全重建数据仓库,如果需要从暂存区
  • 更多