【发布时间】:2020-04-27 05:39:41
【问题描述】:
对于 ETL 中的每一层(提取、转换和加载)拥有单独的层/专用架构有哪些可能的好处,我的意思是一个专用层用于暂存,一个用于类型 1 持久表和一个专用架构/层用于表在维度模型?为什么不建议将所有表都放在一个架构中?
谢谢, 拉杰尼什
【问题讨论】:
标签: etl analytics data-warehouse business-intelligence azure-sql-data-warehouse
对于 ETL 中的每一层(提取、转换和加载)拥有单独的层/专用架构有哪些可能的好处,我的意思是一个专用层用于暂存,一个用于类型 1 持久表和一个专用架构/层用于表在维度模型?为什么不建议将所有表都放在一个架构中?
谢谢, 拉杰尼什
【问题讨论】:
标签: etl analytics data-warehouse business-intelligence azure-sql-data-warehouse
餐厅隐喻:
数据仓库就像餐厅。您可以从多种杂货中获取蔬菜和配料。但是,你不能准备餐桌上的食物 客户。
- 您需要一个名为储藏室的独立区域来存放蔬菜。
- 您需要一个名为 厨房顶部 的单独区域来检查蔬菜的质量、清洁蔬菜、切割蔬菜以符合要求 适合食谱的大小,添加正确的成分并制作最终 食谱。
- 您需要一个名为宴会厅的单独区域来为客户提供最终食谱。
现在,以数据仓库为例。
您需要从不同的源系统获取不同的数据。其中一些来自 ORACLE,一些来自 Teradata,一些来自 Enterprise Message System 等。暂存区的目标是存储原始数据。成分之间存在依赖关系。你需要拥有所有这些来准备食谱。 您需要将它们放在暂存层中。就像储藏室一样。
数据经过清理、验证、符合正确的维度、添加了额外的键、转换数据以适应数据仓库。大多数情况下,这些转换发生在内存中。在某些情况下,表中可能会有中间存储。 是转换层。和厨房台面一样。
转换后的数据被加载到数据仓库表中。它被加载到维度模型中。 它是表示层或加载层。这是宴会厅,自助晚餐可以在这里享用。
因此,您需要三个独立的层,以便它们都可以在不干扰其他层的情况下工作。还有其他因素,例如:
【讨论】:
我会说这种方法提供了清晰性。如果您在一个(或至少更少)模式上拥有所有转换/业务逻辑,那么开发人员将更容易对依赖关系以及在何处查找例如故障排除有一个整体概念。这很重要,尤其是在新开发人员入职时。此外,权限通常在模式级别提供。您通常希望为最终用户提供对维度对象的某种访问权限,而不是对原始/阶段数据的访问权限。根据您的 ETL 负载和数据,模式也可用于确定可以并行加载哪些对象以减少总体加载时间。
【讨论】: