无人能懂1.马蜂窝数据仓库和数据中心近年来,数据中心概念的热度不减。从2018年开始,马蜂窝也开始了自己的数据中心探索。究竟什么是数据中心?该不该建?与数据仓库的本质区别是什么?相信很多企业都在关注这些问题。我觉得数据中心的概念很接近于传统数据仓库+大数据平台的结合。正是在企业的数据建设经历了数据中心、数据仓库等的积累之后,借助平台思想,更好地整合和统一了数据。因此,数据中心更多的是管理思想和结构组织上的变化。考虑到这一点,我们根据自己的业务特点构建了马蜂窝的数据中台。核心架构如下:在中台建设之前,马蜂窝已经建立了自己的大数据平台,积累了一些通用化、组件化的工具。这些都可以支撑数据中心的快速建设。马蜂窝数据仓库作为中台的另一个核心部分,主要承担数据统一建设的工作,包括统一数据模型、统一索引体系等。下面介绍马蜂窝在数据仓库建设方面的具体做法。2.数据仓库核心架构马蜂窝数据仓库遵循标准的三层架构。数据层的定位主要采用维度模型设计,不抽象分散数据,更注重业务流程数据集成。现有的数据仓库主要是离线的。整体结构如下:如图所示,分为3层:业务数据层、公共数据层和应用数据层。每一层都有不同的定位、目标和建设原则。3数据模型设计3.1方法选择数据模型是对现实世界中数据特征的抽象,数据模型的设计方法是对数据进行归纳和概括的方法。目前业界主要有两种模型设计方法论。一是数据仓库之父BillInmon提出的范式建模方法,又称ER建模,提倡从企业的角度自顶向下的数据模型构建;另一个是RalphKimball大师提倡的维度建模方法,提倡根据业务需求自下而上地构建数据模型。大数据环境下,业务系统数据体系复杂,数据结构多样,变化频繁,需要快速响应各种复杂的业务需求。以上两种传统理论都不能满足互联网数据仓库的需要。在此背景下,马蜂窝数据仓库采用“需求驱动和数据驱动”的混合模型设计方法,根据不同的数据层次选择模型。3.2设计流程马蜂窝数据仓库模型设计的整体流程包括需求调研、模型设计、开发测试、模型上线四个主要环节,并对每个阶段的输出和输入文档进行标准化设计。3.3主题分类马蜂窝数据仓库基于现有部门和业务系统的梳理,设计了4个大数据域(交易、流量、内容、参与者),细分为11个主题:马蜂窝订单交易模型构建举例,基于业务生产总线的设计是一种常见的模式,即首先考察订单交易的完整流程,定位流程中的关键节点,确认每个节点上发生的核心事实信息。模型是数据的载体。我们需要做的是通过模型(或模型系统)汇总生产总线中各个节点的事实信息。订单生产总线:如上图所示,我们需要提取每个节点的核心信息。为了避免遗漏关键信息,一般抽象地认为节点的参与者、发生时间、事件发生、协议发生等都属于节点的核心信息,需要专注获得。下面以单个节点为例。参与者包括订单用户、服务商户、平台运营商等;发生时间包括用户下单时间、商户确认时间等;事件产生的相关信息;协议发生时产生的订单、订单金额、约定内容等均为我们需要记录的协议信息。在这种思路下,总线架构可以不断地在模型中加入各个节点的核心信息,从而使模型所支持的应用范围逐渐扩大,日趋完善。因此,对业务流程的理解程度将直接影响输出模型的质量。针对以上情况,在模型实现的过程中,我们不能将各个节点不同粒度的数据信息进行堆砌,这样会产生大量的冗余信息,也会使得模型本身的定位不清晰,影响使用。因此,需要输出不同粒度的模型以满足各种应用需求。比如,既会有订单粒度的数据模型,也会有分析每个订单在不同时间节点的状态信息的数据模型。基于维度建模的思想,模型在整合了生产总线各个节点的核心信息后,会根据这些节点的信息进一步扩展常用的分析维度,从而减少造成的资源消耗通过在应用程序级别频繁关联相关分析维度,模型将是反范式冗余的。相关维度信息用于获取应用层的便利。最终建立了融合旅游、交通、酒店等业务条线和业务节点信息的马蜂窝全流程订单模型。4、数据仓库工具链建设为了提高数据生产力,马蜂窝数据仓库建立了一套工具链,实现采集、研发、管理流程的自动化。现阶段比较重要的有以下三个工具:1.数据同步工具同步工具主要解决两个问题:将数据从源系统同步到数据仓库和从数据仓库同步数据到其他环境。下面重点介绍从源系统向数据仓库同步数据。数据库。马蜂窝的数据同步设计支持灵活的数据访问方式,您可以选择提取方式和处理方式。抽取方式主要包括增量抽取或全量抽取,处理方式为面向数据的存储方式,要求数据以拉链或日志的形式存储。接入时,只需填写数据表信息配置和具体字段配置信息,数据即可自动连接到数据仓库,形成数据仓库的ODS层数据模型,如下:2.我们使用Airflow配合自研任务调度平台任务调度系统不仅可以支持常规任务调度,还可以支持任务调度系统的各种数据重跑和历史补全。不要小看数据重跑和历史补足。这两个功能是选择调度工具的重要参考项。接触过数据的人都知道,在实际的数据处理过程中,会出现很多数据口径变化、数据异常等情况,需要对数据进行重跑、刷新、补码等操作。我们设计的“一键重跑”功能,可以带出相关任务所依赖的所有后置任务,并支持在任意节点上选择性删除或虚拟执行任务:如果选择删除,则taskdependsonlater不要执行。如果选择虚拟执行,该任务将被忽略(空运行),所有后续依赖任务仍将正常执行。以下是基于某个任务重新运行下游列出的所有任务的关系图。选择特定的执行节点以忽略或删除它。3.元数据管理工具元数据的范畴包括技术元数据、业务元数据和管理元数据,概念不再过多阐述。元数据管理在数据构建中起着举足轻重的作用。这部分在数据仓库应用中有两个要点:(1)血缘管理血缘管理可以追踪数据处理的整体链路,分析表的来龙去脉,用于支持各种场景,例如:支持分析和调整上游变化对下游的影响,监控各节点和各环节任务的运行成本,监控效率监控数据模型的依赖数量,确认哪些关键模型如下。下游以不同颜色呈现:(2)数据知识管理通过对技术和业务元数据的清晰、详细的描述形成数据知识,为数据人员提供更好的使用指导。我们的数据知识主要包括实体描述和属性描述,如下:5.总结一个企业的数据建设需要经过几大步骤:第一步,业务数据:顾名思义,所有的业务都可以通过数据来体现,主要指最重要的是把传统的线下流程线上化;第二步是数据智能:光有数据是不够的,还需要足够的智能,如何用智能数据来支撑运营、营销和各种业务,这是数据台目前主要解决的问题;第三步是数据商业化:也就是我们常说的数据驱动商业。数据不能只是数据。数据价值的最大化在于驱动新业务创新,驱动企业成长。目前大部分公司都停留在第二阶段,因为这一步需要足够扎实才能为第三步打下坚实的基础,这也是为什么各大公司要在大数据平台、数据仓库上投入大量资金的原因甚至数据。该平台正在建设中。马蜂窝数据中心的建设才刚刚开始。我们认为,一个理想的数据中心需要具备三个核心前提:数据标准化、工具组件化、组织清晰。为了朝着这个目标迈进,我们将建立统一、标准化的数据仓库作为当前数据中心的重点工作之一。数据来源于业务,最终会应用到业务中。只有对数据足够重视,与业务充分对接,才能最大限度地发挥数据的价值。在马蜂窝,从管理层,到公司的研发、产品、运营、销售等各个角色,都非常重视数据,数据产品的用户数量占公司员工的比例高达75%。大量用户的使用驱使我们在数据中心建设的道路上不断前行。如何将新兴的技术能力应用到数仓建设中,如何以有限的成本高效解决企业在数据建设中面临的难题,将是马蜂窝数仓建设始终不变的思考。
