本文已参与「新人创作礼」活动,一起开启掘金创作之路。
读书笔记《大数据分析:数据仓库项目实战》。 本文介绍数据仓库的相关概念,包括:数据仓库的概念、数据仓库建模(表的分类、逻辑分层)、技术选型和架构选型、数据集市。
大数据和数据仓库概论
大数据概论
- 数据采集层:多数据源,非结构化数据采集
- 数据计算层:分为离线数据计算和实时数据计算
- 数据应用层:最终提供给用户使用
数据仓库概论
数据仓库(Data Warehouse,DW):为企业所有级别的决策制度过程,提供数据资源集合,出于分析性报告和决策支持目的而创建。是未面向分析的集成化数据环境。
数据仓库的特点:
- 数据是面向主题的:具有更高的数据抽象级别
- 数据是集成的:数据源于不同的联机系统,进入仓库前必须经过统一和综合
- 数据是不可更新的
- 数据是随时间不断变化的
数据仓库建模
范式理论
使用范式的根本目的包括:
- 减少数据冗余,尽量让每个数据只出现一次
- 保证数据的一致性
联机事务处理(On-Line Transaction Processing,OLTP):传统关系数据库的主要应用,保证数据的一致性及避免冗余。 联机分析处理(On-Line Analytical Processing,OLAP):数据仓库系统主要应用,通常以某一张事实表为中心进行表的组织,面向业务,可能存在数据的冗余,通常采用维度模型建模。
维度模型:包括星型模型、雪花模型、星座模型
表的分类
事实表:每行数据代表一个业务事件。"事实"这个术语表示的是业务事件的度量值。如:订单金额
事实表分类:
- 事务型事实表(每个事务或事件产生一行数据)
- 周期型快照事实表(保留固定时间间隔的数据)
- 累积型快照事实表(用于跟踪业务事实的变化)
维度表:指对业务状态编码的解释表,又称为码表。如:订单状态表、商品分类
逻辑分层
分层:
- ODS(原始数据层,Operational Data Store):加载原始日志
- DWD(明细数据层,Data Warehouse Detail ):结构和粒度与ODS保持一致,对数据进行清洗、维度退化、脱敏、数据压缩等(仅关注事实表的相关维度及度量值字段)
- DWS(服务数据层,Data Warehouse Service ):宽表化手段构建公共指标数据,不同的主题按天进行轻度汇总
- DWT(主题数据层,Data Warehouse Topic):按主题进行汇总,获得每个主题的全量数据表
- ADS(应用数据层,Application Data Store):面向实际的数据需求,为各统计报表提供数据
好处:
- 【易维护】高效的数据组织形式,清洗和过滤,规范化,血缘追踪
- 【高性能】时间价值,数据集合,维度汇总,查询效率
- 【简单化】集成价值,多维度数据整合,多角度多层次的数据分析
- 【历史性】历史数据,回溯历史,预测未来
DWD构建维度模型的四个步骤:
- 选择业务过程:一条业务线对应一张事实表。如:下单业务,支付业务
- 声明粒度:精确定义事实表中一行数据所表示的内容,尽可能选择最细粒度
- 确定维度:主要作用是描述业务事实,表示的是"谁、何处、何时"等信息。如时间维度,用户维度
- 确定事实:指的是业务中的度量值,如订单件数,订单金额等
得出业务总线矩阵:将维度表进行退化,地区表和省份表退化为地区维度表,商品类目退化为商品维度表等
DWS、DWT层都是按照主题来创建宽表的,而主题相当于观察问题的角度,不同的维度表意味着不同的角度。
DWS层用于统计各主题对象的当天行为,服务于DWT层的主题宽表,宽表字段是站在不同维度的视角去看事实表的,重点关注事实表的度量值。
DWT层以分析的主题对象为建模驱动,基于上层应用和产品指标需求,构建主题对象的全量宽表。
ADS层分别对不同的主题进行指标分析。
技术选型和架构选型
技术选型: 数据采集与传输:Flume、Kafka、Sqoop 数据存储:MySQL、HDFS 数据计算:Hive、Tez 任务调度:Azkaban 即席查询:Presto、Druid、Kylin 元数据管理:Atlas
框架选型: Apache:可以自由定制所需功能组件,运维过程烦琐,组件间的兼容性需要自己调研 CDH:国内使用较多,不开源,不用担心组件兼容问题 HDP:开源,但没有CDH稳定,使用较少
数据集市
数据集市本质上是一个数据交易市场,就像宜家楼上的展厅,这是一个面向最终用户的数据市场。数据(家具)以一种更加容易被业务人员接受的方式组合在一起。 数据集市提供数据交易服务的最终实现,为用户提供各种数据服务支持。
特征:
- 有特定的应用主题
- 业务部门管理和维护
- 聚焦具体领域,要满足低延迟,高并发的数据查询要求