数据治理实践:元数据管理架构的演变

数据治理实践:元数据管理架构的演变

前言

近几年来数据的量级在疯狂的增长,由此带来了系列的问题。作为对人工智能团队的数据支撑,我们听到的最多的质疑是 “正确的数据集”,他们需要正确的数据用于他们的分析。我们开始意识到,虽然我们构建了高度可扩展的数据存储,实时计算等等能力,但是我们的团队仍然在浪费时间寻找合适的数据集来进行分析。

也就是我们缺乏对数据资产的管理。事实上,有很多公司都提供了开源的解决方案来解决上述问题,这也就是数据发现与元数据管理工具,

在这篇文章中,我将描述行业迄今为止元数据管理的三代架构,

希望本文能帮助您在选择自己的数据治理解决方案时做出最佳决策。

什么是元数据管理?

简单地说,元数据管理是为了对数据资产进行有效的组织。它使用元数据来帮助管理他们的数据。它还可以帮助数据专业人员收集、组织、访问和丰富元数据,以支持数据治理。

三十年前,数据资产可能是 Oracle 数据库中的一张表。然而,在现代企业中,我们拥有一系列令人眼花缭乱的不同类型的数据资产。可能是关系数据库或 NoSQL 存储中的表、实时流数据、 AI 系统中的功能、指标平台中的指标,数据可视化工具中的仪表板。

现代元数据管理应包含所有这些类型的数据资产,并使数据工作者能够更高效地使用这些资产完成工作。

所以,元数据管理应具备的功能如下:

  • 搜索和发现:数据表、字段、标签、使用信息
  • 访问控制:访问控制组、用户、策略
  • 数据血缘:管道执行、查询
  • 合规性:数据隐私/合规性注释类型的分类
  • 数据管理:数据源配置、摄取配置、保留配置、数据清除策略
  • AI 可解释性、再现性:特征定义、模型定义、训练运行执行、问题陈述
  • 数据操作:管道执行、处理的数据分区、数据统计
  • 数据质量:数据质量规则定义、规则执行结果、数据统计

第一代架构 基于抽取的元数据

下图描述了第一代元数据架构。它通常是一个经典的单体前端(可能是一个 Flask 应用程序),连接到主要存储进行查询(通常是 MySQL/Postgres),一个用于提供搜索查询的搜索索引(通常是 Elasticsearch),并且对于这种架构的第 1.5 代,也许一旦达到关系数据库的“递归查询”限制,就使用了处理谱系(通常是 Neo4j)图形查询的图形索引。

元数据通常通过连接到元数据源(如Hive 、Kafka )使用查询方式摄取,这种方式通常是单个进程(非并行),每天运行一次左右。

该架构的稍微高级的版本还将允许批处理作业(例如,Spark 作业),然后将此元数据加载到存储和索引中。

优点

架构简单,只需一个存储、一个搜索引擎,就可以快速聚合元数据并构建一个应用程序,使数据工作者提高工作效率。

由于架构简单,我们需要的开发人员成本也是很低的。

缺点

抽取元数据的性能压力。什么时候去抽取元数据,跑多久,用多少负载?这些问题估计让运维团队很头疼。随之导致的就是暂停抽取,或者隔几天抽取,元数据也就变得越来越陈旧。

实时性。刚开始的时候,每天跑一次元数据爬取似乎没有问题。但是实时计算的兴起让数据的实时性要求越来越高,这种架构就不再适用了。

Amundsen拥有第一代架构,他侧重在实现搜索排名的功能,这一部分非常的强大。

第二代架构:带有服务 API 的三层应用

很快,我们找到了第二代的架构升级。单体应用程序已拆分为位于元数据存储数据库前面的服务。该服务提供了一个 API,允许使用推送机制将元数据写入系统,需要以编程方式读取元数据的程序可以使用此 API 读取元数据。

优点

提供基于推送的模式,可以立即在元数据生产者和元数据服务之间建立联系。当然还是需要元数据的实时推送,

实时性得以解决。实时的推送让元数据的实时性得到非常大的提高。

缺点

没有日志。当出现问题时,很难可靠地引导(重新创建)或修复您的搜索和图形索引。

第二代元数据系统通常可以成为公司数据资产的可靠搜索和发现门户,它们确实满足了数据工作者的需求,Marquez拥有第二代元数据架构。

第三代架构:基于事件的元数据

 1 步:面向日志的元数据架构

元数据提供者可以实时推送或基于 API推送元数据变化日志。

日志是元数据领域的中心,如果出现任何不一致,您可以随意引导图形索引或搜索索引,并确定性地修复错误。

 2 步:面向领域的解耦元数据模型

强类型元数据模型和关系。这种建模使团队能够通过添加特定领域的扩展来改进全局元数据模型。

好处

客户可以根据他们的需要以不同的方式与元数据数据库交互。

元数据的低延迟查找、对元数据属性进行全文和排名搜索的能力、对元数据关系的图形查询以及全扫描和分析能力。

下图显示了该架构的完全实现版本:

缺点

组件分散。运维难度也就成倍的提高。

我们调查过的所有系统中,拥有第三代元数据架构的系统是 Altas 和DataHub。

Apache Atlas 与Hadoop 生态系统紧密耦合。一些公司正在尝试将Amundsen附加在Atlas之上试图获得两全其美,但这种整合似乎存在一些挑战。例如,您必须摄取元数据并将其存储在 Atlas 的图形和搜索索引中,完全绕过 Amundsen 的数据摄取、存储和索引模块。这意味着您想要建模的任何新概念都需要作为 Atlas 概念引入,然后与 Amundsen 的 UI 桥接,从而导致相当多的复杂性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/22468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis-动态SQL-if-案例

案例 完善更新员工的功能,修改为动态更新员工数据信息原代码如下: Update("update emp\n" "set username #{username},\n" " name#{name},\n" " gender#{gender},\n" " image#{image},\n…

如何去除 JavaScript 对象中的空值和空对象

在 JavaScript 开发中,我们经常需要处理对象数据,但有时这些对象可能包含一些空值或空对象。在处理数据时,通常需要将这些空值或空对象去除,以便得到更干净、更紧凑的数据结构。本文将介绍几种方法,教你如何去除 JavaS…

https请求异常引发(Received fatal alert: unrecognized_name):如何快速解决项目中问题?

总结思考:如何做一个出色的开发者? 首先我们要承认我们大部分程序员是应用开发,不是操作系统、协议、框架开发等这类底层开发者。 其一:是否能快速定位问题。如找到出现问题的代码,bug出现在哪一行,哪个应…

Django实现音乐网站 ⑷

使用Python Django框架制作一个音乐网站,在系列文章3的基础上继续开发, 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录 表结构设计 歌曲类型表结构 歌单表结构 创建表模型 创建表 后台注册表模型 引入表模型 后台自定义 总结 表结构设计…

SpringBoot使用JKS或PKCS12证书实现https

SpringBoot使用JKS或PKCS12证书实现https 生成JKS类型的证书 可以利用jdk自带的keytool工具来生成证书文件, 默认生成的是JKS证书 cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件 keytool -genkey tomcat…

在Ruoyi中采用Ajax动态生成Echarts图表实践

前言 在之前博文中,我们讲解了如何使用java在后台进行Echarts的图表生成组件,博文如下: 序号 博客连接1一款基于JAVA开发的Echarts后台生成框架2Ruoyi单体项目与Echarts4.2.1地图集成时的思路及解决办法3解决Ruoyi单体版本集成Echarts多图表时…

uni、css——制作表格样式的模型

案例展示 这里以5列做展示&#xff08;可随意调节&#xff09; 案例代码 <view class"list"><view class"item" v-for"(item,index) in list" :key"index">1</view> <!-- 有内容 --><view clas…

蓝桥 13期 java c组 特殊日期

【问题描述】 2022 年 2 月 22 日 22:20 是一个很有意义的时间&#xff0c;年份为 2022&#xff0c;由 3 个 2 和 1 个 0 组 成&#xff0c;如果将月和日写成 4 位&#xff0c;为 0222&#xff0c;也是由 3 个 2 和 1 个 0 组 成&#xff0c;如果将时间中的时和 分写成 4 位&am…

redis五种数据类型介绍

、string&#xff08;字符串&#xff09; 它师最基本的类型&#xff0c;可以理解为Memcached一模一样的类型&#xff0c;一个key对应一个value。 注意&#xff1a;一个键最大能存储 512MB。 特性&#xff1a;可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512…

《Java-SE-第二十八章》之CAS

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

SpringCloudAlibaba之Sentinel(一)流控篇

前言&#xff1a; 为什么使用Sentinel&#xff0c;这是一个高可用组件&#xff0c;为了使我们的微服务高可用而生 我们的服务会因为什么被打垮&#xff1f; 一&#xff0c;流量激增 缓存未预热&#xff0c;线程池被占满 &#xff0c;无法响应 二&#xff0c;被其他服务拖…

面向视频会议场景的 H.266/VVC 码率控制算法研究

文章目录 面向视频会议场景的 H.266/VVC 码率控制算法研究个人总结摘要为什么要码率控制码率控制的关键会议类视频码率控制研究背景视频会议系统研究现状目前基于 R-λ模型的码率控制算法的问题文章主要两大优化算法优化算法1&#xff1a;基于视频内容相关特征值的码率控制算法…

Python开发环境Spyder介绍

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 Spyder简介 Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境&#xff0c; 提供高级的代码编辑、交互测试、调试等特性&#xff0c;支持包括 Windows、Linux 和 OS X 系统。 &#x1f447; &#x1f44…

14-3_Qt 5.9 C++开发指南_QUdpSocket实现 UDP 通信_UDP 单播和广播

文章目录 1.UDP通信概述2. UDP 单播和广播2.1 UDP 通信实例程序功能2.2 主窗口类定义和构造函数2.3 UDP通信的实现2.4 源码2.4.1 可视化UI设计2.4.2 mainwindow.h2.4.3 mainwindow.cpp 1.UDP通信概述 UDP(User Datagram Protocol&#xff0c;用户数据报协议)是轻量的、不可靠的…

基于边缘无线协同感知的低功耗物联网LPIOT技术:赋能智慧园区方案以及数字工厂领域

回到2000年左右&#xff0c;物联网的底层技术支撑还是“ZigBee”&#xff0c;虽然当时ZigBee的终端功耗指标其实也并不庞大&#xff0c;但是&#xff0c;“拓扑复杂导致工程实施难度大”、“网络规模小导致的整体效率低下”都成为限制其发展的主要因素。 LPWAN&#xff0c;新一…

第一百零三回 全局共享数据之Provider

文章目录 知识回顾使用方法示例代码 我们在上一章回中介绍了 组件之间共享数据相关的内容&#xff0c;本章回中将继续介绍该内容.闲话休提&#xff0c;让我们一起Talk Flutter吧。 知识回顾 我们在前面章回中介绍了全局共享数据相关的内容&#xff0c;当时介绍了获取共享数据…

Android Tencent Shadow 插件接入指南

Android Tencent Shadow 插件接入指南 插件化简述一、clone 仓库二、编译运行官方demo三、发布Shadow到我们本地仓库3.1、安装Nexus 3.x版本3.2、修改发布配置3.3、发布仓库3.4、引用仓库包 四、编写我们自己的代码4.1、新建项目导入maven等共同配置4.1.1、导入buildScript4.1.…

51单片机学习--LED点阵屏显示图形动画

为了通用性考虑&#xff0c;需要把用到的几个口用特殊位声明来重新命名&#xff0c;由于RCLK在头文件中已有定义&#xff0c;所以这里把P3^5声明成RCK吧。。这样的做法可以提高可读性 sbit RCK P3^5; //RCLK sbit SCK P3^6; //SRCLK sbit SER P3^4;接下来编写74HC595的输…

bash引用-Quoting详细介绍

bash引用-Quoting详细介绍 概述 引用的字面意思就是&#xff0c;用引号括住一个字符串。这可以保护字符串中的特殊字符不被shell或shell脚本重新解释或扩展。(如果一个字有不同于其字面意思的解释&#xff0c;它就是“特殊的”。例如&#xff1a;星号*除了本身代表*号以外还表…

dflow工作流使用1——架构和基本概念

对于容器技术、工作流等概念完全不懂的情况下理解dflow的工作方式会很吃力&#xff0c;这里记录一下个人理解。 dflow涉及的基本概念 工作流的概念很好理解&#xff0c;即某个项目可以分为多个步骤&#xff0c;每个步骤可以实现独立运行&#xff0c;只保留输入输出接口&#x…