一种查询计划的获取方法、数据查询方法及装置与流程

文档序号:20164306发布日期:2020-03-24 21:20阅读:123来源:国知局
一种查询计划的获取方法、数据查询方法及装置与流程
本申请涉及数据库查询
技术领域
,尤其涉及一种查询计划的获取方法、数据查询方法及装置。
背景技术
:随着大数据时代的到来,分布式数据库系统被越来越广泛地应用于联机分析处理(onlineanalyticalprocessing,olap)数据的存储与查询。目前,以大规模并行处理(massivelyparallelprocessing,mpp)数据库为代表的分布式数据库系统的查询容错机制一般为查询级别容错,即一个查询过程中一旦中断,分布式数据库系统会重新运行该查询。由于当前大多数分布式数据库系统包括大量的节点,每个节点都具有一定的故障概率,任一节点的故障都会造成查询的失败,使得分布式数据库系统中查询失败的概率大大提升,而大多数数据库产品的查询容错机制都是查询级别,即一个查询一旦失败,数据库会安排整个查询重做,进而导致查询的实际完成时间显著晚于预期时间。虽然,目前有一部分数据库能够支持查询内部容错,通过阶段性备份中间结果来提高可靠性。当节点故障导致查询失败时,数据库可以从上一个备份点开始查询重做,这样可以缩短查询在数据库发生失效后的实际完成时间。但是,在一些应用中对olap数据的查询属于“完成时间敏感查询”类型,即查询需要在预设时间长度之内完成。对于完成时间敏感查询,其最重要的是提高查询在预设时间长度内的完成概率,而不是单纯地缩短查询的实际完成时间,因此现有的容错方案并不能很好地适用于完成时间敏感查询。技术实现要素:本申请实施例提供一种查询计划的获取方法、数据查询方法及装置,用于提高完成时间敏感查询在预设时间长度内完成的概率。第一方面,本申请实施例提供一种查询计划的获取方法,包括:根据查询请求生成初始查询计划,其中,初始查询计划包括多个算子以及所述多个算子之间的逻辑关系;之后,从上述多个算子中确定至少一个备份算子;根据所确定的至少一个备份算子确定至少一个算子组合,所确定的至少一个算子组合中每个算子组合皆包括上述至少一个备份算子中的一个或多个备份算子;从所获取的至少一个算子组合中确定目标概率满足预设条件的目标算子组合,其中,每个算子组合对应的目标概率为在对该算子组合中包括的每个备份算子的输出数据进行备份的情况下,在预设时间长度内完成运行上述初始查询计划的概率;之后,根据目标算子组合为初始查询计划的多个算子中属于目标算子组合的备份算子设置备份标记,以得到目标查询计划;其中,备份标记用于指示备份所述备份算子的输出数据。采用上述方法,对多个算子中特定的算子添加备份标记,使得在目标查询计划的运行发生中断时,可以根据已备份的特定的算子的输出数据继续运行该目标查询计划,从而影响到目标查询计划在预设时间长度内完成的概率。在本申请实施例中通过预估算子组合对应的在预设事件长度内完成运行初始查询计划的概率,即目标概率,而确定了目标概率满足预设条件下的目标算子组合,进而获取目标查询计划。因此,运行本申请实施例所获得的目标查询计划以进行数据查询,有利于提高在预设时间长度内完成查询概率,从而可以更好地适应时间敏感查询的实际需求。在一种可能的实现方式中,一个算子组合对应的目标概率是通过如下方法确定的:确定该算子组合中包括的每个备份算子对应的备份代价,其中,每个备份算子对应的备份代价表示对该备份算子的输出数据进行备份所需的代价;确定初始查询计划中包括的每个算子对应的运算代价,其中,每个算子对应的运算代价表示运行该算子所需的代价;根据初始查询计划中包括的每个算子对应的运算代价,以及该算子组合中包括的每个备份算子对应的备份代价,预估在对该算子组合中包括的每个备份算子的输出数据进行备份的情况下,完成运行上述初始查询计划的预计用时;根据预估的预计用时和预设时间长度,确定该算子组合对应的目标概率。通过上述方法,提供了一种预估算子组合对应的目标概率的实现方式。对备份算子的输出数据进行备份,可以使初始查询计划运行中断时从备份算子继续运行初始查询计划,有利于在预设时间段内完成运行初始查询计划。然而,由于对备份算子的输出数据进行备份会导致初始查询计划运行完成的预计用时延长,而预计用时的延长又会增大初始查询计划在运行过程中发生中断的概率,不利于初始查询计划在预设时间段内完成运行。在上述技术方案中,预计用时包括了备份算子和初始查询计划中每个算子的代价,因此根据预计用时和预设时间长度所计算的目标概率即包括了对备份算子的输出数据进行备份对目标概率造成的有利影响,也包括了对目标概率造成的不利影响,使所获得的目标概率更具有参考性。在一种可能的实现方式中,根据预计用时和预设时间长度,确定算子组合对应的目标概率,包括:获取初始查询计划对应的l个取样结果;l为正整数;其中,每个取样结果是根据随机生成的至少一个中断时间点、预计用时和预设时间长度获取的;每个取样结果用于表示在对算子组合中包括的每个备份算子的输出数据进行备份的情况下,在预设时间长度内完成或未完成运行上述初始查询计划;根据上述l个取样结果,确定在预设时间长度内完成运行初始查询计划的比例;根据在预设时间长度内完成运行初始查询计划的比例确定算子组合对应的目标概率。采用上述方法,提供了一种具体的获取目标概率的实现方式。针对任一算子组合,由于查询计划在运行过程中的中断是随机发生的,因此可以通过随机生成中断时间点来模拟初始查询计划在运行过程中的中断情况。通过多个取样结果,初始查询计划在预设时间长度内完成运行的比例便可以反映出该算子组合对应的目标概率。在一种可能的实现方式中,一个取样结果是通过如下方法获取的:根据初始查询计划中包括的每个算子对应的运算代价,以及算子组合中包括的每个备份算子对应的备份代价,确定算子组合中每个备份算子对应的预计备份时间点和初始查询计划的预计完成时间点;其中,每个备份算子的预计备份时间点为预计运行完该备份算子且将该备份算子的输出数据完成备份时的时间点,初始查询计划的预计完成时间点为运行上述初始查询计划的起始时间点延时上述预计用时后的时间点;随机生成m个中断时间点,其中,第m个中断时间点为上述预计完成时间点之后的第一个中断时间点,m为正整数;根据预计用时、m个中断时间点中距离起始时间点由近及远的m-1个中断时间点以及预计备份时间点,确定完成运行初始查询计划的完成用时;在完成用时不大于预设时间长度时,生成取样结果以表示在预设时间长度内完成运行初始查询计划;在完成用时大于预设时间长度时,生成取样结果以表示在预设时间长度内未完成运行初始查询计划。采用上述方法,提供了一种获取取样结果的具体实现方式。在一种可能的实现方式中,第m个中断时间点为预计完成时间点之后的第一个中断时间点,包括:第m个中断时间点与起始时间点之间的时间间隔大于预计用时以及其余m-1个中断时间点分别与最近的预计备份时间点或起始时间点之间的时间间隔之和。采用上述方法,提供了一种确定最后一个中断时间点的判断方法。由于初始查询计划在每一次中断之后都要返回最近的备份算子或起始算子继续运行初始查询计划,因此在第m个中断时间点与起始时间点之间的时间间隔大于预计用时以及其余m-1个中断时间点分别与最近的预计备份时间点或起始时间点之间的时间间隔之和时,说明第m个中断时间点已经超过了预计完成时间点,即,第m个中断时间点为预计完成时间点之后的第一个中断时间点。在一种可能的实现方式中,根据初始查询计划在预设时间长度内完成运行的比例确定算子组合对应的目标概率,包括:根据以下公式确定目标概率:p=p(t)+(1-p(t))×p(t,k)其中,p为算子组合的目标概率;t为完成运行初始查询计划的预计用时;k为预设时间长度;p(t)为初始查询计划在预计用时内未出现中断运行的概率;p(t,k)为在预设时间长度内完成运行初始查询计划的比例。通过上述方法,提供了一种具体的获取算子组合对应的目标概率的实现方式。由于在实际使用中,中断的发生概率是非常小的,因此需要较多的取样结果才可以较为准确地确定算子组合的目标概率。而初始查询计划在预计用时内未出现中断运行的概率是可以通过公式获得的,因此基于上述公式,可以只获取p(t,k)的取样结果,大大降低了需要获取的取样结果的数量,有利于更加快速地获取目标查询计划。在一种可能的实现方式中,随机生成的第一个中断时间点符合以下公式要求:其中,δt为第一个中断时间点与起始时间点之间的时间间隔;t为预计用时;u为按照均匀分布生成的(0,1)内的随机数;mtbf为平均故障间隔时间。在一种可能的实现方式中,m个中断时间点中相邻中断时间点之间的时间间隔满足指数分布。在一种可能的实现方式中,相邻中断时间点之间的时间间隔满足以下公式:其中,δt'为相邻中断时间点之间的时间间隔;u为按照均匀分布生成的(0,1)内的随机数;mtbf为平均故障间隔时间。在一种可能的实现方式中,从多个算子中确定至少一个备份算子,包括:确定多个算子中输入数据大小小于输出数据大小,和/或,运行时长大于预设阈值的算子为所述备份算子。采用上述方法,对输入数据大小小于输出数据大小的算子的输出数据进行备份,可以减少所需备份的数据量,缩短预计用时,从而降低备份输出数据对目标概率的不利影响。对运行时长大于预设阈值的算子的输出数据进行备份,可以使目标查询计划运行中断时,不再重复运行运行时长较长的算子,从而可以加快完成运行目标查询计划。在一种可能的实现方式中,上述至少一个备份算子包括以下至少一种算子:哈希hash算子,排序sort算子,聚集aggregation算子。第二方面,本申请实施例提供一种数据查询方法,该方法包括:主节点向第一查询节点发送查询计划;其中,查询计划包括多个算子以及多个算子之间的逻辑关系,且多个算子中存在至少一个算子设置有备份标记;在第一查询节点中断运行查询计划时,确定第一查询节点当前运行的算子;根据多个算子之间的逻辑关系确定当前运行的算子的至少一个在先算子,其中,在先算子的输出数据用于生成或作为当前运行的算子的输入数据;在算子的至少一个在先算子中存在至少一个设置有备份标记的备份算子时,确定最晚运行的备份算子作为该算子对应的容错算子;向该第一查询节点对应的备用节点发送第一指令,第一指令包括上述容错算子的算子标识和查询计划,第一指令用于指示备用节点从算子标识对应的容错算子开始继续运行该查询计划。在一种可能的实现方式中,上述方法还包括:主节点向第二查询节点发送第二指令;第二指令包括容错算子的算子标识;第二指令用于指示其它查询节点从算子标识对应的容错算子开始继续运行查询计划。在应用于分布式数据库系统时,第一查询节点可以为分布式数据库系统中的任一查询节点,第二查询节点可以为分布式数据库系统中除第一查询节点之外的其它查询节点。查询节点在运行查询计划时,往往还存在与其它查询节点之间的数据交互。因此,在备用节点返回容错算子继续运行查询计划时,其它查询节点也返回容错算子继续运行查询计划,从而降低了返回容错算子对查询节点之间数据交互的影响。第三方面,本申请实施例提供一种数据查询方法,该方法包括:查询节点接收主节点提供的查询计划,其中,查询计划包括多个算子以及多个算子之间的逻辑关系,且多个算子中存在至少一个算子设置有备份标记;查询节点根据查询计划中多个算子之间的逻辑关系运行该查询计划中的多个算子;查询节点在运行到设置有备份标记的算子时,备份该设置有备份标记的算子的输出数据并将该输出数据和该算子的算子标识对应发送给对应的备用节点。在一种可能的实现方式中,上述方法还包括:查询节点接收主节点发送的第二指令,其中,第二指令包括容错算子的算子标识;查询节点根据第二指令中容错算子的算子标识,在确定本地备份有该容错算子的输出数据时,根据该容错算子的输出数据从该容错算子开始继续运行上述查询计划。第四方面,本申请实施例提供一种数据查询方法,该方法包括:备用节点接收对应的查询节点发送的至少一个设置有备份标记的算子的输出数据和该算子的算子标识,并对应存储该算子标识和该输出数据;备用节点接收主节点发送的第一指令,其中,第一指令包括容错算子的算子标识和查询计划;该查询计划包括多个算子以及多个算子之间的逻辑关系,且多个算子中存在至少一个算子设置有备份标记;查询第一指令中容错算子的算子标识对应的输出数据,并根据查询到的输出数据,从第一指令指示的容错算子开始继续运行查询计划。第五方面,本申请实施例提供了一种装置,该装置可以用来执行上述第一方面至第四方面中任意一方面中可能的实现方式。例如,装置可以包括用于执行上述第一方面至第四方面中任意一方面中可能的实现方式中的各个操作的模块单元。第六方面,本申请实施例提供了一种装置,该装置包括:处理器和存储器;处理器和存储器之间通过内部连接通路互相通信。存储器存储有计算机程序或指令,处理器被配置为执行存储器中存储的计算机程序或指令,以实现上述第一方面或第一方面的任意可能的实现方式中的任一方法、或执行上述第二方面或第二方面的任意可能的实现方式中的任一方法,或执行上述第三方面或第三方面的任意可能的实现方式中的任一方法,或执行上述第四方面或第四方面的任意可能的实现方式中的任一方法。第七方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码被计算设备的处理器运行时,使得计算设备执行上述第一方面或第一方面的任意可能的实现方式中的任一方法,或使得计算设备执行上述第二方面或第二方面的任意可能的实现方式中的任一方法,或使得计算设备执行上述第三方面或第三方面的任意可能的实现方式中的任一方法,或使得计算设备执行上述第四方面或第四方面的任意可能的实现方式中的任一方法。第八方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序或指令,该程序被处理器执行时实现上述第一方面或第一方面的任意可能的实现方式中的任一方法,或实现第二方面或第二方面的任意可能的实现方式中的任一方法,或实现上述第三方面或第三方面的任意可能的实现方式中的任一方法,或实现上述第四方面或第四方面的任意可能的实现方式中的任一方法。第九方面,本申请实施例提供了一种数据库系统,包括主节点、至少一个查询节点和查询节点对应的备用节点,其中,所述主节点被配置为执行上述第一方面或第一方面的任意可能的实现方式中的任一方法,和/或,执行上述第二方面或第二方面的任意可能的实现方式中的任一方法,所述查询节点被配置为执行上述第三方面或第三方面的任意可能的实现方式中的任一方法,所述备用节点被配置为执行上述第四方面或第四方面的任意可能的实现方式中的任一方法。附图说明下面将对实施例描述中所需要使用的附图作简要介绍。图1为一种分布式数据库系统的架构示意图;图2为一种查询计划的具体示例;图3为本申请实施例提供的一种查询计划的获取方法流程示意图;图4为本申请实施例提供的一种获取目标概率的方法流程示意图;图5为本申请实施例提供的一种获取取样结果的方法流程示意图;图6a为本申请实施例提供的一种预计备份时间点和预计完成时间点示意图;图6b为本申请实施例提供的一种中断时间点示意图;图7为本申请实施例提供的一种中断时间点示意图;图8为本申请实施例提供的一种初始查询计划示意图;图9为本申请实施例提供的一种初始查询计划裁剪结果示意图;图10为本申请实施例提供的一种初始查询计划裁剪结果示意图;图11为本申请实施例提供的一种简化后的裁剪结果示意图;图12为本申请实施例提供的一种数据查询方法流程示意图;图13为本申请实施例提供的一种查询计划的获取装置示意图;图14为本申请实施例提供的一种主节点硬件结构示意图;图15为本申请实施例提供的一种分布式数据库系统;图16为本申请实施例提供的一种系统。具体实施方式下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。方法实施例中的具体操作方法也可以应用于装置实施例中。其中,在本申请实施例的描述中,本领域普通技术人员可以理解:本申请中涉及的第一、第二等各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围,也不用来表示先后顺序。“多个”的含义是两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“至少一个”是指一个或者多个。至少两个是指两个或者多个。“至少一个”、“任意一个”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。本申请实施例提供的查询计划的获取方法、数据查询方法可以应用于数据库系统(databasesystem),比如单机数据库系统或者分布式数据库系统。数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统。数据库系统一般由以下三部分组成:(1)数据库(database,db),指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。(2)硬件,包括存储数据所需的数据存储器,例如内存和/或磁盘。(3)软件,包括dbms(databasemanagementsystem,数据库管理系统),dbms是数据库系统的核心软件,是用于科学地组织和存储数据,以及高效获取和维护数据的系统软件,数据库引擎是dbms的核心内容。为了便于理解和描述,作为示例而非限定,下面以分布式数据库系统为例说明本申请实施例的方案。但是本领域技术人员根据本申请实施例的教导可以很清楚地理解,本申请实施例的方法同样可以应用于其它类型的数据库系统,比如单机数据库系统,集群数据库系统等。图1为一种分布式数据库系统的架构示意图,如图1所示,分布式数据库系统包括主节点1、多个查询节点(如图1中查询节点21至查询节点28)和多个备用节点(如图1中备用节点31至备用节点38)。在一个实施例中,如图1中虚线箭头所示,分布式数据库系统中的查询节点和备用节点之间存在一一对应关系。查询节点可以管理分布式数据库系统中所存储的一部分数据,与查询节点对应的备用节点则备份有该查询节点所管理的数据,在查询节点运行中断时,可以由查询节点对应的备用节点代替查询节点继续运行查询计划。主节点1可以接收查询请求,根据查询请求生成查询计划,并将所生成的查询计划下发给分布式数据库系统中的各个查询节点。查询节点接收主节点1发送的查询计划,并运行查询计划。最终,主节点1可以汇集各个查询节点上报的查询数据,对各个查询节点上报的查询数据统一汇总后生成查询请求对应的查询结果。图2示出了查询计划的一个具体示例,如图2所示,该查询计划由限定(limit)、汇总(gather)、排序(sort)、哈希连接(hashjoin)、哈希(hash)、广播(broadcast)、扫描(scan)、重分布(redistribute)等17个不同种类的算子构成,这17个算子之间的逻辑关系构成了树状结构,因此图2所示的查询计划也可以称为查询计划树。其中,算子之间的逻辑关系可以根据算子之间输出数据和输出数据的关系确定。查询节点在运行图2所示的查询计划时,会从图2中算子8、算子11、算子14和算子11开始运行,因此算子8、算子11、算子14和算子11也可以称为起始算子,通过运行起始算子所获得的输出数据会被按照图2中所示的算子之间的逻辑关系分别进行不同的运算,例如,查询节点运行算子17获得输出数据,在接下来运行算子16时会对算子17的输出数据进行广播,运行完算子16之后,将算子16的输出数据继续按照算子15进行哈希运算等等,通常查询计划的最后一个算子会由主节点1运行,如在主节点1运行完算子1之后,便完成了查询。在一些现有的查询过程中,查询节点运行查询计划出现中断后,主节点1将会控制分布式数据库系统中的多个查询节点从查询计划的起始算子开始重新运行查询计划,导致查询的实际用时大大延长。基于此,现有的查询计划容错方案多侧重于如何在运行查询计划出现中断的情况下,缩短查询的实际用时,但这种方案并不适用于对完成时间敏感的查询任务。对完成时间敏感的查询任务侧重于查询可以在预设时间长度内完成的概率。采用现有的查询计划容错方案可以在一定程度上缩短查询计划的实际用时,但是,由于查询节点会出现反复中断的情况,因此,查询计划在发生中断后实际用时的缩短并不一定可以保证查询计划能够在预设时间长度内完成运行的概率。为了提高对完成时间敏感的查询任务在规定时间长度内的完成概率,本申请实施例提供了一种查询计划的获取方法。通过对查询计划中特定的算子设置备份标记,使得查询节点在运行通过本申请实施例所获取的查询计划时,可以有更高的概率在规定时间长度内完成查询。在本申请实施例中,查询节点在运行本申请实施例所获取的查询计划时,可以根据备份标记对特定的备份算子的输出数据进行备份。在运行发生中断时,可以返回最近的备份算子,根据所备份的输出数据继续运行查询计划,从而提高对完成时间敏感的查询任务在规定时间长度内的完成概率。图3为本申请实施例提供的一种查询计划的获取方法流程示意图。如图3所示,包括以下步骤:s201:主节点1根据查询请求生成初始查询计划,初始查询计划包括多个算子以及多个算子之间的逻辑关系。在本申请实施例中,初始查询计划既可以是主节点1按照现有的生成查询计划的方法所获取的完整的查询计划,也可以是主节点1在生成查询计划的过程中获取的查询计划的中间阶段等,本申请实施例对此并不多作限制。初始查询计划所包括的多个算子以及多个算子之间的逻辑关系可以参考图2。s202:主节点1从多个算子中确定至少一个备份算子。其中,备份算子既可以是初始查询计划中的任一算子,也可以是按照预设规则对初始查询计划的多个算子进行筛选后确定的算子。在一种可能的实现方式中,主节点1可以确定初始查询计划的多个算子中输入数据大小小于输出数据大小,和/或,运行时长大于预设阈值的算子为备份算子。在另一中可能的实现方式中,也可以将特定类型的算子作为备份算子,比如备份算子可以是哈希hash算子,排序sort算子,聚集aggregation算子中的至少一种。采用上述方法,对输入数据大小小于输出数据大小的算子的输出数据进行备份,可以减少所需备份的数据量,缩短预计用时,从而降低备份输出数据对目标概率的不利影响。对运行时长大于预设阈值的算子的输出数据进行备份,可以使在运行最终获取的目标查询计划发生中断时,不再重复运行目标查询计划中运行时长较长的算子,从而可以加快完成运行目标查询计划。s203:主节点1根据所确定的至少一个备份算子获取至少一个算子组合,其中,至少一个算子组合中的每个算子组合包括所确定的至少一个备份算子中的一个或多个备份算子。在本申请实施例中,主节点1既可以对s202中所确定的至少一个备份算子任意组合从而获取至少一个算子组合,也可以对s202中所确定的至少一个备份算子排列组合而获取至少一个算子组合。例如,s202中确定了如下三个备份算子:算子a、算子b和算子c,则可以获得7个算子组合,如下表所示:算子组合所含算子算子组合1算子a算子组合2算子b算子组合3算子c算子组合4算子a和算子b算子组合5算子a和算子c算子组合6算子b和算子c算子组合7算子a、算子b和算子c对s202中所确定的至少一个备份算子排列组合而获取至少一个算子组合,可以在接下来对初始查询计划的不同的算子组合进行更为全面的计算,使最后获得的目标算子组合为初始查询计划的可能的算子组合中的最优选项。s204:主节点1从所获取的至少一个算子组合中确定目标概率满足预设条件的目标算子组合,其中,每个算子组合对应的目标概率为在对该算子组合中包括的备份算子的输出数据进行备份的情况下,在预设时间长度内完成运行初始查询计划的概率。在本申请实施例中,每个算子组合都对应有目标概率。例如,上述算子组合6中包括算子b和算子c,则算子组合6所对应的目标概率为:对初始查询计划中算子b和算子c的输出数据进行备份的情况下,初始查询计划在预设时间长度内完成的概率。其中,预设时间长度可以是预先给定的、规定的时间长度,该时间长度一般不短于正常完成运行初始查询计划的用时。每个算子组合对应的目标概率的具体获取方法将在本申请实施例的后续内容中作详细介绍。在本申请实施例中,预设条件可以根据实际需求而定,例如,满足预设条件的目标算子组合可以是所获取的至少一个算子组合中目标概率最大的算子组合。又例如,满足预设条件的目标算子组合也可以是所获取的至少一个算子组合中目标概率大于预设阈值的算子组合,即预设条件为目标概率大于预设阈值,例如,99.99%,该阈值可以根据经验值或历史统计结果设置和调整。在某些情形下,可能会有多个算子组合对应的目标概率都满足预设阈值的情况,主节点1可以依次获取至少一个算子组合分别对应的目标概率,在某一算子组合的目标概率达到预设阈值时,便确定该算子组合为目标概率组合,并停止继续计算其它算子组合的目标概率。在一种可能的实现方式中,主节点1可以按照算子组合中备份算子数量由少至多的顺序依次获取算子组合对应的目标概率,此时,所获得的目标算子组合便是目标概率满足预设阈值的备份算子数量最少的算子组合。在本申请实施例中,算子组合对应的目标概率为对初始查询计划中该算子组合内的备份算子的输出数据进行备份的情况下,初始查询计划可以在预设时间长度内完成的概率。接下来,本申请实施例将对一个算子组合对应的目标概率的可能的获取方法作进一步介绍。应理解,在未特殊说明的情况下,以下目标概率的获取方法仅针对一个算子组合而言,主节点1可以按照以下目标概率的获取方法分别获取每一个算子组合的目标概率。s205:主节点1根据上述确定的目标算子组合,为初始查询计划包括的多个算子中属于目标算子组合的备份算子设置备份标记,以得到目标查询计划。例如,目标算子组合中所包括的备份算子为算子a和算子b,则在初始查询计划中为算子a和算子b添加备份标记,该备份标记可以是一段附加在算子a和算子b之后的备份指令,也可以是在算子a和算子b上添加备份属性。在一种可能的实现方式中,主节点1在s201中可以根据查询请求生成多个初始查询计划,针对每个初始查询计划分别执行s202至s205,从而可以获取多个初始查询计划分别对应的目标算子组合,之后,再从多个初始查询计划分别对应的目标算子组合中筛选出目标概率最高的目标算子组合,并根据该目标算子组合获取目标查询计划。在一种可能的实现方式中,主节点1还可以获取初始查询计划的原始目标概率,即不对初始查询计划中的任何算子的输出数据进行备份的情况下,初始查询计划可以在预设的时间长度内完成的概率。在所有算子组合对应的目标概率都不大于初始查询计划的原始目标概率时,主节点1还可以根据初始查询计划生成或作为目标查询计划,所得到的目标查询计划中不存在添加有备份标记的算子。对多个算子中特定的算子添加备份标记,使得在目标查询计划的运行发生中断时,可以根据已备份的特定的算子的输出数据继续运行该目标查询计划,从而影响到目标查询计划在预设时间长度内完成的概率。在本申请实施例中通过预估多种算子组合对应的在预设事件长度内完成运行初始查询计划的概率,即目标概率,而确定了目标概率满足预设概率条件下的目标算子组合,进而获取目标查询计划。因此,运行本申请实施例所获得的目标查询计划以进行数据查询,有利于提高在预设时间长度内完成查询概率,从而可以更好地适应时间敏感查询的实际需求。在s204中,主节点需要确定算子组合对应的目标概率。在一种可能的实现方式中,主节点1可以通过如图4所示的以下步骤获取初始查询计划的预计用时,进而获取算子组合对应的目标概率:s301:主节点1确定算子组合中包括的每个备份算子对应的备份代价,其中,每个备份算子对应的备份代价表示对该备份算子的输出数据进行备份所需的代价。在本申请实施例中,代价用于指示时间消耗,例如,备份算子所对应的备份代价便可以指示对备份算子的输出数据进行备份所需要的时间。以分布式数据库系统中的查询节点为例,查询节点在本地备份备份算子a的输出数据的同时,还可以将备份算子a的输出数据发送给与查询节点对应的备用节点,由该备用节点同步备份该备份算子a的输出数据。在此情况下,备份算子a的备份代价既包括了在查询节点本地磁盘中备份备份算子a的输出数据的物化代价,也包括了将备份算子a的输出数据发送给对应的备用节点的网络传输代价。其中,在查询节点本地备份输出数据所造成的物化代价可以通过估算输出数据的大小以进行计算,例如,查询节点在本地备份输出数据时需要将输出数据存入本地磁盘中,这一过程的所需要的时间主要由磁盘的读/写(i/o)性能所决定,因此通过估算备份算子a的输出数据大小以及磁盘的i/o性能便可以估算出备份算子a的备份代价中物化代价的部分。而备份代价中网络传输代价的部分则可以通过网络带宽和估算得到的输出数据的大小计算获得。s302:主节点1确定初始查询计划中包括的每个算子对应的运算代价,每个算子对应的运算代价包括运行该算子所需的代价。在本申请实施例中,算子的运算代价用于指示运行该算子所需消耗的时间,算子的运算代价主要与算子本身的运算复杂程度和分布式数据库系统中查询节点的运算性能有关。在一种可能的实现方式中,主节点1可以通过运行算子对查询节点本地磁盘产生的i/o访问次数、查询节点的中央处理器(centralprocessingunit,cpu)计算量等估算每个算子的运算代价。s303:主节点1根据初始查询计划中包括的每个算子对应的运算代价,以及算子组合中包括的每个备份算子对应的备份代价,预估在对算子组合中包括的每个备份算子的输出数据进行备份的情况下,完成运行初始查询计划的预计用时。在本申请实施例中,预计用时即包括了对算子组合中每个备份算子的备份代价,也包括了初始查询计划中多个算子的运算代价。目前,磁盘的i/o性能限制是产生运算代价和备份代价的主要因素,因此可以将其它因素所造成的代价折算成i/o访问次数,基于此,本申请实施例中的“代价”也可以指所产生的磁盘i/o访问次数,即,通过磁盘i/o访问次数指示所消耗的时间。例如,网络传输代价可以折算为若干次数i/o访问的用时。之后,根据每次i/o访问时间预估初始查询计划的预计用时,其中每次i/o访问时间可以通过预先对数据库中主节点1进行测试获得。例如,数据库中主节点1的磁盘i/o访问粒度为4kb,一次i/o访问用时为t,运行初始查询计划中的多个算子所产生的i/o访问次数为c1,对算子组合中所有备份算子的输出数据进行备份所产生的i/o访问次数为c2,则预计用时可以表示为t=t*(c1+c2)。需要指出的是,本申请实施例中的预计用时与算子组合中备份算子的备份代价相关,因此在计算不同的算子组合所对应的目标概率时,所获得的初始查询计划的预计用时是有可能并不相同的。s304:主节点1根据预计用时和预设时间长度,确定算子组合对应的目标概率。初始查询计划的预计用时与能否在预设时间长度内完成运行初始查询计划相关,因此可以用于确定算子组合对应的目标概率。s304的具体实现方式将在本申请实施例后续进行说明。通过上述方法,提供了一种预估算子组合对应的目标概率的实现方式。对备份算子的输出数据进行备份,可以使初始查询计划运行中断时从备份算子继续运行初始查询计划,有利于在预设时间段内完成运行初始查询计划。然而,由于对备份算子的输出数据进行备份会导致初始查询计划运行完成的预计用时延长,而预计用时的延长又会增大初始查询计划在运行过程中发生中断的概率,不利于初始查询计划在预设时间段内完成运行。在上述技术方案中,预计用时包括了备份算子和初始查询计划中每个算子的代价,因此根据预计用时和预设时间长度所计算的目标概率即包括了对备份算子的输出数据进行备份对目标概率造成的有利影响,也包括了对目标概率造成的不利影响,使所获得的目标概率更具有参考性。接下来,本申请实施例将对上述s304的可能的实现方式作进一步介绍。由于查询计划在运行过程中的中断是随机发生的,因此可以通过随机生成中断时间点来模拟初始查询计划在运行过程中的中断情况,进而获取算子组合对应的目标概率。在一种可能的实现方式中,主节点1可以获取初始查询计划对应的l个取样结果;l为正整数;其中,每个取样结果是根据随机生成的至少一个中断时间点、预计用时和预设时间长度获取的;每个取样结果用于表示在对算子组合中包括的每个备份算子的输出数据进行备份的情况下,在预设时间长度内完成或未完成运行上述初始查询计划;根据上述l个取样结果,确定在预设时间长度内完成运行初始查询计划的比例;根据在预设时间长度内完成运行初始查询计划的比例确定算子组合对应的目标概率。采用上述方法,可以直接估算算子组合对应的目标概率。例如,主节点1在计算算子组合1的目标概率时,共获取了10000个初始查询计划对应的取样结果,其中有9999个取样结果为在预设时间长度内完成运行初始查询计划,则算子组合1的目标概率99.99%。此外,本申请实施例还提供另外一种估算方法。在一种可能的实现方式中,主节点1可以根据以下公式一确定算子组合对应的目标概率:p=p(t)+(1-p(t))×p(t,k)(公式一)其中,p为算子组合的目标概率;t为完成运行初始查询计划的预计用时;k为预设时间长度;p(t)为初始查询计划在预计用时内未出现中断运行的概率;p(t,k)为在预设时间长度内完成运行初始查询计划的比例。数据库中主节点1在运行查询计划时,出现中断的概率一般服从指数分布。因此在本申请实施例中,主节点1可以通过以下公式二估算p(t)的取值:其中,mtbf为平均故障间隔时间。在分布式数据库系统中,mtbf指的是分布式数据库系统的平均故障间隔时间。通常可以统计分布式数据库系统中各查询节点的历史运行中断情况获得mtbf的取值,也可以根据一个查询节点的中断情况预估分布式数据库系统的mtbf的取值,例如,统计一个查询节点的平均故障间隔时间mtbfone,之后,根据mtbf=mtbfone/n预估mtbf的取值,其中,n为分布式数据库系统中查询节点的数量。基于公式一和公式二,可见,只通过l个取样结果获取p(t,k)的取值,便可获取目标概率。由公式一和公式二可见,(1-p(t))表示的是在运行初始查询计划的过程中出现中断的概率,则p(t,k)表示的应是在运行初始查询计划的过程中出现中断的情况下,可以在预设时间长度内完成运行初始查询计划的概率。由于分布式数据库系统中查询节点在运行时出现中断的概率比较小,因此,相较于通过l取样结果直接获取目标查询计划,采用上述方法需要较少的取样结果便可以获取较为准确的p(t,k)的取值。不论采用l个取样结果直接估算目标概率p的实现方式,还是先估算p(t,k),在根据p(t,k)获取目标概率p的实现方式,每一个取样结果都是根据随机生成的至少一个中断时间点、所述预计用时和所述预设时间长度获取的。在本申请实施例中,主节点1可以根据随机生成的至少一个中断时间点、所述预计用时和所述预设时间长度模拟运行初始查询计划,通过l次模拟运行初始查询计划以获取l个取样结果。接下来,本申请实施例将提供一种可能的获取取样结果的具体方法。图5示例性地示出了本申请实施例提供的一种可能的获取取样结果的方法流程示意图,如图5所示,主要包括以下步骤:s401:根据初始查询计划中包括的每个算子分别对应的运算代价,以及算子组合中包括的每个备份算子分别对应的备份代价,确定算子组合中每个备份算子分别对应的预计备份时间点和初始查询计划的预计完成时间点;其中,预计备份时间点为预计运行完备份算子且将备份算子的输出数据完成备份时的时间点,预计完成时间点为运行初始查询计划的起始时间点延时预计用时后的时间点。例如,在初始查询计划中,运行备份算子a之前还需运行算子b、算子c和算子d,则可以根据备份算子a、算子b、算子c和算子d的运算代价以及备份算子a的备份代价估算备份算子a对应的预计备份时间点。而初始查询计划的预计完成时间点,则可以先设定一起始时间点,在模拟运行初始查询计划的过程中,该起始时间点作为运行初始查询计划中起始算子的时间点,假设为t0。并,按照上述实施例中所提供的方法获取初始查询计划的预计用时t,则所获得初始查询计划的预计完成时间点可以为t’=t0+t。假设算子组合中包括备份算子a和备份算子g,则经s401所获取的预计备份时间点和预计完成时间点可以如图6a所示。其中,t0为起始时间点,ta为备份算子a对应的预计备份时间点,tg为备份算子g对应的预计备份时间点,t’为预计完成时间点。s402:随机生成m个中断时间点,其中,第m个中断时间点为预计完成时间点之后的第一个中断时间点,m为正整数。在本申请实施例中,通过随机生成中断时间点模拟运行初始查询计划,直至获取位于预计完成时间点之后的中断时间点,即第m个中断时间点时,可以认为完成运行初始查询计划。在m取值为1时,说明本次模拟运行中未发生中断。在m取值大于1时,说明本次模拟运行中发生了中断。在一种可能的实现方式中,可通过以下方法判断当前生成的中断时间点是否为第m个中断时间点:获取中断时间点与起始时间点之间的时间间隔,以及,其余m-1个中断时间点分别与最近的预计备份时间点或起始时间点之间的时间间隔之和;在中断时间点与起始时间点之间的时间间隔大于所述预计用时以及其余m-1个中断时间点分别与最近的预计备份时间点或起始时间点(中断时间点与起始时间点之间不存在预计备份时间点的情况下)之间的时间间隔之和时,说明当前生成的中断时间点为第m个中断时间点,完成运行初始查询计划。例如,在图6a所示时间点的基础上,依次获取了如图6b所示的中断时间点,其中,t1、t2为依次获取的两个中断时间点。在本申请实施例中,中断时间点可以对应有进度时间,表示的是在未发生中断的情况下,运行到中断时间点当前进度所需的时间。例如,图6b中,t1x为t1所对应的进度时间,其表示的是在未发生中断的情况下,运行到t1当前的运行进度下所需的时间,由于t1之前并未发生中断,因此t1x与t1取值相同。t2x为t2对应的进度时间,其表示的是在未发生中断的情况下,运行到t2当前的运行进度下所需的时间,由于t2之前发生了一次中断,因此t2x=t2-(t1x-t0)。本申请实施例中在未特别说明的情况下,最近的预计备份时间点指的是与中断时间点所对应的进度时间最近的预计备份时间点。在当前获取的中断时间点为t3时,则可以确定t3-t0<(t1x-t0)+(t2x-ta)+(t’–t0),其中,(t1x-t0)为在t1发生中断后,返回t0后重复运行所需的附加用时,(t2x-ta)为在t2发生中断后,返回ta重复运行所需的时间。t3所对应的进度时间t3x=t3-(t2x-ta)-(t1x-t0)<t’,t3所对应的进度时间t3x在预计完成时间点t’之前,因此还需继续生成中断时间点t4,如图6b所示。在此情况下可以确定(t4-t0)>(t1x-t0)+(t2x-ta)+(t3x-tg)+(t’–t0),说明当前生成的t4所对应的进度时间t4x=t4-(t1x-t0)-(t2x-ta)-(t3x-tg)>t’,t4所对应的进度时间t4x位于t’之后,如图中t4x所示,共经过3次中断后完成运行初始查询计划。s403:根据预计用时、m个中断时间点中距离起始时间点由近及远的m-1个中断时间点以及预计备份时间点,确定初始查询计划完成运行的完成用时。在本申请实施例中,距离起始时间点由近及远的m-1个中断时间点为模拟运行中发生的中断时间点,由于发生中断时,需要返回最近的预计备份时间点或起始时间点重复运行初始查询计划,因此,初始查询计划的完成用时中还会包括重复运行带来的附加用时。继续以图6b为例,在模拟运行初始查询计划的过程中出现了t1、t2和t3三个中断时间点,则可以根据t1、t2和t3三个中断时间点以及预计备份时间点确定本次运行初始查询计划的完成用时,例如,根据t1、t2和t3分别确定对应的t1x、t2x和t3x,完成用时可以为(t1x-t0)+(t2x-ta)+(t3x-tg)+t。s404:在完成用时不大于预设时间长度时,生成取样结果以表示在预设时间长度内完成运行初始查询计划;在完成用时大于预设时间长度时,生成取样结果以表示在预设时间长度内未完成运行初始查询计划。采用上述方法,通过随机生成中断时间点以模拟运行初始查询计划,从而获取取样结果。由于出现中断的概率服从公式二所示的指数分布,在一种可能的实现方式中,本申请实施例随机生成的m个中断时间点中相邻中断时间点之间的时间间隔也满足指数分布,使模拟运行的取样结果更接近实际运行情况。本申请实施例对相邻中断时间点之间的时间间隔并不多作限制,在一种可能的实现方式中,相邻中断时间点之间的时间间隔满足以下公式三:其中,δt'为相邻中断时间点之间的时间间隔;u为按照均匀分布生成的(0,1)内的随机数;mtbf为平均故障间隔时间。由于在实际运行中,每一个时间点都有可能发生中断,因此,u为按照均匀分布生成的(0,1)内的随机数。在每一次随机生成中断时间点时,通过随机获取u的取值而获取当前生成的中断时间点与上一个生成的中断时间点之间的时间间隔,从而可以基于上一个中断时间点最近的备份时间点获取当前生成的中断时间点。在根据l个取样结果直接估算算子组合对应的目标概率的取值的实现方式中,m个中断时间点中第一个中断时间点与起始时间点之间的时间间隔也可以根据公式三获得。在先根据l个取样结果估算p(t,k)的取值,再根据p(t,k)的取值估算算子组合对应的目标概率的实现方式中,由于p(t,k)为运行初始查询计划过程中发生至少一次中断的情况下,在预设时间长度内完成运行初始查询计划的概率,因此应控制第一个中断时间点是位于起始时间点与预计完成时间点之间的时间点,即第一个中断时间点与起始时间点之间的时间间隔的取值范围为[0,t)。假设u为[0,t)内任一点发生中断的概率,则可获得以下公式四:其中,δt为第一个中断时间点与起始时间点之间的时间间隔。对公式四进行变换后,便可以获得以下公式五:基于公式五,通过随机获取u的取值而获取第一个中断时间点与起始时间点之间的时间间隔,从而生成第一个中断时间点。第一个中断时间点之后的中断时间点则可以根据公式三依次获得,本申请实施例对此不再赘述。以下以一具体实例对一个取样结果的获取进行说明。如图7所示,图7中起始时间点为0,第一个备份算子的预计备份时间点为7,第二个备份算子的预计备份时间点为16,预计完成时间点为19,预设时间长度k=24。随机生成第一个中断时间点t1,假设根据公式五所获取的t1与t0之间的时间间隔为8,则第一个中断时间点t1对应的进度时间为8,此时需要返回ta重复运行,重复运行用时t1-ta=1。由于t1与t0之间的时间间隔小于预计用时19,因此随机生成第二个中断时间点t2。假设根据公式三所获取的t2与t1之间的时间间隔为11,则t2=19。此时,t2时对应的进度时间为19-1=18,需要返回tg重复运行,重复运行用时18-tg=2。由于t2与t0之间的时间间隔19<1+19,因此随机生成第三个中断时间点t3。假设根据公式三所获取的t3与t2之间的时间间隔为6,则t3=25,由于25>1+2+19,可以认为完成运行初始查询计划,完成用时为1+2+19=22,该完成用时小于预设时间长度,因此生成取样结果以表示在预设时间长度内完成运行初始查询计划。在获取取样结果时,需要预先获取每个备份算子对应的预计备份时间点。为了简化获取预计备份时间点的过程,在一种可能的实现方式中,主节点1在根据确定的至少一个备份算子获取至少一个算子组合之前,还可以先根据确定的至少一个备份算子对初始查询计划进行裁剪。在对查询计划进行裁剪时,保留初始查询计划中所有的备份算子,以及备份算子之间的逻辑关系。以下以一具体实例进行说明。图8示例性地示出了一种初始查询计划,如图8所示,初始查询计划中的算子8、算子6和算3为备份算子,则图8所示的初始查询计划经裁剪后可以获得如图9所示的裁剪结果。图9中仅保留了算子8、算子6和算子3,以及它们之间的逻辑关系。在对查询计划进行裁剪时,将被裁去的算子的运算代价累加至备份算子的运算代价中,例如,图8中算子1、算子4和算子7的运算代价便会被累加至备份算子8的运算代价中。以图1所示的查询计划为例,假设每个算子的运算代价皆为1,每个备份算子的备份代价也为1,所确定的备份算子有算子4、算子9、算子12和算子15,则图1所示查询计划的裁剪结果可以如图10所示。图10中保留算子1是为了保证裁剪后查询计划的完整性。图10中,每个算子都具有累计运算代价i,表示的是该算子及其在先算子的运算代价之和。其中,算子的在先算子指的是输出数据用于生成或作为该算子的输入数据的算子。例如,图1中算子9的在先算子为算子10和算子11,因此算子9的i为算子9、算子10和算子11的运算代价之和,在所有算子的运算代价都为1的情况下,算子9的i取值为3。图10中,备份算子还具有备份代价j,为了便于理解,本申请实施例假设所有j都取值为1。基于图10所示的裁剪结果,便可以获取多个算子组合,以及每个算子组合所对应的运算代价和备份代价之和。例如,在预估由算子4和算子12所构成的算子组合对应的目标概率时,可以在图10所示裁剪结果的基础上进一步简化,简化结果如图11所示。之后,便可以根据图11所示的裁剪结果确定预计完成时间点,算子4对应的预计备份时间点和算子12对应的预计备份时间点。又例如,在预估由算子4、算子9和算子12构成的算子组合所对应的目标概率时,由于存在分支情况,可以先对算子9和算子12进行线性化处理。随机算选取其中一个算子作为先运行的算子,另一个算子作为后运行的算子,此时,后运行的算子i的取值中应累加另一算子的i。例如,由算子9作为先运行的算子,算子12作为后运行的算子,则算子12的i取值应为6+3=9。应理解,本申请实施例所提供的查询计划的获取方法不仅可以由分布式数据库系统的主节点1执行,也可以由任一能够获取查询请求的其它计算设备来实现,例如,可以由单机数据库中的服务器实现,或者由对等数据库中的任一节点来实现,甚至可以由非数据库中的计算设备来实现,非数据库中的计算设备可以按照本申请实施例提供的方法获取查询计划后,然后将查询计划发送给图1所示的分布式数据库系统中的主节点1。采用本申请实施例所提供的查询计划的获取方法所获取的目标查询计划有更大的概率可以在预设时间长度内完成运行。以下以分布式数据库系统为例,本申请实施例还提供一种数据查询方法。以下以图2所示查询计划为例,假设根据上述查询计划的获取方法为图2中算子9、算子12和算子15设置了备份标记。图12为本申请实施例提供的一种数据查询方法流程示意图,如图12所示,主要包括以下步骤:s1201:主节点1获取查询计划,查询计划包括多个算子以及多个算子之间的逻辑关系,且多个算子中存在至少一个算子设置有备份标记。主节点1可以根据本申请实施例上述所提供的查询计划的获取方法获取查询计划。在另一种可能的实现方式中,也可以由外部设备根据本申请实施例所提供的查询计划的获取方法获取查询计划,之后,主节点1接收外部设备提供的该查询计划。s1202:查询节点接收主节点1提供的查询计划,并根据查询计划中多个算子之间的逻辑关系运行查询计划中的多个算子。s1203:查询节点在运行到设置有备份标记的算子时,备份设置有备份标记的算子的输出数据。s1204:查询节点将设置有备份标记的算子的输出数据和该算子的算子标识对应发送给对应的备用节点。例如,查询节点2在运行到算子9时,由于算子9设置有备份标记,查询节点2便可以在本地磁盘备份算子9的输出数据,并将算子9的输出数据和算子9的算子标识发送给备用节点2。s1203和s1204的实施顺序本申请并不多作限制。s1205:备用节点接收对应的查询节点发送的算子标识和算子的输出数据,并对应存储该算子标识和输出数据。s1206:主节点1监测分布式数据库系统中每一个查询节点的运行状况,并在任一查询节点中断运行查询计划时,确定该查询节点对应的备用节点。在本申请实施例中,主节点1可以通过查询节点上报的心跳信号监测查询节点的运行状况。例如,查询节点按照预设的频率向主节点1上报心跳信号,主节点1在连续若干次未收到该查询节点的心跳信号时,则确定该查询节点中断运行查询计划。又例如,还可以由主节点1向查询节点发送探测信号,若查询节点仍在运行查询计划,则会向主节点1返回探测应当。主节点1可以根据是否收到查询节点返回的探测应答以监测查询节点的运行状况,比如,在收到查询节点返回的探测应答时,确定该查询节点仍在运行查询计划,若未收到探测应答时,确定该查询节点中断运行查询计划。在确定了任一查询节点发生中断后,主节点1可以根据发生中断的查询节点与备用节点之间的对应关系,确定第一查询节点对应的备用节点。例如,图11中查询节点23中断运行查询计划,则主节点1便可以确定根据查询节点与备用节点之间的对应关系,确定查询节点23所对应的备用节点33。s1207:主节点1确定发生中断的查询节点当前运行的算子。如图2所示,查询计划中存在分支情况,查询节点有可能并行运行查询计划中不同分支上的算子。例如,查询节点在运行图2所示的查询计划时,便有可能并行运行算子9和算子15。因此,查询节点在中断运行查询计划时,当前运行的算子数量有可能为一个或多个。在本申请实施例中,主节点1可以访问发生中断的查询节点的运行记录,从而可以确定发生中断的查询节点当前运行的至少一个算子。s1208:主节点1确定当前运行的算子所对应的容错算子。在本申请实施例中,主节点1针对发生中断的查询节点当前运行的算子,根据算子与其它算子之间的逻辑关系确定当前运行的算子的在先算子,其中,算子的在先算子的输出数据用于生成或作为该算子的输入数据;主节点1在算子的在先算子中存在至少一个设置有备份标记的备份算子时,确定最晚运行的备份算子作为该算子对应的容错算子。在查询计划中,每个算子与其它算子之间都存在逻辑关系。除起始算子之外,每个算子都具有至少一个在先算子,任一在先算子的输出数据可以作为或生成该算子的输入数据。在本申请实施例中,针对第一查询节点当前运行的每一个算子,都要获取其对应的在先算子。以图1所示查询计划为例,假设第一查询节点当前运行的算子为算子7和算子15,则分别确定算子7的在先算子:算子8、算子9、算子10和算子11,以及算子15的在先算子:算子16和算子17。在发生中断的查询节点前运行的算子为多个时,主节点1会分别确定当前运行的每一个算子所对应的容错算子。主节点1在确定发生中断的查询节点当前运行的算子所对应的在先算子后,从该算子所对应的至少一个在先算子中确定该算子所对应的容错算子。在该算子所对应的至少一个在先算子中设置有备份标记的备份算子时,确定最晚运行的备份算子作为该算子对应的容错算子。例如,算子7的在先算子中,算子9为设置有备份标记、且最晚运行的算子,则确定算子9为算子7对应的容错算子。在一种可能的实现方式中,针对发生中断的查询节点当前运行的算子,主节点1还可以确定该算子所对应的在先算子中的起始算子,起始算子可能有一个或多个。针对每一个起始算子,若起始算子与该算子之间不存在设置有备份标记的算子,则将该起始算子作为该算子的容错算子。如图1中,算子7的在先算子中算子8和算子11为起始算子,其中,算子8与算子7之间不存在设置有备份标记的算子,则算子8也会作为算子7对应的容错算子。s1210:主节点1向第一查询节点对应的备用节点发送第一指令。以图1所示的分布式数据库系统为例,若查询节点21中断运行查询计划,主节点1会向查询节点21所对应的备用节点31发送第一指令。第一指令中包括在s1208中所确定的容错算子的算子标识,例如,包括算子7的容错算子:算子8和算子9的算子标识,算子15的容错算子:算子17的算子标识。由于分布式数据库系统中主节点1一般不会在开始查询时便把查询计划发送给备用节点,因此,第一指令中还包括发生中断的查询节点所运行的查询计划。为了减少重复执行为查询节点之间数据交互带来的影响,在一种可能的实现方式中,还包括:s1209:主节点1向分布式数据库系统的中其它查询节点发送第二指令。例如,图1中查询节点21发生了中断,则主节点1还会向未发生中断运行的查询节点22、查询节点23、查询节点24、查询节点25、查询节点26、查询节点27、和查询节点28发送第二指令。第二指令包括在s1208中所确定的容错算子的算子标识,例如,包括算子7的容错算子:算子8和算子9的算子标识,算子15的容错算子:算子17的算子标识。s1211:查询节点接收主节点1发送的第二指令,并根据第二指令中容错算子的算子标识,在确定本地备份有容错算子的输出数据时,根据容错算子的输出数据从容错算子开始继续运行查询计划。例如,第二指令中包括容错算子:算子8、算子9和算子17的算子标识,则查询节点分别查询本地是否备份有这三个算子的输出数据。由于算子9为设置有备份标记的算子,在该查询节点的运行进度不晚于第一查询节点的情况下,该查询节点中便可能在本地备份有算子9的输出数据。此时,便可以根据算子9的输出数据从算子9开始继续运行查询计划。应理解,由于本申请实施例中备份的是算子9的输出数据,因此从算子9开始继续运行查询计划并不包括运行算子9本身的过程。在一种可能的实现方式中,在本地未备份有容错算子的输出数据时,则返回该容错算子的在先算子中的起始算子,并继续运行查询计划。例如,若未备份算子9的输出数据,则从算子11开始继续运行查询计划。在一种可能的实现方式中,若容错算子为起始算子,则从容错算子开始继续运行查询计划。例如,上述容错算子中算子8和算子17便为起始算子,查询节点直接从算子8和算子17开始继续运行查询计划。s1202:备用节点接收主节点1发送的第一指令,查询第一指令中容错算子的算子标识对应的输出数据,并根据查询到的输出数据,从第一指令指示的容错算子开始继续运行查询计划。备用节点根据第一指令继续运行查询计划的过程与查询节点类似,本申请实施例不再一一赘述。基于图1所示的分布式数据库系统和图2所示的初始查询计划,以下以一具体实施例进行说明。步骤一:主节点1在收到查询请求后,根据查询请求生成如图2所示的初始查询计划。步骤二:主节点1从图2所示的初始查询计划中筛选出若干个算子作为备份算子,如从图2中筛选出算子4、算子9、算子12和算子15作为备份算子。步骤三:主节点1对算子4、算子9、算子12、和算子15排列组合,获取15个算子组合。步骤四:主节点1针对每一个算子组合,计算该算子组合对应的目标概率,比如,对于算子4和算子9构成的算子组合a,计算在对算子4和算子9的输出数据进行备份后,图2所示的初始查询计划可以在预设时间段内完成的概率。其中,算子组合a的目标概率可通过以下方式获得:确定图2中每一个算子的运算代价,以及算子4和算子9的备份代价。根据运算代价和备份代价确定初始查询计划对应的预计用时t,之后,根据公式二确定初始查询计划在预计用时内未出现中断运行的概率p(t),通过l个取样结果确定在运行初始查询计划的过程中出现中断的情况下,可以在预设时间长度内完成运行初始查询计划的概率p(t,k),之后,根据公式一确定算子组合a对应的目标概率p。其中,l个取样结果可以通过以下方式分别获得:根据初始查询计划中各算子的运算代价,以及算子4和算子9的备份代价,确定初始查询计划的预计完成时间点,以及算子4对应的预计备份时间点4和算子9对应的预计备份时间点9。根据公式五随机生成第一个中断时间点,以及,根据公式三生成第一个中断时间点之后的时间点,直至所生成的第m个中断时间点位于预计完成时间点之后;其中,所生成的中断时间点是否位于预计完成时间点之后是根据预计备份时间点4和预计备份时间点9确定的。根据前m-1个中断时间点、预计备份时间点和预计完成时间点,确定初始查询计划的完成用时。在完成用时不大于预设时间长度时,生成表示在预设时间长度内完成运行初始查询计划的取样结果;在完成用时大于预设时间长度时,生成表示在预设时间长度内未完成运行初始查询计划的取样结果。步骤五:主节点1从上述15个算子组合中挑选出目标概率符合预设规则的目标算子组合。步骤六:主节点1根据目标算子组合获取目标查询计划。如目标算子组合为算子组合a,则在图2所示的初始查询计划中为算子4和算子9设置备份标记。步骤七:主节点1向图1中的8个查询节点发送所获取的目标查询计划。针对图1中的任一查询节点,还包括:步骤八:查询节点接收并运行主节点1发送的查询计划。该查询计划为主节点1在步骤七中获取的目标查询计划。步骤九:在运行到带有备份标记的算子时,备份该算子的输出数据。如前例,目标查询计划中算子4中添加了备份标记,查询节点在运行到算子4时,会备份算子4的输出数据,包括在查询节点的本地备份输出数据以及将输出数据发送给对应的备用节点,使备用节点备份该输出数据。同样的,算子9中也添加了备份标记,查询节点在运行到算子9时也会对算子9的输出数据进行备份。主节点1在将查询计划下发给各个查询节点后,持续监测各个查询节点的运行情况。本申请实施例还包括:步骤十:主节点1在确定所述多个查询节点中任一查询节点(如查询节点2)中断运行目标查询计划时,确定查询节点22对应的备用节点32。步骤十一:主节点1确定查询节点2当前正在运行的至少一个算子,如算子7和算子12。确定算子7对应的容错算子:算子8和算子9,算子12对应的容错算子:算子14和算子17。步骤十二:主节点1向除查询节点2之外的其它查询节点发送第二指令,第二指令中包括算子8、算子9、算子14和算子17的算子标识;以及,主节点1向备用节点32发送第一指令,第一指令中包括算子8、算子9、算子14和算子17的算子标识和查询节点22所运行的上述查询计划。对于分布式数据库系统中除查询节点22之外的任一查询节点,本申请实施例还包括:步骤十三:查询节点接收第二指令,并根据第二指令从算子8、算子14和算子17开始继续运行查询计划;以及,在本地备份有算子9的输出数据时,从算子9开始继续运行,在本地未备份有算子9的输出数据时,从算子11开始继续运行查询计划。对于备用节点32,本申请实施例还包括:步骤十四:备用节点32接收第一指令,并根据第二指令从算子8、算子14和算子17开始继续运行查询计划;以及,根据算子9的输出数据从算子9开始继续运行查询计划。基于本申请实施例提供的上述查询计划的获取方法和数据查询方法,本申请实施例还以事务处理性能委员会(transactionprocessingperformancecouncil,tpc)推出的tpc-h测试集中的q9查询为例,对本申请实施例所达到的效果进行了测试。本次测试中,以单台配备8核2.4mhz主频处理器32g内存的物理机作为主节点,十台相同配置的物理机作为十个查询结点。进行tpc-h500g数据集测试。时间敏感查询给定的时间k设置为1.5t1,t1为按照现有查询方法未发生中断的情况下完成查询所需的时间。平均故障间隔时间mtbf设置为5670小时(即约8个月1次故障)。在本次测试中,用来对比的现有方法为:在查询过程中出现中断情况下,重新运行查询计划。经测试,在预设时间长度内完成查询的概率为98.6577%。而按照本申请实施例所提供的查询计划获取方法和分布式数据库系统中数据查询方法,在预设时间长度内完成查询的概率提高到99.3986%。此外,本申请实施例还以tpc-h测试集中的q21查询为例,对本申请实施例所达到的效果进行了测试。本次测试中,以单台配备8核2.4mhz主频处理器32g内存的物理机作为主节点,十台相同配置的物理机作为十个查询结点。进行tpc-h500g数据集测试。时间敏感查询给定的时间k设置为1.5t1,t1为按照现有查询方法未发生中断的情况下完成查询所需的时间。平均故障间隔时间mtbf设置为720小时(即约1个月1次故障)。在本次测试中,用来对比的现有方法为:在查询过程中出现中断情况下,重新运行查询计划。经测试,在预设时间长度内完成查询的概率为96.7544%。而按照本申请实施例所提供的查询计划获取方法和分布式数据库系统中数据查询方法,在预设时间长度内完成查询的概率提高到99.9384%。基于相同的发明构思,如图13所示,为本申请实施例提供的一种查询计划的获取装置示意图,该装置1300可以是主节点或其它计算设备,装置1300可执行图3,和/或,图4和/或,图5所示的查询计划的获取方法。该装置1300包括至少一个处理器1301和存储器1302。所述处理器1301、存储器1302通过通信总线连接。处理器1301可以是一个通用中央处理器(cpu),微处理器,特定asic,或一个或多个用于控制本申请方案程序执行的集成电路。通信总线可包括一通路,在上述器件之间传送信息。存储器1302可以是rom或可存储静态信息和指令的其他类型的静态存储设备,ram或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1302可以是独立存在,通过通信总线与处理器1301相连接。存储器1302也可以和处理器集成在一起。其中,所述存储器1302存储有实现本申请实施例方案的计算机程序或指令。所述处理器1301被配置为执行所述存储器1302中存储的应用程序代码。在具体实现中,作为一种实施例,处理器1301可以包括一个或多个cpu,例如图1300中的cpu0和cpu1。在具体实现中,作为一种实施例,装置1300可以包括多个处理器,例如图1300中的处理器1301和处理器1308。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器,这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序或指令)的处理核。在装置1300中,存储器1302用于存储程序指令,处理器1301通过调用存储器1302中的程序执行上述图3至图12中任意一种可能的实施例,比如该装置实现主节点功能时,处理器1301可以进行生成初始查询计划,从初始查询计划包括多个算子中获取至少一个算子组合,从所获取的至少一个算子组合中确定目标概率满足预设条件的目标算子组合,并根据目标算子组合为初始查询计划包括的多个算子中属于该目标算子组合的备份算子设置备份标记等操作,具体详细实现过程可以参照上述方法实施例的描述,这里不再过多赘述。当然该装置实现主节点功能时也可以不执行这些操作,处理器1301直接从其他设备接收设置好备份标记的目标查询计划,然后将目标查询计划发给各个查询节点。此外,本申请实施例还提供了一种主节点硬件结构的具体实例。如图14所示,主节点包括硬盘、内存、cpu以及网络接口,如传输控制协议(transmissioncontrolprotocol,tcp)网络接口,其中,硬盘中存储有程序指令,主节点在获取查询计划时,cpu将硬盘中的程序指令加载至内存,并根据加载至内存的程序指令执行本申请实施例所提供的查询计划的获取方法,之后,通过tcp网络接口将获取的查询计划下发至各查询节点。在图13所示装置实现上述查询节点功能时,处理器1301可以通过收发器(图13中未示出)接收主节点提供的查询计划,并根据查询计划中多个算子之间的逻辑关系运行该查询计划中的多个算子;在运行到设置有备份标记的算子时,备份该设置有备份标记的算子的输出数据,并控制收发器将上述输出数据和该算子的算子标识发送给对应的备用节点,具体详细实现过程可以参照上述方法实施例的描述,这里不再过多赘述。在图13所示装置实现上述备份节点功能时,处理器1301可以通过收发器接收对应的查询节点发送的至少一个设置有备份标记的算子的输出数据和该算子的算子标识;对应存储该算子标识和该输出数据;通过收发器接收主节点发送的第一指令,并查询该第一指令中容错算子的算子标识对应的输出数据,并根据查询到的输出数据,从第一指令指示的容错算子开始继续运行上述查询计划,具体详细实现过程可以参照上述方法实施例的描述,这里不再过多赘述。本申请可以根据上述方法示例对装置进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述程序在计算机上运行时,使得计算机实现上述方法实施例所描述的方法步骤。本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述方法实施例所描述的方法步骤。参见图15,本申请实施例还提供一种分布式数据库系统1500,如图15所示,分布式数据库系统500包括硬件层1507和运行在硬件层1507之上的虚拟机监控器(vmm)1501,以及多个虚拟机1502。其中,存在一个虚拟机为特权虚拟机,可以作为分布式数据库系统1500的一个主节点,其余虚拟机作为分布式数据库系统的查询节点或备份节点。具体的,虚拟机1502是通过虚拟机软件在公共硬件资源上模拟出的虚拟的计算机,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。硬件层1507:虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如包括处理器1504(例如cpu)和存储器1505,还可以包括网卡1503(例如rdma网卡)、高速/低速输入/输出(i/o,input/output)设备,及具有特定处理功能的其它设备。虚拟机1502基于vmm1501,以及硬件层1507提供的硬件资源,运行可执行程序,以实现上述图12的实施例中查询节点或备份节点所实现的功能。为了简洁,在此不再赘述。进一步地,该分布式数据库系统500还可以包括宿主机(host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,host可能是虚拟机监控器(vmm);也有可能是由vmm和1个特权虚拟机的结合。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器(如vcpu)、虚拟内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应host的一个文件或者一个逻辑块设备。虚拟机运行在host为其准备的虚拟硬件平台上,host上运行一个或多个虚拟机。虚拟机1502的vcpu通过执行存储在其对应的虚拟内存中的可执行程序,以实现或者执行本申请上述各方法实施例中所描述的查询计划的获取方法,和/或,数据查询方法。参见图16,本申请实施例还提供一种系统,包括:数据库服务器800,基于与数据库服务器800通过通信网络连接的客户端设备900。其中:客户端设备900的硬件层906上运行有客户端操作系统904,操作系统904上运行有应用程序902;数据库服务器800的硬件层816上运行有操作系统814,以及在操作系统814上运行有数据库管理系统812。应用程序902经由通信网络与在数据库服务器800上运行的数据库管理系统812连接并且访问或者操作存储在数据存储器818中的数据库,例如,通过结构化查询语言(structuredquerylanguage,sql)语句查询、更新或删除数据库中的数据,或者导入新的数据至数据库。硬件层906和816包含操作系统和应用程序运行所需的基本硬件单元,例如,处理器,例如cpu,内存(memory)、输入/输出设备、网络接口等。数据存储器818可以是数据库服务器800的外部存储器,比如硬盘、磁盘、存储阵列,或存储服务器等,与数据库服务器800通信连接。或者,数据存储器818也可以集成在数据库服务器800内部,与处理器和i/o设备通过总线或其它内部通信方式交互数据。数据库服务器800可以由一个或多个物理主机构成,其内存中存储有可执行代码,该可执行代码在被处理器执行时被配置为实现数据库管理系统812的组件和功能。数据库管理系统812具体可以实现本申请上述各方法实施例中所描述的查询计划的获取方法,和/或,数据查询方法。应理解,在本申请的各种实施例中,“可执行程序”和“计算机程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。上述实施例描述的方法步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实上施过程构成任何限定。本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列(fpga)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于终端设备中。可选地,处理器和存储媒介也可以设置于终端设备中的不同的部件中。这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1