基于数据密度反馈的自适应分片导出方法及系统与流程

摘要: 本技术涉及数据处理的领域,尤其是涉及一种基于数据密度反馈的自适应分片导出方法及系统。背景技术:1、随着信息系统中数据规模的持续增长,从数据库或搜索引擎中批量导出...
基于数据密度反馈的自适应分片导出方法及系统与流程

本技术涉及数据处理的领域,尤其是涉及一种基于数据密度反馈的自适应分片导出方法及系统。

背景技术:

1、随着信息系统中数据规模的持续增长,从数据库或搜索引擎中批量导出记录成为常见的业务需求。当单次导出的数据量达到百万乃至千万条级别时,一次性查询会占用较多内存并超出数据接口的单次响应能力,因而通常将整段查询按时间等依据切分为多个分片,逐片查询后再聚合为完整的导出结果。每一分片的划分方式决定了单片所覆盖的数据量,单片数据量过大会占用过多内存或触发接口超时,过小则产生过多的查询轮次。

2、在实际业务中,数据在时间维度上往往并非均匀分布。以物流、交易等场景为例,促销活动期间的数据量可达日常的数倍至十余倍,工作日与非工作日之间的数据量也存在明显差异。这种随时间波动的数据密度,使得分片导出中每一分片所覆盖的记录数难以事先预知,对分片划分方式在数据密度变化下的适应能力提出了要求。

3、现有的分片导出方法,无论是按固定时间粒度对查询区间等长切分、先统计数据总量再按固定条数均等预分配、以游标按固定条数顺序推进,还是由人工凭经验预先配置各时段的分片粒度,其每一分片的划分依据均在查询之前静态确定,不依据前一分片查询实际返回的数据密度进行调整。因而在数据随时间非均匀分布时,数据密集的时段单片返回量激增,容易占用过多内存或触发接口超时,数据稀疏的时段则产生大量近乎为空的查询轮次,整体导出耗时被返回量最大的分片所拖累;并且某一分片一旦返回量超出预期,后续分片仍按原有分片粒度继续查询,使得性能劣化沿分片顺序逐级累积,难以在导出过程中自适应地收敛到与数据密度相匹配的分片粒度。

技术实现思路

1、为了解决现有分片导出方法的每一分片划分依据均在查询之前静态确定、不依据前一分片实际返回的数据密度进行调整,导致数据随时间非均匀分布时各分片返回量失衡、密集时段占用过多内存而稀疏时段产生大量近空查询的问题,本技术提供一种基于数据密度反馈的自适应分片导出方法及系统。

2、第一方面,本技术提供的一种基于数据密度反馈的自适应分片导出方法,采用如下的技术方案:

3、一种基于数据密度反馈的自适应分片导出方法,获取待导出数据的查询时间范围,并按以下步骤对查询时间范围内的数据分片导出:

4、s1.以当前时间片的起始时间与分片粒度确定查询时间窗口,向数据查询引擎提交携带目标查询上限的分片查询请求,获取当前时间片的实际匹配总量与数据列表;

5、s2.根据实际匹配总量与目标查询上限确定密度比,根据密度比调整下一时间片的分片粒度,密度比越大则调整后的分片粒度不增大,并将调整后的分片粒度约束在预设的粒度下限与粒度上限之间;

6、s3.以数据列表中末条记录的记录时间字段确定下一时间片的起始时间;响应于数据列表为空,保持分片粒度不变,并以查询时间窗口的结束时间加一个时间单位确定下一时间片的起始时间;

7、s4.响应于未满足预设终止条件,返回s1对下一时间片继续执行分片查询,直至满足预设终止条件后聚合各时间片的数据列表并输出。

8、通过采用上述技术方案,将每一分片查询实际返回的数据密度作为反馈信号反哺下一分片的分片粒度确定,使得数据密集的时段自动收窄分片粒度以抑制单片返回量、数据稀疏的时段自动放宽分片粒度以减少查询轮次,分片粒度在预设的粒度下限与粒度上限之间自适应收敛到与实际数据密度相匹配的取值;同时以已返回数据的实际时间边界而非固定窗口步长确定下一分片的起始时间,使得相邻分片在数据的实际分布上首尾衔接,避免固定步长在数据空档处产生的遗漏与近空查询,从而在数据随时间非均匀分布时仍能均衡各分片的负载并降低整体导出的内存占用与查询轮次。

9、可选的,获取待导出数据的预期数据总量,s1至s4在预期数据总量大于预设直出阈值时执行。

10、通过采用上述技术方案,在数据量较小时不进入分片循环,避免分片调度开销超过数据本身的处理成本,仅在数据量超过预设直出阈值时才启用自适应分片。

11、可选的,s2包括并列的s2a与s2b。s2a.响应于密度比超过预设倍数阈值,将分片粒度除以密度比并向下取整,取计算结果与粒度下限中的较大者作为调整后的分片粒度。s2b.响应于密度比不超过预设倍数阈值,按预设扩大系数扩大分片粒度,取计算结果与粒度上限中的较小者作为调整后的分片粒度。

12、通过采用上述技术方案,将密度比作为缩放倍率对分片粒度做与密度成反比的调整,使得单片返回量越大分片粒度收窄越显著,加快分片粒度向匹配值收敛。

13、可选的,在每一时间片的分片查询完成后,将下一时间片的起始时间与调整后的分片粒度关联存储为断点记录,断点记录设置有预设有效期;响应于接收到携带查询标识的导出请求且存在与查询标识关联的断点记录,以断点记录中的起始时间与分片粒度作为s1中当前时间片的起始时间与分片粒度的初始取值后执行s1。

14、通过采用上述技术方案,断点记录同时保存查询进度与已调整的分片粒度,使得导出中断后恢复时不仅接续查询位置,还接续已收敛的分片粒度,避免从初始粒度重新收敛。

15、可选的,预设终止条件包括以下至少之一:已采集的数据总量达到预设的导出总量上限;下一时间片的起始时间达到查询时间范围的结束时间;分片查询的累计执行次数达到预设次数上限。

16、通过采用上述技术方案,以数据取满、区间遍历完成与累计次数上限三个条件共同界定循环出口,其中累计次数上限为异常情形提供兜底,避免分片循环无法自然终止时持续空转。

17、可选的,s1中确定查询时间窗口的结束时间的方式为:以当前时间片的起始时间加上分片粒度对应的时长并减去一个时间单位,得到窗口候选结束时间,取窗口候选结束时间与查询时间范围的结束时间中的较小者作为查询时间窗口的结束时间。

18、通过采用上述技术方案,以分片粒度对应时长界定窗口跨度并减去一个时间单位使相邻窗口首尾不重叠,同时以查询时间范围的结束时间对末个窗口封顶,避免查询越出待导出的时间区间。

19、可选的,s1中,从数据列表中各记录的记录时间字段的时间分布估计当前时间片的密度梯度,密度梯度表征当前时间片内数据密度随时间的变化趋势。

20、通过采用上述技术方案,从单片内部的数据到达分布提取密度梯度,为分片粒度调整提供比整片单一密度比更细的密度信息。

21、可选的,根据密度梯度前馈修正下一时间片的查询时间窗口的边界,使查询时间窗口在密度梯度指示后段更密时相应收窄。

22、通过采用上述技术方案,依据密度变化趋势对下一分片窗口做预测性收窄,将事后反馈调整补充为事前前馈修正。

23、可选的,记录前馈修正得到的分片粒度与根据密度比反馈调整得到的分片粒度之间的偏差,响应于偏差连续超过预设偏差阈值,降低前馈修正的权重直至回退为仅按密度比反馈调整。

24、通过采用上述技术方案,以前馈值与反馈值的偏差监控前馈预测的准确度,在预测持续失准时自动削弱前馈作用,避免前馈误差累积。

25、可选的,采用滞环规则调整分片粒度,响应于密度比超过预设上阈值缩小分片粒度,响应于密度比低于预设下阈值扩大分片粒度,响应于密度比处于预设下阈值与预设上阈值之间保持分片粒度不变。

26、通过采用上述技术方案,以上下双阈值构成的滞环带抑制密度比在阈值附近波动时分片粒度的反复缩放,减少分片粒度的无效震荡。

27、可选的,响应于连续多个时间片的数据列表均为空,向数据查询引擎提交定位查询以确定晚于当前时间片的起始时间的最近一条存在数据的记录,以最近一条记录的记录时间字段确定下一时间片的起始时间。

28、通过采用上述技术方案,在连续空片指示进入数据空档区时以一次定位查询直接跳至下一个存在数据的时间点,避免逐窗空查空档区。

29、可选的,维护剩余待采集配额,响应于剩余待采集配额小于目标查询上限,以剩余待采集配额作为本时间片提交分片查询请求时的目标查询上限。

30、通过采用上述技术方案,在临近导出总量上限时以剩余配额收口本片查询上限,避免末片超量采集。

31、可选的,断点记录还关联存储中断前的密度比,响应于依据断点记录恢复查询,根据所存储的密度比校正断点记录中的分片粒度后再执行s1。

32、通过采用上述技术方案,恢复时结合中断前的密度比判断已存分片粒度是否仍适用,在密度已变时对其校正,避免沿用失配的分片粒度。

33、可选的,以末条记录的记录时间字段与末条记录的主键构成复合游标,以复合游标确定下一时间片的查询起始条件,使记录时间字段相同的多条记录不被遗漏且不被重复查询。

34、通过采用上述技术方案,以时间字段与主键构成的复合游标界定分片边界,解决同一时间字段存在多条记录时的边界遗漏与重复。

35、可选的,响应于连续多个时间片的密度比均落入预设稳定区间,将分片粒度固定并按固定的分片粒度遍历剩余时间范围,响应于后续时间片的密度比脱离预设稳定区间,恢复根据密度比调整分片粒度。

36、通过采用上述技术方案,在密度比持续稳定指示数据分布趋于均匀时固定分片粒度并快速遍历,减少逐片反馈调整的计算开销。

37、可选的,将分片查询的查询结果缓存至键值缓存并设置第二有效期,第二有效期短于断点记录的预设有效期。

38、通过采用上述技术方案,对分片查询结果设置短时缓存,减少重复导出请求对数据查询引擎的重复访问。

39、第二方面,本技术提供的一种基于数据密度反馈的自适应分片导出系统,采用如下的技术方案:

40、一种基于数据密度反馈的自适应分片导出系统,包括:

41、分片查询模块,被配置成获取待导出数据的查询时间范围,在查询时间范围内以当前时间片的起始时间与分片粒度确定查询时间窗口,向数据查询引擎提交携带目标查询上限的分片查询请求,获取当前时间片的实际匹配总量与数据列表;

42、密度反馈调节模块,被配置成根据实际匹配总量与目标查询上限确定密度比,根据密度比调整下一时间片的分片粒度,密度比越大则调整后的分片粒度不增大,并将调整后的分片粒度约束在预设的粒度下限与粒度上限之间;

43、边界步进模块,被配置成以数据列表中末条记录的记录时间字段确定下一时间片的起始时间,并响应于数据列表为空,保持分片粒度不变,以查询时间窗口的结束时间加一个时间单位确定下一时间片的起始时间;以及

44、循环控制模块,被配置成响应于未满足预设终止条件,触发分片查询模块对下一时间片继续执行分片查询,直至满足预设终止条件后聚合各时间片的数据列表并输出。

45、通过采用上述技术方案,由分片查询模块、密度反馈调节模块、边界步进模块与循环控制模块协同,将各分片实际返回的数据密度反馈至分片粒度的确定,实现分片粒度随实际数据密度的自适应收敛与各分片负载的均衡。

46、综上所述,本技术包括以下至少一种有益技术效果:

47、1、将每一分片实际返回的数据密度作为反馈信号确定下一分片的分片粒度,使分片粒度在预设的粒度下限与粒度上限之间自适应收敛到与实际数据密度相匹配的取值,在数据随时间非均匀分布时均衡各分片的返回量,降低数据密集时段的单片内存占用与数据稀疏时段的查询轮次。

48、2、以已返回数据的实际时间边界确定下一分片起始时间并对空片以窗口结束时间递进,配合断点对查询进度与分片粒度的双重持久化以及数据取满与次数兜底的终止条件,使分片在数据实际分布上首尾衔接、导出中断后可接续已收敛的分片粒度继续执行。

49、3、进一步以单片内的密度梯度对下一分片窗口做前馈修正并以前馈与反馈的偏差自校正前馈权重,结合空片区的定位跳转与密度稳定后的固定粒度遍历,在密度剧烈变化与长空档等特殊工况下提升分片粒度调整的准确性并减少无效查询与反馈开销。