淘系数据模型治理最佳实践

导读:本次分享题目为淘系数据模型治理,主要介绍过去一年淘系数据治理工作的一些总结。

具体将围绕以下4部分展开

  • 模型背景&问题
  • 2问题分析
  • 3治理方案
  • 4未来规划

模型背景&问题

1.整体情况

首先介绍一下淘系的整体数据背景。

淘系的数据中台成立至今已有7年左右,一直未作数据治理,整体数据生成构成比为:人工创建(22%)+机器生成78%。其中活跃数据占比:9%,不规范数据占比:21%。

数据活跃以倒三角形状分布,整体分布比例为ads:dws:dwd:dim=8:2:1:1,分布还算合理。

上图中下半部分是模型的生命周期,增长和留存情况。淘系的业务还属于快速变化中,模型变化比较快。模型生命周期为25个月,模型年增长比例30%,模型留存44%。

2.公共层

公共层两大核心问题为:

  • 首先,公共层表复用性不高。在2014年的时候公共层还比较规范,但可持续性不强。随着时间流逝,业务增长和变化,复用性就逐年降低。因为大部分的数据是应用层做的,他们会开发自己的公共层,复用性降低,大部分都是无效表。
  • 另外,公共数据表在各个团队分布不合理。这是由于数据团队多,为了满足业务开发效率,每个团队都有自己的公共表,容易出现公共表复用占比低,重复建设的场景。其中淘宝数据团队负责最多的公共数据表。

3.应用层分析

应用层的主要问题包括:

  • 第一,公共层建设不足或公共层透出不足。随着时间增长,公共层的指标不能满足ads层的业务需要,ads复用指标逻辑没有下层,引用cdm层的ads表占比逐年降低,引用ads的ads表占比逐年增高。
  • 第二,较多的ads表共性逻辑未下沉,统计显示超过17.63%ads表被下游ads复用。
  • 第三,跨集市依赖严重,统计显示,整体跨集市依赖占比为30%,特别是大进口和淘宝数据跨集市依赖达到了40%,影响模型的稳定性,影响了模型的下线、修改。

问题分析

1.问题汇总

以上这副图是简化后的数据模型,我们可以发现存在很多不规范问题影响了模型的稳定性。业务在快速发展的情况下,为了快速响应业务需求,产生模型问题是必然的。日常工作中,数据研发流程大致如下,接到业务需求,直接引用ODS层表开发ADS数据,待数据需要复用的时候就把逻辑沉淀到公共层,同理指标也会有类似情况。主要问题可以归纳为七点:

  • 系统临时表多,只增不删,对于消费侧影响较大,因为表量巨大,有效比例低,很难检索到;
  • 命名不规范;
  • 公共层过度设计;
  • ADS重复建设;
  • ADS跨集市依赖;
  • ADS共性未下沉;
  • ADS穿透依赖ODS。

2.原因分析

从问题分类上看,主要有三大类问题:规范性问题,公共层复用性问题和应用层复用性问题。

从问题原因上看,主要有四大类原因:架构规范,流程机制,产品工具,以及研发能力。

3.模型治理的问题

模型治理的挑战:

  1. 业务价值不明显,治理带来的是长期价值,短期对业务影响不大。
  2. 治理协作复杂,治理需要ODS、CDM、ADS层多人多团队协作
  3. 问题治理难根治,容易出现新模型依赖有问题模型
  4. 模型平均生命周期不长(25个月)

综上所述,模型治理的ROI比较低,我们的问题就是如何模型治理才最高效?

治理方案

1.整体方案

基于以上的问题原因分析,我们制定了如下治理方案。

核心策略为以下三点:

1:盘点存量,掌握数据的整体情况

2:规范增量,避免新增模型走老路,重复出现相同问题,考虑到数据的生命周期,历史数据可以先不管。

3:日常治理保健康,以数据化驱动长期治理

2.机制规范

架构分层标准

往年我们关注的是数据视角,今年关注的是业务视角,业务视角核心诉求主要有四点,交付效率、产出时效、质量可靠、成本可控。过去OneData定义了每一层的作用,但每个层次的分工定位不清晰,针对这些问题重新做了清晰的定义。

应用层核心是专注支持业务,需要考虑研发效率、交付数据口径一致性和稳定性。

通过集市规范来控制复杂度,通过轻度聚合的中间层确保口径统一,通过扁平化设计确保稳定。

公共层的核心是抽象复用来提升效率,需要考虑易用性和稳定性。通过规范和冗余宽表提升复用性,通过解耦来确保稳定性。

ODS层的核心是合规高效,需要考虑接入效率和性能稳定。通过工具化提升效率、优化治理确保性能的稳定。特别是在数据达到一定量之后要考虑采用merge的方式接入数据。

集市划分规范

数据集市,是用来满足特定部门或者用户的需求,按照多维的方式进行存储。通过对相似数据业务场景内聚进行抽象分类,以降低ADS层重复建设和数据管理复杂度,让应用研发更聚焦更高效。

集市划分的原则有以下两点:

原则一:以业务场景或者服务对象作为划分原则,对相似数据业务场景内聚抽象进行分类。

原则二:集市划分需要统一标准,尽量符合MECE原则。

公共层共建机制

在建设公共层的建设过程中,我们通常会遇到以下两个痛点:

  • 应用研发的痛点:公共层相应效率低。
  • 公共层研发的痛点:如果统一承接开发工作,涉及的业务很广泛,研发资源不足。

为了解决以上两个痛点,我们通过以下核心原则来解决:

原则一:公共层开放共建,事后审计治理

应用开发整理需求,把需要下沉的公共维度提给公共层研发,公共开发需求评估。

原则二:以应用需求驱动,设计开发共建 以需求为驱动,拆分出核心模型和非核心模型,核心模型公共研发负责,非核心模型由业务开发进行,共同开发以提高效率。

原则三:公共层研发统一运维保障

非核心模型上线并完成相关测试(准确性、确定性、治理)后转交给公共层研发,由公共层统一运维。

3.智能建模

在数据治理中有数据规范与共建机制依然是不够的,还需要结合自动化工具来提升效率、保障规范。我们是从以下4个方面入手的(详情可以体验DataWorks的产品):

  • 数据体系目录结构化
  • 模型设计线上化
  • 打通研发流程(自动化生成简代码)
  • 对接地图数据专辑

数据目录体系结构化

形成数据体系目录有利于了解掌握数据,分门别类的方式降低了大家的使用成本。

首先要对表命名做一些管控,我们做了可视化的表命名检测器,来确保规范性。另外,淘系不是一个单空间的数据体系,因此要解决跨多个空间的复杂数据体系的统一建模问题。

模型设计线上化

改变模型设计方式,由线下设计迁移到线上,通过一些自动化工具,提升效率,保证规范。

打通研发流程(自动化生成简代码)

模型迁移到线上后,打通研发流程自动生成简代码,生成代码框架,建表语句,显著提高了研发效

对接地图数据专辑

形成相应的地图数据专辑,方便其他用户使用数据。

4.模型治理

打分模型

模型治理需要量化,如果没有量化全靠专家经验效率是非常低的,我们通过模型的指标形成到表级别的模型分。通过多维度对模型进行打分。

打分机制

精细化的打分机制,针对团队、数据域、核心进行打分,形成相应的标签。

整体流程

以数据驱动,上图左边,以模型评估数据为出发点,通过各个维度对模型进行评估,得到各个域、各个团队的评分,形成相应的问题标签。

以产品驱动,上图右边,通过专家经验判断新上线模型升级搜索权限、下线模型降权限,让业务迅速感知数据变化,引导业务。

未来规划

应用层效率

在整个数据体系中,应用层的数据体量是最大的,投入了大量的人力。OneData缺少对应用层的数据建设指导,集市高度耦合,给运维效率带来了不少问题,如跨集市依赖、依赖深度的问题。过去都是以业务为主导,为了保障研发效率放弃了部分研发规范,以后要完善应用层的研发规范,同时通过工具做好研发效率与规范的平衡。

架构规范管控

基于分层标准落地,对研发过程规范完善,包括对设计、开发、运维、变更、治理等规范进行细化。

目前核心是表命名规范,对依赖规范、代码规范、运维规范等管控能力尚不足。

产品工具提效

将继续与Dataworks共建。

  • 应用层智能建模能力还不能满足研发效率要求,因此会继续功能提效;
  • 数据测试功能集成;
  • 数据运维功能升级;
  • 事中数据治理能力构建(开发助手);
  • 事后治理能力提效(批量删除、主动推送优化等);
  • 数据地图,找数用数提效。

问答环节

1:核心公共层的建设是自顶向下还是自底向上?

采用的是两者相结合的方式。以需求为驱动,没有需求就会导致过渡设计,在应用层有复用之后再下沉到公共层,这是自顶向下的。 在公共层设计阶段是面向业务过程的,这时是自底向上的。

2:多BU公共层是否需要统一规范?怎么去做?怎么量化价值?

需要做统一的规范,规范利于数据流通,才能体现数据价值 。但是具体怎么规范需要具体去看,如电商、本地生活,业务和目标不一样,很难做到统一的规范

3:怎么判断指标需要下沉到公共层?

公共层的开发是需要成本的,是否需要下沉到公共层核心是看是否需要复用,可以从两个方面入手。

专家经验判断:如电商交易环节数据,这类数据是核心数据,是要建设到公共层的。

事后判断:如玩法之类的业务稳定性不强,那一开始不需要下沉到公共层,避免过度设计,事后再去判断是否需要下沉。

4:关于表、字段的命名规范,是否需要先定义好词根再开发?

需要分开看。对于公共层设计到的业务过程是有限的,对于公共部分要先定义好再开发。对于应用层,维度采用的是总建架构所以还需要先定义,对于指标特别是派生指标是多的,不建议先定义在开发。

5:如何解决口径一致命名不一致,或者口径不一致或者命名一致的场景。

模型是演变的。对于应用层,80%都是自定义的,第一次出现的时候都是不标准的,这部分如果采用先定义后开发的方式,效率是很低的,只有在下沉到公共层的时候才能够管控。对于公共层,能做的是保障核心指标90%的规范与定义统一,剩下的那部分也无法保证。

6:跨集市依赖下沉到公共层的必要性?

短期来看,是没影响的,新增效率高。

长期来会给数据的运维、治理带来很多影响,在数据下线、变更、治理过程中不得不考虑到下游依赖,会影响全流程的开发效率。

原文链接

本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

【走进RDS】之SQL Server性能诊断案例分析

客户的困扰 前几天某程序员小王向阿里云咨询他的SQL Server数据库整体负载较高,是否有优化的方法?前几天另外一个工单则是需要阿里云工程师帮忙定位某一个时刻的数据库性能尖刺的问题。 这些都是常见的性能诊断工单,其实数据库性能诊断不仅…

用了那么久的 Lombok,你知道它的原理么?

序言 在写Java代码的时候,最烦写setter/getter方法,自从有了Lombok插件不用再写那些方法之后,感觉再也回不去了,那你们是否好奇过Lombok是怎么把setter/getter方法给你加上去的呢?有的同学说我们Java引入Lombok之后会…

Fury:一个基于JIT动态编译的高性能多语言原生序列化框架

Fury是一个基于JIT动态编译的多语言原生序列化框架,支持Java/Python/Golang/C等语言,提供全自动的对象多语言/跨语言序列化能力,以及相比于别的框架最高20~200倍的性能。 引言 过去十多年大数据和分布式系统蓬勃发展,序列化是其…

阿里云丁宇:以领先的云原生技术,激活应用构建新范式

8 月 11 日,2022 阿里云飞天技术峰会在深圳举行,会上阿里云提出云原生激活应用构建三大范式,并发布最新的产品与解决方案。基于分布式云容器平台 ACK One,实现多地域分布式系统一致管理;发布 ACK FinOps 解决方案&…

操作系统的“冷板凳”要坐多久?万字长文解读16年开源老兵的坚持

想知道内核研发是怎样的体验?操作系统的“冷板凳”得坐多久才有春天?本文对话龙蜥社区理事长马涛,畅所欲言聊开源,一起来看看那些开源润物细无声背后的故事以及龙蜥社区运营的道法术。 高门槛的 Linux 内核研发,如何支…

在阿里做前端程序员,我是这样规划的

前端程序员常问的几个问题 此文来自一次团队内的分享。我是来自大淘宝技术内容前端团队的胤涧,负责内容中台技术。我的习惯是每个新财年初都会进行一次分享《HOW TO BE AN EMINENT ENGINEER》,聊聊目前团队阵型、OKR、业务和技术大图,聊聊我作…

如何可视化编写和编排你的 K8s 任务

简介 K8s Job 是 Kubernetes 中的一种资源,用来处理短周期的 Pod,相当于一次性任务,跑完就会把 Pod 销毁,不会一直占用资源,可以节省成本,提高资源利用率。 阿里任务调度 SchedulerX 和云原生结合&#x…

前端智能化实践——可微编程

什么是可微编程 通过动画、动效增加 UI 表现力,作为前端或多或少都做过。这里以弹性阻尼动画的函数为例: 函数在 时是效果最好的。最终,实现成 JavaScript 代码: function damping(x, max) {let y Math.abs(x);// 下面的参数都是…

解析 RocketMQ 业务消息——“事务消息”

引言:在分布式系统调用场景中存在这样一个通用问题,即在执行一个核心业务逻辑的同时,还需要调用多个下游做业务处理,而且要求多个下游业务和当前核心业务必须同时成功或者同时失败,进而避免部分成功和失败的不一致情况…

模型代码联动难? BizWorks 来助力

业务模型设计和沉淀是企业数字化转型过程中非常重要的一个环节, 日趋复杂的业务场景和协作模式给建模的有效性以及模型作为业务资产如何持续发挥价值带来了新的挑战: 设计完成的业务模型是否被合理实现了?经过数月、半年、1年迭代后,模型设计还能否对业务系统的演…

EasyNLP 集成 K-BERT 算法,借助知识图谱实现更优 Finetune

导读 知识图谱(Knowledge Graph)的概念⾸次出现2012年,由Google提出,它作为⼀种⼤规模语义⽹络, 准确地描述了实体以及实体之间的关系。知识图谱最早应⽤于搜索引擎,⽤于准备返回⽤户所需的知识。随着预训…

一种关于低代码平台(LCDP)建设实践与设计思路

背景 负责菜鸟商业中心CRM系统开发已经有1年多时间,过程中发现有一个痛点:业务线特别多,每个业务线对同一个页面都有个性化布局和不同的字段需求,而我所在的团队就3个人,在资源有限的情况下如何支撑好呢?刚…

Redis 数据类型 list 以及使用场景

数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序 list类型:保存多个数据,底层使用双向链表存储结构实现 list 类型数…

TairSearch:加速多列索引查询

互联网及传统行业应用服务的关键数据一般存储在MySQL这类的关系型数据库中。如需缓解数据库访问压力,可引入Redis等缓存系统承担热数据的查询,以此提升查询效能。然而业务场景如果是在数据库上做随意多列组合索引查询或者like模糊匹配查询,使…

如何在 Anolis 8上部署 Nydus 镜像加速方案?

在上一篇文章中详细介绍Anolis OS 是首个原生支持镜像加速 Linux 内核,Nydus 镜像加速服务重新优化了现有的 OCIv1 容器镜像格式,重新定义镜像的文件系统,数据与元数据分离,实现按需加载,本文作为使用 Nydus 的教程将详…

机器学习访存密集计算编译优化框架AStitch,大幅提升任务执行效率

近日,关于机器学习访存密集计算编译优化框架的论文《AStitch: Enabling A New Multi-Dimensional Optimization Space for Memory-Intensive ML Training and Inference on Modern SIMT Architectures》被系统领域顶会ASPLOS 2022接收。 AStitch通过编译优化的手段来…

微前端架构的几种技术选型

背景 随着SPA大规模的应用,紧接着就带来一个新问题:一个规模化应用需要拆分。 一方面功能快速增加导致打包时间成比例上升,而紧急发布时要求是越短越好,这是矛盾的。另一方面当一个代码库集成了所有功能时,日常协作绝…

真正的 HTAP 对用户和开发者意味着什么?

数据库的全称是 DBMS(Database Management System),早期是不区分 OLTP 与 OLAP 的,E.F.Codd 在 1970 年就提出了关系模型,Jim Gray 在 1976 年提出了事务模型。随着数据库的应用场景越来越丰富,单一数据库的…

const常见用法

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量 下面我就介绍一下几种常见的用法 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int Val 10; //Val 20; //错误,不可被修改 2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传…

微服务治理热门技术揭秘:无损上线

为什么有了无损下线,还需要无损上线?无损上线可以解决哪些问题? 本篇文章将一一回答这些问题。 无损上线功能不得不说是一个客户打磨出来的功能我们将从一次发布问题的排查与解决的过程说起。 背景 阿里云内部某应用中心服务在发布过程中出…