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