文|熊蜂技术小组
一、马蜂窝数据仓库和数据中心
近几年来,数据中心概念的热情未减。 从2018年开始,马塞尔也开始探索自己的数据中心。
什么是数据中心建设?与数据仓库的本质区别是什么? 我相信很多企业都关注这些问题。
我认为数据中心的概念与传统数据仓库和大型数据平台的结合非常接近。 企业的数据建设经历了数据中心、数据仓库等的积累后,根据平台化的思路,更好地整合统一数据。
因此,更多的数据体现了管理思路和体系结构组织的变革。 在这种思想下,我们结合自己的业务特点,建立了马巢数据中心。 核心框架如下:
在中台建设之前,马蜂窝已经建立了自己的大型数据平台,积累了通用的、组件化的工具,这些都能够支持数据中台的迅速建设。 作为中台的另一个核心部分,多元数据仓库主要负责数据统一化建设工作,包括统一数据模型、统一指标体系等。 其次介绍马蜂窝在数据仓库建设中的具体实践。
二、数据仓库核心架构
多元数据仓库符合标准的三层结构,数据层次定位主要采用二维模型设计,重视业务流程的数据整合,而不是抽象分解处理数据。 现有的数库主要以离线为主,总体框架如下
如图所示,分为业务数据层、公共数据层和应用数据层3层,各层的定位、目标、建设原则各不相同。
三、数据模型设计
3.1方法选择
数据模型是对现实世界数据特征的抽象化,数据模型的设计方法是总结数据的方法。 目前,行业主要的模型设计方法有两种,一种是数据仓库父Bill Inmon提出的范例建模方法,又称ER建模,主张从企业的角度自上而下地进行数据建模。 二是Ralph Kimball主体提出的维度建模方法,主张从业务需求自下而上地构建数据模型。
在大型数据环境中,业务系统的数据体系复杂,数据结构多样,变更频繁,需要迅速适应复杂的业务需求,以上两种传统理论已经不能满足网络数量仓库的需要。
在此背景下,马蜂数据仓库采用“需求驱动型、数据驱动型”混合模型设计方式,根据不同的数据水平选择了模型。
3.2设计过程
马蜂窝数仓模型设计的总体流程涉及需求调查、模型设计、开发测试、模型在线四个主要环节,规范性地设计了各阶段的输出和输入文档。
3.3主题分类
根据当前各部门和业务系统的整理,多元数据仓库共设计了4个大型数据域(交易、流量、内容、参与者),细分为11个主题
以马蜂窝订单交易模型建设为例,根据业务生产总线的设计,首先调查订单交易的完整过程,定位过程中的关键节点,确认各节点发生的核心事实信息。 模型是数据的载体,我们必须通过模型(或模型体系)总结生产总线各节点发生的事实信息。
订单生产总线:
如以上的图所示,需要提取各节点的核心信息,为了不丢失重要的信息,一般将节点的参加者、发生时间、发生事件、发生协议抽象地考虑为节点的核心信息,因此需要重点取得。 以下的单节点为例,参加者在包含订货者、服务业者、平台运营者等的发生时间中,包含用户的订货时间、业者的确认时间等。对于发生的事件,在发生了需要记录关于用户购入商品的事件的信息的合同时发生的订货,记录订货金额、约定内容等
在这种观点下,总线架构不断向模型中添加各节点的核心信息,逐步扩大和完善模型支持的应用范围。 因此,业务流程的理解度直接影响生产模型的质量。
由此可见,在模型的实现过程中,我们不能积累各节点粒度不同的数据信息。 这样会产生大量冗馀信息,模型本身的定位不明确,影响使用。
因此,为了满足各种应用需求,需要输出不同粒度的模型。 例如,存在订单粒度的数据模型,以及分析各订单在不同时间节点的状态信息的数据模型。
基于维度建模理念,模型在整合生产总线中每个节点的核心资讯后,根据这些节点资讯进一步扩充常用的分析维度,以减少应用层次的频繁相关分析维度资源消耗,而模型则反过来冗馀相关维度资讯,以便于应用层次的使用 最终建立了集旅游、交通、酒店等各业务线和各业务节点信息于一体的熊蜂全过程订货模型。
四、数据仓库工具链的建设
为了提高数据的生产效率,多小区数据仓库建立了一系列实现收集、研发、管理流程自动化的工具链。 现阶段关键的有三个工具:
1 .数据同步工具
同步工具解决了两个问题:将数据从源系统同步到数据仓库,以及将数据从数据仓库同步到其他环境
下面介绍将数据从源系统同步到数据仓库。
马蜂窝的数据同步设计支持灵活的数据访问方式,可以选择提取方式和加工方式。 提取方式主要包括增量提取和全量提取,加工方式面向数据的存储方式,需要将数据以拉链方式保存,或者以流水记录方式存储。
在存取时,只要输入数据表的信息结构和具体的字段结构信息,数据就能自动存取数据仓库,形成数据仓库的ODS层数据模型。
0
2 .任务调度平台
使用Airflow和自研的任务调度系统,不仅可以满足通常的任务调度系统,还可以满足任务调度系统的各种数据的播放、历史记录的补数等需求。
不要重新跑过数据,忽视历史记录的补数。 这两项功能是选择调度工具的重要参考。 制作数据的人知道,在实际的数据处理过程中,面对着很多数据口径的变化、数据异常等,有必要进行数据的再跑、刷新、补数等操作。
Dell设计的「快速重新执行」功能,能够携带相关工作所依赖的所有后续工作,并支援选择性删除或虚拟执行任何节点的工作。 如果选择“删除”( delete ),则不执行此任务之后依赖的任务。 如果选择虚拟运行,则忽略此任务,所有后续相关任务都将成功运行。
根据任务重新执行所有下游任务的关系图,通过选择特定的执行节点,可以执行忽略或删除操作。
3 .元数据管理工具
元数据的范畴包括技术元数据、业务元数据和管理元数据,在概念上没有太多讨论。 元数据管理在数据建设中起着重要作用,这一部分在数仓应用中主要有两点
(一)血缘管理;
血缘管理可以追溯数据加工整体的链接,解析表的经过,支持各种场景。 例如,支持分析和协调上游更改对下游的影响,监视每个节点、每个链路的任务执行成本,有效监视数据模型的依赖关系,确定哪个模型是重点模型。
某一数据模型的血流图如下所示。 上下游用不同的颜色表现
(2)数据知识管理
通过清楚并详细地描述技术、商业元数据,形成数据知识并且向数据员工提供更好的使用指南。 我们的数据知识主要包括实体说明和属性说明。 具体如下:
五、总结
企业数据建设需要经历一些大步骤:第一步,业务数据化:如名字所示,所有业务都反映在数据中,主要意味着使传统的在线流程在线化;第二步,数据智能化:仅仅是数据不行,需要足够的智能, 如何以智能数据来运营、营销和支持各种业务,是数据中心目前正在解决的主要问题——第三步,数据业务化:我们常说的数据推动业务,不仅是数据,最大化数据价值也是新的业务
目前,大部分企业目前还处于第二阶段。 因为这个阶段必须牢固第三阶段的基础。 这是因为每个大型企业都必须为大型数据平台、数据仓库和数据中心的建设投入巨大的成本。
熊蜂的数据中心建设才刚刚开始。 我们认为,理想的数据中心需要三个主要假设:数据标准化、工具组件化和组织清晰化。 为了向这个目标前进,我们建立了统一、标准化的数据仓库作为当前数据中心的重点工作之一。
数据来源于商业,最终也适用于商业。 充分重视数据,充分配合业务,才能实现数据价值的最大化。 马塞尔从管理层到公司的研发、产品、运营、销售等各个角色,都非常重视数据,数据产品的使用人数在公司员工中所占的比例达到了75%。
大量用户的使用推进了我们在数据中建设的道路。 我们一直在思考如何将新技术能力应用于数据仓库建设,以有限的成本高效地解决企业在数据建设中遇到的问题。