likes
comments
collection
share

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

作者站长头像
站长
· 阅读数 39

每天学习一点点,进步一点点!

1. 数据仓库为何物?

数据仓库,你可以把它想象成粮仓,只不过存储的是数据而已。数据仓库(Data Warehouse,DW)是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

2. 数据仓库能干啥?

1)公司制定年度销售目标,但我们不能拍脑袋而定,须依据历史报表决策;

2)如何进行业务流程的优化,这也需要数据仓库帮忙梳理;下面举例说明,比如:一个电商网站订单的完成包括:浏览、下单、支付、物流,其中物流环节可能和中通、申通、韵达等快递公司合作。快递公司每派送一个订单,都会有订单派送的确认时间,可以根据订单派送时间来分析哪个快递公司比较快捷高效,从而选择与哪些快递公司合作,剔除哪些快递公司,增加用户友好型。

简单地说,数仓干的话就是将数据汇总、清洗后为我所用。

3. 数据仓库的特点

特点一:面向主题,数据仓库都是基于某个明确主题,仅需要与该主题相关的数据,其他的无关细节数据将被排除掉。

特点二:集成的,从不同的数据源采集数据到同一个数据源,此过程会有一些ETL操作。

特点三:随时间变化,关键数据隐式或显式的基于时间变化。

特点四:数据仓库的数据是不可更新的,数据装入以后一般只进行查询操作,没有传统数据库的增删改操作。数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据,而不是联机处理的数据。

4. 数据仓库发展历程

数据仓库的发展历程还是比较清晰,大致可以分为三阶段:简单报表阶段、数据集市阶段、数据仓库阶段。下面我们就来看看,各阶段干了些啥活?

1、简单报表阶段

这个阶段目标很简单,就是制作报表、帮助决策。该阶段制作日常工作中业务人员需要的报表以及生成简单的有助于领导决策所需要的汇总数据。该阶段最后的输出表现形式大部分为数据库和前端报表工具。

2、数据集市阶段

这个阶段是业务不断发展催生出来的,根据某个业务部门(一般运营部或市场部居多)的需要,对相关的业务数据进行采集、整理,并能够按照各业务部门需要提供跨部门的多维报表。干这些活的目的也是帮助各部门领导进行决策时有据可依,只不过这阶段的报表集合度相对更高、适用部门更广。

3、数据仓库阶段

这个阶段是在数据集市阶段进一步向前发展,主要按照某些特定的数据模型来对整个企业的数据进行整体采集、梳理,并能够按照各业务部门需要提供跨部门的完全一致的业务报表数据,能够通过数据仓库生成对业务具有指导性的数据,同时为领导决策提供全面的数据支持。

综上可知,数据仓库各阶段干的活目的一致:提供数据支持、帮助决策。但各自侧重角度不一样,数据仓库的建设和数据集市的建设重要区别就在于数据模型的支持。因此,数据模型的建设对于搭建数据仓库起着决定性作用。   

5. 数据库与数据仓库的区别

对大数据从业者来说,数据库软件、数据库、数据仓库这个三个词耳详能熟,我们就来说道说道。

1、数据库软件

它是一种可见的、可操作的物理层应用软件,是来实现数据库逻辑功能。常见的有:Orcale、MySQL、Redis、MongoDB等等,一般我们都是用可视化的操作软件工具,如Navicat、DBeaver之类。

2、数据库

它是一种逻辑概念,用来存放数据的仓库。通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里可以有很多字段。字段一字排开,对应的数据就一行一行写入表中。数据库的表,在于能够用二维表现多维关系。目前市面上流行的数据库都是二维数据库。如:Oracle、DB2、MySQL等。

3、数据仓库

它是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现的存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。

在IT的架构体系中,数据库是必须存在的。必须要有地方存放数据。比如现在网购、淘宝、京东等涉及的订单数据之类均存放在后台数据库中,在实际生产环境中数据库就是用来干数据存储的活,但凡涉及业务都需要数据库。

数据仓库则是BI下的技术之一,由于数据库是跟业务应用挂钩的,所以一个数据库不可能装下一家公司的所有数据。数据库的表设计往往是针对某一个应用进行设计的。比如我们想知道网购下单、付款的订单明细及去向,那就要重新设计数据库的表结构并进行数据分析。对于数据分析和数据挖掘,我们引入数据仓库概念。数据仓库的表结构是依照分析需求,分析维度,分析指标进行设计的。

6. OLTP与OLAP的区别

数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别

1、操作型处理:叫联机事务处理OLTP(On-Line Transaction Processing),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。

2、分析型处理:叫联机分析处理OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析、支持管理决策、数据ETL(Extract-Transform-Load)。

OLTP与OLAP的对比结果见下表:

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

7. 数据仓库架构分层(重点)

经过前面的层层铺垫,相信大家对数据仓库的理解更加清晰。接着我们来聊聊数据仓库架构分层,我们从架构体系和分层缘由来进一步缕清数据仓库。

1、数据仓库架构

数据仓库标准上可以分为四层:ODS(临时存储层)、DW(数据仓库层)、DM(数据集市层)、APP(应用层)。常见的数据仓库架构体系见本节末尾,下面我们就来说说各层都干了啥活。

1)ODS层

为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。一般来说ODS层的数据和源系统的数据是同构的,主要目的是简化后续数据加工处理的工作。从数据粒度上来说ODS层的数据粒度是最细的。ODS层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。历史数据一般保存3-6个月后需要清除,以节省空间。但不同的项目要区别对待,如果源系统的数据量不大,可以保留更长的时间,甚至全量保存。**

2)DW层

为数据仓库层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。这一层的数据一般是遵循数据库第三范式的,其数据粒度通常和ODS的粒度相同。在DW层会保存BI系统中所有的历史数据,例如保存10年的数据。**

3)DM层

为数据集市层,这层数据是面向主题来组织数据的,通常是星形或雪花结构的数据。从数据粒度来说,这层的数据是轻度汇总级的数据,已经不存在明细数据了。从数据的时间跨度来说,通常是PDW层的一部分,主要的目的是为了满足用户分析的需求,而从分析的角度来说,用户通常只需要分析近几年(如近三年的数据)的即可。从数据的广度来说,仍然覆盖了所有业务数据。

4)APP层

为应用层,这层数据是完全为了满足具体的分析需求而构建的数据,也是星形或雪花结构的数据。从数据粒度来说是高度汇总的数据。从数据的广度来说,则并不一定会覆盖所有业务数据,而是DM层数据的一个真子集,从某种意义上来说是DM层数据的一个重复。从极端情况来说,可以为每一张报表在APP层构建一个模型来支持,达到以空间换时间的目的数据仓库的标准分层只是一个建议性质的标准,实际实施时需要根据实际情况确定数据仓库的分层,不同类型的数据也可能采取不同的分层方法。

2、为什么要对数据仓库分层?

对数据仓库进行分层,主要有以下3点理由:

1)用空间换时间,通过大量的预处理来提升应用系统的用户体验,因此数据仓库会存在大量冗余的数据。

2)如果不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大。

3)通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分到了多个步骤去完成,相当于把一个复杂的工作拆成了多个简单的工作,把一个大的黑盒变成了一个白盒,每一层的处理逻辑都相对简单和容易理解,这样我们比较容易保证每一个步骤的正确性,当数据发生错误的时候,往往我们只需要局部调整某个步骤即可。

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

BI常见的体系架构图

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

8. 元数据介绍

当需要了解某地企业及其提供的服务时,电话黄页的重要性就体现出来了。元数据(Metadata)类似于这样的电话黄页。下面我们就从元数据的定义、元数据的存储方式、元数据的作用这3个方面来瞅瞅。

1、元数据的定义

数据仓库的元数据是关于数据仓库中数据的数据。它的作用类似于数据库管理系统的数据字典,保存了逻辑数据结构、文件、地址和索引等信息。广义上讲,在数据仓库中,元数据描述了数据仓库内数据的结构和建立方法的数据。

元数据是数据仓库管理系统的重要组成部分,元数据管理器是企业级数据仓库中的关键组件,贯穿数据仓库构建的整个过程,直接影响着数据仓库的构建、使用和维护。

2、元数据的存储方式

元数据有两种常见存储方式:一种是以数据集为基础,每一个数据集有对应的元数据文件,每一个元数据文件包含对应数据集的元数据内容;另一种存储方式是以数据库为基础,即元数据库。其中元数据文件由若干项组成,每一项表示元数据的一个要素,每条记录为数据集的元数据内容。上述存储方式各有优缺点,第一种存储方式的优点是调用数据时相应的元数据也作为一个独立的文件被传输,相对数据库有较强的独立性,在对元数据进行检索时可以利用数据库的功能实现,也可以把元数据文件调到其他数据库系统中操作;不足是如果每一数据集都对应一个元数据文档,在规模巨大的数据库中则会有大量的元数据文件,管理不方便。第二种存储方式下,元数据库中只有一个元数据文件,管理比较方便,添加或删除数据集,只要在该文件中添加或删除相应的记录项即可。在获取某数据集的元数据时,因为实际得到的只是关系表格数据的一条记录,所以要求用户系统可以接受这种特定形式的数据。因此推荐使用元数据库的方式。

元数据库用于存储元数据,因此元数据库最好选用主流的关系数据库管理系统。元数据库还包含用于操作和查询元数据的机制。建立元数据库的主要好处是提供统一的数据结构和业务规则,易于把企业内部的多个数据集市有机地集成起来。目前,一些企业倾向建立多个数据集市,而不是一个集中的数据仓库,这时可以考虑在建立数据仓库(或数据集市)之前,先建立一个用于描述数据、服务应用集成的元数据库,做好数据仓库实施的初期支持工作,对后续开发和维护有很大的帮助。元数据库保证了数据仓库数据的一致性和准确性,为企业进行数据质量管理提供基础。

3、元数据的作用

在数据仓库中,元数据的主要作用如下: 1)描述哪些数据在数据仓库中,帮助决策分析者对数据仓库的内容定位 2)定义数据进入数据仓库的方式,作为数据汇总、映射和清洗的指南 3)记录业务事件发生而随之进行的数据抽取工作时间安排 4)记录并检测系统数据一致性的要求和执行情况 5)评估数据质量 元数据不仅定义数据仓库中数据的模式、来源、抽取和转换规则等,而且是整个数据仓库的运行的基础,元数据把数据仓库系统中各个松散的组件联系起来,组成了一个有机整体如下图所示。

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

9. 星型模型和雪花模型

在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。

  1. 星型模型

当所有维表都直接连接到事实表上时,整个图解就像星星一样,故将该模型称为星型模型。

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家A 省B的城市C以及国家A省B的城市D两条记录,那么国家A和省B的信息分别存储了两次,即存在冗余。

  1. 雪花模型

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的层次 区域,这些被分解的表都连接到主维度表而不是事实表。

如图所示,将地域维表又分解为国家,省份,城市等维表。它的优点是:通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花型模型要高。星型结构不用考虑很多正规化的因素,设计与实现都比较简单。雪花型模型由于去除了冗余,有些统计就需要通过表的联接才能产生,所以效率不一定有星型模型高。

正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的 ETL、以及后期的维护都要复杂一些。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。

  1. 星型模型和雪花模型对比

星形模型和雪花模型是数据仓库中常用到的两种方式,而它们之间的对比要从四个角度来进行讨论。

1)数据优化:雪花模型使用的是规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量。通过引用完整性,其业务层级和维度都将存储在数据模型之中。相比较而言,星形模型使用的是反规范化数据。在星形模型中,维度直接指的是事实表,业务层级不会通过维度之间的参照完整性来部署

2)业务模型:在雪花模型中,数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的。而在星形模型中,所有必要的维度表在事实表中都只拥有外键

3)性能:第三个区别在于性能的不同。雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低。举个例子,如果你想要知道一个用户的详细信息,雪花模型就会进行若干表的join最终汇总结果。而星形模型的连接就少的多,在这个模型中,如果你需要对应信息,你只要将维度表和事实表连接即可

4)ETL:雪花模型加载数据集市,因此ETL操作在设计上更加复杂,而且由于附属模型的限制,不能并行化。星形模型加载维度表,不需要再维度之间添加附属模型,因此ETL就相对简单,而且可以实现高度的并行化

总结:雪花模型使得维度分析更加容易,比如针对特定的广告主,有哪些客户或者公司是在线的? 星形模型用来做指标分析更适合,比如给定的一个客户他们的收入是多少?**

更多精彩内容,请扫描关注公众号:小韩学长带你学

一文帮你秒懂数仓每天学习一点点,进步一点点。今天分享一文,帮你秒懂数据仓库!简单地说,数仓干的话就是将数据汇总、清洗后为

转载自:https://juejin.cn/post/6970304897304494117
评论
请登录