数仓开发平台
1.背景
数据仓库是存储各种数据的仓库,形同于现实当中存储货物的仓库,不可避免的存在“乱放”、“不方便存取”、“浪费空间”等情况。在数仓开发的过程当中,发现只有规范的存在是不能完全的避免数仓混乱、质量不高等问题。有些情况可能是因为数仓开发人员规范不统一、认知不统一、需求效率与质量平衡等因素影响。那么当前的数据仓库都存在哪些问题呢,大致如下:
- 代码不规范
- 命名不统一
- 代码版本迭代管理混乱
- 重复开发
- 跨层依赖
- 指标没有准确的定义
- 没有完整的表、指标血缘链路
- 查找数据困难
- 调度编排不合理
- 存储与计算资源浪费
- 模型设计不合理
- 数据与模型质量监控不完善
- 上下游数据感知滞后
- 维护成本高
- 元数据不统一
为了解决上述的这些问题,我们采用了平台化的方式来统一生产工具,把数仓开发的各个环节的规范做了线上的规范与统一,在保证数仓开发效率的基础上,同时做到老数仓体系的快速迁移。整体目标如下:
- 数仓开发规范线上化
- 指标、元信息、建模、物理表 各端元信息统一
- 调度自动优化闭环
- 无SQL化数仓建设
- 数仓地图
- 数仓表质量监控
- 批流一体化
- 老数仓快速迁移
- 数据治理
2.数仓规范线上化
常规数仓开发流程:
- 数据调研
- 数据域划分
- 明确统计指标
- 构建总线矩阵
- 规范定义
- 明确模型设计
- 汇总模型设计
- 代码开发
- 部署运维
数仓开发线上化流程
- 数据域管理
- 总线矩阵管理
- 模型建设: 维度 指标 分区字段 其他
- 建模规范校验
- 审批上线
系统整体尽可能把非业务相关的规范、调度、代码、资源管理做到尽可能的系统托管,开发人员可以不需要关心这部分内容,缩减开发流程,只需要专注到业务模型建设当中。并且由于规范的线上化、审批、数据质量监控等方面的功能,天然的帮助开发人员提升了数据质量与开发效率。
3.系统功能设计
整体系统功能模块划分大致如上图所示,功能说明如下:
- 字典元信息管理:该部分主要是对一些系统的字典信息、业务库字典信息等相关内容的管理,包括项目空间、业务域、总线矩阵、业务字典信息、数仓分层信息等基本信息的维护;
- 维度建模管理:这个部分是该系统的核心功能模块,需要通过sql图形化编辑的方式,对新老数仓模型进行可视化建设,同事维护了改模型的各种分层信息、业务域、维度、指标、分区字段等各类元信息。在审批通过之后系统后端功能自动创建表与维护表元信息,并根据建模逻辑自动编排任务与调度,自动化最优的执行项目空间下的有向无环图调度流程;
- 作业调度管理:根据维度建模生成的作业任务,对相关任务进行最优情况下调度安排,并且监控任务运行情况。该部分要满足高可用,分布式,可扩展等特性;并且可以支持多种计算与存储引擎选择。
- 模型与数据质量监控:这部分主要是对模型的质量进行汇总,大致分为资源型监控、价值型监控、数据内容监控三个方面,并且在该功能模块下支持模型资源管理,分区保留时间,冷热数据管理等数据治理等功能;
- 表与指标血缘地图:在系统的管理下各类模型的元信息比较全面和规范,在这个基础之上我们就可以分层追踪表、指标的血缘逻辑关系,并且可以通过图形化、文字化的方式表达指标业务口径逻辑。之前尝试过各种前置指标字典管理,效果并不理想,开发和业务人员维护成本都比较大,所以这次采用了反向追踪解析的方式通过实际模型来表达展示指标口径问题。在出现指标问题的时候也可以快速的找到指标逻辑,提升问题排查效率;
- 自助分析功能:该模块主要是支持各种模型下的业务BI分析的任务,通过图形化的方式展示模型分析数据,可扩展功能生成各类BI看板,也可以直接对接到其他BI平台使用;
- 数据探查功能:主要是完成上下游表的元信息监测工作,发生表字段等变更的情况,自动判断对下游影响大小,根据情况自动通知下游相关表负责人,避免业务方改动未及时通知所造成的数据问题。提前发现问题尽快解决问题,降低各种改动对数据的影响。
4.系统架构设计
系统架构设计关键点:
-
数仓与存储:以hive数仓为基础,在此基础上可以扩展数据至kylin或者clickhouse,以供上层自助BI分析查询使用,提升查询分析效率,提升用户体验;
-
SQL解析模块:这个功能十分重要,需要完美的解析老的数仓SQL进行图形化展示与迁移维护、并且需要高效的UI页面设计来表达模型SQL逻辑,从可视化、逻辑表达上都有更高的要求;
-
任务调度:是保证模型每天能够稳定产出的关键模块,调度系统可以使用开源调度系统,进行二次开发来对接开发平台的任务生成与调度管理监控;
-
自助分析模块:基于模型开发元数据,生成各类数据集,对接one-service进行数据查询与展示。基础功能如下图,可以进行各种展示形式的开发与丰富,以适应各种分析场景;
-
模型与数据监控治理:这个是很重要的一个环节,往常的情况是你开发了一个模型也就你的业务在引用,从模型价值与资源、数据情况上有没有相应的统计,没有一个合理的指标来监控表达一个模型的质量,所以对于模型要从资源型监控、价值型监控、数据内容上做到完整的监控与定期的评估,合理抽象优化数仓各层模型表。在此基础上提供数据治理的各种功能,降低资源的消耗,提升数仓模型质量,达到高复用的情况;
-
数据探查:主要结合业务库mysql-cdc的数据与数仓模型的上下游表信息来实时监控,上游表字段改动对下游的影响,及时的发现与提醒下游用户,用来避免数据问题,保证数据质量与稳定。
5.总结
大数据基于数据这个方向基本分三个:1、大数据平台 2、数据仓库 3、数据中台产品。数据仓库是一个企业数据进行数据化决策一个最重要的基石,一个高质量的数据仓库会极大的提升数据使用的效率,助力业务进行商业分析与业务决策,降低业务不确定性,从而产生业务价值。有了高质量、模型合理、结构清晰的数据仓库可以大大降低各种使用成本,在此基础上也能更好的构建出好的中台产品。
数据中台产品:大致可以分成3类,1、大数据平台的运维产品 2、面向开发提效的中台产品 3、面向业务使用的中台产品,数仓开发平台就是面向开发提效提质的一个中台产品,用平台的方式打造出一个高质量的数据仓库,这个是一个长期有价值的事情,是一个公司数据基建中的基石与根基。