【问题标题】:what are possible benefits of having separate layer/a dedicated schema for each layer in ETL (extract , transform and load)? [closed]在 ETL(提取、转换和加载)中为每个层设置单独的层/专用模式有什么好处? [关闭]
【发布时间】:2020-04-27 05:39:41
【问题描述】:

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

谢谢, 拉杰尼什

【问题讨论】:

    标签: etl analytics data-warehouse business-intelligence azure-sql-data-warehouse


    【解决方案1】:

    餐厅隐喻:

    数据仓库就像餐厅。您可以从多种杂货中获取蔬菜和配料。但是,你不能准备餐桌上的食物 客户。

    • 您需要一个名为储藏室的独立区域来存放蔬菜。
    • 您需要一个名为 厨房顶部 的单独区域来检查蔬菜的质量、清洁蔬菜、切割蔬菜以符合要求 适合食谱的大小,添加正确的成分并制作最终 食谱。
    • 您需要一个名为宴会厅的单独区域来为客户提供最终食谱。

    现在,以数据仓库为例。

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

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

    • 转换后的数据被加载到数据仓库表中。它被加载到维度模型中。 它是表示层或加载层。这是宴会厅,自助晚餐可以在这里享用。

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

    • 与不同层相关的安全性
    • 对源数据问题进行故障排除
    • 历史数据维护
    • 会议合规性
    • 如果需要,从暂存区完全重建数据仓库
    • 更多

    【讨论】:

    • 感谢 Venkat 和 Cedersved 提供了很好的见解。如果可能的话,可以在模式级别管理什么样的资源,我的意思是我们可以从数据库级别的可用总数中为每个模式设置限制或总百分比?另外我猜每个模式的维护会有所不同,例如数据仓库中最终目标层的收集统计数据比暂存层更频繁。我想知道这是否会提供更好的数据库资源管理,因为每一层都有不同的数据处理需求,因此需要不同数量的资源。
    • 这些都是设计特定的。您可以将它们放在单独的数据库或单独的模式中。您要为 ETL 放置的资源管理器是您必须根据负载做出决定的东西。
    【解决方案2】:

    我会说这种方法提供了清晰性。如果您在一个(或至少更少)模式上拥有所有转换/业务逻辑,那么开发人员将更容易对依赖关系以及在何处查找例如故障排除有一个整体概念。这很重要,尤其是在新开发人员入职时。此外,权限通常在模式级别提供。您通常希望为最终用户提供对维度对象的某种访问权限,而不是对原始/阶段数据的访问权限。根据您的 ETL 负载和数据,模式也可用于确定可以并行加载哪些对象以减少总体加载时间。

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多