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

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 近几年来数据的量级在疯狂的增长,由此带来了系列的问题。作为对人工智能团队的数据支撑,我们听到的最多的质疑是 “正确的数据集”,他们需要正确的数据用于他们的分析。我们开始意识到,虽然我们构建了高度可扩展的数据存储,实时计算等等能力,但是我们的团队仍然在浪费时间寻找合适的数据集来进行分析。也就是我们缺乏对数据资产的管理。事实上,有很多公司都提供了开源的解决方案来解决上述问题,这也就是数据发现与元数据管理工具,在这篇文章中,我将描述行业迄今为止元数据管理的三代架构,希望本文能帮助您在选择自己的数据治理解决方案时做出最佳决策。

什么是元数据管理?


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

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

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

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

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


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


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

image.gif微信图片_20220528211919.jpg

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

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

优点

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

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

缺点

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

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

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


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


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

微信图片_20220528211924.jpg

优点

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

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

缺点

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

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


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


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

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

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

微信图片_20220528211928.jpg

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

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

微信图片_20220528211932.jpg

好处

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

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

下图显示了该架构的完全实现版本:微信图片_20220528211935.jpg

缺点

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

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

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

下图是当今元数据格局的简单直观表示:

(包含部分非开源方案)

微信图片_20220528211938.jpg

大数据治理方案如何选择?元数据管理如何落地?

相关文章
|
1天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
2天前
|
负载均衡 算法 NoSQL
探索微服务架构下的服务发现与治理
【5月更文挑战第9天】 在当今的软件开发领域,微服务架构已成为构建可伸缩、灵活且容错的系统的首选模式。随着服务的增多,如何有效地进行服务发现与治理成为了关键的挑战。本文将深入探讨微服务环境中服务发现的机制和治理策略,分析不同服务发现工具的优缺点,并提出一种基于一致性哈希和健康检查相结合的服务治理方案,旨在提高系统的可用性和性能。
|
2天前
|
监控 API 持续交付
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第8天】在当今快速演进的软件开发领域,微服务架构已经成为实现敏捷开发、持续交付和系统弹性的关键模式。本文将探讨构建一个高效且可靠的微服务系统所必须的策略和最佳实践。我们将从服务的划分与设计原则出发,讨论如何通过容器化、服务发现、API网关以及断路器模式来优化系统的可伸缩性和鲁棒性。此外,我们还将涉及监控、日志管理以及CI/CD流程在确保微服务架构稳定运行中的作用。
|
3天前
|
敏捷开发 持续交付 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第8天】 在数字化转型的浪潮中,微服务架构已成为企业追求敏捷开发、持续交付和系统弹性的关键解决方案。本文将深入探讨微服务的核心概念,包括其设计原则、优缺点以及如何在后端开发中实现高效的微服务架构。我们将通过实际案例分析,展示微服务如何帮助企业快速适应市场变化,同时保持系统的可维护性和扩展性。
|
3天前
|
监控 云计算 开发者
探索云计算中的无服务器架构:从概念到实践
无服务器架构作为云计算领域的新兴技术,正在以其高效、灵活的特性吸引着越来越多的开发者和企业。本文将深入探讨无服务器架构的概念及其在云计算中的应用,通过实际案例展示如何利用无服务器架构构建可靠、可扩展的应用系统。
|
4天前
|
监控 负载均衡 数据安全/隐私保护
探索微服务架构下的服务网格(Service Mesh)实践
【5月更文挑战第6天】 在现代软件工程的复杂多变的开发环境中,微服务架构已成为构建、部署和扩展应用的一种流行方式。随着微服务架构的普及,服务网格(Service Mesh)作为一种新兴技术范式,旨在提供一种透明且高效的方式来管理微服务间的通讯。本文将深入探讨服务网格的核心概念、它在微服务架构中的作用以及如何在实际项目中落地实施服务网格。通过剖析服务网格的关键组件及其与现有系统的协同工作方式,我们揭示了服务网格提高系统可观察性、安全性和可操作性的内在机制。此外,文章还将分享一些实践中的挑战和应对策略,为开发者和企业决策者提供实用的参考。
|
5天前
|
API 持续交付 开发者
构建高效微服务架构:策略与实践
【5月更文挑战第6天】随着现代软件系统的复杂性增加,微服务架构逐渐成为企业开发的首选模式。本文深入分析了构建高效微服务架构的关键策略,并提供了一套实践指南,帮助开发者在保证系统可伸缩性、灵活性和稳定性的前提下,优化后端服务的性能和可维护性。通过具体案例分析,本文将展示如何利用容器化、服务网格、API网关等技术手段,实现微服务的高可用和敏捷部署。
|
6天前
|
存储 前端开发 Java
Android应用开发中的MVP架构模式实践
【5月更文挑战第5天】随着移动应用开发的复杂性增加,传统的MVC(Model-View-Controller)架构在应对大型项目时显得笨重且不灵活。本文将探讨一种更适应现代Android应用开发的架构模式——MVP(Model-View-Presenter),并展示如何在Android项目中实现该模式以提升代码的可维护性和可测试性。通过对比分析MVP与传统MVC的差异,以及提供一个实际案例,读者将能深入了解MVP的优势和实施步骤。
|
6天前
|
缓存 NoSQL Java
构建高性能微服务架构:Java后端的实践之路
【5月更文挑战第5天】在当今快速迭代和高并发需求的软件开发领域,微服务架构因其灵活性、可扩展性而受到青睐。本文将深入探讨如何在Java后端环境中构建一个高性能的微服务系统,涵盖关键的设计原则、常用的框架选择以及性能优化技巧。我们将重点讨论如何通过合理的服务划分、高效的数据存储策略、智能的缓存机制以及有效的负载均衡技术来提升整体系统的响应速度和处理能力。
|
6天前
|
监控 持续交付 数据库
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第5天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选模式。本文将探讨如何通过一系列经过验证的策略和最佳实践来构建一个高效且可靠的微服务系统。我们将深入分析微服务设计的核心原则,包括服务的细粒度划分、通信机制、数据一致性以及容错处理,并讨论如何利用现代技术栈来实现这些目标。文章将提供一套综合指南,旨在帮助开发者和架构师在保证系统性能的同时,确保系统的稳健性。
23 4