解决方案:全链路数据血缘在满帮的实践
优采云 发布时间: 2022-11-04 23:26解决方案:全链路数据血缘在满帮的实践
什么是全链路数据沿袭
根据维基百科,数据沿袭也称为数据来源或数据谱系。它通常被定义为一个生命周期,主要包括数据来自哪里以及随着时间的推移而移动到哪里。
数据血脉是数据资产的重要组成部分。用于分析表和字段从数据源到当前表的血统路径,血统字段之间的关系是否满足,注意数据的一致性和合理的表设计。它描述了数据从采集、生产到服务全链路的变化和存在形式。
全链路数据血统是指在数据的整个生命周期中,数据与数据之间形成的各种关系,贯穿整个数据链路,如图1所示。
图1 全链路数据沿袭
血缘关系建设计划调查血缘关系分析
目前,数据沿袭主要是通过解析SQL语句来发现上下游调用栈等信息。主流解决方案可以分为两种:
上述两类方案各有优缺点,对比见表1。
表1 数据沿袭分析方案
血统储存
与传统的关系型数据库和 ES 工具相比,图数据库在血统信息的查询和分析方*敏*感*词*有以下优势:
1. 更好地存储和分析复杂关系
数据沿袭描绘了数据的完整生命周期,具有数据链路长的特点。传统的关系型数据库和ES等,往往只反映当前状态或短路径中的状态,在长链接血缘关系的检索上存在明显劣势。图数据库有效组织复杂关系,通过点-边结构将血脉上下游完美连接,从而实现更长链路血脉的存储、检索和分析。
2.能有效利用数据之间的相关性,实现更准确可靠的决策
图结构的特点对业务具有重要的指导意义。例如,图的密度可以反映业务数据关联的紧密程度,有助于识别高I/O或高吞吐的服务,识别链路瓶颈;图数据之间的共现可以反映血缘关系中的共生关系,辅助血缘关系重要性的划分;图形可视化帮助业务人员更清晰地了解血缘动态。
与开源图数据库 Neo4j 和 Nebula Graph 相比,华为云 GES 具有以下优势:
华为云GES的基准数据如表2所示。
表2 华为云GES基准测试数据
满帮数据血脉的实践 满帮数据血脉的特点
满帮数据血脉具有以下特点:
数据沿袭模型
定义丰富的血缘关系模型有助于更真实有效地展示血缘关系。满族血统模型主要包括实体和关系,其中实体主要涵盖任务、库、表、视图、字段、函数等实体。实体和关系的组合显示了从一个表/列到其他表/列的沿袭,包括表 INSERT INTO\CTAS 之间的依赖关系,字段 PROJECTION\PREDICATE 之间的依赖关系。
使用完整的数据血缘模型可以展现血缘的全貌,但存在以下问题:一是完整的血缘模型往往收录上千个实体血缘关系,在前端难以展示;其次,过多的冗余信息可能导致问题实体定位困难。为了解决以上问题,满帮在数据血缘模型的基础上,开发了多层次血缘关系模型,主要包括完整血缘关系模型和高层次血缘关系模型。完整数据沿袭模型是所有其他高级沿袭模型的基础,高级沿袭模型通过省略或聚合模型中的某些关系和实体来扩展完整沿袭。在实际业务中,
总体架构规划
满帮全链路数据血脉实现了血脉数据数据采集从开始到最终数据服务的全链路,有助于高效定位问题,快速评估影响。全链路血脉架构如图2所示,主要包括5层:
图2 满帮全链路血脉架构
血脉采集层
满帮血脉采集层目前涵盖满帮内部数据、离线调度、实时计算等平台上的SQL任务和Spark\Flink任务。血缘关系包括系统血缘关系、职务血缘关系、图书馆血缘关系、表级血缘关系、字段血缘关系,指向数据的上游源头,溯源上游。通过血缘关系,清晰展示数据处理的逻辑脉络,快速定位异常数据域的影响范围,准确勾画数据回溯的最小范围,降低理解数据和解决数据问题的成本. 具体来说:
为了方便采集和数据血统的处理,统一了各个组件的血统格式,主要包括输入输出表、字段等信息。
血缘处理层
血缘处理层主要由血缘实时处理模块、血缘存储接口模块、血缘管理模块组成。
为了满足近实时血脉查询的需求,满帮采用Flink作为血脉实时处理模块的核心组件。通过对上游采集接收到的血脉信息进行实时分析处理,可以快速写入图数据库和Hive。该模块支持批量删除\查询\更新和模糊删除\查询\更新功能。
血脉存储接口模块主要开发快速编写图数据库和Hive的相关接口。
血缘管理模块主要用于血缘信息的维护管理和统计分析。
血脉贮藏层
血脉存储层使用华为云图引擎GES服务作为存储引擎。GES采用华为自研EYWA内核,是一种基于“关系”的“图”结构化数据查询分析服务。GES 目前提供多种原生接口,包括批量读写点、边,以及各种路径查询算法。
全链路全链路数据沿袭场景下,图数据操作主要包括读写操作。写入操作主要是将解析和格式化后的血线数据实时写入图数据库。另一种写操作主要是向应用端提供写请求,如表\字段安全级别标记。读取操作主要来自自满帮内部的各种应用场景,主要涵盖短距离、CRM、客服、金融等。
血脉接口层和血脉应用层
血缘接口层主要连接血缘应用层的各种服务,通过开放血缘RPC接口,为各个应用服务提供丰富的接口选项。
目前,满族血脉信息主要应用于数据资产、数据治理、数据安全、数据质量等各种场景。
1. 数据资产
满帮数据资产管理平台提供资产全景图、数据地图、数据质量、数据安全等功能,如图4所示。数据地图支持以扇形图的形式直观展示各种数据资产的占比,图表,并通过不同层次的图形进行精细化控制,满足业务中不同应用场景的数据查询和辅助分析需求。
图 4 满帮数据资产管理平台
数据图还支持显示血统信息,分析任务之间的数据流向,如图5所示。目前数据图支持显示任务、库、表、字段级血缘关系。
图5 满帮资料图
2. 数据治理
数据治理是指在数据的整个生命周期内管理数据的原则性方法,其目标是确保数据安全、及时、准确、可用和易于使用。满帮数据治理主要围绕“指标明确、质量规范”和“资源合理、节约严格”的原则进行。
如图6所示,满帮数据治理任务对库、表、字段的血脉信息进行分析,从价值密度、访问频率、使用方式、时效度等维度进行评价,从而对数据的流行度进行评分,热数据和热数据。,冷数据和冰数据。通过血缘关系信息查看离线数仓中某个任务链路的上下游任务依赖,同时分析链路上表的冷热使用情况,对ods和dwd上的相关任务和SQL进行优化,cut和merge低价值表,缩短数据流ETL环节,从而降低维护成本,提高数据价值。
图 6 满帮数据治理
3. 数据质量
数据质量旨在高效监控各类作业的运行状态,洞察关键信息,形成事前判断、事中监控、事后跟踪的闭环质量管理流程。在满帮数据质量监管平台建设中,面临以下问题:
针对以上问题,满帮基于全链路数据血统,从以下几个方面提升数据全生命周期的数据质量:
4. 数据安全
随着国家在数据流通过程中对数据安全的重视程度越来越高,如果不能有效识别安全级别高的数据,可能会出现安全合规风险。为此,满帮推出了资产安全打标平台,支持通过“自动+人工”打标实现资产安全分级打标,但存在打标覆盖率低、准确率低等问题。
基于全链路的血缘关系,根据不同的数据安全等级,先用血缘关系标注接口对不同的表字段进行标注,然后识别标注字段的上下游血缘关系,再自动标注安全性等级。如图7所示,city_name字段通过血统标记平台安全标记,等级为L3。根据血脉关系,对下游血脉链路的字段进行自动染色和标记,实现自动“染色”。
图 7 数据安全
未来展望
经过探索和实践,满帮已经基本实现了基于图数据库相关技术的全链路数据血统的构建,并取得了一定的成果。未来,我们将在以下几个方面进行更深入的探索,进一步完善我们的业务:
1、目前bloodline采集主要通过SQL、自动任务解析和人工排序来提高血脉覆盖率。目前覆盖率已达到95%以上。未来将探索人工智能相关的方法,根据数据集之间的依赖关系计算数据相似度,以提高覆盖率。
2. Impala 血统采集 方法链接长,依赖Filebeat。未来我们会逐步对接使用SQL语法解析AST的方案,实现解析规范化。
3. 目前血缘维度不支持功能层。
4、开发全链路血脉开放平台,快速对接应用端,为应用端提供血脉服务。
参考
[1]
[2]
[3]
点击关注,第一时间了解华为云新技术~
解决方案:项目实战(二)搭建新闻推荐系统
本篇博客主要是想从一个比较全局的角度来看待推荐系统,以搭建一个新闻推荐系统为例,来了解推荐系统中前端、后端、数据库、算法等之间的联系,并记录下来。学习过程和实战中面临的问题。
一、准备工作: 1、安装mysql
/zhangkanghui/p/9613844.html
/p/24c8a71b32e2
2. python + anconda + pymysql + 连接数据库
/liubinsh/p/7568423.html
/ifubing/article/details/97102088
/hapjin/p/7800959.html
3.Nodejs安装配置
/liuqiyun/p/8133904.html
nodejs的使用:/nodejs/nodejs-http-server.html
4、mysql导入sql文件
/weixin_37887248/article/details/80897230
5. python django框架入门
/reader/p/9436243.html
过程中可能遇到的问题:
/qq_38463737/article/details/115012258
/phyger/p/8035253.html
二、复现:
参考《推荐系统开发》的代码,做一些小改动,主要是django版本的问题,参考如下代码/phyger/p/8035253.html
然后参考代码中提供的README运行整个项目。作者真强,666!
3、代码解读+相关知识学习:
本来打算解释代码的,但是发现作者在源码中做了详细的注释,就不过多解释了。这里主要记录下自己在理解过程中遇到的问题,帮助理解源码。
1.什么是MVC模式?
MVC模式是一种软件架构模式,其中M指Model,业务模型;V指View,用户界面;C指Controller,控制器。他们的关系可以用下图表示
Source%E6%A1%86%E6%9E%B6/9241230?fromtitle=MVC%E6%A8%A1%E5%BC%8F&fromid=713&fr=aladdin2,什么是MTV模式?
MTV模式也是一种软件架构模式,其中M指Model,商业模式;V指View,用户界面;T 指 Template,模板。M主要负责业务对象和数据库对象,T负责页面如何展示给用户,V负责业务逻辑,适当的时候调用M和T。
3.Django框架?
django框架是基于mtv的python web开发框架,但django还需要配合url控制器,所以django的mtv模式与mvc基本相同。
过程是这样的:
(1)在浏览器页面(浏览器------->url)发送访问url的请求
(2)url匹配对应的视图函数(url---->views.py)
(3)视图函数有业务逻辑从Models获取数据,而Models从数据空间获取数据
(4)Models从数据空间获取数据后,将数据返回给视图函数(Models---->views.py)
(5)view函数返回数据并渲染到前端Template(views.py -----> Template)
(6)渲染的模板呈现在浏览器上(Template -----> on the browser)
参考:
4.django工程实现
/open-yang/p/11182877.html
/reader/p/9436243.html
5.什么是Vue?
Vue 是一个前端框架,一个用于构建用户界面的渐进式框架,只关注视图层。
/u011054333/article/details/78256169
/爱欢欢110/article/details/89331738
6. Django和MySQL如何链接?
/kimheesunliulu/article/details/100690975
/sunhuaqiang1/article/details/69384808
(1) 修改setting.py
(2)使用数据库链接库,如pymysql,添加
import pymysql #引用mysql驱动
pymysql.install_as_MySQLdb()
7、python框架django中结合vue的前后端分离的实现是什么?
/ranyihang/p/10694635.html
8.推荐系统工程实施框架
(1)本例中,推荐系统的框架如下图所示,主要实现了“为你推荐”、“热搜”、“相似推荐”等功能。整个过程可以简单描述为:
采集数据->数据预处理->根据需求和算法计算得到结果->入库->前端触发响应,发送请求(例如选择“为你推荐”页面)->后端提取数据(从数据库取出)->返回前端显示
(2)不同级别的数据量,不同的需求对应的框架是什么?
1)推荐系统提供Web服务有两种方式,即预计算和实时组装。顾名思义,预计算法是指预先计算每个用户的推荐结果,并存入数据库;实时组装法是指不预先计算每个用户的推荐结果,而是预先保存特征和推荐模型。当推荐服务被触发时,将特征输入到模型中,得到推荐结果。两种服务方式都可以支持T+1推荐和实时推荐。
2)预计算公式的优点是响应速度快,结构更简单;缺点是可能造成资源浪费,灵活性不够高。如果用户不是每天登录,而是每天计算推荐结果,会造成资源浪费;实时装配的优点是节省了计算资源,系统更加灵活;缺点是架构比较复杂,耦合度高。当出现问题时,无法及时反馈推荐结果。
3)推荐系统有三种架构,即离线、近实时和实时。不同的需求对应不同的架构设计,使用的计算也不同。但总体思路是一样的。
资源
4)MySQL的局限性:作者在文章中提到,他最初将推荐结果存储在MySQL中。当时最大的问题是,每天更新用户推荐的时候,需要先找到用户存储的位置,然后再替换。,操作复杂,当用户规模大,高并发读写,大数据存储,MySQL无法处理时,现在最好的办法是使用CouchBase、Redis、HBase等可以横向扩展的NoSQL数据库,可以完全避免打开MySQL的弊端。推荐结果一般不会在模型推理阶段直接写入推荐存储数据库。更好的方法是通过数据管道(如kafka)解耦,
5)NoSQL和MySQL的区别
/qq_37774171/article/details/85491721
(3)目前的新闻推荐系统框架是什么?优缺点都有什么?
/p/166400869
参考《构建企业级推荐系统》
9. 一篇关于新闻推荐算法的论文?具体方法有哪些?常用的方法有哪些?面临哪些问题?
(1) 在新闻推荐中,主要的挑战是冷启动、新闻内容的特征提取和用户兴趣的建模。新闻推荐的过程可以表示为:
(2) 如何对新闻建模?
这是一个机器学习/深度学习过程来解释
首先是特征:新闻的特征包括新闻的属性(谁发布的?什么类别?地理位置?发布时间?)、内容(关键词、主题、标题、正文内容)等上。其中,新闻非常讲究时效,头条对于吸引用户有很大的作用,这是新闻推荐的特点。
二是模型:常用的机器学习模型、深度学习模型、图神经网络模型等,比如
(3)如何对用户兴趣建模?
根据用户的历史行为和用户的属性,生成用户的表示。简单的方法是用点击新闻的总和来表示,考虑时间效应,给每条新闻加上时间衰减;更复杂的方法使用RNN/CNN/Self-attention/GNN等方法进行建模。
(4) 如何匹配用户和物品的排名?比如内积、DNN、树模型、层次匹配机制等,问题也可以建模为上下文强盗问题,通过强化学习来解决。
参考:
/a/217514835_488163
/a/257435887_701814
/p/115856168
个性化新闻推荐:一项调查
《新闻推荐系统:回顾近期进展、挑战和机遇》
10、天池新闻推荐系统大赛
/比赛/入口/531842/信息
/qq_41834327/article/details/110139478?spm=1001.2014.3001.5502