System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于自转式事务负载和确定性分析查询的HTAP数据库查询一致性验证方法、系统及应用技术方案_技高网

基于自转式事务负载和确定性分析查询的HTAP数据库查询一致性验证方法、系统及应用技术方案

技术编号:41191229 阅读:5 留言:0更新日期:2024-05-07 22:21
本发明专利技术公开了一种基于自转式事务负载和确定性分析查询的HTAP数据库查询一致性验证方法,所述方法包括如下步骤:步骤一、识别分析验证HTAP数据库处理实时分析查询执行一致性存在的问题;步骤二、通过自转式事务负载,使得数据库状态定期恢复到初始状态;步骤三、采用函数式数据生成方法生成数据集,通过定义确定性分析查询,模拟数据库系统内部查询执行逻辑,以处理和统一化不同的查询语义;步骤四、结合自转式事务负载和确定性分析查询,在每次数据库状态恢复到初始状态时发起确定性分析查询,对每次查询的实际结果与预期的理想结果或多个相同语义之间的查询结果进行比较,完成查询一致性验证。本发明专利技术还提供了实现上述方法的验证系统及应用。

【技术实现步骤摘要】

本专利技术属于数据库查询验证,涉及一种基于自转式事务负载和确定性分析查询的htap数据库查询一致性验证方法、系统及应用。


技术介绍

1、40多年来,事务处理和分析查询是数据库系统提供的两大关键性服务。随着应用对实时数据分析查询的需求增强,例如,欺诈侦测[3,4]、商业智能[5]和医疗健康[6]等应用,htap数据库系统(混合负载处理系统)应运而生,即同时支持事务负载和分析查询处理的数据库系统。在htap数据库系统中,为了使得分析查询具有实时性,分析查询被赋予了acid属性,从而打破了事务负载处理和分析查询处理之间的壁垒。然而,混合了事务处理和分析查询处理之后,htap数据库系统内部组件之间的依赖关系更加复杂,这种复杂性更容易隐藏微妙的代码缺陷。举例来说,tidb[2]为了在可能存在各种故障的条件下实现同时处理事务负载和实时查询分析,在两类完全不同的存储引擎上实现了两阶段提交、一致性共识协议和大规模并行处理等一系列机制,任务处理将涉及到由多台远程机器构成的复杂组合体,因此容易导致一些隐晦的代码缺陷。另外,htap数据库系统负责将oltp工作负载产生的新鲜数据传输给olap工作负载用于实时数据分析,尽可能早地发现新鲜数据中存在的价值。如果htap数据库系统的实时分析查询执行结果存在代码缺陷,这可能会给应用提供错误的分析结果,在生产上造成严重的后果。因此,针对htap数据库系统的实时分析查询执行结果进行正确性验证是一个非常重要的任务。

2、现有许多相关工作致力于生成分析查询测试数据库查询执行的正确性。然而,这些方法不适合用来测试htap数据库在处理实时分析查询的正确性。原因在于这些工作只能生成小数量、静态的数据库,相比之下,在真实的htap工作负载中,数据库往往是大数据量,并且数据状态是随着oltp工作负载的执行而动态变化的。例如,sqlsmith[1]通过随机拼凑sql表达式生成大量的分析查询以检查数据库系统是否会崩溃,sqlsmith不会生成修改数据库状态的更新操作,这意味着在sqlsmith的测试环境中数据库是静态不变的。sqlancer[2]约束一个查询必须访问一行目标数据作为查询正确性验证的前提条件,然而,与sqlsmith相似,sqlancer也不会生成修改数据库状态的更新操作,并且所有操作都是单线程串行执行的,因此,sqlancer也不适合于用来测试htap数据库系统的隔离级别。cobra[8]提出使用smt解算器和硬件加速来验证键值存储的可串行性。为了提高验证效率,它将栅栏事务注入到应用程序工作负载中,这限制了使用场景,并增加巨大的验证成本。elle[9]专门设计一些短的负载来推断历史版本顺序,从而验证事务处理的正确性。然而,它也无法支持对任意应用负载的验证。isodiff[10]通过只搜索代表性子集来降低检测循环的成本,从而帮助开发人员调试弱隔离级别引起的异常,但它会存在误报的情况。

3、验证htap数据库处理实时分析查询的执行正确性存在诸多难点问题,本专利技术总结了存在的三个关键挑战。第一,为了追求极致的性能和良好的交互性,主流数据库系统的事务处理具有不确定性调度的特点。具体来说,即使在给定相同的输入负载条件下,最终的数据库状态也可能是不同的;进一步地,由于分析查询的执行结果是依赖于查询发起时的数据库状态,那么分析查询的查询结果也具有不确定性,这导致传统的对比测试方法不再适用于验证数据库系统事务处理功能的正确性。因此,第一个关键挑战是:如何在数据库状态不确定性迁移的条件下验证一个分析查询的执行正确性;第二,由于分析决策业务场景的特殊需求,实时分析查询往往需要访问海量的数据,例如,一个分析查询可能需要访问大量历史订单数据服务于企业决策。因此,第二个关键挑战是:如何在访问海量数据的条件下以一种高效的方式验证一个分析查询的正确性;第三,分析查询往往具有多样复杂的语义,包括各种逻辑运算(与、或、非等)和各种算子(连接、聚合、排序等)。因此,第三个关键挑战是:如何找到一种通用的方法对具有不同语义的分析查询进行执行结果正确性验证。


技术实现思路

1、本专利技术中,通过设计一个面向htap数据库系统的隔离级别测试工具,提供一种用于htap工作负载中查询执行结果一致性验证的方法。本专利技术的目的可概括为:对htap数据库的分析查询结果进行一致性校验,从而尽早地发现htap数据库中可能存在的问题。关键问题主要有:在事务型负载和分析型负载交错执行的条件下,如何对于htap数据库的分析查询结果进行一致性校验。

2、本专利技术提出一种基于自转式事务负载和确定性分析查询的htap数据库查询一致性验证方法,流程图如图1所示,所述方法包括如下步骤:

3、步骤一、识别分析验证htap数据库处理实时分析查询执行一致性存在的问题,包括数据状态不确定性迁移、海量的数据和多样的查询语义。

4、步骤二、为了解决数据库状态不确定性迁移给验证任务带来的挑战,通过自转式事务负载,使得数据库状态可以定期恢复到初始状态。

5、步骤三、采用函数式数据生成方法生成数据集,通过定义确定性分析查询,模拟数据库系统内部查询执行逻辑,以处理和统一化不同的查询语义;具体地,为了解决海量数据给验证任务带来的挑战,提出函数式数据生成方法,一种利用现代高速cpu计算数据库初始数据的数据生成方法,从而快速地生成海量数据;另一方面,为了解决多样查询语义带来的挑战,提出确定性分析查询,确定性分析查询基于函数式数据生成方法,并通过模拟数据库系统内部查询的执行逻辑应对各种不同语义的查询算子,从而计算得到一个分析查询理想的查询结果,如果数据库系统实际的查询结果与理想的查询结果不一致,那么该数据库系统的查询执行引擎存在代码缺陷。

6、步骤四、通过结合自转式事务负载和确定性分析查询,在每次数据库状态恢复到初始状态时发起确定性分析查询,对每次查询的实际结果与预期的理想结果或多个相同语义之间的查询结果进行比较,完成查询一致性验证。步骤四中可以构造oltp和olap工作负载并行执行的htap工作负载,并且其中的olap工作负载是查询执行结果可验证的确定性分析查询。

7、步骤一中,所述问题包括三个方面。第一,给定相同的输入负载条件,数据库状态和分析查询结果具有不确定性:为了追求极致的性能和良好的交互性,主流数据库系统的事务处理具有不确定性调度的特点。具体来说,即使在给定相同的输入负载条件下,最终的数据库状态也可能是不同的;进一步地,由于分析查询的执行结果是依赖于查询发起时的数据库状态,那么分析查询的查询结果也具有不确定性,这导致传统的对比测试方法不再适用于验证数据库系统事务处理功能的正确性。因此,数据库状态变迁的不确定性和验证一个分析查询结果的一致性是一组矛盾。第二,无法快速验证分析查询读取的每一个数据的一致性:由于分析决策业务场景的特殊需求,实时分析查询往往需要访问海量的数据,这使得快速地验证一个分析查询所读取的每一个数据的一致性变得非常困难。例如,一个分析查询可能需要访问大量历史订单数据服务于企业决策。第三,不本文档来自技高网...

【技术保护点】

1.一种基于自转式事务负载和确定性分析查询的HTAP数据库查询一致性验证方法,其特征在于,所述方法包括如下步骤:

2.如权利要求1所述的查询一致性验证方法,其特征在于,步骤一中,所述问题包括数据状态不确定性迁移、数据量大、查询语义多样;

3.如权利要求1所述的查询一致性验证方法,其特征在于,步骤二中,所述自转式事务负载的实现机制包括如下:首先收集原始的OLTP工作负载中事务的写集合,再根据数据库的初始状态生成若干个恢复写集合的倒放事务,最后将这些倒放事务插入到原始的OLTP工作负载中,从而将数据库状态恢复到初始状态;

4.如权利要求1所述的查询一致性验证方法,其特征在于,步骤三中,所述函数式数据生成方法是指通过主键确定性计算得到非主键属性:对于记录γ,其主键为γ.k,非键值属性为γ.v,函数式数据生成定义为γ.v=F(γ.k),F是给定的一元函数。

5.如权利要求1所述的查询一致性验证方法,其特征在于,步骤三中,所述确定性分析查询包括如下步骤:首先递归计算查询q根节点下游所有子查询的中间结果,即如果某个子查询是叶子节点,那么通过函数式数据生成获取完整的记录;结合查询q根节点算子的语义和子查询的中间结果,计算查询q的最终结果τq;其中,所述根节点算子包括过滤算子、聚合算子、排序算子和连接算子;对于过滤算子,找到中间结果τ中满足过滤条件θ的所有记录作为理想的查询结果τ*;对于聚合算子,对中间结果τ施加相应的聚合算法θ,从而得到聚合之后理想的查询结果τ*;对于排序算子,将中间结果τ进行排序得到理想的查询结果τ*;对于连接算子,对若干个中间结果做笛卡尔积运算,再通过连接算子中的过滤条件θ获得满足连接条件的理想查询结果τ*。

6.如权利要求1所述的查询一致性验证方法,其特征在于,步骤四中,所述自转式事务负载和确定性分析查询的结合,在自转式事务负载将数据库状态恢复到初始状态时,建立查询快照并发起确定性分析查询,使得确定性分析查询始终读取初始状态的数据库,通过确定性计算的方式获取理想查询结果判断查询结果的一致性;和/或,在初始状态下发起多个具有相同语义的确定性分析查询,完成查询一致性验证。

7.一种实现如权利要求1-6之任一项所述的查询一致性验证方法的验证系统,其特征在于,所述验证系统包括:函数式数据生成器、查询结果计算器、工作负载切分器和倒放事务生成器;

8.一种实现如权利要求1-6之任一项所述方法的硬件系统,其特征在于,所述硬件系统包括:存储器和处理器;所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-6任一项所述的方法。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-6任一项所述的方法。

10.如权利要求1-6之任一项所述的查询一致性验证方法,如权利要求7所述的验证系统,如权利要求8所述的硬件系统,或如权利要求9所述的计算机可读存储介质在HTAP数据库代码缺陷检测中的应用。

...

【技术特征摘要】

1.一种基于自转式事务负载和确定性分析查询的htap数据库查询一致性验证方法,其特征在于,所述方法包括如下步骤:

2.如权利要求1所述的查询一致性验证方法,其特征在于,步骤一中,所述问题包括数据状态不确定性迁移、数据量大、查询语义多样;

3.如权利要求1所述的查询一致性验证方法,其特征在于,步骤二中,所述自转式事务负载的实现机制包括如下:首先收集原始的oltp工作负载中事务的写集合,再根据数据库的初始状态生成若干个恢复写集合的倒放事务,最后将这些倒放事务插入到原始的oltp工作负载中,从而将数据库状态恢复到初始状态;

4.如权利要求1所述的查询一致性验证方法,其特征在于,步骤三中,所述函数式数据生成方法是指通过主键确定性计算得到非主键属性:对于记录γ,其主键为γ.k,非键值属性为γ.v,函数式数据生成定义为γ.v=f(γ.k),f是给定的一元函数。

5.如权利要求1所述的查询一致性验证方法,其特征在于,步骤三中,所述确定性分析查询包括如下步骤:首先递归计算查询q根节点下游所有子查询的中间结果,即如果某个子查询是叶子节点,那么通过函数式数据生成获取完整的记录;结合查询q根节点算子的语义和子查询的中间结果,计算查询q的最终结果τq;其中,所述根节点算子包括过滤算子、聚合算子、排序算子和连接算子;对于过滤算子,找到中间结果τ中满足过滤条件θ的所有记录作为理想的查询结果τ*;对于聚合算子,对中间结果τ施加相应的聚合算法θ,从而得到聚合之后理想的查询...

【专利技术属性】
技术研发人员:李可强张蓉周傲英周烜钱卫宁
申请(专利权)人:华东师范大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1