数据仓库
什么是数据仓库
数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
从功能上说,数据仓库至少需要具备数据获取、数据存储、数据访问3个核心功能,这三个功能 的实现是数据从数据源到最终决策应用的流转过程。
数据流转过程
数据抽取:
在数据抽取阶段,主要做两件事,一是调研数据源,确认各种数据源之间的关系,字段含义等;二是确定数据抽取的方法,即确认是由源系统主动推送还是数据仓库主动抽取,确认是全量抽取还是增量抽取,以及确认抽取频率等。
数据清洗和数据转换:
数据清洗是对数据源中的问题数据进行修正、过滤的过程。问题数据主要包括3类:第一类是不完整数据,如必要字段信息缺失;第二类是错误数据,如日期格式不正确、出入了多余的特殊字符(如空格键、回车键)等;第三类是重复数据,如由于,抽取逻辑问题斗志存在两条完全一致的记录等。
数据转换是将数据按照一定的标准范围统一组织的过程。数据转换主要包括统一数据标准,数据的关联与替换(关联可靠信息表、保证数据完整性),业务规则或自定义规则计算,以及数据粒度转换等
数据加载:
数据加载时指将清洗、转换后的数据按照既定的建模方式进行聚合、合并并加载到对应的目标中。
离线数据仓库架构
随着大数据大数据技术的发展,业界开始使用大数据工具代替传统数据库的工具。例如。使用HDFS代替传统数据库;对于计算,开始使用hive(mapreduce)代替传统数据仓库中的kettle等etl工具,此时数据仓库一版在离线环境下批量处理数据。
随着业务实时性要求的不断提高,lambda架构应用而生。lambda架构在原来离线数据仓库的基础上增加一个实时计算链路,并对数据做流式改造(即把数据发送搭配消息队列),实时订阅消息队列,完成对指标的增量计算,并推送到下游数据服务中,由数据服务层完成离线与实时结果的合并。
lambda架构
数据仓库的分层
1、为什么数据仓库要分层
1)用空间换时间:数据经过层层预处理,可以避免你用户直接对原始数据进行统计、计算从而提高查询效率
2)使数据结构更清晰:每个数据层的作用域都被清晰定义,便于理解与使用
3)支持复用,减少数据开发:如需求变更,可以复用中间层的通用数据,便于理解和使用
4)复杂问题简单化:通过分层,一个复杂的任务被拆解成多个步骤,每个步骤只负责处理单一的逻辑,且当某个中间步骤出现问题时,只需从该处开始修复
5)增强兼容性:通过分层,可以更好兼容业务变更
数据仓库通常可以分为数据接入层、数据明细层、数据汇总曾、数据集市层、数据应用层、临时层和公共维度层。数据明细层和数据汇总层又合并成数据仓库层。
数据仓库分层示意图
数据接入层(operation data store,ods):也称贴源层,它和原业务系统在数据上是同构的,通常是从业务数据系统数据库直接导入,无需过多的校验处理,而且这一层数据的粒度是最细的。
数据明细层(data warehouse detail , dwd):该层是业务数据与数据仓库的隔离层,主要进行去除“脏”数据、去重、去噪、异常数据处理,规则转换、维度不全和数据标准化操作,并对数据进行一定程度的整合,将相同主题的数据汇总。
数据汇总层(data warehouse service,dws):对各个表进行join操作,产生业务所需的完整数据。该层主要存放明细事实宽表、聚合事实宽表等。
数据集市(data warehouse market ,dwm):该层主要面向主题组织数据的,数据组织结构通常呈星状或者雪花状。从数据粒度来讲,该层数据是轻度汇总级别的数据,已经不存在明细数据了而从广度上讲,它包含了所有业务数据。
数据应用层:该层中,数据高度汇总,数据粒度较大,但不一定涵盖所有的业务数据,可能只是数据集市层数据的一个子集。
临时层(tmp):临时存放一些中间数据计算结果。
公共维度层:该表主要负责一致性维度建设,存放诸如地点区域表、时间维度表等维度数据,数据仓库各层均可使用该层数据。
数据仓库与数据中台
数据中台最新由阿里巴巴公司提出,它不是既定的专业术语,而是在探索如何让数据产生价值的道路上衍生的数据管理理念。数据中台利用大数据技术,对海量数据统一进行采集计算和存储,并统一数据标准和口径,最后一句标准数据资产库,形成对外提供数据服务的api。从本质上说,数据中台包括数据仓库和去哦他的数据服务中间件。