当前位置: 首页 > news >正文

【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介

本文属于【Azure 架构师学习笔记】系列。
本文属于【Azure Databricks】系列。
接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建

前言

使用ADB 或者数据湖,基本上绕不开一个架构“Medallion”, 它使得数据管理更为简单有效。ADB 通过把数据分为“金”,“银”,“铜” 三层来实现Medallion架构。同时搭配UC,使得medallion更加健壮,安全和合规。

除了Medallion, 还有一些概念如data warehouse, data lake, 和data lakehouse。

  • Data lake: 是一个中央存储库,以原始格式存储任意规模的结构化和非结构化数据。与传统存储相比,这样可以减少很多前期转换开销。其核心优势之一就是灵活性,另外还有对大量大数据处理工具的支持。
  • Data lakehouse:跟data lake的名字非常相似,在data lake中的数据,在展现给最终用户前,通常都需要进行处理。 但是data lake的目标是存储,而非处理。data warehouse可以提供处理,但需要预先范式化、模式化再存储,同时存储的量一般有限。基于这两种不足,最好的办法就是优势整合,保留data lake的强大存储功能和data warehouse的数据处理功能,从而出现了data lakehouse。
  • ETL/ELT:两者区别在于先转换然后存储(TL)还是先存储再转换(LT)。ETL 往往需要先转换成预定格式再存储,随着数据集成过程的量和速度要求,在大数据领域ETL非常容易出现性能瓶颈,且费用昂贵。而ELT如果搭配lakehouse,则可以很好地平衡性能与开销。

问题

上面提到了lakehouse和ELT 的好处,但是这更多集中于收集和存储,那么如何管理和组织数据呢?

传统的数据仓库环境,数据通过下图的流程完整数据准备。
在这里插入图片描述
在datalake中,数据以原始格式存储,但是实际上你需要对数据进行使用,而不是简单存储。这种几乎随意式的直接存储很难马上用于数据使用(主要是分析),因此还是需要进行清晰(clean),转换(transform)。

由于量大,分析复杂,传统的数据仓库处理方式如果直接应用在data lake上,会导致如时间久,资源消耗大,数据组织困难导致结果不准确等情况。这时候Medallion 架构就应运而生。

它为湖仓一体化而定制。主要目标是在从源到最终使用的过程中逐步增加结构和数据质量。

ADB Medallion

下图是来自于Databricks官网的架构图,Medallion的核心在于3个层(layer):Bronze,Silver, Gold, 也就是铜、银、金。 Medallion就是奖牌的意思。
在这里插入图片描述

Bronze (铜)

Bronze 层充当外部源系统的数据的初始登陆点。这层的数据反映了原始状态的源系统结构,并带有元数据信息,如加载日期/时间和进程 ID。这层的管理重点是变更数据捕获,支持源数据的历史存档,维护数据血缘,还有审计跟踪,并允许在必要时进行重新处理,而无需从源系统重新读取。

Silver (银)

下一层是 Silver 层。在这层中,来自 Bronze 层的数据经过一系列作,达到 一种叫做“Just-enough” 状态。提供包含基本业务实体、概念和事务的 “企业视图”。

Gold (金)

最后一层是 Gold 层。Gold 层中的数据通常被结构化到特定于主题领域的数据库中,以供使用。此层专用于报告,并采用非规范化、读取优化的数据模型,具有最少的联接。它是应用数据转换和质量规则的最终阶段。

在这三层里面, 铜是原始存储外加元数据信息,金是最终用于展示的数据集,跟传统的数据仓库类似。重点在于银这一层。

这一层是转换后的数据, 它存储了不同源系统数据转换成统一视图后的结果。但是之所以叫做“Just-enough”,是因为它又并不完全转换,而是最小转换,包含:

  1. 数据清洗,是识别和纠正数据集中的错误、不一致和不准确之处以提高其分析和可靠性的过程。这是数据准备过程中的关键步骤,通常在数据分析或集成之前执行。涉及的一些常见任务包括:删除重复项、更正拼写错误、标准化数据格式(尤其是日期和地址)、处理缺失值等。
  2. 数据验证:数据验证是通过各种验证技术确保数据准确、一致和可靠的过程。它通常包括根据已知的质量控制措施验证数据、确认数据符合公司数据治理策略、通过交叉引用不同的数据源或应用业务规则和逻辑来解决不一致问题、标准化和规范化数据以及处理异常值。
  3. 数据合规:数据合规是指确保数据符合特定标准、格式或要求的过程。它涉及转换和标准化数据,以使其与特定数据模型、架构或系统保持一致和兼容。
  4. 有目的地进行数据匹配:为了提供统一的企业视图,来自不同来源的数据最终必须进行整合和集成。为了使数据可整合,您必须将来自不同来源的数据汇集在一起,识别和确定不同数据集或来源的记录之间的关系,并将它们转换为一致且连贯的格式。

通过这些处理之后, silver中的数据已经变得有意义且可用于后续整合。但是一般来说,数据后进一步处理就不需要在这一层进行了,否则会出现过度预处理,最终使其成为了gold层。

Medallion 是一个设计模式,而不是数据模型,也就是说它更多是一个指引,然后在特定环境中(这主要指云环境)按需实现。比如用ADB+ADLS 来实现。

小结

介绍了什么是Medallion之后,接下来将使用ADB 来实现它。

相关文章:

【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建 前言 使用ADB 或者数据湖,基本上绕不开一个架构“Medallion”, 它使得数据管理更为简单有效。ADB 通过…...

基础知识|原型在什么时候用和类的区别

在 JavaScript 中,原型和类是两个密切相关但有所不同的概念。理解这两者之间的差异有助于更好地掌握面向对象编程(OOP)在 JavaScript 中的实现。 1. 原型(Prototype) 原型是 JavaScript 中实现继承和共享行为的核心机…...

【FFmpeg】拉流

概述 项目实践中涉及到使用ffmpeg进行推流和拉流操作,本文主要对一些基本操作做一个学习总结,后续再学习其源码架构;总结方法遵循实现功能配合函数具体实现 基本使用 拉流 avformat_network_init();//日志输出等级set_ffmpeg_log_level();…...

LangChain构建行业知识库实践:从架构设计到生产部署全指南

文章目录 引言:行业知识库的进化挑战一、系统架构设计1.1 核心组件拓扑1.2 模块化设计原则二、关键技术实现2.1 文档预处理流水线2.2 混合检索增强三、领域适配优化3.1 医学知识图谱融合3.2 检索结果重排序算法四、生产环境部署4.1 性能优化方案4.2 安全防护体系五、评估与调优…...

解决jupyter notebook不是内部或外部命令问题

我们打开cmd有的时候,输入jupyter notebook,发现会提示jupyter 不是内部或外部命令,也不是可运行的程序或批处理文件。遇到这个问题我们应该怎么解决呢? 没错就是添加环境变量! Step01:在电脑中找到jupyter notebook的…...

MySQL----case的用法

在 MySQL 中,CASE 表达式是一个用于条件判断的功能,可以根据不同的条件返回不同的结果。CASE 表达式通常用于 SELECT 查询语句中,可以在 SQL 中灵活地进行条件判断和数据转换。CASE 有两种基本的语法形式: 简单 CASE 表达式&…...

Unity XR-XR Interaction Toolkit开发使用方法(十)组件介绍(XR Interaction Group)

目录 一、插件介绍 二、主要组件 XR Interaction Manager XR Controller XR Interactor XR Direct Interactor XR Ray Interactor XR Socket Interactor XR Gaze Interactor 三、XR Interaction Group 1、组件介绍 2、核心功能与特点 优先级与冲突管理 动态交互切…...

深入理解 并查集LRUCaChe

并查集&LRUCaChe 个人主页:顾漂亮 文章专栏:Java数据结构 1.并查集的原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后根据一定规律将归于同一组元素的…...

详解 c++ 中的 namespage

C 中的命名空间很特别,其他编程语言基本都没有。命名空间介于函数与类之间,兼顾了二者的一些优点。这篇博客根据 chatgpt 的回答整理。 文章目录 **1. 什么是 namespace(命名空间)?****2. 语法****3. 使用 namespace 访…...

50周学习go语言:第五周 复合类型与词频统计

以下是第五周复合类型(数组、切片与映射)的详细学习内容,按照第四周的深度要求设计: 第五周:复合类型与词频统计 一、复合类型详解 1. 数组(Array) // 声明与初始化 var arr1 [3]int …...

HTTP非流式请求 vs HTTP流式请求

文章目录 HTTP 非流式请求 vs 流式请求一、核心区别 服务端代码示例(Node.js/Express)非流式请求处理流式请求处理 客户端请求示例非流式请求(浏览器fetch)流式请求处理(浏览器fetch) Python客户端示例&…...

深圳南柯电子|医疗设备EMC测试整改检测:零到一,保障医疗安全

在当今医疗科技飞速发展的时代,医疗设备的电磁兼容性(EMC)已成为确保其安全、有效运行的关键要素之一。EMC测试整改检测不仅关乎设备的性能稳定性,更是保障患者安全、避免电磁干扰引发医疗事故的重要措施。 一、医疗设备EMC测试整…...

详解:事务注解 @Transactional

创作内容丰富的干货文章很费心力,感谢点过此文章的读者,点一个关注鼓励一下作者,激励他分享更多的精彩好文,谢谢大家! Transactional 是 Spring Framework 中常用的注解之一,它可以被用于管理事务。通过使…...

【虚拟仪器技术】labview操作指南和虚拟仪器技术习题答案(一)

今天是2025年2月24日,画的是fate/Grand Order里面的阿尔托莉雅.卡斯特,武内老师的画。 目录 第1章 第2章 第3章 第4章 第5章 关注作者了解更多 我的其他CSDN专栏 毕业设计 求职面试 大学英语 过程控制系统 工程测试技术 虚拟仪器技术 可编程…...

在Linux桌面上创建Idea启动快捷方式

1、在桌面新建idea.desktop vim idea.desktop [Desktop Entry] EncodingUTF-8 NameIntelliJ IDEA CommentIntelliJ IDEA Exec/home/software/idea-2021/bin/idea.sh Icon/home/software/idea-2021/bin/idea.svg Terminalfalse TypeApplication CategoriesApplication;Developm…...

渗透测试(WAF过滤information_schema库的绕过,sqllib-46关,海洋cms9版本的注入)

1.sqlin-lib 46关 打开网站配置文件发现 此网站的对ID进行了排序,我们可以知道,order by接不了union ,那我们可以通过测试sort,rond等函数,观察网页的反馈来判断我们的盲注是否正确 我们发现 当参数有sort来排序时&…...

Unity基础——资源导出分享为Unity Package

一.选中要打包的文件夹,右击,点击Exporting package 二.勾选 Include Dependencies,点击Export Include Dependencies:代表是否包含资源依赖的选项 三.选择保存的位置,即可生成Unity package 最终形成文件&#xff1a…...

C语言【指针篇】(三)

C语言【指针篇】(三) 前言正文1. 数组名的理解2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序5. 二级指针6. 指针数组7. 指针数组模拟二维数组 总结 前言 本文主要基于前面对指针的掌握,进一步学习:数组名的理解、使用指针…...

DevSecOps普及:安全与开发运维的深度融合

一、引言 随着软件开发模式的演进,DevOps已成为现代软件工程的主流实践。然而,在传统的DevOps流程中,安全往往被视为开发和运维之外的额外环节,导致安全漏洞在产品交付后才被发现,增加了修复成本和风险。为了解决这一…...

【JAVA-数据结构】Map和Set

上一篇我们聊到了排序相关内容,这一篇我们对Map和Set进行一系列说明,大家自取。 1.搜索树 1.1 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节…...

OpenClaw技能安装失败全解析:从依赖冲突到网络问题的系统性解决方案

1. 项目概述:当技能“卡住”时,我们遇到了什么?最近在折腾OpenClaw这类开源AI助手平台时,不少朋友都踩进了同一个坑:从官方市场或者第三方渠道找到了心仪的技能(Skill),点击“安装”…...

Android 11开发避坑:为什么你的App获取的Wifi MAC地址总是变?手把手教你配置固定MAC

Android 11开发实战:彻底解决Wifi MAC地址随机化问题最近在开发一个设备管理系统时,遇到了一个棘手的问题:我们的App在Android 11设备上获取的Wifi MAC地址每次都不一样,导致基于MAC地址的设备识别功能完全失效。经过一周的深入研…...

万星easy-vibe:描述需求即发布 零基础无需学语法

开源Easy-Vibe是一套开源AI编程学习方案,把学习顺序从先学语法再做项目翻转为直接做项目。文章拆解了项目驱动、提示词编写、AI编辑器和多Agent协作的完整流程,解释了为什么想法比语法更重要。 github上datawhalechina/easy-vibe:它在GitHub…...

Go开发者必备:circuitbreaker API全解析与最佳实践指南 [特殊字符]

Go开发者必备:circuitbreaker API全解析与最佳实践指南 🚀 【免费下载链接】circuitbreaker Circuit Breakers in Go 项目地址: https://gitcode.com/gh_mirrors/circ/circuitbreaker 作为一名Go开发者,你是否经常遇到远程服务调用失败…...

地理空间机器学习库全解析:从TorchGeo到Raster Vision的实战指南

1. 项目概述:为什么我们需要专门的地理空间机器学习库?如果你尝试过用标准的PyTorch或TensorFlow去处理一张卫星影像,大概率会在第一步就卡住。不是模型写不出来,而是数据根本读不进去,或者读进去了却对不上位置。一张…...

从零开始构建个人知识库:kepano-obsidian笔记模板完整指南

从零开始构建个人知识库:kepano-obsidian笔记模板完整指南 【免费下载链接】kepano-obsidian My personal Obsidian vault template. A bottom-up approach to note-taking and organizing things I am interested in. 项目地址: https://gitcode.com/gh_mirrors/…...

FModel完整部署指南:UE5资源提取与逆向解析实战

1. 为什么FModel不是“另一个UE资源查看器”,而是虚幻项目逆向分析的起点FModel虚幻引擎资源提取工具完整部署指南——这标题里藏着三个被多数人忽略的关键信号:“FModel”不是泛指,“虚幻引擎”特指UE4/UE5原生资产体系,“完整部…...

终极指南:5分钟搞定淘宝淘金币全任务自动化脚本

终极指南:5分钟搞定淘宝淘金币全任务自动化脚本 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi 你是否厌倦…...

【C++修仙录02】筑基篇:vector 使用

嗨~大家好,这里是春栀怡铃声的博客~ “做你害怕的事,然后发现,不过如此~” 目录 创建vector 遍历方法 迭代器 reserve 扩容 resize 对size 进行改变 会加值,会减值 insert size capacity empty push_back erase swap c…...

Taotoken控制台的用量分析与账单追溯功能使用初体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken控制台的用量分析与账单追溯功能使用初体验 作为一名项目管理员,我日常工作中很重要的一部分就是跟踪团队的技…...