Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践( 三 )


Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践
文章图片
以马蜂窝订单交易模型的建设为例 , 基于业务生产总线的设计是常见的模式 , 即首先调研订单交易的完整过程 , 定位过程中的关键节点 , 确认各节点上发生的核心事实信息 。 模型是数据的载体 , 我们要做的就是通过模型(或者说模型体系)归纳生产总线中各个节点发生的事实信息 。
订单生产总线:
Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践
文章图片
如上图所示 , 我们需要提炼各节点的核心信息 , 为了避免遗漏关键信息 , 一般情况下抽象认为节点的参与人、发生时间、发生事件、发生协议属于节点的核心信息 , 需要重点获取 。 以下单节点为例 , 参与人包括下单用户、服务商家、平台运营人员等;发生时间包括用户的下单时间、商家的确认时间等;发生的事件即用户购买了商品 , 需要记录围绕这一事件产生的相关信息;发生协议即产生的订单 , 订单金额、约定内容等都是我们需要记录的协议信息 。
在这样的思路下 , 总线架构可以在模型中不断添加各个节点的核心信息 , 使模型支撑的应用范围逐步扩展、趋于完善 。 因此 , 对业务流程的理解程度将直接影响产出模型的质量 。
涉及的业务节点越多 , 业务流程也就越复杂 。 从数据的角度看 , 这些业务过程会产生两种基本的场景形态 , 即数据的拆分和汇聚 。 随着流程的推进 , 前一节点的原子业务单位在新节点中可能需要拆分出更多信息 , 或者参与到新节点的多向流程 。 同样 , 也可能发生数据的汇聚 。 以某个订单为例 , 下单节点数据是订单粒度的 , 而到支付节点就发生了数据拆分 。 数据的拆分、汇聚伴随着总线的各节点 , 可能会一直发散下去 。
Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践
文章图片
鉴于上述情况 , 在模型实现过程中 , 我们不能把各节点不同粒度的数据信息都堆砌在一起 , 那样会产生大量的冗余信息 , 也会使模型本身的定位不清晰 , 影响使用 。 因此 , 需要输出不同粒度的模型来满足各类应用需求 。 例如既会存在订单粒度的数据模型 , 也会存在分析各个订单在不同时间节点状态信息的数据模型 。
Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践
文章图片
Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践
文章图片
基于维度建模的思路 , 在模型整合生产总线各节点核心信息之后 , 会根据这些节点信息进一步扩展常用的分析维度 , 以减少应用层面频繁关联相关分析维度带来的资源消耗 , 模型会反范式冗余相关维度信息 , 以获取应用层的使用便捷 。 最终建立一个整合旅游、交通、酒店等各业务线与各业务节点信息的马蜂窝全流程订单模型 。
Part.4
数据仓库工具链建设
为提升数据生产力 , 马蜂窝数据仓库建立了一套工具链 , 来实现采集、研发、管理流程的自动化 。 现阶段比较重要的有以下三大工具:
1.数据同步工具
同步工具主要解决两个问题:从源系统同步数据到数据仓库将数据仓库的数据同步至其他环境
下面重点介绍从源系统同步数据到数据仓库 。
马蜂窝的数据同步设计支撑灵活的数据接入方式 , 可以选择抽取方式以及加工方式 。 抽取方式主要包括增量抽取或者全量抽取 , 加工方式面向数据的存储方式 , 是需要对数据进行拉链式保存 , 或者以流水日志的方式进行存储 。
接入时 , 只需要填写数据表信息配置 , 以及具体的字段配置信息 , 数据就可以自动接入到数据仓库 , 形成数仓的ODS层数据模型 , 如下:
Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践


推荐阅读