基于延迟求值的数据更新方法、系统、设备及存储介质与流程

摘要: 本技术涉及数据处理,尤其涉及基于延迟求值的数据更新方法、系统、设备及存储介质。背景技术:1、随着数据湖、数据仓库及分布式列式存储技术的发展,越来越多的业务数据以...
基于延迟求值的数据更新方法、系统、设备及存储介质与流程

本技术涉及数据处理,尤其涉及基于延迟求值的数据更新方法、系统、设备及存储介质。

背景技术:

1、随着数据湖、数据仓库及分布式列式存储技术的发展,越来越多的业务数据以列式文件形式存储于分布式文件系统或对象存储中,以满足大规模数据分析、实时数仓、用户画像、风控处理及合规数据治理等应用需求。在上述场景中,系统通常需要对已经持久化的历史数据执行条件更新操作,例如根据时间范围、金额阈值、用户状态或业务规则对批量数据进行字段修正、状态标记或特征回刷。现有的apache iceberg、apache hudi等数据湖表格式或数据湖管理框架虽然能够支持一定形式的更新、删除或合并操作,但由于列式存储文件通常不适合原地修改,当需要更新其中部分数据时,仍往往需要通过写时复制、读时合并、增量日志、事务日志或索引等方式处理数据变更。

2、上述方式虽然能够实现数据更新或版本管理,但在大规模条件更新场景下仍存在一定不足:一方面,若在更新阶段即执行数据扫描和文件重写,则即使实际待更新数据仅占较小比例,也可能引发较大的写入放大和较高的更新延迟,使更新操作与写入路径强耦合;另一方面,若将更新内容以日志形式延后合并,则读取阶段可能需要加载并合并较多更新记录,读取性能容易随日志数量增加而下降。此外,现有方式通常难以充分利用更新条件本身与读取条件之间的语义关系,对读取请求是否实际涉及更新范围进行判断,也难以在读取过程中对明显无关的更新日志记录、数据文件或数据行进行提前跳过,导致与当前读取请求无关的数据或更新语义仍可能参与解码、判断或合并处理。

3、因此,如何在保证更新结果可见性的同时,降低大规模条件更新中的数据重写开销、读取合并开销以及不必要的数据解码和条件判断开销,成为需要解决的技术问题。

技术实现思路

1、为解决上述技术问题,本技术提供一种基于延迟求值的数据更新方法,包括:

2、响应于针对目标数据集合的数据更新请求,获取所述数据更新请求中的更新条件和更新赋值;

3、将所述更新条件转换为用于表征待更新数据范围的谓词表达式,并将所述更新赋值转换为用于表征待更新字段与对应更新内容之间关联关系的赋值映射;

4、基于所述谓词表达式和所述赋值映射生成独立于所述目标数据集合中的基础数据的更新日志记录,并对所述更新日志记录进行持久化;

5、在从所述目标数据集合读取数据时,根据读取请求对应的读取条件与已持久化的所述更新日志记录中的谓词表达式,确定所述更新日志记录对所述读取请求的适用关系,并根据所述适用关系确定读取结果。

6、根据本技术提供的基于延迟求值的数据更新方法,将所述更新条件转换为用于表征待更新数据范围的谓词表达式,包括:

7、对所述更新条件进行解析,以确定所述更新条件所包含的条件字段、条件运算关系和条件取值,并在所述更新条件包括多个子条件时,确定所述多个子条件之间的逻辑连接关系;

8、基于解析结果生成所述谓词表达式,所述谓词表达式具有层级结构,且包括比较谓词、逻辑与谓词、逻辑或谓词、逻辑非谓词、范围谓词和集合谓词中的至少一种。

9、根据本技术提供的基于延迟求值的数据更新方法,将所述更新赋值转换为用于表征待更新字段与对应更新内容之间关联关系的赋值映射,包括:

10、对所述更新赋值进行解析,以确定所述更新赋值中的待更新字段以及与所述待更新字段对应的更新内容;

11、基于所述待更新字段和所述更新内容生成所述赋值映射,所述赋值映射包括所述待更新字段的字段标识与所述更新内容之间的映射关系;

12、其中,所述更新内容包括常量、参数值、赋值表达式或基于所述目标数据集合中的已有字段的运算表达式中的至少一种。

13、根据本技术提供的基于延迟求值的数据更新方法,基于所述谓词表达式和所述赋值映射生成独立于所述目标数据集合中的基础数据的更新日志记录,并对所述更新日志记录进行持久化,包括:

14、对所述谓词表达式进行序列化处理,得到谓词表达式数据,并对所述赋值映射进行序列化处理,得到赋值映射数据;

15、基于所述谓词表达式数据和所述赋值映射数据生成独立于所述基础数据的更新日志记录,所述更新日志记录还包括所述目标数据集合的集合标识、所述数据更新请求对应的更新标识、更新序列号以及日志状态信息中的至少一种;

16、将所述更新日志记录进行持久化存储。

17、根据本技术提供的基于延迟求值的数据更新方法,确定所述更新日志记录对所述读取请求的适用关系,包括:

18、根据所述读取请求对应的读取条件与所述更新日志记录中的谓词表达式,判断所述读取请求所指向的数据范围与所述谓词表达式所表征的待更新数据范围之间的关系,其中,所述读取请求所指向的数据范围根据所述读取条件确定,所述读取请求对应的待读取字段根据所述读取请求中的读取投影字段确定;

19、当判断结果表明所述读取请求所指向的数据范围与所述待更新数据范围没有交集时,确定所述适用关系为第一适用关系;

20、当判断结果表明所述读取请求所指向的数据范围被所述待更新数据范围覆盖时,确定所述适用关系为第二适用关系;

21、当判断结果表明所述读取请求所指向的数据范围与所述待更新数据范围部分相交时,确定所述适用关系为第三适用关系。

22、根据本技术提供的基于延迟求值的数据更新方法,根据所述适用关系确定读取结果,包括:

23、当所述适用关系为所述第一适用关系时,按照所述读取请求对应的基础数据读取路径读取所述基础数据,得到所述读取结果;

24、当所述适用关系为所述第二适用关系时,基于所述赋值映射和所述读取请求,得到所述读取结果;

25、当所述适用关系为所述第三适用关系时,根据所述读取条件和所述谓词表达式确定相交读取范围和剩余读取范围,其中,所述相交读取范围对应同时满足所述读取条件和所述谓词表达式的数据范围,所述剩余读取范围对应满足所述读取条件且不属于所述相交读取范围的数据范围;

26、基于所述相交读取范围和所述赋值映射确定第一读取数据;

27、对于所述剩余读取范围对应的读取内容,根据所述读取条件、所述谓词表达式以及基础数据的统计信息确定候选基础数据,并基于所述候选基础数据确定第二读取数据;

28、基于所述第一读取数据和所述第二读取数据,得到所述读取结果。

29、根据本技术提供的基于延迟求值的数据更新方法,根据所述读取条件、所述谓词表达式以及基础数据的统计信息确定候选基础数据,包括:

30、根据所述剩余读取范围确定用于基础数据过滤的过滤条件;

31、基于基础数据对应的数据文件、行组或数据块的统计信息,判断所述数据文件、行组或数据块是否满足所述过滤条件;

32、当判断结果表明所述数据文件、行组或数据块不满足所述过滤条件时,跳过对应的数据文件、行组或数据块;

33、当判断结果表明所述数据文件、行组或数据块满足所述过滤条件时,将对应的数据文件、行组或数据块确定为所述候选基础数据。

34、根据本技术提供的基于延迟求值的数据更新方法,基于所述候选基础数据确定第二读取数据,包括:

35、对所述候选基础数据中的数据行进行行级判断;

36、当所述数据行满足所述剩余读取范围对应的过滤条件时,从所述候选基础数据中读取所述剩余读取范围对应的读取内容,得到所述数据行对应的基础读取数据;

37、当所述数据行不满足所述剩余读取范围对应的过滤条件时,跳过所述数据行;

38、基于所述基础读取数据确定所述第二读取数据。

39、根据本技术提供的基于延迟求值的数据更新方法,在基于所述统计信息判断所述数据文件、行组或数据块是否满足所述过滤条件,或者对所述候选基础数据中的数据行进行行级判断时,当对应的判断条件包括多个子判断条件时,按照所述多个子判断条件之间的逻辑连接关系进行短路判断,包括:

40、当所述逻辑连接关系包括逻辑与关系时,在确定任一子判断条件不满足后,停止对所述逻辑与关系下剩余子判断条件的判断,并确定所述逻辑与关系对应的判断结果为不满足;

41、当所述逻辑连接关系包括逻辑或关系时,在确定任一子判断条件满足后,停止对所述逻辑或关系下剩余子判断条件的判断,并确定所述逻辑或关系对应的判断结果为满足。

42、根据本技术提供的基于延迟求值的数据更新方法,在获取所述数据更新请求中的更新条件和更新赋值之后,还包括:

43、判断所述数据更新请求是否属于延迟求值更新请求;

44、当所述数据更新请求属于所述延迟求值更新请求时,执行将所述更新条件转换为所述谓词表达式、将所述更新赋值转换为所述赋值映射以及生成所述更新日志记录的步骤;

45、其中,所述延迟求值更新请求为主键等值更新请求之外的更新请求,所述主键等值更新请求为根据所述目标数据集合的主键字段等值定位待更新数据的更新请求。

46、根据本技术提供的基于延迟求值的数据更新方法,还包括:

47、当满足日志归并条件时,根据处于有效状态的更新日志记录确定初始待归并基础数据文件;

48、基于所述更新日志记录中的谓词表达式以及所述初始待归并基础数据文件对应的统计信息或文件范围信息,对所述初始待归并基础数据文件进行语义剪枝,确定待归并基础数据文件;

49、获取所述待归并基础数据文件中的待归并基础数据以及与所述待归并基础数据文件对应的多个更新日志记录;

50、按照所述多个更新日志记录各自对应的更新序列号,基于所述多个更新日志记录对应的谓词表达式和赋值映射对所述待归并基础数据进行更新处理,得到归并更新后的基础数据;

51、基于所述归并更新后的基础数据生成新的基础数据文件,并提交指向所述新的基础数据文件的新数据快照;

52、在所述新数据快照提交完成后,将所述多个更新日志记录的日志状态由有效状态更新为已应用状态。

53、根据本技术提供的基于延迟求值的数据更新方法,所述日志归并条件包括以下至少一种:

54、所述目标数据集合、基础数据文件或数据范围对应的处于有效状态的更新日志记录数量达到预设数量阈值;

55、所述目标数据集合中的基础数据文件大小达到预设文件大小阈值;

56、所述目标数据集合中的基础数据文件或数据范围的访问频率达到预设访问频率阈值。

57、根据本技术提供的基于延迟求值的数据更新方法,基于所述更新日志记录中的谓词表达式以及所述初始待归并基础数据文件对应的统计信息或文件范围信息,对所述初始待归并基础数据文件进行语义剪枝,确定待归并基础数据文件,包括:

58、根据所述更新日志记录中的谓词表达式确定更新范围信息;

59、根据所述初始待归并基础数据文件对应的统计信息或文件范围信息,判断所述初始待归并基础数据文件与所述更新范围信息之间是否不存在交集、存在交集或可能存在交集;

60、当判断结果表明所述初始待归并基础数据文件与所述更新范围信息不存在交集时,在日志归并处理中跳过所述初始待归并基础数据文件;

61、当判断结果表明所述初始待归并基础数据文件与所述更新范围信息存在交集或可能存在交集时,将所述初始待归并基础数据文件确定为所述待归并基础数据文件。

62、根据本技术提供的基于延迟求值的数据更新方法,所述更新日志记录包括日志状态信息,所述日志状态信息包括有效状态、已应用状态和已淘汰状态;

63、其中,处于所述有效状态的更新日志记录参与读取结果的确定;

64、处于所述已应用状态的更新日志记录表示其对应的更新内容已归并至基础数据;

65、处于所述已淘汰状态的更新日志记录用于归档保存或者清理。

66、根据本技术提供的基于延迟求值的数据更新方法,在从所述目标数据集合读取数据时,还包括:

67、确定所述读取请求对应的读取快照;

68、根据所述读取快照确定对所述读取请求可见的更新日志记录;

69、基于所述读取条件与所述可见的更新日志记录中的谓词表达式确定所述适用关系。

70、根据本技术提供的基于延迟求值的数据更新方法,在对所述更新日志记录进行持久化之前,还包括:

71、响应于多个数据更新请求并发提交,为所述多个数据更新请求分别分配更新序列号;

72、其中,所述更新序列号用于表征对应更新日志记录的应用顺序,使读取数据时按照所述更新序列号对应的顺序应用多个更新日志记录。

73、根据本技术提供的基于延迟求值的数据更新方法,根据所述适用关系确定读取结果,包括:

74、获取对所述读取请求可见的多个更新日志记录;

75、按照所述多个更新日志记录各自对应的更新序列号,对所述多个更新日志记录进行排序;

76、按照排序结果依次基于所述多个更新日志记录中的谓词表达式和赋值映射确定所述读取结果。

77、根据本技术提供的基于延迟求值的数据更新方法,按照排序结果依次基于所述多个更新日志记录中的谓词表达式和赋值映射确定所述读取结果之前,还包括:

78、对所述多个更新日志记录进行语义化简处理,所述语义化简处理包括谓词等价合并、谓词包含覆盖和谓词吞并消除中的至少一种;

79、其中,所述谓词等价合并包括:当两个更新日志记录的谓词表达式语法等价或语义等价,且所述两个更新日志记录的赋值映射相同时,在不改变读取结果的前提下,将所述两个更新日志记录合并为单个更新日志记录;

80、所述谓词包含覆盖包括:当第一更新日志记录的谓词表达式所表征的数据范围逻辑上包含第二更新日志记录的谓词表达式所表征的数据范围时,在读取结果确定过程中识别所述第一更新日志记录和所述第二更新日志记录之间的覆盖关系,并基于所述覆盖关系确定所述第一更新日志记录和所述第二更新日志记录中实际参与读取结果确定的更新日志记录,以减少被覆盖数据范围内的重复更新处理;

81、所述谓词吞并消除包括:当任一更新日志记录的谓词表达式覆盖所述目标数据集合的全部数据范围时,将所述任一更新日志记录确定为全量覆盖更新日志记录,并将所述全量覆盖更新日志记录针对相同待更新字段所覆盖的旧更新日志记录确定为可淘汰更新日志记录,或者确定为不参与读取结果确定的更新日志记录。

82、本技术还提供了一种基于延迟求值的数据更新系统,包括:

83、请求获取模块,用于响应于针对目标数据集合的数据更新请求,获取所述数据更新请求中的更新条件和更新赋值;

84、转换模块,用于根据所述请求获取模块获取的所述更新条件和所述更新赋值,将所述更新条件转换为用于表征待更新数据范围的谓词表达式,并将所述更新赋值转换为用于表征待更新字段与对应更新内容之间关联关系的赋值映射;

85、日志生成模块,用于根据所述转换模块得到的所述谓词表达式和所述赋值映射,生成独立于所述目标数据集合中的基础数据的更新日志记录,并对所述更新日志记录进行持久化;

86、读取结果确定模块,用于在从所述目标数据集合读取数据时,根据读取请求对应的读取条件与已持久化的所述更新日志记录中的谓词表达式,确定所述更新日志记录对所述读取请求的适用关系,并根据所述适用关系确定读取结果。

87、本技术还提供了一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时实现前述的基于延迟求值的数据更新方法。

88、本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现前述的基于延迟求值的数据更新方法。

89、与现有技术相比,本技术至少具有以下有益效果:

90、本技术通过将数据更新请求中的更新条件和更新赋值分别转换为谓词表达式和赋值映射,并进一步生成独立于基础数据的更新日志记录,使更新请求阶段无需立即扫描、定位并重写目标数据集合中的基础数据。对于数据湖、数据仓库或列式存储等基础数据通常不适合原地修改的场景而言,该方式能够把原本重读重写数据文件的更新操作,转化为对更新语义的结构化记录和持久化,从而降低更新阶段的读写放大、计算开销和响应延迟。尤其是在待更新数据仅占目标数据集合一部分的条件更新场景中,本技术能够避免为少量逻辑更新触发大范围文件重写,使更新处理更加轻量和稳定。

91、本技术在读取阶段并不是简单地把所有更新日志记录都加载后逐条合并,而是根据读取请求对应的读取条件与对当前读取请求可见的更新日志记录中的谓词表达式,确定更新日志记录对读取请求的适用关系。对于与读取请求所指向的数据范围没有交集的更新日志记录,可以不参与本次读取结果的确定;对于读取请求所指向的数据范围被更新日志记录所表征的待更新数据范围覆盖的情况,可以免除针对该更新日志记录的行级谓词判断,并根据读取请求中的读取投影字段和更新日志记录中的赋值映射确定读取结果,其中,被赋值映射覆盖的读取投影字段可以基于赋值映射确定,未被赋值映射覆盖的读取投影字段仍可以按照基础数据读取路径从基础数据中读取;对于读取请求所指向的数据范围与更新日志记录所表征的待更新数据范围部分相交的情况,可以先根据读取条件和谓词表达式确定相交读取范围和剩余读取范围,对相交读取范围确定第一读取数据,并对剩余读取范围结合基础数据文件、行组或数据块的统计信息确定候选基础数据,再基于候选基础数据确定第二读取数据。由此,能够减少不相关更新日志记录、不相关基础数据以及不必要行级谓词判断的处理开销,降低读取阶段的合并成本,并改善延迟更新机制在日志数量增加时的读取性能表现。

92、本技术还通过更新序列号、日志状态信息、版本信息和日志生命周期管理,使多个延迟更新请求能够按照确定顺序被管理和应用。当多个更新日志记录作用于同一目标数据集合时,可以按照更新序列号依次确定适用关系并基于赋值映射确定读取结果;在同一数据行或同一数据范围满足多个更新日志记录对应的谓词表达式的情况下,同一字段的后续更新能够覆盖在先更新,不同字段的更新结果能够叠加,从而保证读取结果符合多个更新请求的时序语义。进一步地,在多个更新日志记录累积后,还可以通过谓词等价合并、谓词包含覆盖和谓词吞并消除等语义化简处理,减少读取阶段实际参与判断或应用的更新日志记录数量。同时,处于有效状态的更新日志记录可以被缓存以提高读取调度效率,并可在满足日志归并条件时通过日志归并处理归并至基础数据;在日志归并过程中,还可以基于更新日志记录中的谓词表达式以及基础数据文件的统计信息或文件范围信息进行语义剪枝,以跳过与更新范围无交集的基础数据文件,使多次延迟更新能够通过较少次数的基础数据重写被吸收。由此,本技术不仅降低了单次更新和单次读取的处理开销,也提高了大规模数据集合在连续条件更新场景下的一致性、可恢复性和整体运行效率。

93、此外,本技术并非仅记录更新后的数据增量或被更新数据的物理位置,而是将数据更新请求中的更新条件和更新赋值分别结构化为谓词表达式和赋值映射,并作为更新语义进行持久化保存。相比于仅记录物理文件重写或数据块变更的方式,该更新日志记录还可以作为后续审计、追溯或异常排查时的业务语义依据。

94、由此,更新日志记录能够表征“哪些数据需要按照何种规则被更新”的更新语义,而不是仅表征“哪些具体行已经被改写”的物理结果。基于该方式,在读取阶段可以利用谓词表达式与读取条件之间的关系跳过无关更新日志记录、确定相交读取范围和剩余读取范围,并可以对多个更新日志记录进行谓词等价合并、谓词包含覆盖或谓词吞并消除;在日志归并阶段可以利用谓词表达式与基础数据文件统计信息或文件范围信息之间的关系进行语义剪枝,以跳过与更新范围无交集的基础数据文件。由此,可以降低不相关更新日志记录的处理开销,减少不必要的数据文件读取和重写,并提升大规模条件更新场景下的更新与读取效率。