前言
数据仓库的由来
数据仓库为何而来,主要解决什么问题的?
下面再以一个中国人寿保险公司发展为例,详细阐述数据仓库为何而来?
(1)OLTP系统处理业务数据
这些通用的业务行为一般是发在联机事务处理系统(OLTP
), 其主要任务是执行联机事务处理,前台接收的用户数据可以立即传送到后台进行处理,并在很短的时间内给出处理结果。
(2)分析型决策需求衍生
能够确定哪些险种正在恶化或已成为不良险种?
能够用有效的方式制定新增和续保的政策吗?
理赔过程有欺诈的可能吗?
现在得到的报表是否只是某条业务线的?集团整体层面数据如何?
.....。
数据驱动决策的制定。
OLTP环境开展分析可行吗?
数据分析也是对数据进行读取操作,会让读取压力倍增;
OLTP仅存储数周或数月的数据;
数据分散在不同系统不同表中,字段类型属性不统一;
(3)数据仓库面世
集成统一的数据分析平台。该平台的目的很简单:面向分析,支持分析,并且和OLTP系统解耦合。基于这种需求,数据仓库的雏形开始在企业中出现了。
OLAP(联机分析处理)系统。当然,数据仓库是OLAP系统的一种实现。
中国人寿保险公司就可以基于分析决策需求,构建数仓平台。
数据仓库介绍
Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统,主要目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support
)。
数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;
同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用;
这也是为什么叫“仓库”,而不叫“工厂”的原因。
数仓四大特征
- 面向主题性(Subject-Oriented)
主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。
传统OLTP系统对数据的划分并不适用于决策分析。而基于主题组织的数据则不同,它们被划分为各自独立的领域,每个领域有各自的逻辑内涵但互不交叉,在抽象层次上对数据进行完整、一致和准确的描述。
集成性
因此在数据进入数据仓库之前,必然要经过统一与综合,对数据进行抽取、清理、转换和汇总,这一步是数据仓库建设中最关键、最复杂的一步,所要完成的工作有:
要统一源数据中所有矛盾之处。如字段的同名异义、异名同义、单位不统一、字长不一致等等。
进行数据综合和计算。数据仓库中的数据综合工作可以在从原有数据库抽取数据时生成,但许多是在数据仓库内部生成的,即进入数据仓库以后进行综合生成的。
下图说明了保险公司综合数据的简单处理过程,其中数据仓库中与“承保”主题有关的数据来自于多个不同的操作型系统。
非易失性、非异变性
数据仓库是分析数据的平台,而不是创造数据的平台。我们是通过数仓去分析数据中的规律,而不是去创造修改其中的规律。因此数据进入数据仓库后,它便稳定且不会改变。
数据仓库的数据反映的是一段相当长的时间内历史数据的内容,数据仓库的用户对数据的操作大多是数据查询或比较复杂的挖掘,一旦数据进入数据仓库以后,一般情况下被较长时间保留。
数据仓库中一般有大量的查询操作,但修改和删除操作很少。
时变性
数据仓库包含各种粒度的历史数据,数据可能与某个特定日期、星期、月份、季度或者年份有关。
当业务变化后会失去时效性。因此数据仓库的数据需要随着时间更新,以适应决策的需要。
从这个角度讲,数据仓库建设是一个项目,更是一个过程 。
数据仓库架构
- ODS(Operation Data Store 数据准备区)
数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,也称为准备区。它们是后续数据仓库层加工数据的来源。ODS层数据的主要来源是业务数据库、埋点日志、其他数据源。
业务数据库:可使用DataX、Sqoop等工具来抽取,每天定时抽取一次;在实时应用中,可用Canal监听MySQL的 Binlog,实时接入变更的数据。
埋点日志:线上系统会打入各种日志,这些日志一般以文件的形式保存,可以用 Flume 定时抽取。
其他数据源:从第三方购买的数据、或是网络爬虫抓取的数据。
DW(Data Warehouse 数据仓库层)
DWD(Data Warehouse Detail 细节数据层),是业务层与数据仓库的隔离层。以业务过程作为建模驱动,基于每个具体的业务过程特点,构建细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,也即宽表化处理。
DWS(Data Warehouse Service 服务数据层),基于DWD的基础数据,整合汇总成分析某一个主题域的服务数据。以分析的主题为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表。
DIM(公共维度层 ),基于维度建模理念思想,建立一致性维度。
TMP层 :临时层,存放计算过程中临时产生的数据。
ADS(Application Data Store 应用数据层)
该层是基于DW层的数据,整合汇总成主题域的服务数据,用于提供后续的业务查询等。
数据仓库开发语言
理论上来说,任何一款编程语言只要具备读写数据、处理数据的能力,都可以用于数仓的开发。比如大家耳熟能详的C、java、Python等。但是这些编程一员的学习成本和开发效率都不是十分友好,在数据分析领域中,SQL语言功能很强,十分简洁,用户也容易学习和使用,是主流的语言。比如比较常用的数据仓库工具Hive就是支持SQL的语法。
总结
如果本文对你有帮助的话,请留下一个赞吧