本文类似于一个提纲,是用来帮助梳理数据仓库的学习体系的,勉强凑一篇文章吧。
数据仓库是什么?
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合,用于支持管理决策和信息的全局共享。
为什么要有数据仓库?
将组织透过资讯系统之联机事务处理(OLTP)经年累月所累积的大量资料,透过数据仓库理论所特有的资料储存架构,作一有系统的分析整理,以利各种分析方法如联机分析处理(OLAP)、数据挖掘(Data Mining)之进行,并进而支持如决策支持系统(DSS)、主管资讯系统(EIS)之创建,帮助决策者能快速有效的自大量资料中,分析出有价值的资讯,以利决策拟定及快速回应外在环境变动,帮助建构商业智能(BI)。
数据仓库的建模方法
为什么要建模?
数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。
数据仓库的建设原则
- 性能:帮助我们快速查询所需要的数据,减少数据的I/O吞吐,提高使用数据的效率,如宽表。
- 成本:极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低存储和计算成本。
- 效率:在业务或系统发生变化时,可以保持稳定或很容易扩展,提高数据稳定性和连续性。
- 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。
数据仓库的分层设计
数据仓库的分层设计是为了实现数据仓库的高性能、低成本、高效率、高质量使用。而且分层设计后会带来如下好处:
- 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
- 数据血缘追踪:能够快速准确地定位到问题,并清楚它的危害范围。
- 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
- 把复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。当数据出现问题之后,不用修复所有的数据,只需要从有问题的步骤开始修复。
- 屏蔽原始数据的异常:不必改一次业务就需要重新接入数据。
常用的数据分层方法
数据仓库分层很灵活,可以不用局限于理论,而是根据自己企业生产实践去总结抽象。
- ODS(数据缓存层):与原始数据保持一致
- DW(数据仓库层):在这一层里可以根据自己的实践对数据进行不同的处理和加工,比如在这一层可以有细分成:轻度汇总、高度汇总、维度表等等
- APP(数据应用层):这一层则是为数据的最后应用服务,形式多样。
有哪些常见的建模方法?
刚开始时,不需要循规蹈矩的遵循这些建模方法,可以先满足业务需求就好,到了后续简单的取数无法满足要求时,再做改变也不迟。
- 维度建模
维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能,更直接面向业务。典型的代表是我们比较熟知的星形模型。
- 范式建模
用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象。
数据仓库的实现形式
数据仓库在传统企业大多会用 Oracle、DB2 等这些数据库实现,但是随着 Hadoop 兴起,也有了用数据平台实现的方式。如果使用 Hadoop 的话,往往都会有一套复杂的数据架构,如下:
数据采集层:既包括传统的ETL离线采集、也有实时采集、互联网爬虫解析等等。 数据处理层:根据数据处理场景要求不同,可以划分为HADOOP、MPP、流处理等等。 数据分析层:主要包含了分析引擎,比如数据挖掘、机器学习、 深度学习等。 数据访问层:主要是实现读写分离,将偏向应用的查询等能力与计算能力剥离,包括实时查询、多维查询、常规查询等应用场景。 数据应用层:根据企业的特点不同划分不同类别的应用,比如针对运营商,对内有精准营销、客服投诉、基站分析等,对外有基于位置的客流、基于标签的广告应用等等。 数据管理层:这是一纵,主要是实现数据的管理和运维,它横跨多层,实现统一管理。
数据仓库的数据处理方式
数据仓库的建设往往离不开 ETL (数据抽取、转换、加载)。ETL 核心是为了数据采集和数据调度,复杂点的还会有数据安全、多租户和可视化配置等等。
数据仓库的应用场景
- 日常决策分析
- 用户画像和标签化
- 推荐系统和信息流