摘要:称为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持。数据仓库是存数据的,企业的各种数据往里面存,主要目的是为了分析有效数据,后续会基于它产出供分析挖掘的数据,或者数据应用需要的数据,如企业的分析性报告和各类报表等。为需要业务智能
1.数据仓库概述
(1)数据仓库基本概念——面向分析的存储系统
称为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持。数据仓库是存数据的,企业的各种数据往里面存,主要目的是为了分析有效数据,后续会基于它产出供分析挖掘的数据,或者数据应用需要的数据,如企业的分析性报告和各类报表等。为需要业务智能的企业 ,为需要指导业务流程改进、监视时间,成本,质量以及控制等;
数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备。这些准备包括对数据的清洗、转义、分类、重组、合并、拆分、统计等等。
数据仓库将原有的多个数据来源中的数据进行汇总、整理而得。数据进入数据仓库前,必须消除数据中的不一致性,方便后续进行数据分析和挖掘。
(2)数据仓库主要特征
面向主题的、集成的、非易失性、与时间相关且不可修改的数据集合。
面向主题:传统OLTP系统对数据的划分并不适用于决策分析。而基于主题组织的数据则不同,它们被划分为各自独立的领域,每个领域有各自的逻辑内涵但互不交叉,在抽象层次上对数据进行完整、一致和准确的描述。集成性:数据仓库会将不同源数据库中的数据汇总到一起,数据仓库中的综合数据不能从原有的数据库系统直接得到(主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构)。因此在数据进入数据仓库之前,必然要经过统一与整合,对数据进行抽取、清理、转换和汇总,这一步是数据仓库建设最重要的,最复杂的一步(称为ETL)。要统计源数据中所有矛盾之处,如字段的同名异议、异名同义、单位不统一,字长不统一等。进行数据的综合和计算。数据仓库中的数据综合工作可以在原有数据库抽取数据时生成,但许多是在数据仓库内部生成的,即进入数据仓库以后进行综合生成的。非易失性:只要保存过去业务数据,不需要每一笔业务都实时更新数据仓库,而是根据业务需要每隔一段时间把一批较新的数据导入数据仓库。数据仓库的数据反映是一段相当长的时间内历史数据的内容,是不同时点的数据库的集合,以及基于这些快照进行统计、综合和重组的导出数据。数据仓库中的数据一般仅执行查询操作,很少会有删除和更新。时变性:数据仓库包含各种粒度的历史数据。数据仓库中的数据可能与某个特定日期、星期、月份、季度或者年份有关。数据仓库的目的是通过分析企业过去一段时间业务的经营状况,挖掘 其中隐藏的模式。虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。因此数据仓库的数据需要定时更新,以适应决策的需要。数据仓库随着时间变化不断增加新的数据内容。数据仓库系统必须不断捕捉OLTP数据库中变化的数据,追加到数据仓库当中去,也就是要不断的生成OLTP数据库的快照,经统一集成增加到数据仓库中去;但对于确实不在变化的数据库快照,如果捕捉到新的变化数据,则只生成一个新的数据库快照增加进去,而不会对原有的数据库快照进行修改。数据库随着时间变化不断删去旧的数据内容 。数据仓库内的数据也有存储期限,一旦过了这一期限,过期数据就要被删除。只是数据库内的数据时限要远远的长于操作型环境中的数据时限。在操作型环境中一般只保存有60~90天的数据,而在数据仓库中则要需要保存较长时限的数据(例如:5~10年),以适应DSS进行趋势分析的要求。数据仓库中包含有大量的综合数据,这些综合数据中很多跟时间有关,如数据经常按照时间段进行综合,或隔一定的时间片进行抽样等等。这些数据要随着时间的变化不断地进行重新整合。因此数据仓库的数据特征都包含时间项,以标明数据的历史时期。不可修改,是一旦数据进去了,就不能进行修改,一般用来查询和分析。(3)数据仓库能干什么?
年度销售目标的制定,需要根据以往的历史报表进行决策,不能随便制定优化业务流程。例如:某电商平台某品牌的手机,在过去5年主要的的购买人群的年龄在什么年龄段,在那个季节购买量人多,这样就可以根据这个特点为目标人群设定他们主要的需求和动态分配产生的生产量,和仓库的库存。(4)数据库与数据仓库区别
数据库可能偏向于对字段的操作,也就是对数据的修改,就是联机事务处理OLTP(On-Line Transaction Processing)。而数据仓库可能偏向于查询分析,联机分析处理OLAP(On-Line Analytical Processing),一般针对某些历史数据进行分析,数据量也一般比数据库要大。
数据仓库的出现不是取代数据库。数据库是面向事务设计,数据仓库面向主题设计数据库存储业务数据,数据仓库存储历史数据数据库设计尽量避免冗余。数据仓库设计有意引入冗余,按照分析需求,分析维度、分析指标进行设计数据库为了捕获数据而设计,数据仓库是为分析数据而设计数据仓库是BI下的其中一种技术。由于数据库跟业务应用挂钩的,所以一个数据库不可能装下一家公司的所有数据。数据库的表设计往往是针对某一个应用进行设计的。比如刚刚的登录功能,这张user表上就只有这两个字段,没有别的字段了。到那时这张表符合应该没有问题,但是这张表不符合分析。比如我想知道在哪个时间段,用户的量最多?哪个用户一年购物最多?诸如此类的指标。那就要重新设计数据库的表结构了。对于数据分析和数据挖掘,引入了数据仓科概念。数据仓库的表结构是依照分析需求,分析维度,分析指标进行设计的。数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别。操作型处理,叫联机事务处理OLTP,也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发的支持用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing)一般针对某些主题历史数据进行分析,支持管理决策。(5)数据仓库意义
在没有数据仓库之前,BI下游系统直接从源系统数据库拿数据,这样和线上系统的耦合太大。有了数据仓库后,数据库从企业BI系统中解耦出来,数据仓库独立完成企业各类前场业务系统源数据库中的数据抽取、清洗、整理和汇总等任务。下游BI从数据仓库中获取经过加工处理的各类前场业务系统所产生的数据。
数据仓库通过对各业务系统数据的聚合,达到集中存储数据,消除数据孤岛,数据治理以及快速响应业务数据需求的目的。数据仓库可以快速提供业务需求所需数据,支持业务需求,优势:
不同业务线的数据可以高效共享,打破业务线之间的组织壁垒数据需求方无需了解原始数据的模型关系,业务含义,降低数据使用成本通过授予权限的方式,限制对数据的访问,提高数据使用安全性。(6)数仓的输入与输出
数仓的输入系统:埋点产生的用户行为数据、JavaEE 后台产生的业务数据、爬虫数据。输出系统:报表系统、用户画像系统、风控系统、推荐系统、机器学习等2.元数据管理
元数据(MetaDate),其实应该叫做解释性数据,或者数据字典,即数据的数据。主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及ETL的任务运行状态。一般会通过元数据资料库(MetadataRepository)来统一地存储和管理元数据,其主要目的是使数据仓库的设计、部署、操作和管理能达成协同和一致。
(1)技术元数据
技术元数据是存储关于数据仓库系统技术细节的数据,是用于开发和管理数据仓库使用的数据,它主要包括以下信息:
数据仓库结构的描述,包括仓库模式、视图、维、层次结构和导出数据的定义,以及数据集市的位置和内容;业务系统、数据仓库和数据集市的体系结构和模式汇总用的算法,包括度量和维定义算法,数据粒度、主题领域、聚集、汇总、预定义的查询与报告;由操作环境到数据仓库环境的映射,包括源数据和它们的内容、数据分割、数据提取、清理、转换规则和数据刷新规则、安全(用户授权和存取控制)。(2)业务元数据
业务元数据从业务角度描述了数据仓库中的数据,它提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够“读懂”数据仓库中的数据。业务元数据主要包括以下信息:使用者的业务术语所表达的数据模型、对象名和属性名;访问数据的原则和数据的来源;系统所提供的分析方法以及公式和报表的信息;具体包括以下信息:
企业概念模型:这是业务元数据所应提供的重要的信息,它表示企业数据模型的高层信息、整个企业的业务概念和相互关系。以这个企业模型为基础,不懂数据库技术和SQL语句的业务人员对数据仓库中的数据也能做到心中有数。多维数据模型:这是企业概念模型的重要组成部分,它告诉业务分析人员在数据集市当中有哪些维、维的类别、数据立方体以及数据集市中的聚合规则。这里的数据立方体表示某主题领域业务事实表和维表的多维组织形式。业务概念模型和物理数据之间的依赖:以上提到的业务元数据只是表示出了数据的业务视图,这些业务视图与实际的数据仓库或数据库、多维数据库中的表、字段、维、层次等之间的对应关系也应该在元数据知识库中有所体现。3.数据仓库分层简介
(1)分层架构
数据仓库从各数据源获取数据及 在数据仓库内的数据转换和流动都可以认为是ETL (抽取Extra,转化Transfer, 装载Load )的过程。ETL是数据仓库的流水线,数据仓库的日常管理和维护工作的大部分情况就是保持ETL的正常和稳定
(2)分层好处
清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。当数据出现问题之后,不用修复所有的数据,只需要从有问题的步骤开始修复。屏蔽原始数据的异常:不必改一次业务就需要重新接入数据。来源:正正杂说