京东商智_加速策略支持查询现关联技术架构

京东商智_加速策略支持查询现关联技术架构

一、背景

当前现状从hive开始配置了扩维之后,再配置介质加速和预计算加速策略,会在生产过程中会使用生产日期维表进行关联生产,查询历史周期数据时只能得到历史快照维度数据。一些指标服务定义驱动用户从hive层开始配置扩充缓慢变化维度和加速策略,在部分业务场景下希望每次查询获取最新维度数据而不是历史快照维度数据。

img

业务case:商智合并业务场景中,子品牌为事实维度,主品牌为缓慢变化关联维度。用户使用主品牌进行数据筛选查询,需要事实明细数据按子品牌轻聚合后,关联出最新主品牌进行筛选和聚合(商智合并版-品牌筛选2.0)。

二、核心改动

维表复用

多个hive事实表关联相同hive维表时,在相同目标数据源下只生成一张clickhouse目标维表,多个ck事实表复用同一个ck关联维表。每次新建加速策略或编辑加速策略时都要从全局看对应ck目标维表是否需要新增、是否需要新增字段。

双维表提升性能

同一个目标数据源下自动化生成两张clickhouse目标逻辑表实现 (关联维表 & 字典维表)和事实表绑定关联关系,其中字典表基于关联维表创建,主要用于提升数据查询性能。注意此处不强制要求事实表和维度表的分片键相同,那么每个节点上的维表都需要存储全量维度数据。在维表较大的情况下这种方案不太适用。

维表变更退化

当加速策略共用的维表schema变更时,对应字典维表的可用时间初始化(即可用绝对时间删除,因为字典表的特性表schema变更,需要删除重建),数据查询退化为使用关联维表进行查询。

预计算复用明细

预计算加速策略中间clickhouse明细物理表可以复用存量介质加速目标clickhouse明细物理表,需要满足相同数据源、介质加速字段完全覆盖预计算加速策略字段、介质加速ttl大于预计算ttl这3个条件。预计算加速策略不是在新建加速策略是判断能否复用介质加速明细表,而是在每次生产任务调度时判断能否复用介质加速明细表。

先新建介质加速再新建轻聚合时的复用链路

img

先新建轻聚合再新建介质加速时的复用链路

img

调度编排依赖

一张事实表关联一张维表情况下的查询现关联预计算生产任务生成四个逻辑编排记录,分别为:事实中间明细表同步、维表分布式表同步(对应关联维表)、事实表轻聚合、字典表加载(对应字典维表)

img

事实表轻聚合如果复用介质加速明细表,依赖明细表数据分区数据,主要有如下四种依赖场景:

  1. 介质加速已完成分区满足轻聚合时间范围则直接进入事实表轻聚合阶段;

  2. 介质加速部分分区运行中则进行等待;

  3. 介质加速部分分区待编排则进行编排合并;

  4. 介质加速部分分区缺失则进行明细同步子项生成与编排合并。

img