基于全量SQL的增量计算方法、装置及电子设备与流程
本申请主要涉及大数据,尤其涉及一种基于全量sql的增量计算方法、装置及电子设备。
背景技术:
1、在数据工场等数据处理平台中,开发人员通常会编写全量业务sql来表达数据清洗、过滤、关联、聚合等业务逻辑,使系统按调度周期执行全量计算。全量计算需要对源表执行全量扫描、全量关联和全量聚合,随着数据量增长,计算资源消耗和执行时延持续增加,难以满足高频更新的时效性要求。为提升数据处理效率,现有技术一般采用人工编写增量sql的方式来单独维护一套增量逻辑,即同一业务逻辑需要同时维护全量sql和增量sql两套逻辑,但这种方式不但开发门槛和维护成本高,而且随着业务迭代容易发生语义漂移,导致全量结果与增量结果不一致。
技术实现思路
1、本申请的目的在于提供一种基于全量sql的增量计算方法、装置及电子设备,用以克服背景技术中人工编写增量sql存在的开发门槛和维护成本高、双套逻辑易发生语义漂移而导致结果不一致的问题。
2、在第一方面,本申请提供了一种基于全量sql的增量计算方法,包括以下步骤:s1,接收目标表的全量业务sql,将所述全量业务sql解析为抽象语法树,根据所述抽象语法树生成由多个逻辑算子构成的全量执行计划;s2,遍历所述全量执行计划中的逻辑算子,针对逻辑算子按照所述逻辑算子的类型匹配对应的增量传播规则,将所述增量传播规则应用于所述逻辑算子以将所述逻辑算子的处理逻辑从全量计算改写为增量计算,形成增量执行计划;s3,为所述增量执行计划中的逻辑算子维护中间状态和索引;s4,接收源表变更事件,将所述源表变更事件转换为标准变更事件,并识别所述标准变更事件的类型,所述类型包括插入事件、删除事件和更新事件,所述更新事件对应于删除子事件和插入子事件,所述插入事件对应于插入子事件,所述删除事件对应于删除子事件,所述删除子事件表示撤回旧记录对结果的贡献,所述插入子事件表示写入新记录对结果的贡献;s5,基于所述删除子事件和/或插入子事件涉及的主键和关联键确定受影响的逻辑算子,在所述受影响的逻辑算子内根据所述增量传播规则处理所述删除子事件和/或所述插入子事件,并通过所述索引更新所述中间状态,以生成所述受影响的逻辑算子的局部变化;s6,将所述局部变化传递给所述受影响的逻辑算子的后继算子,由所述后继算子根据所述增量传播规则生成新的局部变化,重复传递,直至在输出算子处生成所述目标表的结果变更事件。
3、在第二方面,本申请提供了一种基于全量sql的增量计算装置,包括:sql解析模块,配置成接收目标表的全量业务sql,将所述全量业务sql解析为抽象语法树,根据所述抽象语法树生成由多个逻辑算子构成的全量执行计划;增量改写模块,配置成遍历所述全量执行计划中的逻辑算子,针对逻辑算子按照所述逻辑算子的类型匹配对应的增量传播规则,将所述增量传播规则应用于所述逻辑算子以将所述逻辑算子的处理逻辑从全量计算改写为增量计算,形成增量执行计划;状态维护模块,配置成为所述增量执行计划中的逻辑算子维护中间状态和索引;事件接入模块,配置成接收源表变更事件,将所述源表变更事件转换为标准变更事件,并识别所述标准变更事件的类型,所述类型包括插入事件、删除事件和更新事件,所述更新事件对应于删除子事件和插入子事件,所述插入事件对应于插入子事件,所述删除事件对应于删除子事件,所述删除子事件表示撤回旧记录对结果的贡献,所述插入子事件表示写入新记录对结果的贡献;增量执行模块,配置成基于所述删除子事件和/或插入子事件涉及的主键和关联键确定受影响的逻辑算子,在所述受影响的逻辑算子内根据所述增量传播规则处理所述删除子事件和/或所述插入子事件,并通过所述索引更新所述中间状态,以生成所述受影响的逻辑算子的局部变化;以及,结果输出模块,配置成将所述局部变化传递给所述受影响的逻辑算子的后继算子,由所述后继算子根据所述增量传播规则生成新的局部变化并继续传递,直至在输出算子处生成所述目标表的结果变更事件。
4、第三方面,本申请提供了一种电子设备,包括:一个或多个处理器;以及耦合到一个或多个处理器并在其上存储指令的一个或多个存储器;当指令由一个或多个处理器单独或共同执行时,使所述电子设备执行上述第一方面的方法。
5、第四方面,本申请提供了一种存储有机器可执行指令的非瞬时计算机可读存储介质,所述机器可执行指令当被机器的一个或多个处理器执行时,使所述机器执行上述第一方面的方法。
6、与背景技术相比,本技术方案具有以下有益效果:
7、本技术方案通过基于全量业务sql自动生成可执行的增量执行计划,使得同一业务逻辑不再需要单独维护一套增量sql,可以避免双套逻辑易发生语义漂移而导致结果不一致的问题;通过按逻辑算子的类型匹配对应的增量传播规则,确保增量执行计划的自动生成可以长期复用,降低了开发门槛和维护成本;通过构建中间状态和索引确定受影响的逻辑算子,避免无关数据参与关联、聚合等计算环节,提升增量计算的效率;通过将插入事件、删除事件和更新事件统一为删除子事件和插入子事件两种基本操作,使后续所有逻辑算子仅需处理删除和插入两类子事件,各算子无需单独处理更新逻辑,从而避免规则不一致和结果遗漏。
1.一种基于全量sql的增量计算方法,其特征在于,包括以下步骤:
2.如权利要求1所述的方法,其特征在于,在步骤s2中,所述增量传播规则包括以下至少一种:
3.如权利要求1所述的方法,其特征在于,在步骤s4中,所述标准变更事件包括源表标识、事件类型、主键、事务位点或版本号、变更前镜像、变更后镜像和事件时间。
4.如权利要求1所述的方法,其特征在于,在步骤s4中,从数据库binlog、日志订阅、消息队列、表格式存储的变更日志和应用侧事件流中的任一或多个数据源中接收所述源表变更事件。
5.如权利要求1所述的方法,其特征在于,在步骤s3中,进一步维护结果键、来源键和血缘映射关系,其中所述结果键标识所述目标表或中间结果中的记录,所述来源键标识源表或上游逻辑算子输出中的记录,所述血缘映射关系记录所述来源键与所述结果键之间的对应关系。
6.如权利要求1所述的方法,其特征在于,在步骤s2中,当所述全量执行计划中存在未被所述增量传播规则覆盖的语法结构时,确定所述语法结构对应的子执行计划,对所述子执行计划执行局部批重算,并对所述全量执行计划中的其余子执行计划应用所述增量传播规则进行改写。
7.如权利要求1所述的方法,其特征在于,步骤s6之后,还包括:将所述结果变更事件以upsert、撤回流、变更流、快照表或订阅事件的形式写入目标存储。
8.一种基于全量sql的增量计算装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:一个或多个处理器;以及耦合到一个或多个处理器并在其上存储指令的一个或多个存储器;当指令由一个或多个处理器单独或共同执行时,使所述电子设备执行如权利要求1-7中任一项所述的方法。
10.一种存储有机器可执行指令的非瞬时计算机可读存储介质,其特征在于,所述机器可执行指令当被机器的一个或多个处理器执行时,使所述机器执行如权利要求1-7中任一项所述的方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com