数据库分层图
数据库各层的功能解析
ODS:元数据层,对于原始数据的一个备份
DWD:数据明细层,对数据的一个清洗(判空过滤,去除脏数据),保存业务事实明细,一行数据代表用户的一次业务行为。如:一次下单。
ADS:数据应用层,为各种报表提供数据支持。
DIM:维度层,对数据的维度建模主要是业务事实信息的描述。何人,何时,何地
DWS:服务数据层,按天进行轻度汇总。一行信息代表一个主题对象的一天汇总行为。
DWT:主题数据层,数据累计汇总,一行信息代表一个主题对象的一段时间数据的累计汇总。
为什么要数据分层:
隔离原始数据:对数据进行备份,解耦(将原始数据和统计数据据解耦开)。
减少重复开发:规范数据分层,通过中间层数据,减少数据的重复开发,一次计算多次复用。
把复杂任务简单化: 把任务分层处理,每层只处理简单问题。方便问题的定位。
命名规范
- 表名
Ø ODS层命名为ods_表名
Ø DIM层命名为dim_表名
Ø DWD层命名为dwd_表名
Ø DWS层命名为dws_表名
Ø DWT层命名为dwt_表名
Ø ADS层命名为ads_表名
Ø 临时表命名为tmp_表名
- 脚本名
数据源_to_目标_db/log.sh
行为数据:log
业务数据:db - 字段类型
金钱:decimal(16,2), edit:16表示16位有效数字,2表示,其中小数部分为2位
数量:bigint
时间戳类型:bigint
主外键类型为:string
建模理论
关系建模
遵循三范式
属性不可切
部分函数依赖不可有
非主键不可部分函数依赖于主键传递函数依赖不可有
非主键不可传递函数依赖于主键
维度建模
维度表
对事实的描述。包含大量属性。
事实表
业务事件
维度表的外键+度量值
- 事实表的类型分类:
- 事务型事实表
使用增量同步 - 周期型快照事实表
使用全量同步 - 累积周期性快照事实表
使用增量修改同步
业务总线矩阵
事实\维度 | 时间 | 用户 | 地区 | 商品 | 优惠券 | 活动 | 度量值 |
---|---|---|---|---|---|---|---|
订单 | √ | √ | √ | 运费,优惠金额 | |||
订单明细 | √ | √ | √ | √ | √ | √ | 商品件数,订单金额,优惠金额 |
支付 | √ | √ | √ | 支付金额 | |||
加购 | √ | √ | √ | 商品件数,金额 | |||
收藏 | √ | √ | √ | 收藏次数(1) | |||
退单 | √ | √ | √ | 商品件数,退单金额 | |||
退款 | √ | √ | √ | 商品件数,退款金额 | |||
评价 | √ | √ | √ | 评价次数(1) | |||
优惠券领用 | √ | √ | √ | 领券次数(1) |
- 理解没有