码迷,mamicode.com
首页 > 其他好文 > 详细

大数据实战(四十六):电商数仓(二十九)之系统业务数据仓库(二)数仓理论(面试重点)

时间:2020-08-28 11:48:03      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:计时   数据库设计   返回   mic   目的   image   join   整理   实体   

1 表的分类

 

1.1 实体表

 

实体表,一般是指一个现实存在的业务对象,比如用户,商品,商家,销售员等等。

 

用户表:

 

用户id

姓名

生日

性别

邮箱

用户等级

创建时间

1

张三

2011-11-11

zs@163.com

2

2018-11-11

2

李四

2011-11-11

ls@163.com

3

2018-11-11

3

王五

2011-11-11

中性

ww@163.com

1

2018-11-11

 

 

 

 

1.2 维度表

维度表,一般是指对应一些业务状态,编号的解释表。也可以称之为码表。

比如地区表,订单状态,支付方式,审批状态,商品分类等等。

订单状态表:

订单状态编号

订单状态名称

1

未支付

2

支付

3

发货中

4

已发货

5

已完成

商品分类表:

商品分类编号

分类名称

1

服装

2

保健

3

电器

4

图书

1.3 事务型事实表

事务型事实表,一般指随着业务发生不断产生数据。特点是一旦发生不会再变化。

一般比如,交易流水,操作日志,出库入库记录等等。

交易流水

编号

对外业务编号

订单编号

用户编号

支付宝交易流水编号

支付金额

交易内容

支付类型

支付时间

1

7577697945

1

111

QEyF-63000323

223.00

海狗人参丸1

alipay

2019-02-10 00:50:02

2

0170099522

2

222

qdwV-25111279

589.00

海狗人参丸2

wechatpay

2019-02-10 00:50:02

3

1840931679

3

666

hSUS-65716585

485.00

海狗人参丸3

unionpay

2019-02-10 00:50:02

。。。

。。。

。。。

。。。

。。。

。。。

。。。

。。。

。。。

1.4 周期型事实表

周期型事实表,一般指随着业务发生不断产生变化(更新, 新增)的数据。

与事务型不同的是,数据会随着业务周期性的推进而变化。

 比如订单,其中订单状态会周期性变化。再比如,请假、贷款申请,随着批复状态在周期性变化。

订单表:

订单编号

订单金额

订单状态

用户id

支付方式

支付流水号

创建时间

操作时间

1

223.00

2

111

alipay

QEyF-63000323

2019-02-10 00:01:29

2019-02-10 00:01:29

2

589.00

2

222

wechatpay

qdwV-25111279

2019-02-10 00:05:02

2019-02-10 00:05:02

3

485.00

1

666

unionpay

hSUS-65716585

2019-02-10 00:50:02

2019-02-10 00:50:02

。。。

。。。

。。。

。。。

。。。

。。。

。。。

。。。

2 同步策略

 

数据同步策略的类型包括:全量表、增量表、新增及变化表、拉链表

 

  • 全量表:存储完整的数据。
  • 增量表:存储新增加的数据
  • 新增及变化表:存储新增加的数据和变化的数据。
  • 拉链表:对新增变化表做定期合并

 

2.1 实体表同步策略

 

实体表:比如用户,商品,商家,销售员等

 

实体表数据量比较小:通常可以做每日全量,就是每天存一份完整数据。即每日全量。

2.2 维度表同步策略

维度表:比如订单状态,审批状态,商品分类

维度表数据量比较小:通常可以做每日全量,就是每天存一份完整数据。即每日全量。

说明

1)针对可能会有变化的状态数据可以存储每日全量。

2)没变化的客观世界的维度(比如性别,地区,民族,政治成分,鞋子尺码)可以只存一份固定值。

2.3 事务型事实表同步策略

事务型事实表:比如,交易流水,操作日志,出库入库记录等。

因为数据不会变化,而且数据量巨大,所以每天只同步新增数据即可,所以可以做成每日增量表,即每日创建一个分区存储

 

2.4 周期型事实表同步策略

 

周期型事实表:比如,订单、请假、贷款申请等

 

这类表从数据量的角度,存每日全量的话,数据量太大,冗余也太大。如果用每日增量的话无法反应数据变化。

 

 每日新增及变化量,包括了当日的新增和修改。一般来说这个表,足够计算大部分当日数据的。但是这种依然无法解决能够得到某一个历史时间点(时间切片)的切片数据。 

 

 所以要用利用每日新增和变化表,制作一张拉链表,以方便的取到某个时间切片的快照数据。所以我们需要得到每日新增及变化量。

 

拉链表

 

name姓名

start新名字创建时间

end名字更改时间

张三

1990/1/1

2018/12/31

张小三

2019/1/1

2019/4/30

张大三

2019/5/1

9999-99-99

。。。

。。。

。。。

 

select * from user where start =<’2019-1-2’ and end>=’2019-1-2’

 

 

 

 

3 范式理论

 

3.1 范式概念

 

关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性,目前业界范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)。

 

范式可以理解为设计一张数据表的表结构,符合的标准级别。

 

 使用范式的根本目的是:

 

  1)减少数据冗余,尽量让每个数据只出现一次。

 

  2)保证数据一致性

 

 缺点是获取数据时,需要通过Join拼接出最后的数据。

3.2 函数依赖

技术图片

 

3.3 三范式区分

技术图片

 

 技术图片

 

 技术图片

4 关系建模与维度建模

 

  • 关系模型

技术图片

 

 

关系模型主要应用与OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。

  • 维度模型

技术图片

 

 

 

维度模型主要应用于OLAP系统中,因为关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。

所以把相关各种表整理成两种:事实表和维度表两种。所有维度表围绕着事实表进行解释。

  • OLAPOLTP对比

对比属性

OLTP

OLAP

读特性

每次查询只返回少量记录

对大量记录进行汇总

写特性

随机、低延时写入用户的输入

批量导入

使用场景

用户,Java EE项目

内部分析师,为决策提供支持

数据表征

最新数据状态

随时间变化的历史状态

数据规模

GB

TP到PB

5 雪花模型、星型模型和星座模型

在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。

技术图片

 

 技术图片

 

大数据实战(四十六):电商数仓(二十九)之系统业务数据仓库(二)数仓理论(面试重点)

标签:计时   数据库设计   返回   mic   目的   image   join   整理   实体   

原文地址:https://www.cnblogs.com/qiu-hua/p/13543761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!