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