离线数仓应用架构

小节一:数仓介绍

小节二:离线数仓应用应用架构

本小结介绍下离线数仓的一个应用架构

一个简单的离线数仓架构图如下

这里粗粒度的划分了异构数据源、数据传输、数据仓库、应用分析、及整体管理几层。

其中源数据主要指的数仓的数据来源,有数据库数据、文件类型数据、还有接口等http传输的数据。数据库数据大多都是业务的数据,例如mysql、oracle等;文件类型大多是日志数据、离线csv等格式化数据;http传输主要为接口服务提供的数据、应用直接上报的数据等等。

数据传输指的数据采集源端数据之后先放入传输层进行短期存储,再对传输层的统一格式数据进行统一的数据数据,例如脱敏、字段类型校验、非法数据过滤等等。注意该层不是必须的,我们完全可以直接将异构数据同步到数仓再进行类似操作,这里只是提供一种更容易统一管理的思路。

数据仓库即是我们的核心部分,这里也简单列出了贴源层、仓库层、集市层三部分,根据每个企业的需求复杂度可以拆分出更多细粒度的分层,例如DW可以拆分为DWD(明细层)、DWM(轻度汇总层)、DWS(业务宽表层)等。分层的根本目的是方便对复杂的业务需求进行规范的建模分析,以此达到职责划分清晰、模型复用、易于扩展、方便维护等目的,所以要结合需求适度分层。离线数仓我们通常使用一个集成化的分布式关系型数据库进行管理,当然有的时候也将集市层单独存放到加速分析的内存数据库中或者仓库层使用的数据库查询时间较慢例如hive,也会单独将计算好的集市数据放到单独的关系型数据库中存放用以分析。有的时候数据仓库的数据模型在DW层和DM层都存在也很大程度是因为两层之间存储分离,另一种原因是集市的分析字段范围更小。

应用分析通常基于集市数据,一般数仓以接口形式提供业务应用查询、以BI形式提供分析人员分析、以大屏方式、报表方式提供管理人员的分析订阅。

最后讲下另一重点--垂直的管理层,这层贯穿数仓分层从上游到下游。这里简单讲下管理层的几个重要的点。

数据采集,往往需要数据埋点上报、数据同步、数据变更动作捕获技术等。埋点是造价最高获得数据质量最好的方式。数据同步一般基于业务时间字段进行全量或增量的定时同步,这种方式对业务数据库的时间字段质量要求高,如果业务没有时间字段还会侵入业务表增加字段以支持拉取。同时业务表如果存在物理删除这种方式是无法同步到完整的数据,而且同步业务数据会对业务库有一定性能损耗。数据变更动作捕获(CDC)则不侵入业务系统基于数据库的日志使用组件伪装从库订阅日志变化达到同步数据的效果,这种方式侵入小、不需要业务部门额外支持、能获取到完整的增量数据、开发成本相较于埋点也低的多。

ETL即抽取、转换、加载,在数仓中我们将数据从业务系统抽取到数据仓库,根据分析需求将业务字段转换为分析字段,将业务表模型转换为分析模型,然后将结果数据加载到结果模型或系统中。这个流程从ODS开始,在每个分层之间都会有同样的操作。ETL有商业工具、也有开源工具,同时也可以通过python脚本、shell脚本的语言进行处理,商业软件体验最好、开源工具需要灵活组合使用。

任务调度,因为这里介绍的是离线数仓,所以整个数据处理都是一个个批处理。一般离线数仓的数据延迟为T+1,即今天最新能看到昨天的数据。所以我们需要调度工具每天定时执行增量ETL脚本维护每天新增的数据。调度工具开源系统发展的就比较多了,基本满足大多企业的需求。

元数据管理也是数仓健康发展的重点,元数据主要管理数仓的元数据,包括不限于库表模型、定时任务、etl脚本、分析模型等等。管理系统通过数据元数据信息,做血缘分析、生命周期管理、元数据详情管理、运行情况、分析人员及管理人员的范围管理等等。这方面可以支持企业使用的开源工具很少,商用软件居多。

总结,本小结主要讲解了一个基础的数仓应用架构,概述了各个分层及重点模块的作用,后续我会将每个模块进行拆解并详细讲解下,同时也推荐部分开源工具给大家。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值