『数据』马蜂窝数据中台起步建设:数仓的架构、模型与应用( 二 )


在此背景下 , 马蜂窝数据仓库采取了「以需求驱动为主、数据驱动为辅」的混合模型设计方式 , 来根据不同的数据层次选择模型 。 主要从以下四个方面综合考虑:
· 面向主题:采用范式模型理论中的主题划分方法对业务数据进行分类;
· 一致性保证:采用维度模型理论中的总线结构思想 , 建立统一的一致性维度表和一致性事实表来保证一致性;
· 数据质量保证:无论范式建模还是维度建模都非常重视数据质量问题 , 综合使用两个理论中的方法保证数据质量;
· 效率保证:合理采取维度退化、变化维、增加冗余等方法 , 保证数据的计算和查询效率 。
『数据』马蜂窝数据中台起步建设:数仓的架构、模型与应用
图片

其中 , ODS 选择保持贴源的范式模型 , 不做进一步模型抽象 , 只是从节省存储角度考虑 , 对该层采取拉链处理 。
DWD 与 DWS 基于对构建成本、性能 , 易用性角度的考虑 , 主要采取维度模型和一些宽表模型 。
宽表模型的本质是基于维度模型的扩展 , 对整个业务以及全节点信息进行垂直与水平方式整合;同时采用退化维度的方式 , 将不同维度的度量放入数据表的不同列中 , 实现业务全流程视图的构建 , 来提升宽表模型的易用性、查询效率 , 且易于模型的扩展 。
水平整合:水平整合就是将同一业务多数据源的数据整合到一个模型中 , 如果多数据源业务数据存在交集 , 则需要按照预设的业务规则选取一份保留 , 避免整合后的业务数据交叉 。
例如商品数据如果未进行主数据管理 , 不同业务线的商品信息就会散落在各业务系统表中 , 无法满足企业级的数据分析需求 , 这时就需要将这些商品数据按照业务主题进行水平整合 。
垂直整合:一次完整的业务流转通常要经历多个环节 , 各节点信息产生的时点不同、储存的数据表不同 。 垂直整合就是将同一业务中各关键节点信息整合至业务全流程宽表模型中 。 马蜂窝订单交易模型的构建就采用了这种方式 , 下文将进行详细介绍 。
2、设计目标
马蜂窝数据仓库在模型设计上以准确性、易用性、及时性为设计目标 , 以满足业务人员对数据的多样需求 。
· 准确性:数据质量管控要在建模过程中落地 , 为数据准确性保驾护航;
· 易用性:兼顾模型的可扩展性和可理解性;
· 及时性:充分考虑模型的使用效率 , 提供方便快捷的数据查询和数据计算服务 。
3、设计流程
马蜂窝数仓模型设计的整体流程涉及需求调研、模型设计、开发测试、模型上线四个主要环节 , 且规范设计了每个阶段的输出与输入文档 。
『数据』马蜂窝数据中台起步建设:数仓的架构、模型与应用
图片

需求调研:收集和理解业务方需求 , 就特定需求的口径达成统一 , 在对需求中涉及到的业务系统或系统模块所承担的功能进行梳理后进行表字段级分析 , 并对数据进行验证 , 确保现有数据能够支持业务需求 。
模型设计:根据需求和业务调研结果对模型进行初步归类 , 选择合适的主题域进行模型存放 。
确定主题后进入数据模型的设计阶段 , 逻辑模型设计过程要考虑总线结构构建、模型规范定义等关键问题 。
物理模型设计以逻辑模型为基础 , 兼顾存储性能等因素对逻辑模型做的物理化的过程 , 是逻辑模型的最终物理实现 。 物理模型在一般情况下与逻辑模型保持一致 , 模型设计完成后需要进入评审与 Mapping 设计 。
模型开发:就是对模型计算脚本的代码实现过程 , 其中包含了数据映射、脚本实现、测试验证等开发过程 。
单元测试完成后需要通知业务方一起对模型数据进行业务验证 , 对验证问题做收集 , 返回验证模型设计的合理性 。
模型上线:完成验证后的模型就可以在线上生产环境进行部署 。 上线后需要为模型配置监控 , 及时掌握为业务提供数据服务的状况 。


推荐阅读