数仓建设的思路流程:
1 梳理业务流程
2 梳理数据流
3 数据类型、存储介质、样例数据
4 需求-功能性需求、非功能性需求(性能、时效性)
-------------------------------------数据来源
rdbms
log
nginx
https third api mongoDB :第三方数据http请求,访问第三方API, 第三方数据可能存储在mongoDB中
----------------------------------------数据采集方案
mysql
1,表的数据量、每日增量、updated_ time \created time, 自增的id,源表的索引情况
--split-by id
--split-by updated time
select min(id) , max(id) from tab where ...
2,数据采集方案
增量(流水、updated)、全量
user:全量采集
申请授信:增量采集
额度:全量采集
借款、还款计算:增量采集
-------------------------------------------数据仓库模型设计
1.维度建模
===============================================================================
一、为什么构建数据仓库?
业务系统和分析系统分离(不可能在业务系统去分析吧!)
数据源来自多个系统,跨系统整合分析很难
为企业决策做依据
-------
数据仓库的定义:
1、面向主题的
2、集成的(数据来源多方)
消除不一致的现象
需要考虑的问题: 数据格式 计量单位 数据代码含义混乱 数据名称混乱
3、非易失的(指的是数据一旦进入数据仓库,数据就不应该再有改变,数据基本是静态的;也有变化的,看业务,如scd)
4、随变的(反映历史变化的数据集合)
电商交易频繁的可能是2年。金融一般客户类、账户类等 信息要保留7年,交易类流水类信息要保留至少13个月以上,保险行业交易比较少的5年;
太老的数据对于数据 分析没多大作用,你想10年前的电商交易数据对于现在的电商能有多大帮助,价格、产品、用户都已经完全不同了
保留历史数据时长2年:
basic(tmp):(七天)
ods(30天,每天都会备份到其它)
dw(1年,每天都会备份到其它)
--------
数据库与数据仓库的区别:
数据库是面向事务的设计,数据仓库是面向主题设计。
数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有 意引入冗余,采用反范式的方式来设计。
数据库是为捕获和存储数据而设计,数据仓库是为分析数据而设计
二、数仓的建设流程
数仓构建:确认主题,确认粒度,确认维度事实
建模产品业务部门做的,已经界定好;从中我们得出主题都包含哪些!
------
1)业务建模 :(确定系统规范、建设目标,时间节点),架构选型,主题,泛泛的表关系
如.操作出现的频率,即业务部门每隔多长时间做一次查询分析。
∙在系统中需要保存多久的数据,是一年、两年还是五年、十年。
∙用户查询数据的主要方式,如在时间维度上是按照自然年(12月31结束),还是财政年(顺延12个月)。
∙用户所能接受的响应时间是多长、是几秒钟,还是几小时。
2)领域建模(概念建模) : 抽取关键业务概念,并将之抽象化,E-R图(实体关系属性)
概念建模建模步骤
局部模型 ① 确定局部概念模型的范围; ② 定义实体; ③ 定义联系; ④ 确定属性; ⑤ 逐一画出所有的局部ER图,并附以相应的说明文件。
全局模型 建立全局E‐R图的步骤如下: ① 确定公共实体类型