数仓概念
数据仓库(Data Warehouse)是为企业所有部门决策制定过程,提供所有系统数据支持的数据集合。与数据仓库相类似的集合叫数据集市(Data Mart),它是满足特定部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。
数据仓库并不是数据的最终目的地,而是为数据最终目的地做好准备。准备包括对数据的:清洗、转义、分类、重组、合并、拆分、统计等。
数仓从模型层面分为三层:
ODS,操作数据层,保存原始数据;
DWD,数据仓库明细层,根据主题定义好事实与维度表,保存最细粒度的事实数据;
DM,数据集市/轻度汇总层,在 DWD 层的基础之上根据不同的业务需求做轻度汇总;
离线数仓,一般地,(业务、日志)数据存储在 HDFS 上,一般分这几层:ods/dwd/dws/dm,其中 dm 层的数据会导出到 olap、rds、kv 数据库中供业务方使用。ad-hoc 查询的数据来源一般来自 ods 层或 dw 层,ad-hoc 的查询引擎为 hive/spark/presto。
实时数仓,也是基于分层的模型 ods/dwd/dws/,业务数据和日志数据,事实数据存储在 kafka 中,维度数据存储在 Hbase/Tair 中,dm 层的数据最终导出到 mq/olap/rds/kv 中。ad-hoc 查询基于 Flink 来做。(都是流动的数据),如上图所示,就是 Kappa 架构。
实时数仓的存储需考虑支持数据重放,方便支持任务重跑。选择一个具有重放功能的、能够保存历史数据并支持多消费者的消息队列,根据需求设置历史数据保存的时长,比如 Kafka,可以保存全部历史数据。
与离线数仓相比,实时数仓的数据源存储不同。
与离线数仓相比,实时数仓的层次更少一些。