QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

网易严选如何打造数仓规范和评价体系?

  • 2020-09-13
  • 本文字数:3358 字

    阅读完需:约 11 分钟

网易严选如何打造数仓规范和评价体系?

数据为王的时代,数据量从最初的几十 G,慢慢沉淀到几十 T,甚至几十 PB 的量。数据工程师,也从最初的 ETL 工程师慢慢成长为数据全栈工程师:采集、同步、模型、离线、实时、规范、平台、工具、产品、交互、保障、数据体系等等。


数据仓库,是我们数据工程师的无形产品,不同于可视化、交互型产品的评价体系:拥有比较明确的评价指标 MAU、DAU、GMV 等。数据仓库一直没有比较系统的评价体系,下面从概念-平台-规范的链路来介绍一下严选数据仓库,最后跟大家交流一下数据仓库的评价体系。

数据仓库基本架构

这里概览讲一下严选数据仓库的分层逻辑,下面是严选数仓的框架图:



数据仓库分层没有绝对的规范,适合的就是最好的,特别是企业已经有一个初版的数仓的时候,需要做好改造成本和可理解性之间的平衡。


以业务数据的流向划分,目前严选数据把模型分为三层,ods,dw 和 dm 层。其中 ods 是操作数据层,保留最原始的数据;dw 包含 dwd 和 dws 层,这两层共同组成中间层;dm 是应用层,基于 dw 层做汇总加工,满足各产品、分析师和业务方的需求。


  • ODS 层(操作数据层):不对外开放,把业务系统数据同步到数仓。数据格式保留业务系统的数据格式;目前主要通过 datahub 解析 binlog 来实现的,目前严选的 ods 层数据同步主要以全量数据为主。

  • DWD 层(明细层):对外开放,主要作用是沉淀一些公共的逻辑,常用维度属性的关联等,下游经常在一起使用的模型会在这一层做宽表处理,减少事实表和维表的关联,减少重复的关联加工。

  • DWS 层(汇总层):对外开放,主要沉淀严选数据的公共指标,dws 层是整个严选数据对外开放和使用的核心,是严选最核心的数据资产。

  • DIM 层(维表):对外开放,主要是一些常用维表,比如商品维表、sku 维表、渠道维表。

  • DM 层(应用层):对产品开放使用,支持数据产品、报表的使用,主要是不公用复杂指标的汇总和计算。

数据仓库开发平台

严选数据仓库分离线和实时两部分。


离线部分由网易易数提供支持。网易易数(EasyData)是网易数帆旗下的全链路数据生产力平台,提供全链路数据产品和服务,覆盖数据分析及可视化、数据研发、数据治理、数据服务化等,其前身为网易猛犸——现已按模块拆分,命名为 Easy 系列产品,如离线开发 EasyDev。



实时部分由 Atom 平台提供支持,Atom 是严选产技自研的一款实时数据管理和开发平台。


严选数据仓库规范

在其他工种开发的眼里,数据仓库的入门门槛非常低,低到技术鄙视链的最末端:“噢……,他们就是写 SQL 的,他们整个团队都是写 SQL 的……”,顿时天空飘过一万匹神兽。曾经和未来都有很多人会来挑战数仓工程师存在的意义:“我也能干!”,但是实际情况是:naive!具体可参见严选数据仓库的架构图,这其中的每一个 icon 背后都有一套工具、平台,甚至于一个团队来支撑运转。


严选数据仓库是一套方法论,从规范定义、模型设计到数据服务,再到数据可管理、可追溯、可复用。严选数据仓库遵循维度建模理论,参考了阿里巴巴的 Onedata 建模理论,核心框架由三个规范组成:《严选-指标定义规范》 ,《严选-模型设计规范》和《严选-数据开发规范》,外层由辅助规范落地的若干工具、平台组成:仓颉-指标管理系统、燧人-指标地图系统、UDS-数据质量中心、EasyDesign-模型设计中心等。



1、指标定义规范


指标定义规范,目的是统一开发 &产品对指标的定义。通过对原子指标的命名规则、派生指标的命名规则和派生词的定义来完成。


指标定义体系,是数据建设体系的基础和内核,为了杜绝产品经理命名引起的歧义,以及后续带来的使用和维护以及解释成本。



2、模型设计规范


模型设计规范,目的是统一数据开发对模型的命名定义。通过域+更新方式,域+维度+更新周期的方式来完成。



3、数据开发规范


数据开发规范,目的是提高数据开发的 SQL 开发能力。通过限制各级子查询的缩进形式,子查询的规范等来完成。

数据仓库评价体系

近期的一些思考跟大家做一个交流,一家之言,欢迎拍砖。

基本要求

数据安全和数据质量是数据仓库的生命线!不可逾越、不可触犯。

评价体系

下图是近期整理的严选数据仓库的 6 个评价角度



1.数据规范


数据规范,最终目的是提高开发的整体水平。遵循严选数据规范:《严选-指标定义规范》、《严选-模型设计规范》和《严选-数据开发规范》,同时由工具和平台来保障规范的落地并监督评估规范落地的效果。


2.数据安全


数据安全,这个命题怎么强调都不为过,特别是近期数据安全问题频发,51 信用卡,大大小小的放贷公司。因此作为数据从业者,遵循《网易商业行为准则》,不对外泄露业务数据,时刻做到数据指间过,安全心中留。


3.数据质量


数据质量由数据本身的质量和数据建设质量两部分组成:


  • 数据本身质量:数据开发对数据质量负责,保持对数据的敬畏心,结合《严选-线上故障定义规范》,通过故障等级和次数指标来量化考核。

  • 数据建设质量:可以从两方面来考量:易用性和丰富性;易用性是结合数据规范来考量的:所有的数据都遵循严选数据规范,目的是降低数据的使用成本;丰富性是考量核心数据资产的广度:dw 对外服务的应用数量,dw 层管理的数据量,dw 层本身跨层依赖的数量等。



4.数据稳定性


  • 数据稳定性:建立完善数据仓库的值班制度,同时打通值班和故障平台,定期 review 数据本身问题导致的起夜的数量和影响面,量化考核具体开发。

  • 平台稳定性:建立完善的数据仓库和平台值班制度,打通值班日志和故障系统,定期 review 平台问题导致的起夜数量和影响面,量化考核平台。


5.持续建设机制


  • 沉淀机制:严选数据仓库已经建立了和分析师定期交流的机制,定期交流沉淀分析师的核心指标,不断丰富严选数据核心资产。

  • 数据治理:有上有下,通过和网易易数合作打通逆向数据流,通过下线冷数据冷任务,推动开发治理不规范模型和数据,来达到规范模型和节约存储的目的。


6.数据开发效率


较前 5 个角度对比,数据开发效率较难量化,可以从两个方面来考量:开发规范的自动化程度和平台使用体验。

严选数仓评价实践

依照前文提到的 6 个角度,严选分别有与之对应的工具来支持。


1.数据规范


所有的数据规范,最终目的都是用来提高开发者的水平、提高代码的质量。在开发水平参差不齐的情况下,需要有平台工具保障规范的落地。在过去的一年中,我们和网易杭州研究院一起规划落地了网易易数 EasyDesign 模型设计平台:辅助《严选-指标定义规范》和《严选-模型定义规范》的落地。


下图是依托网易易数 EasyDesign 实现的模型设计线上化产品界面。



衡量数仓建设水平可以通过以下 3 个指标:总 ods 表被跨层依赖率,被跨层依赖的 ods 表数量,有下游 ods 表被跨层依赖率三个指标来完成。




2.数据安全


每年有很多因数据导致的资损问题产生,我们从数据的上线流程、测试工具、测试环境等三个方面入手,让过程合规,结果合法。



3.数据稳定性


严选和网易易数共建的任务运维中心 EasyTaskOps,实现智能基线预警,多基线精细化运维;目前我们 4 条基线完成率超过 90%。


2020 年上半年,严选和网易易数共建了数据运维中心,上线了以下内容:


  • 基线管理:通过任务历史执行情况,自动判断基线内任务逾期可能性,进行破线预警。

  • 失败和逾期报警:对于失败和逾期的任务,可以配置电话、短信 or 邮件报警。

  • 评价指标:基线完成率、出错任务数、处理及时率等来评价任务的稳定性。


4.持续建设机制


迭代更新、持续建设,这是衡量一个数据仓库活力的一个重要机制,我们通过指标一致性项目,梳理了数仓持续建设机制,数据紧跟业务成长,数据仓库才会保持活力。



通过和网易易数一起推动 EasyCost 升级,通过梳理存储相关规则、规范相关规则、计算相关规则、质量相关规则,上半年一共下线 3.4w 张表,节约了 1.2PB 的存储。


5.数据开发质量


通过网易易数 EasyDesign 平台承接规范的落地,整个上半年数据开发通过平台新建 200+dw 层表,强有力的保障了规范的落地;我们的最终目标是通过各种方法策略来提高数据开发的素质,使用工具目的是帮助大家养成遵循规范的习惯。


6.数据开发效率


持续建设机制、数据规范的落地,最直接的反应就是数据开发效率的提升。严选全渠道数据基建项目中,交易域+商品域的离线+实时数据校验一次性通过,大大降低了数据开发的迭代修复成本。


作者简介


乙峰:多年数据领域工作经验,专注数据架构、模型设计和规范执行落地等。严选数仓交易域负责人,负责交易域模型设计落地和对外服务。


2020-09-13 20:175081

评论 2 条评论

发布
用户头像
请问能否详细讲下编码规范工具的大致功能?再请问一下,数仓测试过程使用了哪些工具提升效能?
2021-03-31 23:24
回复
用户头像
这样的成本高么?
2020-09-14 16:12
回复
没有更多了
发现更多内容

翻译:《实用的Python编程》08_01_Testing

codists

Python

微服务网关:Spring Cloud Gateway —— Zuul

程序员架构进阶

微服务 网关 28天写作 4月日更

Go1.16 中模块的新变化

Rayjun

Go 语言

区块链技术驱动商业银行开展供应链金融业务的创新路径

CECBC

《几何代数计算入门(计算机视觉)》

计算机与AI

计算机视觉 计算机图形学

Linux mkdir 命令

一个大红包

4月日更

一篇文章告诉你什么是EGG Network(阿凡提)以及什么是EFTalk

币圈那点事

你看起来很美味?独家揭露视频推荐系统AI秘方

白洞计划

Boss直聘转发超120W次Java全栈面试题!已帮我拿下5个Offer!

Java架构追梦

Java 面试 架构师 阿里巴巴面经总结

线上PHP服务故障排查之路

风翱

PHP-FPM 线上事故 4月日更

spring的IOC使用以及原理

邱学喆

spring ioc 对象创建 属性注入

「开源免费」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之动态表单设计器(五)

crudapi

Vue crud 动态表单 quasar cruapi

MapReduce优化

大数据技术指南

hadoop 4月日更

OpenHarmony 1.1.0 LTS 版本正式发布

开放原子开源基金会

开源 开放原子开源基金会 OpenHarmony

CI/CD之基于Jenkins的发布平台实践

小江

DevOps jenkins CI/CD 发布流程

Dubbo 学习笔记(一) Hello,Dubbo

U2647

dubbo 4月日更

浅论结构体与联合体

Integer

c

聊聊云厂商的指标监控组件

耳东@Erdong

Prometheus 4月日更 #Grafana

使用Composition API在Vue3中创建防抖搜索输入框

devpoint

vite Vue3 防抖

和老大的相爱相杀中,让我终于搞懂了函数式接口

麦洛

Java 函数式接口 Lambda java8

NA(Nirvana)Chain“以应用而生”如何强势突围

区块链第一资讯

读《非暴力沟通》

箭上有毒

读书笔记 4月日更

那束漂亮的手捧花

小天同学

爱情 4月日更 幸福 传递

如何引入TDD实践

顿晓

TDD 4月日更

使用FFmpeg开发的那些事

Bob

音视频 ffmpeg 开源文化

深圳龙华携手腾讯云 加快推进区块链先行试验区建设

CECBC

Redis 最后一课

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

如何从Telegram下载一整套可爱的猫猫表情包?

彭宏豪95

GitHub 效率 社交 4月日更

用OpenCV制作庆祝武汉重启一周年短视频

老猿Python

Python OpenCV 音视频 图形图像处理 引航计划

redis Redis缓存穿透解决方案

Sakura

4月日更

DEX领域第一个运用整合思维的DeFi协议 SumSwwap潜力巨大

币圈资讯

网易严选如何打造数仓规范和评价体系?_大数据_乙峰_InfoQ精选文章