【问题标题】:Data Architecture - Full Azure Stack vs Integrated Delta Lake数据架构 - 完整的 Azure Stack 与集成的 Delta Lake
【发布时间】:2021-12-10 18:35:36
【问题描述】:

朋友的公司正在研究一种数据架构,对我们来说,它似乎相当复杂,并且存在一些可扩展性和成本问题。

如果可能的话,我想听听您对旧的和提议的架构(或替代方案)的看法,讨论它们的优缺点,并可能发现不可预见的问题/限制。

当前架构 - Azure Stack

摄取层

  • 多个源存储到 Azure Data Lake Gen2 通过 Azure Databricks

处理层

  • Azure Databricks 清理数据并将它们存储回 Azure Data Lake Gen2 到不同的部分:原始、干净

加载层

  • Azure Databricks 用于将数据加载到 Azure SQL Server 实例
  • Azure Synapse 用作 Azure SQL ServerAzure 分析服务 之间的层

表示层

  • Azure Analysis Services 中创建并提供给 Power BI 或 Excel 的数据模型

这种方法的优点

  • 通过 Azure 分析服务 生成的模型和优化 (OLAP)
  • 完全集成在 Azure 生态系统中

这种方法的缺点

  • 垂直可扩展:随着数据的增长,用于存储数据仓库的 Azure SQL Server 也会垂直增长,处理所需的 Azure 分析服务 也将如此数据
  • 高成本
  • 令人费解:很多服务充当粘合剂,更难管理/维护
  • 始终开启的方法:Azure SQL ServerAzure 分析服务 都需要始终开启,这表示不需要的费用

提议的架构 - 带 Delta Lake 的 Azure

替代架构依赖于 Azure Databricks 已在 ETL 流程中使用这一事实,并尝试最大限度地利用其以提供水平可伸缩性和无服务器资源。

摄取层

  • (相同)多个源存储到 Azure Data Lake Gen2 通过 Azure Databricks

处理和加载层

  • (相同)Azure Databricks 清理数据并将它们存储回 Azure Data Lake Gen2 的不同部分:原始、干净
  • Azure Databricks 使用 Delta Lake 生成数据仓库,将其直接存储在 Azure Data Lake Gen2 中,从而创建银牌和金牌(聚合/多维数据集)质量李>

表示层

  • 使用 Azure Synapse Analytics(无服务器) 直接在 Azure Data Lake Gen2 上指定访问和查询功能,然后将其暴露给 Power BIExcel 用于治理目的

这种方法的优点

  • 更简单
  • 水平可扩展:管道依赖于 Azure Delta Lake Gen2 (Parquet),自然可水平扩展;和 Azure Synapse Analytics(无服务器),由于它的无服务器池,它也可以被认为是水平可扩展的。
  • Delta Lake 提供了一个自然的审计层,并且很容易与现有的数据目录解决方案集成

这种方法的缺点

  • 没有数据模型可以方便通过 Power BI 和 Excel 使用
  • 根据 Azure Synapse Analytics 的查询对 Parquet 文件进行分区至关重要,否则我们可能会产生高传输成本
  • 没有真正的 OLAP 功能

【问题讨论】:

    标签: azure databricks delta-lake


    【解决方案1】:

    我想你几乎涵盖了。根据我的经验给出一些建议。如果您的商业模式允许,您可以考虑这种方法。

    摄取层:

    • 每个团队(业务部门)应该有不同的容器来存储数据。 原因:我们可以在团队级别保持访问级别。
    • 由于任何分发环境,总是推荐 ELT 过程而不是 ETL ,我们可以使用 Azure 数据工厂作为摄取工具来构建数据湖。 原因:Databricks 用于计算目的,没有任何意义用于摄取目的。
    • 每个容器在同一个容器中应该有 3 个不同的文件夹。
    • 在第一层,Stage - 每天从源头保持增量负载。(基于频率)。
    • 因此,每次阶段数据都将附加到原始图层数据中。最后,原始图层将包含源的精确快照。
    • 我们应该维护一些精选文件夹,有时我们可能需要处理一些安全数据。届时我们可以将安全数据与其他数据隔离开来。

    结构层:

    • 在这一层中,我们需要维护数据的正确结构。 举个例子,有时,我们可能需要维护或从一种格式转换为另一种格式。考虑,源中有一列是字符串类型,但业务需要将字符串转换为十进制。在这一层应该注意这些过程。

    • 我们可以通过 Azure Databricks 处理这种转换。

    服务层:

    • 这是我们将为报告层进行所有转换的层。示例 Team-1 和 team-2 应在此层中加入。

    • 我们可以通过 Azure Databricks 处理这种转换

    表示层:

    • 使用 Azure Synapse Analytics(无服务器)直接在 Azure Data Lake Gen2 上指定访问和查询功能,然后将其公开给 Power BI 和 Excel 以用于治理目的

    • 或者我们可以通过 Databricks 集群 JDBC 连接来连接服务层。因此,如果从数据块连接报告层,则处理所有访问控制非常容易。

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 2019-11-11
      • 2020-04-21
      • 2021-03-26
      • 2022-12-01
      • 1970-01-01
      相关资源
      最近更新 更多