CSDN|一文带你认清数据仓库“维度模型设计”与“分层架构” | 原力计划( 二 )

  • 业务库
经常会使用sqoop来抽取 , 比如我们每天定时抽取一次 。 在实时方面 , 可以考虑用canal监听mysql的binlog , 实时接入即可 。
  • 埋点日志
线上系统会打入各种日志 , 这些日志一般以文件的形式保存 , 我们可以选择用flume定时抽取 , 也可以用用spark streaming或者Flink来实时接入 , 当然 , kafka也会是一个关键的角色 。
  • 消息队列
来自ActiveMQ、Kafka的数据等 。数据仓库层(DW)Datawarehouse(数据仓库) 。 在这里 , 从ODS层中获得的数据按照主题建立各种数据模型 。 例如以研究人的旅游消费为主题的数据集中 , 便可以结合航空公司的登机出行信息 , 以及银联系统的刷卡记录 , 进行结合分析 , 产生数据集 。 在这里 , 我们需要了解四个概念:维(dimension)、事实(Fact)、指标(Index)和粒度( Granularity) 。DW数据分层 , 由下到上为 DWD,DWB,DWS:
  • DWD:data warehouse detail细节数据层 , 是业务层与数据仓库的隔离层 。
  • DWB:data warehouse base 基础数据层 , 存储的是客观数据 , 一般用作中间层 , 可以认为是大量指标的数据层 。
  • DWS:data warehouseservice 服务数据层 , 基于DWB上的基础数据 , 整合汇总成分析某一个主题域的服务数据 , 一般是宽表 。
数据服务层/应用层(ADS):ApplicationData Service(应用数据服务) 。 该层主要是提供数据产品和数据分析使用的数据 , 一般会存放在ES、MySQL等系统中供线上系统使用 。例如:我们经常说的报表数据 , 或者说那种大宽表 , 一般就放在这里 。下面为大家介绍一下阿里巴巴的数据仓库分层架构:3. 阿里巴巴数据仓库分层架构【CSDN|一文带你认清数据仓库“维度模型设计”与“分层架构” | 原力计划】 CSDN|一文带你认清数据仓库“维度模型设计”与“分层架构” | 原力计划
本文插图
(1)ODS 数据准备层功能:ODS层是数据仓库准备区 , 为DWD层提供基础原始数据 , 可减少对业务系统的影响 。建模方式及原则:从业务系统增量抽取、保留时间由业务需求决定、可分表进行周期存储、数据不做清洗转换与业务系统数据模型保持一致、按主题逻辑划分 。(2)DWD 数据明细层功能:为DW层提供来源明细数据 , 提供业务系统细节数据的长期沉淀 , 为未来分析类需求的扩展提供历史数据支撑 。建模方式及原则:数据模型与ODS层一致 , 不做清洗转换处理 , 为支持数据重跑可额外增加数据业务日期字段、可按年月日进行分表、用增量ODS层数据和前一天DWD相关表进行merge处理 。(3)DW(B/S) 数据汇总层功能:为DW、ST层提供细粒度数据 , 细化成DWB和DWS;
  • DWB是根据DWD明细数据进行转换 , 如维度转代理键、身份证清洗、会员注册来源清晰、字段合并、空值处理、脏数据处理、IP清晰转换、账号余额清洗、资金来源清洗等;
  • DWS是根据DWB层数据按各个维度ID进行高粒度汇总聚合 , 如按交易来源 , 交易类型进行汇合 。
建模方式及原则:
  • 聚合、汇总增加派生事实;
  • 关联其它主题的事实表 , DW层可能会跨主题域;
  • DWB保持低粒度汇总加工数据 , DWS保持高粒度汇总数据;
  • 数据模型可能采用反范式设计 , 合并信息等 。
(4)DataMarket(数据集市)层功能:建模方式及原则:
  • 尽量减少数据访问时计算(优化检索)
  • 维度建模 , 星型模型
  • 事实拉宽 , 度量预先计算
  • 分表存储
(5)ST 数据应用层(ADS层)功能: