实时技术之流式数据模型

实时建模与离线建模类似,也需要对数据进行建模,进行数据分层处理

数据分层:
1)ODS层:与离线系统类似,操作数据层。记录了原始数据的变更过程,例如订单变更数据以及服务器日志数据

2)DWD层:实时明细层,对于没有上下文关系的数据会回流到离线系统,保证了ODS层与DWD层数据一致性

3)DWS层:通用维度数据汇总层,供各业务共同使用

4)ADS层:个性化维度会汇总层,针对单个业务所关注的维度各指标数据

5)DIM层:实时维度层,从离线维度层导出,所有的ETL工作在离线系统中完成
实时技术之流式数据模型_第1张图片
举个例子:对于一个电子商城数据的存储如下:

① ODS层:订单的变更记录,一笔订单对应多条记录

② DWD层:订单的支付记录,一笔订单只有一条记录

③ DWS层:卖家实时成交金额,一个卖家一条记录并且实时更新

④ ADS层:外卖业务的实时成交金额,只有外卖业务使用

⑤ DIM层:订单商品类目和行业维度表

多流关联:
多流关联即实时计算过程中把两个实时流进行主键关联,以得到对应结果数据。

1)主要问题:

① 实时数据到达不同于离线计算的任务在启动时已经获取了表中全量数据,实时数据是增量的

② 数据到达时间是不确定和无序的

2)多流关联过程:以订单信息与支付信息为例

实时技术之流式数据模型_第2张图片
① 实时采集两张表,每有一条数据到达在对方表的截至当前全量数据中查询,如果找到则关联成功,输出

② 查找失败,则把数据放在内存中等待

③ 不论关联成功与否都需要在外部存储备份数据,便于内存中数据的恢复

④ 考虑到性能,实时关联一般会按照关联的主键进行分桶处理以提高执行效率

维表使用:
在离线系统中一般根据业务分区来关联事实表和维度表(维度表的全量数据已经就绪),而在实时计算过程中一般使用实时数据(T)和维表(T-2)去关联。

1)使用T-2的维表的原因:

① 关联的维表一般使用静态表,当零点到达时,T-1的维表数据无法加工完成

② 大部分业务的维表在两天之内的变化很少,两天的延迟可以接受

③ 如果使用实时维表,需要T-1的全量数据+当日实时数据,涉及多流关联,效率降低

2)维表的加载:

① 维表数据量较小,如几万条数据,直接全部加载到内存,执行效率极高

② 维表数据量较大,如几亿条数据,使用增量查找或者LRU算法,把热门数据保留在内存中

你可能感兴趣的:(大数据)