数据仓库理论

1、数据库和数据仓库区别

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

联机事务处理OLTP(On-Line Transaction Processing)

              传统数据库的增、删、改、查。

联机分析处理OLAP(On-Line Analytical Processing)

            数据仓库的数据分析。

 

2、数仓建模的2套理论

范式建模和维度建模

范式建模是面向应用,遵循第三范式,以消除数据冗余为目标的设计技术。

3NF建模:

1)每个属性的值唯一,不具有多义性; 即数据不可分割

2) 每个非主属性必须完全依赖于整个主键,而非主键的一部分。一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来,即不能存在部分依赖

3)每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。即消除传递依赖.

维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。

3、星型模型与雪花模型区别

星型模型:即由一个事实表和一组维度表组成,每个维表都有一个维度作为主键。事实表居中,多个维表呈辐射状分布在四周,并与事实表关联,形成一个星型结构

雪花模型:在星型模型的基础上,基于范式理论进一步层次化,将某些维表扩展成事实表,最终形成雪花状结构

星座模型:基于多个事实表,共享一些维度表

星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下星型模型效率比雪花型模型要高。

星型结构不用考虑很多正规化的因素,设计与实现都比较简单。

雪花模型由于去除了冗余,有些统计就需要通过表的联接才能产生,所以效率不一定有星型模型高,但是设计上比较规范。

正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的 ETL、以及后期的维护都要复杂一些。

因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。

4、数仓分层

ODS(Operation Data Store)层:数据操作层,存储原始数据。

DWD层:数据明细层,是由ODS层进行数据清洗而来的,一般是通过 MR/hive + UDF对这一层的数据时行脏数据的清先,并且将非结构化数据变成结构化数据。

DWS层:数据汇总层,这里把DWD层的数据进行JOIN形成汇总的数据(轻度join),以便下一层进行统计,另外还可能涉及到写UDF做业务字段的转换。

DWS层会形成宽表(带有数据冗余,字段多,维度多)

        如果在这层直接出指标,会查询多余的数据。

ADSApplication Data Service)层:数据应用层,用于存储应用的数据。

         为了能快速出报表,可以在ADS层搞个DM(数据集市)

      DM(数据集市)

      以某个应用为出发点而建设的局部DW,在这里可以理解为 为分析指标建设跟指标相关的数据集合。

5、数仓分层的好处

清晰数据结构、数据来源追踪、减少重复开发、把复杂问题简单化等。

6、数仓数据来源有哪些?

业务库数据源:mysql,oracle,mongo

日志数据:nginx日志,埋点日志

爬虫数据

7、全量表,增量表及拉链表的理解

全量表: 每天的所有的最新状态的数据。

1、全量表,有无变化,都要报

2、每次上报的数据都是所有的数据(变化的 + 没有变化的)

增量表:新增数据,增量数据是上次导出之后的新数据。

1、记录每次增加的量,而不是总量;

2、增量表,只报变化量,无变化不用报

3、业务库表中需有主键及创建时间,修改时间

拉链表:维护历史状态,以及最新状态数据

适用情况:

1.数据量比较大

2.表中的部分字段会被更新

3.需要查看某一个时间点或者时间段的历史快照信息

    查看某一个订单在历史某一个时间点的状态

    某一个用户在过去某一段时间,下单次数

4.更新的比例和频率不是很大

    如果表中信息变化不是很大,每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费

优点

1、满足反应数据的历史状态

2、最大程度节省存储

8、大数据私房菜数据仓库理论总结

原文地址:https://www.cnblogs.com/yangms/p/14000942.html