数据仓库·白话篇

1、数据仓库的作用

针对【多源异构】数据进行加工整理,并为上层应用输送一致的、具有确定性的数据。

①存储数据

②校准数据

③整合数据

④输出数据,也就是数据应用

2、大数据体系整体架构

刚进入互联网电商行业,最常被挑战的问题是:这是买家数据,这是卖家数据,这是商品数据,这是场景数据……然后呢,你准备怎么用这些数据呢?说白了数据是死的,没有被运用的数据就是一堆占用存储的垃圾。所以,大数据唯一的活路就是:【运用】。

要被运用起来的数据(存储在数据仓库中),注定是无法孤身一人的。专业说法是:数据仓库作为大数据体系的核心,是无法独立存在的,必须与大数据体系融为一体。

多源异构数据源:所有数据的来源,不仅包括业务系统后端产生的业务数据,还包括用户在业务系统前端页面留下的行为数据,凡是有价值的数据,都可以作为大数据体系架构的“源头”。

原始数据层:顾名思义,原原本本从多源异构数据源中出来的数据,没有经过任何处理。这一层作为数据源与数据仓库之间的中间层,具有非常重要的作用。一是满足了业务系统实时数据的要求,因为数据仓库存储的是离线数据,处理的往往都是T+1的数据,无法满足业务系统的实时性需求。二是数据仓库可以用脚本批量处理存储在原始数据层的数据,不需要从数据源出来一条数据,数据仓库就处理一条数据。这样太浪费资源了。

数据仓库:可以划分为【基础数据层】+【主题层】+【模型层】。

【基础数据层】:用ETL技术把原始数据层的数据清洗出来所形成的数据。所谓数据清洗,就是按照一定的规则把冗余的数据删掉,把残缺的数据补全,把错误的数据修正……反正目的就是让数据经过ETL后,变得具有一定的语义,变得可用。

【主题层】:在基础数据层之上,按照更加复杂、更加“业务化”的规则,把来自基础数据层的分散的、没有关联关系的数据关联组合成可用的数据,避免变成“数据孤岛”。

【模型层】:从业务需要的角度出发,根据自己的业务洞察,把来自主题层的不同域的数据关联、组合在一起,进行分析,最后得出可信的结论。模型层的数据是高度索引化的,呈现出一种星状结构。

数据应用层:数据仓库模型层吐出的各种模型,必然要应用在各个业务系统中,使得业务系统某个方面的效率有所提升或者产生收益。

3、一个超形象的比喻:

如果数据是水,那么数据仓库就是矿泉水厂。矿泉水厂从来不生产水,只处理水,最后输出的却是高质量的矿泉水。这就是数据仓库的价值。

4、数据仓库的特点

①数据仓库的数据是面向主题的

这里做个对比就好理解了:传统数据库的数据,是面向应用的,意思是应用系统需要什么数据就提供什么数据,应用系统需要怎么组织数据就怎么组织数据。但是,数据仓库的数据,是面向主题的,业务上定义的主题是很抽象的概念(根据数据挖掘或数据分析的具体需求、维度、指标来决定的),需要在数据仓库中把不同域的数据进行综合整理、归类在一起。

②数据仓库的数据是集成的

这是从数据仓库中的数据是来源于各个不同的业务系统这个方面来说的。如果没有数据仓库进行统一、综合地处理,要找某个数据得要去不同的业务系统中去找,还有可能不同的系统中的相同字段却有不一样的意思。因此,对多源异构数据进行ETL处理是数据仓库进行数据集成最关键的一步。

③数据仓库的数据是不可更改的

这是从数据仓库的作用来说的,数据仓库中的数据输出形式主要是查询,一般不会想数据库那样进行数据删改操作。正是因为数据仓库查询场景比较多,所以数据仓库中运用了很多索引技术。

④数据仓库的数据是随时间变化一直更新的

数据仓库数据的不变,是针对应用来说的,应用系统在某个时间点的数据一旦产生,就是不变的了。数据仓库数据的更新,是针对数据仓库自身来说的,随着时间的推移,应用系统产生了新的数据,数据仓库也就随之涌入了新的数据,超过存储期限(生命周期)的数据就会被删除。这也是数据仓库数据带有时间标识的原因。

5、数据仓库的发展阶段

①简单报表阶段:简单的数据统计和整理,形成简单报表,提供决策数据。

②数据集市阶段:多维度的复杂报表。

③数据仓库阶段:多维度的复杂报表+支持数据模型。

6、数据库与数据仓库的区别

本质上是OLTP(数据库)与OLAP(数据仓库)之间的区别。

  OLTP(数据库)-操作型处理 OLAP(数据仓库)-分析型处理
数据性质 细节的 分类的、综合的、提炼的
数据模型 实体-关系(E-R)模型 星状模型、雪花模型
数据存取 存取瞬时数据 存取历史数据
修改性质 可增删查改 只读、只追加,不可删改
数据操作 一次操作一条记录 一次操作一个集合
性能要求 性能要求高,响应时间短 性能要求比较宽松
面向 面向应用(面向事务) 面向主题(面相分析)

7、数据仓库体系架构

8、数据仓库体系架构为什么要分层?

①以空间换时间:先把预先处理好的结果数据存储起来,提高最终结果的产出效率。

②把复杂工作拆分成多个简单工作,把整个计算过程拆分成多个小步骤来完成,“黑盒变白盒”不仅使代码逻辑更好理解了,还可以在出错时快速定位错误原因,修改其中的一些小步骤就可以快速解决问题了。

③分层,使代码更加具有可读性,可维护性也会增强。

9、数据仓库元数据的作用:

①描述数据仓库中的数据,帮助数据仓库使用者(分析者、决策者……)明确数据仓库的内容。

②定义对数据源的处理规则,包括抽取规则、转换规则、加载规则,作为数据清洗的操作指南。

③记录数据处理(ETL等)脚本对业务数据进行处理的时间等其他重要信息。

④记录并检测是否满足数据一致性的要求。

⑤用于评估数据质量。

10、星型模型-数据仓库模型

①维表与事实表之间直接相连,看起来就像星星一样,故名“星型模型”。

②正是因为每一个维表的信息都直接与事实表相关联,导致维表之间的信息存在冗余。

11、雪花模型-数据仓库模型

雪花模型是对星型模型的一种升级。怎么理解这里的“升级”。

①并不是所有的维表都直接与事实表关联,存在相当多更细粒度的维表不直接与事实表关联,而是建立在维表之上的。

②雪花模型的这一升级正式基于“数据最小冗余”的原则去升级星型模型的。

③数据最小冗余带来的好处:最大限度地减小了数据仓库的存储量,最大限度地提升了数据查询效率。

12、星型模型与雪花模型的区别

  星型模型 雪花模型
查询性能 因为数据冗余,常常不需要表连接,因此查询效率会高 因为数据存在不同的维表中,需要表连接,因此查询效率会低
冗余程度 数据冗余程度大 数据冗余程度小
使用情况 因为效率高而使用的多 相对使用的较少
规范 非正规的结构,但是由于ETL规则简单,可以实现高度并行化 有正规的数据ETL规则,实现起来更复杂,所以不能实现并行化

13、数据仓库和数据集市

①数据仓库(DataWarehouse)是企业所有业务数据的集合。

②数据集市(DataMarket)只是数据仓库(DataWarehouse)的一个子集,只是企业某条业务线的数据集合。

14、

原创文章 60 获赞 39 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u012556994/article/details/106071197