一、 什么是数据仓库?
数据仓库(Data Warehouse),简称DW。数据仓库顾名思义,是⼀个很⼤的数据存储集合,出于企业的分析性报告和决策⽀持⽬的⽽创建,对多样的业务数据进⾏筛选与整合。它能为企业提供⼀定的BI(商业智能:例如数据挖掘、数据分析和数据报表)能⼒。有了数据报表,还可以指导业务流程改进。
二、 数据仓库解决什么问题?
数据仓库是应景大数据而生的,解决的问题无非就是存储和快速提取, 另外还有跨部门应⽤的功能。
对于不同数据整合到了数据仓库之后,也就是大数据有了存储的位置;我们可以不同的部门进行不同的应用(例如数据挖掘、数据分析、报表展示和查询等等);而快速提取是我们对于数据仓库的基本需求,所以数据仓库在设计起初就要具备快速提取的功能。而技术实现呢,就是分布式。
三、 数据仓库的主要特征
1、面向主题的
传统数据库最大的特点就是面向应用进行组织数据,一个业务系统管理一部分企业数据,多个业务系统之间呢是相互分离的,而数据仓库则是面向主题的
我们可以通过从上图中的源数据那部分看到,它把多个业务的数据来整合,所以是面向主题的
2、集成的
集成是指数据仓库中数据必须是一致的,也就是我们要通过ETL进行软码编辑。
数据仓库的数据是从原有的、分散多个数据仓库、数据文件、用户日志中抽取出来的,那数据来源上可能既有内部数据,又有外部数据。
数据仓库中的数据是为分析而服务的,而分析呢又需要多种、广泛的不同数据源、数据,以便进行比较、鉴别。因此数据仓库中的数据必须从多个数据源中获取。
那这些数据源就包括内部数据、外部数据、文件系统以及网上的其他数据等。这些是通过数据集成而形成数据仓库的数据,所以它是集成的。
3、稳定的
数据仓库中的数据反映的是一段相当长时间内历史数据的内容,是不同时间点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的一个导出数据,一旦数据进入仓库以后,一般情况下会较长时间的保留。
数据经加工和集成进入数据仓库后极少更新,所以是稳定的,它保留的时间长也是稳定的、不易失的。
4、时变的
数据仓库中包含各种意思的历史数据。数据仓库中的数据与某个特定的日期,例如星期、月份是有关系的。虽然数据仓库不会修改数据,但并不是说数据仓库的数据啊是永远不变的,数据仓库的数据也需要更新以适应新的需求。
数据仓库的数据随时间的变化主要表现在以下几个方面:
1.数据仓库的数据时限一般来说远远长于操作类型的数据库时限;
2.业务系统存储的是当前数据,而数据仓库中的数据是历史数据;
3.数据仓库中的数据是按照时间顺序进行追加的,都在于时间属性,这就是反映了历史变化的数据。
四、数据仓库与数据库区别
数据仓库与数据库的区别,实际上就是OLTP(联机事物处理过程),也称为面向交易的处理过程,和OLAP(联机分析处理)的区别。
在看具体的差异之前,需要特别提醒的是,数据仓库的出现并不是要取代数据库,它们是各有各的用处的。
先从面向来看,数据库面向的是事务,也就是OLTP(联机事务处理过程),而数据仓库呢面向的是分析,也就是OLAP(联机分析处理)。
再看一下用户,对于数据库来说,它的用户是DBA开发;对于数据仓库来说呢,它的用户就是经理、主管、分析人员,可以看出数据仓库是针对于分析的;
对于功能而言,数据库是针对于日常操作的,而数据仓库是对于长期信息需求,用来决策支持的。
再看一下数据,数据库当中存储的是当前的、最新的,而数据仓库呢存储的是历史的、跨时间维护的,所以数据库当中信息比较久远的数据可以入仓,也就是存储到数据仓库中来。
再看一下用户数,数据库是数百到数亿的,例如我们是一个电商数据库,那他的用户可能就达到了上亿,而对于数据仓库可能只达到了数百,因为是给企业内部人员来进行使用的。
再看一下设计规模,数据库是GB到TB的,那对于数据仓库来说呢,它存在是历史数据,所以肯定是大于TB的。
因此数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、决策需要而产生的,它绝不是所谓的大型数据库。
五、数据仓库架构
数据仓库是大数据时代的必然产物,而且它还具有四个特征:面向主题的、集成的、稳定的、时变的。那么我们用它来解决的问题就是存储大数据量、快速提取、还有跨部门应用。那针对于跨部门应用和快速提取,我们就要设计好数据仓库的架构。
那数据仓库的架构主要从四个方面来考虑:
第一层,ODS层,是数据准备区,数据来源是各个业务系统的数据,物理模型和业务系统模型是一致的。
第二层,DWD层,数据来至于ODS层,数学模型与ODS层一致,那其实也是与业务系统模型一致。
第三层,DW层,数据来自是第二层DWD层,是DW事实层,采用维度建模,星型架构。这一层可细分为dwb和dws。
第四层,DM层,数据来自于下一层的DW层,采用了维度建模,也是星型架构,和DW层是一样的。
第五层,ST层,数据来自于DW层,采用的也是维度建模和星型架构。
上述内容是从数据来源及建模方式来说的这样五层的作用。
接下来我们从服务领域、数据ETL来看一下这五层的作用。
数据仓库系统的数据来源于不同的数据源,例如MySQL、ORACLE和文档等等,而且还提供不同的数据应用。
数据是自下层流入到数据仓库,然后向上层开放数据应用。数据仓库只是中间的一个数据管理平台,所以我们在架构数据仓库系统的时候都采用分层架构。
六、 数据仓库元数据管理
我们介绍在数据仓库进行架构的时候,从四个方面进行考量和平衡,如质量、性能、效率、还有成本。
那分层架构上可以看出来,它是在效率和效能上进行考察的,质量方面就要靠元数据的管理和数据治理来实现了。
什么是元数据?
1、元数据
元数据主要是记录数据仓库中模型的定义、各层级间的映射关系(例如我们架构的这五层,层与层之间的映射关系要靠元数据来保存),监控数据仓库的数据状态以及ETL任务的运行。
一般会通过元数据质量库来统一地存储和管理原数据,其主要目的呢就是使数据仓库的设计、部署、操作和管理达成协同和一致,保证数据质量,这是元数据的定义。
而我们关键要看的就是模型的定义、层级的映射关系、ETL的任务运行状态,这都是元数据来负责的。所以说元数据是数据仓库系统的一个重要的组成部分,贯穿数据仓库构建的整个过程,直接影响了数据仓库的构建、使用和维护。
由于数据仓库的数据来源种类比较多,例如MySQL、日志、外部数据等。
在这些元数据进入数据仓库时,要经历ETL(抽取、转换、加载)这些操作步骤,所以元数据就是定义源数据到数据仓库的映射关系、转换规则等等。
同理,在数据应用层,也就是用户在使用数据的时候,也是通过元数据来访问数据的,因为元数据记录了数据的位置。
2、元数据具体的工作内容
元数据针对于ETL,它存储了抽取方法、映射规则等等。
对于清洗工具,它又存储了这样清洗的一些规则。
对于相关人员使用,它存储了一些数据质量、数据是如何组织的。
对于数据仓库的建模,它存储数据是如何定义的、数据有效值、数据仓库的模型等。
对于查询工具、前端工具、报表工具,也就是数据应用层,用户在使用的时候,元数据它包含了查询的定义、数据导出属性以及数据之间的映射关系。
元数据分为技术元数据和业务元数据
从我们介绍元数据保存的信息,我们可以看出,元数据分为技术性的元数据,还有业务性的元数据。
技术元数据,它是被开发或者是管理数据仓库的这些IT人员使用的,它描述了与数据仓库的开发管理,以及维护相关的数据。例如包含数据源的信息都来自于哪一个部分的数据(比如MySQL,或者哪一个业务的)、数据转换的描述(也就是不同的数据源是如何入仓的)、数据仓库的模型、数据的清洗与更新的规则、数据映射和访问权限等等。
对于业务元数据呢,它是对管理层和分析人员来服务的,但是从业务角度来描述数据,包括一些商务数据、数据仓库中有什么数据、数据的具体位置在什么地方和数据可用性等等。
这就是我们元数据的作用,所以说元数据贯穿了数据仓库构建的整个过程,直接影响了数据仓库的构建(也就是IT人员使用的那部分元数据)、使用(也就是管理层和分析人员)和维护(也是IT人员)。
所以数据仓库的元数据管理记录很重要,保证数据仓库中的数据质量,可以对元数据进行管理。
七、 数据治理
都知道数据是企业的核心资产,而数据治理能成就企业的未来,特别是那种进行数据服务的公司,还有银行等。数据治理涉及到数据质量、数据管理、数据政策以及商业过程管理等。治理呢主要治理的是脏数据。
脏数据的种类
1、数据缺失。
为了不影响分析的准确性,一般情况下我们是有两种方案来应对这种缺失数据的。
第一种就是对于这种缺失数据,我们不把它纳入到分析范围里面,那这种情况适合于我们数据量比较多的情况下,也就是当我们数据量比较多,那对于缺失的数据我们删除可能不会影响我们最终的分析结果。但是如果我们样本量比较少,又把缺失的删除掉,那它可能会影响我们的分析。
第二种方式,就是想办法想一些计算逻辑,或者是数据进行重新提取这样的方式来对数据进行填充。如填充中位数、众数或者均值。
2、数据重复。
那在这种时候,就要进行分析去掉重复记录了。
3、数据错误。
数据没有严格按照规范进行记录,这种情况下只能人工干预了,而干预的方式呢就有很多种了。那因为公司、业务、甚至数据,干预手段都是不一样的,可以做一张清洗规则表来进行错误匹配
4、数据不可用。
也就是数据正确但不可用,也就是这个数据没有价值了。例如我们要收集所有的全国学生的一些基本信息,结果只收集了学生的姓名,名字是没有错,但是不知道是哪个学校的,不知道年龄、专业、班级等等,甚至所在的城市。那这样的数据是毫无价值的,即数据不可用。从源头也就是你数据收集就出错了,就只能从源头来改了。
八、数据治理原则
虽然不同的脏数据种类,我们有不同的解决方案,但是真的有一些脏数据出现了,我们的代价是很大的。比如第四类数据不可用,真的是从头再来。所以说我们一定要对数据进行治理,治理的原则就是两方面。
一方面是约束输入,比如必须添加的、数据的类型是什么,也就是规则要统一;另一方面就是规范的输出——统一语义,也就是我们口径、计算方式都一样,然后要有一个公司级别的语义字典。这样我们在用数据的时候就不会出现错误了,在收集数据的时候也不会出现数据不可用了。
九、知识拓展(数据集市)
数据仓库规模⼤、周期,⼀些规模⽐较⼩的企业⽤户难以承担。
因此,作为快速解决企业当前存在的实际问题的⼀种有效⽅法,独⽴型数据集市成为⼀种既成事实。
数据集市(Data Mart) ,也叫数据市场,数据集市就是满⾜特定的部⻔或者⽤户的需求,按照多维的⽅式进⾏存储,包括定义维度、需要计算的指标、维度的层次等,⽣成⾯向决策分析需求的数据⽴⽅体
数据集市主要是针对⼀组特定的某个主题域、部⻔或者特殊⽤户需求的数据集合。这些数据需要针对⽤户的快速访问和报表展示进⾏优化,优化的⽅式包括对数据进⾏轻量级汇总,在数据结构的基础上创建索引。
数据集市的⽬标分析过程包括对数据集市的需求进⾏拆分,按照不同的业务规则进⾏组织,将与业务主题相关的实体组织成主题域,并且对各类指标进⾏维度分析,从⽽形成数据集市⽬标说明书。内容包括详细的业务主题、业务主题域和各项指标及其分析维度。
(免责声明:本公众号所发布的文章为本公众号原创,或者是在网络搜索到的优秀文章进行的编辑整理,文章版权归原作者所有,仅供读者朋友们学习、参考。对于分享的非原创文章,有些因为无法找到真正来源,如果标错来源或者对于文章中所使用的图片、链接等所包含但不限于软件、资料等,如有侵权,请直接联系后台,说明具体的文章,后台会尽快删除。给您带来的不便,深表歉意。)