法律状态公告日
法律状态信息
法律状态
2015-06-03
授权
授权
2014-11-26
著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20090612
著录事项变更
2012-05-23
实质审查的生效 IPC(主分类):G06F17/30 申请日:20090612
实质审查的生效
2010-12-22
公开
公开
技术领域
本说明书涉及决策支持(decision support)系统。
背景技术
人为的(human)及自动化决策是使用与该决策相关的信息和/或与该决策的结果相关的信息而推测地制定的。因而,一般来说决策支持指的是以最适于帮助决策制定(decision-making)的方式来获取和提供这样的信息的领域(field)。许多不同的领域和环境(settings)可能得益于该决策支持,包括,举几个例子,商业、法律、教育、政府、健康、军事以及个人领域等。在商业环境中,例如,股权经理(equities manager)可能希望关于是否购买特殊股权而制定决策,并且可能希望取得能够帮助制定这样的决策的信息。
在一种理想情况下,决策制定者(decision maker)可以很容易地被提供恰好是制定决策所需要的信息,例如,所有可用信息都是最新的,并且可以被解析,使得仅仅所期望的/必需的信息被提取出来以提供给决策制定者。事实上,达到这样理想的解决方案是很难的或几乎不可能的。例如,所必需的信息可能在数量上非常庞大,并且/或者可能被分布在很大的地理区域上(例如,在多个数据中心里),也可能存储在异类系统中。与此同时,一些信息对于一些决策来说在时间上是很紧迫的,并且因此会快速地过期(out of date)且对于决策支持来说变得无用。另一方面,为了制定同样或不同的决策,另一些信息可能几乎无限期地保持通用(current)。考虑到这些以及其它因素,那么可以看出,在对于制定可接受的决策来说是必需的一个时间范围内识别以及获取期望的信息也许是成问题的。
发明内容
根据一个总的方面,包括记录在计算机可读介质上的指令的计算机系统可以包括被配置为接收对多个远端数据库和相应的多个复制数据库的不同组合可应用的(applicable against)查询(query)的查询处理器,该多个复制数据库包括各个远端数据库的至少一些复制数据,其中,每个复制数据库在多个同步时间被与相应的远端数据库同步,并且所述不同的组合包括被相应的同步时间定义的复制数据库的将来版本。该系统可以进一步包括查询计划产生器,所述查询计划产生器被配置为基于与该查询相关的查询值以及被相应的组合所引起的该查询值的减少来确定与所述不同的组合的至少一个子集相关联的信息值,并且进一步被配置为基于所述信息值来产生包括不同组合中的至少一个组合的查询计划,用于利用其执行查询。
实施方案具有以下特征中的一个或多个。例如,所述查询计划产生器可以包括被配置为计算信息值的信息值计算器,并且该信息值计算器可以包括计算等待时间(CL)计算器,该计算等待时间计算器被配置为确定在该查询结果的接收与该查询的发出之间的时间;以及同步等待时间(SL)计算器,该同步等待时间计算器被配置为确定在该查询结果的接收与早于该查询的发出或与该查询的发出同时的多个同步时间中的相关同步时间之间的时间。然后,基于计算等待时间和同步等待时间的组合,信息值计算器可以被配置为确定查询值的减少。该信息值计算器可以包括参数管理器,该参数管理器被配置为确定查询值以及用于定义减少的程度的衰减率λCL和λSL,该衰减率λCL和λSL分别与计算等待时间和同步等待时间中的每一个相关联。该查询计划产生器可以被配置为使用公式IV=QV(1-λCL)CL(1-λSL)SL来确定信息值,这里IV指代信息值以及QV指代查询值。
该系统可以包含查询重写器,该查询重写器被配置为将查询转变成被查询计划产生器使用的基于时间戳的查询,其中该基于时间戳的查询由该查询计划中涉及的复制数据库的所有复制表中的最早的最后同步时间戳来定义。该系统可以进一步包括搜索空间管理器,该搜索空间管理器被配置为缩小在产生查询计划时将被查询计划产生器搜索的不同组合的搜索空间,包括确定查询计划边界,该查询计划边界不包括具有比当前最优查询计划的当前最优信息值低的信息值的组合。
该系统可以包括工作负载(workload)管理器,该工作负载管理器被配置为将该查询包括在一组查询中,并且被配置为作为该组查询整体的信息值的最优化的部分确定查询计划。在这种情况下,工作负载管理器可以包括组产生器,该组产生器被配置为确定拥有相关联的查询计划的多个查询以及用于执行该查询计划的时间范围,并且被配置来基于该时间范围的重叠从该多个查询中定义该查询组。该工作负载管理器可以包括序列管理器,该序列管理器被配置为最优化该组查询的信息值,包括确定与该最优信息值相关联的查询序列。在这种情况下,该工作负载管理器包括遗传算法管理器,该遗传算法管理器被配置为将该组查询中的查询的序列表示成染色体,并且被配置为评估该染色体以获取子集,用于将该子集重新组合成下一代染色体。
根据另一个总的方面,一种计算机实施的方法可以包括接收对多个远端数据库和相应的多个复制数据库的不同组合可应用的查询,该多个复制数据库包括各个远端数据库的至少一些复制数据,其中,每个复制数据库在多个同步时间被与相应的远端数据库同步,并且不同的组合包括相应的同步时间定义的复制数据库的将来版本,基于与该查询相关的查询值以及由相应的组合所引起的该查询值的减少,来确定与所述不同的组合的至少一个子集相关联的信息值,以及基于该信息值来产生包括不同组合中的至少一个组合的查询计划,用于利用其执行查询。
实施方案可以具有以下一个或多个特征。例如,在确定信息值中,计算等待时间(CL)可以被确定为在接收到查询结果与查询发出之间的时间,以及一个同步等待时间(SL)可以被确定在该查询结果的接收与该查询的发出之间的时间;以及同步等待时间(SL)可以被确定为在该查询结果的接收与早于该查询的发出或与该查询的发出同时的多个同步时间中的相关同步时间之间的时间。基于计算等待时间和同步等待时间的组合,确定查询值的减少。确定信息值可以包括确定查询值和衰减率λCL和λSL,该衰减率λCL和λSL分别用于定义与计算等待时间和同步等待时间中的每一个相关联的减少的程度。
该查询可以被包含在一组查询中,并且作为该组查询整体的信息值的最优化的部分确定该查询计划。进一步,作为该组查询整体的信息值的最优化的部分确定该查询计划可以包括执行遗传算法,该遗传算法被用于最优化该组查询整体的信息值,包括确定与被表示成遗传算法的染色体的最优化的信息值相关联的查询序列。
根据另一个总的方面,计算机程序产品可以有形地体现在计算机可读介质上并且可以包含指令,当指令被执行时,该指令被配置为接收对多个远端数据库和相应的多个复制数据库的不同组合可应用的查询,该多个复制数据库包括各个远端数据库的至少一些复制数据,其中,每个复制数据库在多个同步时间被与相应的远端数据库同步,并且不同的组合包括相应的同步时间定义的复制数据库的将来版本,基于与该查询相关联的查询值以及由相应的组合所引起的该查询值的减少,来确定与所述不同的组合的至少一个子集相关联的信息值,以及基于该信息值来产生包括不同组合中的至少一个组合的查询计划,用于利用其执行查询。
实施方案可以具有以下一个或多个特征。例如,当指令被执行时,该指令可以被配置为来确定信息值,包括将计算等待时间(CL)确定为在接收到查询结果与查询发出之间的时间,以及将同步等待时间(SL)确定为在接收到查询结果与早于查询的发出或与查询的发出同时的多个同步时间中的相关同步时间之间的时间。信息值可以使用公式IV=QV(1-λCL)CL(1-λSL)SL来计算,这里IV指代信息值以及QV指代查询值,并且λCL和λSL分别是用于定义与计算等待时间和同步等待时间中的每一个相关联的减少程度的衰减率。
一个或多个实施方案的细节在以下的附图和说明书中被阐明。其它特征将从说明书和附图以及权利要求中显而易见。
附图说明
图1是信息值驱动的决策支持系统的框图。
图2是示出了图1中系统的示例操作的流程图。
图3是被用于执行图1系统中的基于时间戳的联合(join)操作的表的框图。
图4是示出了用于图1的系统的查询的样本执行情景(scenarios)定时图。
图5是图1的系统可以从其中选择的第一示例查询计划的框图。
图6是图1的系统可以从其中选择的第二示例查询计划的框图;其示出了当选择最优查询计划(query plan)时,查询计划的搜索空间的管理。
图7是示出了当选择图5和6的查询计划时图1的系统的示例操作的流程图。
图8是示出了当最优化多个查询的工作负载(workload)时在图1的系统中使用的染色体的示例组合的框图。
图9是示出了当如图8中那样最优化多个查询的工作负载时图1的系统的示例操作的流程图。
图10是示出了图1的系统的示例操作的流程图,该操作包括作为该操作的子操作的图7和图9中的操作。
具体实施方式
图1是用于提供信息值驱动的决策支持的系统100的框图。在图1的示例中,决策支持系统102被示出,该系统接收至少一个查询104,并提供信息106作为回复。正如可以意识到的,信息106于是可以被人或自动化用户在制定某个相关决策时使用。
在图1中,决策支持系统102以最优化用于特定决策的信息的值的方式来提供信息106。例如,决策支持系统102识别出信息106对于决策制定者具有特殊的值,并且这样的值可能由于例如当提供信息106时可能存在的系统约束而以各种方式被减小(diminish)或降低(reduce)。例如,信息106的值可能由于系统100在提供信息106时的延迟而被减小,在这种情况下,这种延迟如果足够大,则可能引起信息106的值降为零(例如,当信息106完全过期,或者当决策制定者对于决策有最后期限,而该最后期限在信息106被提供之前已经过去)。
图1中的系统100示出了决策支持系统102可以访问远端数据库108a,该远端数据库108a可以在本地被复制到决策支持系统102作为复制数据库108b。类似地,决策支持系统102可以访问远端数据库110a,该远端数据库110a可以在本地被复制到决策支持系统102作为复制数据库110b。在实践中,复制数据库108b和110b可以复制它们相应的远端数据库108a和110a的全部或仅仅一部分。而且,将会意识到,决策支持系统102可以访问另外的远端数据库(尽管为了简明起见而未在图1中明确地示出这样的另外的远端数据库),并且这样的另外的远端数据库中的一些或所有远端数据库可以使得它们的内容中的一些或全部内容被复制到决策支持系统102本地的相应的复制数据库。
这样,决策支持系统102的一个功能可以包括为对数据库108a、108b、110a、110b的子集执行查询104而选择最优查询计划,以便最优化信息106的最终值。例如,第一个这样的查询计划可以包括对复制数据库108b和远端数据库110a执行查询104,然而第二个这样的查询计划可以包括对复制数据库110b和远端数据库108a执行查询104。更一般来说,决策支持系统102可以确定相关的可用数据库的子集或组合,可以对相关的可用数据库的子集或组合执行查询104以便获取最优或接近最优(near optimal)的信息106的值。
如上所述,决策支持系统102可以在几乎任何环境里被实现,其中,基于存储的可用信息或另外获取的信息来实现决策制定,所述环境包括商业、法律、教育、政府、健康、军事以及个人决策领域。其它更具体的例子包括数理逻辑、电力网络、保险(例如,诈骗检测)以及金融(finance)(即,资产曝光及定位、以及短期金融计划)决策。为了当前描述的连贯性和清楚性,将对商业领域决策特别是金融决策给出具体示例。然而,应该意识到的是所描述的构思可以容易地被扩展到其它期望的环境。
注意到,系统100反映了这样一个事实,许多大公司,特别是那些金融服务领域里的大公司,以分散的管理结构,例如通过业务范围(line of business)或市场区间(market segment),来接近市场。这些公司需要访问分布的且很可能是异类的针对商业智能应用(business intelligence application)的数据仓库。这种公司在抑制花费的同时寻求平衡中央管理控制,并且,同时保持每一个业务范围对它的市场区间的反馈、服务以及销售的灵活性。
这样,图1反映了一个设置,该设置允许商业交易在远端位置被执行(例如,分支级办公室,其可以被理解为容纳图1中的远端数据库108a和110a),然而决策制定以及复杂商业运作(business operation)分析任务在总部被执行。在一些情况下,使用实时或接近实时的数据来执行这种中央决策制定以及分析是重要的,然而在同样或其它情况下,尽可能快地获取对必要数据的访问可能是重要的(例如,在逼近的最后期限之前)。
在一个中央站点(central site)可能会将所有可用数据有效地存储,但是当需要实时或接近实时的决策时,这种方法却不是最佳的。另一方面,有可能在这种中央站点接收查询并且将因而发生的多个查询分散到远端数据库。尽管后一种方法在提供更加新的数据方面有优势,但是不断地管理涉及多个站点的复杂查询的交互是困难的,特别是在大规模情况下。因而,图1提供了一个混合方法,在该方法中决策支持服务102相对于远端数据库108a和110a位于中央站点,并且被配置为将频繁访问的数据的相对小的集合复制到复制数据库108b和110b。
如上所述,DSS 102的用户(决策制定者)可能关注所获取的数据是多么快和多么新其中之一或关注它们二者。也就是说,例如,这样的用户关心的不仅仅是响应时间,还关心商业运作报告的时间戳。例如,当提交调查(inquiry)时,5分钟之后返回的带有时间戳是8分钟前的数据的报告(报告1)比两分钟之后返回的带有时间戳是12分钟前的数据的报告(报告2)拥有更精确的消息。然而,该2分钟之内产生的报告可能由于它相对地及时而十分地有价值。
刚才描述的两种类型的不确定性在这里被称为计算等待时间(computational latency,CL)和同步等待时间(synchronization latency,SL)。在这点上,计算等待时间指的是从提交/发布查询104到检索到/接收到结果得到的信息106的时间量,并且可以指任何表达(formulating)、处理、传输或者任何其它使得信息106并非瞬时(less than instantaneously)被接收到的计算操作。例如,计算等待时间可以被视为包括查询排队时间、查询处理时间、以及查询结果传输时间的总和,其中所有这三个值通过流逝的(elapsed)时间来测量,并且其中仅仅对于运行在远端服务器上的查询来测量查询结果传输时间。计算等待时间会由于不能够制定任何决策而导致不确定性和风险(例如,当最后期限已经错过或相反信息106被接收晚了)。
同步等待时间(SL)指的是从复制数据库108b、110b的其中之一的最近(或最相关的)的同步开始直到信息106被接收到为止的时间量。例如,如果复制数据库108b是在中午被更新的,查询104在12:30被提交,并且信息106在1:00被接收,那么因而发生的同步等待时间将是一个小时。同步等待时间会由于基于过期信息的决策制定而导致不确定性和风险。应该意识到的是,计算等待时间和同步等待时间可能并且非常可能重叠。
计算等待时间和同步等待时间的进一步的示例在下面被提供(例如,关于图4)。但是一般来说,应该意识到,图1中的DSS 102可以被操作以便最大化、最小化或相反平衡这些等待时间和可能影响信息106的值的其它因素。例如,如果DSS 102将查询104路由到复制数据库108b、110b,那么计算等待时间可以被最小化(因为数据库108b、110b对于DSS 102来说是本地的)。另一方面,如果DSS 102将查询104路由到远端数据库108a、110a,那么同步等待时间可以被最小化(因为数据库108a、110a包括最新数据)。同时,将查询104路由到数据库108a、108b、110a、110b的组合或子集可以提供计算等待时间和同步等待时间之间的平衡,这可能对于提供具有最高可能(highest-possible)的值的信息106是最有益的。
在操作中,该DSS 102于是经由查询处理器112来接收到查询104,并且然后查询计划产生器114用公式表示关于如何在数据库108a、108b、110a、110b之内以及之间路由查询104的决策。更具体来说,查询计划产生器114确定数据库108a、108b、110a、110b中的哪一个应当接收查询104,以及查询104应当在何时将被路由到数据库108a、108b、110a、110b中所选择的那个数据库(例如,是立刻路由查询104还是在路由查询104之前等待将来的数据同步)。
为了用公式表示(formulate)这种查询计划,查询计划产生器114寻求最大化的结果得到的信息106的值,即,寻求确定反映最适合提交查询104的决策制定者的信息的信息值IV。等式1表示用公式表示这样的信息值的示例技术:
IV=BV(1-λCL)CL(1-λSL)SL 等式(1)
在等式(1)中,IV指代信息值,而BV指代信息的商业值(business value)。CL和SL分别指代计算等待时间和同步等待时间,并且λCL项和λSL项指代分配给相应等待时间类型的折扣率(discount)。因此,实践中,BV项反映了这样一个事实:客观上或者主观上对于一个特定用户来说,一些决策(以及支持信息)可能比其它的更加重要的。这样的商业值(这里,再一次,提及商业领域中的这样的值仅仅是一个示例,并且在可更加广泛应用的意义上来说,可以使用更一般(more generic)的项值)因此代表起点或者最大值,如果CL和SL为零(所有数据都是刚有的(fresh)最新的(up-to-date)并且是立即获取的理想情景),该最大值在理论上可以得到。当然,实践中,CL和SL的值不会是零,因此,它们的幅度以及衰减率λCL和λSL的幅度反映了这些不同的参数在相应的时间帧(time frame)内使针对特定用户的信息值IV减小的程度。
为了进一步讨论相关标记,在当前描述中,诸如复制数据库108b和110b的复制数据库可以被称为R1、R2...Rn,然而诸如远端数据库108a和110a的远端数据库可以被称为T1、T2...Tn。这样,可以规定查询计划产生器114被配置为产生这样的查询计划,该查询计划确定数据库(R1、R2、T1、T2)的使用,使得对于信息106来说IV是最大化的。
也就是说,如同已经提及的那样,当复制数据库108b、110b可用时,有多个计划(即,数据库的组合)用于处理一个查询。例如,对于具有对T1和T2进行的联合操作的查询,并且暂时假定到下一个同步为止查询104将被没有延迟地立即提交,有4个查询处理计划:(T1,T2)、(R1,T2)、(T1,R2)以及(R1,R2)。出于有更好的反应时间这一个原因,比起其它三个计划,这种查询处理方案将更愿意选择(R1,R2)。然而,至于查询结果的信息值,(R1,R2)可能不是最好的选择,因为它可能产生比其它计划低的信息值,例如,如果R1和R2已经失去同步一段时间了。于是,DSS 102和查询计划产生器114进行操作以选择最大化信息值IV的查询计划。
在一些实现方式中,至少考虑查询的延迟提交可能是有利的。例如,可能出现复制数据库108b在58分钟之前被最后一次同步,并且每小时都被安排同步。在这种情况下,再等待两分钟(并且因此增加两分钟的计算等待时间)对于获取同步等待时间的相应的(并且大得多的)减少可能是值得的,因为查询104将针对新同步的数据来执行。以该方式等待同步可以被类推为使用正被讨论的复制数据库的不同版本(也就是,将来的版本)。然后,关于标记的问题,这种复制数据库的将来的版本可以被表示为R1’针对第一个将来的同步,R1”针对第二个将来的同步等等。实际上,这种将来的版本变成另外的候选数据库,用于形成可能的组合和相关联的查询计划。例如,除了上述提到的四个组合外,另外的数据库组合可以被认为也是可用的,包括,例如(R1’,T2)或者(T1,R2”)。
进一步在图1中,工作负载管理器116被配置为认为查询104可以代表多个查询,并且更具体来说,被配置为将整体上最优化多个查询的集合的信息值或多个查询的工作负载。例如,针对第一查询的查询计划可以产生结果得到的信息的高IV,但是,例如由于被对该第一查询的处理强加于系统100的约束,第二查询可能经历非常长的计算等待时间,这可能会严重地降低其结果得到的信息的IV。因此,在这些以及其它例子中,工作负载管理器116可以被配置为选择查询的多个集合中的一个序列,该序列可以整体上最优化该集合的信息值。工作负载管理器116的操作在下面被更详细地描述,并且具体来说,在下面针对图8和图9来详细讨论。
在DSS 102的操作中,然后,查询104在查询处理器112处被接收到,该查询处理器112将查询104和相关联的信息路由到查询计划产生器114和工作负载管理器116中的一个或它们二者。在这点上,又转向查询计划产生器114的更多细节,查询重写器118可能被包括进来并且被配置为排除在查询计划产生期间信息106由于例如数据库108a、108b、110a、110b的不同的同步或者同步速率而不正确的可能性。例如,复制数据库108b可能与远端数据库108a在某个时间同步,然而复制数据库110b可能与远端数据库110a在稍后的时间同步。在两个同步之间的中间时间里,数据库108a、110a中的一个或它们两者中的数据可能改变。结果,例如,这样的过期数据和在中间时间改变了(altered-in-the-meantime)的数据的组合可能引起信息106实际上是不正确的,例如,可能返回与数据的任何实际情景都不匹配的结果。
一般来说,图1中的DSS 102的查询重写器118可以被配置为检查这样的数据并且确保在正被检查的数据集中(例如,合并的或联合的),所有数据都是使用其最早的时间戳来选择的。也就是说,为了确保一致和正确的结果,查询重写器118考虑可能使用和其它可能可用的数据相比相对比较老的数据(并且,因此招致另外的同步等待时间)。
特别地,查询重写器118可以维护并参考跟踪同步数据的时间戳(即,跟踪数据的每一条或集合被同步的具体时间)的同步信息表120。进一步,为了最小化出于保持信息106的一致性的目的而容许的另外的同步等待时间的量,该查询重写器118可以基于期望执行什么操作(例如,数据的插入与删除)来使用同步信息表120。查询重写器118和同步信息表120的使用与操作的具体示例在以下例如针对图3来提供。
当重写的时候,查询104可以被传递到信息值计算器122,如已经描述过的,该信息值计算器122被配置为考虑可能的查询计划并且使用上述等式(1)来分配信息值IV给每一个查询计划。在这点上,信息值计算器122可以包括参数管理器124,所述参数管理器124被配置为接收、计算或者另外确定可以由相关用户(决策制定者)的偏好指定或从相关用户(决策制定者)的偏好导出的参数。在等式(1)的例子中,这些参数包括商业值BV以及衰减率λCL和λSL。
对于这些参数中的任何一个,参数处理器124可以简单地直接从相关决策制定者接收值和偏好(例如,优先级别),例如通过用于接收这种偏好的适当的图形用户接口(GUI)的方式。在其它例子里,各种规则、准则以及/或者条件可能是适当的,参数管理器124可以使用它们导出或确定一个或多个参数。
例如,商业值BV可以是被归一化为0和1之间的值的相对项(relative term)。对于特定的查询以及相关联的数据,参数管理器124可以访问规则和/或确定系统100的当前条件以向BV分配值。例如,与涉及人力资源的查询相比,涉及库存(inventory)的查询可以被分配更高的BV。或者,特殊用户(例如,CEO)提交的查询可以自动被分配较高的BV。如果系统100现在被特别高度使用,或者不同地,如果系统100没有被高度地使用,那么对于某个查询来说BV的值可以被调高或调低。
有点类似地,衰减率λCL和λSL可以直接从决策制定者或其它用户接收。从等式(1)的本质可以意识到,分配较高的衰减率改变了CL或SL的相对重要性或影响。例如,如果信息106与逼近的最后期限相关联,那么衰减率CL可能被增加,然而衰减率SL可能相对被减小。另外一方面,如果没有信息106要迟到的逼近的风险,但是如果重要的是信息106是最新的(刚有的),那么衰减率λSL的值相对于衰减率λCL的值来说可能被增加。在第三个例子中,衰减率λCL和λSL都可以相当大以至于整个IV将整体上相对衰减很快。
象商业值BV一样,衰减率λCL和λSL也可以根据规则、条件或准则的集合来计算。例如,可能已知某些类型的查询涉及具有频繁的或逼近的最后期限的内容,这可以被反映在衰减率λCL的计算中。关于对衰减率λSL的选择的影响,类似的解释(comment)适用于涉及典型地需要完全最新的或刚有的数据的主题的查询。
信息值计算器122进一步包括CL计算器126以及SL计算器128来分别确定计算等待时间和同步等待时间。这样的计算可以使用已知的因素和技术按这里描述的方式来执行,这样的计算在下面被更加详细地讨论(例如,针对图3和图4),并且因此,为了清楚和简明起见,在这里不进行详细的讨论。
尽管图1的示例中示出了仅仅包括两个远端数据库和两个复制数据库的简单的例子,但是应该意识到更大数量的数据库可以被考虑和使用。因此,对于具有这样的相当大数量的数据库的情形,用于包含在潜在的查询计划中的数据库的可能组合的数量可以呈指数上升。
这样,在图1中,当针对可用查询计划而最优化信息值时,搜索空间管理器130可以被配置为限制数据库的可能组合的搜索空间。具体地,如针对图6所更加详细地讨论的那样,搜索空间管理器130可以执行分散和聚集(scatter-and-gather)算法,该算法选择当前最优的查询计划,并且然后排除被认为不比当前最优查询计划更好的查询计划,并且然后确定在剩下的可用查询计划中是否有新的最优查询计划可用。
这一过程一直被重复,直到查询计划的搜索空间被充分地限制到允许检查和计算最终的最优查询计划。在这一点上,查询计划选择器132可以被用于确定搜索空间是否以及何时被充分地限制,并且在那时从剩余的查询计划中选择最终的最优查询计划。
如上所述,当多个查询(例如,104和104’)被提交时,查询计划产生器114可以为每一个查询确定至少一个可能的查询计划。于是,可能发生一个这样的查询被安排或计划在另一查询的完成之前开始,以致,在这种意义上来说,两个查询发生重叠。在这种情况下,查询可能竞争系统100的资源,并且,如果这种竞争不予考虑的话,决策制定者可能得到非期望的结果。例如,如已经提到的,资源竞争可能使得该查询中的一个查询的计算等待时间增加到其信息值减小到不可接受的水平的点。这些以及其它的可以影响一个查询或一组查询的信息值的因素可以被管理,例如,通过改变查询被提交的顺序和定时。因此,工作负载管理器116可以将这种重叠的查询看作一组或多组并且可以设法将每一组排序,以便例如整体上最大化该组的信息值。
工作负载管理器116因而被图示为包括组产生器134,该组产生器134检查各个查询以及确定在执行过程中可能重叠的组。然后,序列管理器136可以检查一组查询的不同序列以决定哪一个序列是最好的。对于后者,遗传算法管理器138可以被用于通过将序列表示为染色体,以及然后使用染色体评估器140来实现评估染色体的进化过程,以及然后使用染色体组合器142来组合评估后的染色体中的被评价最高(highest-rated)的染色体对,来检查可用序列的搜索空间。以这种方式,进化循环(evolutionary loop)被创建,其中,染色体的每一个连续世代整体上更加有可能为处理该组查询提供最优工作负载,以为该工作负载整体获取最优IV。包括遗传算法管理器138的工作负载管理器115的另外的操作针对图8和9在以下被描述。
在图1中,DSS 102可以在计算设备144上被执行,该计算机设备144可以代表一个或多个计算设备,其中的任何一个可以被用于实现DSS 102的一个或多个组件。例如,如上所述,计算设备144可以代表服务器,该服务器被用于执行数据管理系统,该数据管理系统组合数据到本地复制数据库108b、110b的存储以及所需要的查询到远端数据库108a、110a的分布。该计算设备144因此可以被理解成与决策支持系统的标准功能相关联的各种标准组件,包括用于例如,复制数据、传输查询以及接收返回信息(数据)的组件。该计算设备144可以被理解成进一步包括一个或多个数据库管理系统的标准组件,其可以被用于使用各种数据库108a、108b、110a、110b来执行操作(例如,查询)。为了清楚和简明起见,这些以及其它的标准组件在图1中未被示出。
图2为示出了图1中系统的示例操作的流程图200。在图2的示例中,操作202、204、206被示出为顺序的操作。然而,可以意识到这仅仅是为了容易示出以及描述,并且在现实中各种操作202、204、206可以重叠,或者并行发生,或者(除了另有规定的情况)可能以不同的次序发生。
在图2中,然后,查询被接收到,该查询可应用于多个远端数据库和相应的多个复制数据库的不同的组合,该复制数据库包括各个远端数据库的至少一些复制数据,这里每一个复制数据库在多个同步时间与相应的远端数据库同步,并且不同的组合包括由相应同步时间定义的复制数据库的将来的版本(202)。例如,DSS 102的查询处理器112可以接收查询104。查询104可以应用于远端数据库108a、110a的不同组合,并且可应用于相应的复制数据库108b、110b。如这里所述,每一个复制数据库108b、110b可以例如根据同步时间表(schedule)与他们各自的数据库108a、110a同步,该同步时间表指示了未来同步将发生的时间和方式。该组合可以包括数据库108a、108b、110a、110b的组合(T1,T2)、(R1,T2)、(T1,R2)以及(R1,R2),如上所述,并且还可以包括另外的组合,举几个例子,比如(R1’,T2)、(T1,R2’)以及(R1”,R2’),这里R1’/R2’以及R1”分别指代复制数据库108b、110b的第一和第二次将来的同步。图5和6提供了这种组合的图示,以下进行了详细描述。
与不同组合的至少子集相关的信息值可以基于与查询相关联的查询值以及基于由相应组合引起的查询值的减少(diminishment)来确定(204)。例如,查询计划产生器114,具体来说是信息值计算器122,可以确定与查询104相关联的查询值。此处使用了商业值的特定例子来描述这种查询值,但是从上述描述会意识到,对于DSS 102可应用和有用的任何领域里的几乎任何查询,都可以确定类似类型的查询值。如这里所述的,不同的组合中每一个或多或少与计算等待时间和/或同步等待时间相关联,计算等待时间和/或同步等待时间可以与相应的衰减率一起被使用,例如等式(1)所述的那样,来确定查询值的减少或衰减,所述查询值的减少或衰减与数据库108a、108b、110a、110b(以及它们的将来的版本)的每一个选定组合相关联。
基于该信息值,查询计划可以被产生为包括该不同组合中的至少一个组合,以利用其执行该查询(206)。例如,信息值计算器122可以输出该信息值,以及查询计划选择器132可以使用拥有最高信息值的组合来选择查询计划。
图3是用于执行图1的系统里的基于时间戳的联合操作的表格的框图。具体来说,如上所述,图3示出了隐含使用图1中的查询重写器118的情景。
在图3中,在11:00表108a(即,被标记为T1的代表远端数据库108a的至少一些内容的简缩表)与表108b(即,被标记为R1的代表复制数据库108b的至少一些内容的简缩表)同步。类似地,在10:30表110a(即,被标记为T2的代表远端数据库110a的至少一些内容的简缩表)与表110b(即,被标记为R2的代表复制数据库110b的至少一些内容的简缩表)同步。
如图所示,表108a、108b包括列302、304以及306,这些列分别列出关于多个人的姓名、股票以及(股票的)数量的信息。与此同时,表110a、110b包括分别列出关于股票和其相应价格的数据的列312和314。
如已经描述的那样,在图1的系统中,副本(replica)被放置在本地服务器上以提高在分布数据库或其它数据源上的复杂查询的性能。如上所述,由于系统中复制数据库的存在,查询重写器118可以被用于保持查询结果的一致性和完整性,就好像查询104正在单个服务器上的基表格(base table)上而运行一样。然而,复制数据库被单独地并且可能根据不同的时间表来同步。结果,在复制数据库108b、110b上执行的操作(例如,联合操作)可能导致信息106中不准确和不一致的结果。
例如,在图3中,决策制定者可以发出请求返回资产不少于$300,000的所有股票持有者的名字的查询。如果因为效率上的考虑而选择R1和R2来答复这样的查询,那么通过联合R1和R2,Alice将被返回。如图所示,这种联合操作产生指示Alice拥有价格为$20、数量为1,500的股票S2的元组(tuple)。
但是,假如R1最后一次比R2晚30分钟同步,则该结果在实际上可能不是真实的。在图3的例子中,可能会发生这样的情况:另一个股票持有者David在11:00将他的1,500股S2股票卖给Alice,并且在那时,股票S2的价格跌至$18.00(如T2中所示)。因此,Alice的资产从未达到$300,000,并且通过简单地联合R1和R2所导出的结果与实际不一致并且决不会出现。
如果可行的话并且如果相关联的延迟是可容忍的,通过将在同一个交易中被更新的所有数据库全部或者非全部地(not at all)复制到DSS,有可能避免这种不一致的结果。在另外的实施中,时间戳可以与所有的数据库表相关联,并且然后诸如联合操作的操作可以基于这样的时间戳来执行。
具体来说,在查询处理中这种基于时间戳的联合可以考虑每一个副本与最后的同步时间戳相关联,并且每一个元组与如列308/310和316/318中所示的指示该元组的有效生命周期的插入时间戳以及删除时间戳相关联。当查询访问具有不同的最后同步时间戳的多个表(复制表和/或远端表)时,由查询重写器118加入一个条件以仅仅访问所有表中时间戳与最早时间戳一致的行。即便是当远端表和复制表独立地被更新和被同步时,这样的基于时间戳的联合操作也会提供结果的完整性以及一致性。
图3示出了,为了实现一致的联合操作而不考虑哪一个复制数据库被使用,在所有复制数据库中应当保持具有晚于最早的最后同步时间戳的删除时间戳TSdeletion(TS删除)的元组。图3的示例中,R1在11:00被最后一次同步,R2在10:30被最后一次同步,于是删除时间戳晚于10:30的元组应当被保留(如图3的行320、322、324、326所示)。
然后,例如,如果用户发出一个查询以返回股票投资(portfolio)值不少于$300,000的所有股票持有者的名字,那么如果R1和R2被选择以评估该查询,那么仅仅具有早于10:30的插入时间戳以及晚于10:30的删除时间戳的元组应该在该联合中被涉及到,从而,利用时间戳10:30,该结果包括David,这与实际一致。这样,基于所述时间戳的联合考虑使用在10:30时所有表的快照来计算结果以不妨碍(respect)一致性。
实际上,上述描述应该足以实现对于所述的基于时间戳的联合的许多技术和实施方案之一。上述图1描述一个这样的例子,其中在本地服务器上维护辅助表,即同步信息表120,用于存储和检索同步信息(即,每一个副本的最后同步时间戳)。查询重写器118于是可以将查询重写到基于时间戳的查询中。
更加正式地,用户可以发出具有代码段1中所示形式的涉及许多复制数据库和/或远端(基)表的查询:
SELECT select-list
FROM Ri1,Ri2,...,Rim,Tj1,Tj2,...,Tjn
WHERE qualification
代码段1
其中,Ri1,Ri2,...,Rim是复制数据库,Tj1,Tj2,...,Tjn是被采用以评估查询的远端表/基表。该查询可以接着以这样的方式被重写,该方式实现了从同步信息表120中计算在该查询评估中涉及的所有副本中的最早的最后同步时间戳的功能。
于是该查询可以与对元组的时间戳的约束合并,如代码段2所示:
Create Procedure EarliestTS(R1,R2,...,Ri)
AS
SELECT @ets=MIN(TSsync)
FROM SyncInfo
WHERE Replica IN(’R1’,’R2’,...,’Ri’)
RETURN@ets
ets=EarliestTS(Ri,Ri2,...,Rim);
SELECT select-list
FROM Ri1,Ri2,...,Rim,Tj1,Tj2,...,Tjn
WHERE qualification AND
(ets BETWEEN Ri1,TSinsertion,AND Ri1,TSdeletion)AND
(ets BETWEEN Ri2,TSinsertion,AND Ri2,TSdeletion)AND
…
(ets BETWEEN Rim,TSinsertion,AND Rim,TSdeletion)AND
(ets BETWEEN Tj1,TSinsertion,AND Tj1,TSdeletion)AND
(ets BETWEEN Tj2,TSinsertion,AND Tj2,TSdeletion)AND
…
(ets BETWEEN Tjn,TSinsertion,ANDTjn,TSdeletion)
代码段2
此外,诸如插入、删除以及更新的操作也可以被重写入基于时间戳的操作。例如,对于插入操作,当元组被插入时,它的插入时间戳可以被设置成它被插入的时间,并且它的删除时间戳可以被设置成正无穷大。对于删除操作,可以意识到删除元组可能涉及对同步信息表120的参考。具体来说,如果这种参考显示删除时间晚于所有复制数据库中的最后同步时间中最早的那个,那么当前可以保持该要被删除的元组,并且它的删除时间戳可以被安全地删除。否则,该元组能被安全地删除。在最后示例中,通过执行对删除及插入操作的重写,可以执行更新操作。在这样的操作中,原始元组可以被如上所述的那样删除,并且然后可以插入具有更新值的元组。
在图3中,可以看出当同步发生时,所有复本中的最早同步时间可以被向前推移,并且具有早于最早同步时间的删除时间的元组可以被安全地丢弃。这样,被保持以实现基于时间戳的联合的被删除元组的数目不一定是单调增加的。除此之外,假设对时间戳属性进行频繁比较,则可以基于这些属性来建立索引以加速查询评估过程。
使用以上针对图3描述的技术,计算等待时间和同步等待时间的形式定义(formal definition)可以被提供,用于采用基于时间戳的联合时。具体来说,假如查询Q在时间戳tsissue被发出并且使用具有最后同步时间戳tsi1,tsi2,...,tsim的m个复制数据库Ri1,Ri2,...,Rim以及n个基表/远端表Tj1,Tj2,...,Tjn来进行评估。基于时间戳的联合指示该结果的时间戳应当与所有副本中的最早的那个最后同步时间戳相同,被表示为tssync=min{tsi1,tsi2,...,tsim}。然后,如果tsreceive是查询结果被接收到时的时间戳,那么计算等待时间是CL=tsreceive-tsissue,并且同步等待时间是SL=tsreceive-tssync。可以意识到针对图3提供的基于时间戳的操作仅仅是一些例子,并且各种各样其它的技术可以被考虑以获取同样或类似的结果。
图4是示出了用于图1的系统100的查询的样本执行情景的时序图。具体来说,图4以简单示例示出用于分发查询104的三个查询计划402、404、406,这里查询104被仅仅分布给一个单一的数据库(例如,或者远端数据库108a或本地数据库108b)。
在查询计划402中,查询104被发送到远端数据库108a。在查询计划404中,查询104被立刻发送至本地复制数据库108b。在查询计划406中,查询104被发送至本地复制数据库108b,但是被有目的地延迟直到紧接着的后一同步时间。
这样,在查询计划402中,在t2时间,查询被发出,同时查询执行408开始。在t3时间,查询结果(例如,信息106)被收到410,但是该查询结果带有代表检索数据存在的时间的时间戳t2,并且处于返回给DSS 102的状态。结果,可以看到,计算等待时间412发生,它是时间t3和t2之间的差。而且,因为按照定义远端数据库108a是最新的,这种情况下的同步等待时间414与计算等待时间412相同。这样在远端数据库108a(例如,使用一个相应的远端服务器)处执行查询104具有查询最新数据的优势;但是,在查询处理中将花费较长的时间(即,比如查询计划404中那样立刻发送查询到本地复制数据库108b的花费更长的计算等待时间)。但是,因为位于远端位置的查询执行一开始,远端数据库108a的数据就可能发生改变,所以只要有计算等待时间,查询结果和数据库就可能不同步,如上刚刚所提及的以及如图4所示的那样。
在查询计划404中,查询被在本地复制数据库108b处执行。具体来说,在t2时间,当查询被发出时查询执行416再一次开始,但是在较早的时间t4,比在查询计划402中更快地接收到查询结果418。然而这里,查询结果的时间戳是t1时间,代表复制数据库108b的最近的同步。这样,计算等待时间420被缩短到在t4和t2之间的差,然而同步等待时间422被增加至t4和t1之间的差,都如图4所示。
比较计划402和404,可以看出计划402与查询计划404相比计算等待时间较长412而同步等待时间较短414。结果,如果计算等待时间的折扣率λCL小于同步等待时间的折扣率λSL,那么,根据上述等式(1),查询计划402可以获取比查询计划404更好的信息值。另一方面,如果计算等待时间的折扣率λCL大于同步等待时间的折扣率λSL,则查询计划404则可以产生更好的信息值。换句话说,为了最大化信息值,查询计划402、404之间的选择分别取决于这两个计划所引起的计算等待时间和同步等待时间。
在查询计划406中,在t2时间查询104再一次被发出,但是查询执行直到t5时间所安排的同步完成时才开始424。如所示的那样,查询结果426在t3时间被接收到并具有时间戳t2。这样,如所示的那样,计算等待时间428等于t3和t2之间的差,然而也如所示的那样,同步等待时间430被定义成t3和t5之间的差。
这样,查询计划406说明当查询104在两个同步周期(即,t1和t5)之间被发出时,那么一旦同步完成便存在的复制数据库108b的将来的版本可以有效地被视为可以向其发送查询104的独立的数据库,在这个例子中,延迟该执行的查询计划406引入了更多的计算等待时间428,但是潜在益处是同步等待时间430缩短了。如果同步等待时间的折扣率λSL大于计算等待时间的折扣率λCL,那么,根据等式(1),这样的延迟计划可能产生比像在查询计划404中那样立即执行查询104所产生的信息值大的信息值。
图4中的示例指示,为了最大化商业或其它操作中的信息值,应当仔细选择适当的查询计划。DSS 102因此可以被配置为选择产生最大信息值的计划。在这点上,由于认识到在远端数据库执行查询可以使用最新数据但是可能引入较长的计算等待时间,信息值的概念影响到了DSS 102中的查询处理。在本地复制数据库上执行查询花费较少的响应时间,然而缺点是复制数据库可能在很长的一段时间内得不到同步。当然,如下面例如针对图5和图6更详细描述的那样,折衷的办法是借助远端数据库和复制数据库结合。然而,这些方法中,没有单一一个方法将总是最优的;相反,最大化信息值也取决于用户的偏好,如上所述,该偏好由计算等待时间折扣率和同步等待时间折扣率来表示。
进一步来讲,如刚刚所述的那样,DSS 102可以被配置为通过考虑查询104是否应当在本地复制数据库上执行,以及如果是的话,是立刻执行还是等待即将来临的同步点,来确定查询计划。也如刚才所述的那样,考虑这些选项的原因是延迟查询执行直到将来的同步可能导致较短的同步等待时间。此外,用户的偏好可以被并入信息值最优化中,以确定最大化该信息值的适当的执行计划。
图5是图1中的系统可以从中选择的第一个示例查询计划的框图。在图5中,查询计划产生器114考虑用于使用图1中的数据库108a、108b、110a、110b执行在t1时间提交的查询104的查询计划,如所示的,这里,数据库再一次分别被标记为T1、R1、T2、R2。然后,使用以上定义的标记,R1108b的第一次同步发生在R1’502,而R1108b的第二次同步发生在R1”504,并且第三次同步发生在R1”’505。类似地,R2110b的第一次同步发生在R2’506,而R2108b的第二次同步发生在R2”508。可以注意到,R1和R2的同步周期/时间表是不同的并且彼此独立。于是,在图5中,查询计划511-520被示出为查询计划1-10。例如,查询计划511要将查询104发送到数据库(T1,T2),而查询计划512-520分别使用(R1’,R2’)、(R1’,T2)、(T1,R2’)、(R1”,R2’)、(R1”,T2)、(R1”,R2”)、(T1,R2”)、(R1”’,R2”’)以及(R1”’,T2)。
当查询104在t1时间被提交时,计划511-514可以用于立刻执行。图5也示出了通过等待R1”在t2时间完成而延迟执行的选项,在t2这一点上,计划515、516变得可用于在t2时间立刻执行。类似地,当R2’被同步并且变成R2”时,计划517、518变得可用,并且当R1”被同步并且变成R1”’时,计划519和520可以利用。在图5中,查询计划519和520(以及任何接下来的查询计划,未示出)可以被立刻丢弃,因为所使用的时间戳新于R1”504和R2”508的任何查询计划将比计划511-518差,并且不管如何选择折扣率λCL和λSL,都将拥有较低的信息值。出于同样的原因,使用R2’506以及在R1’502之前的任意版本的查询计划。
尽管在图5中,八个计划511-518被示出,但是CL计算器126仅仅需要针对配置(R1,R2)、(R1,T2)、(T1,R2)以及(T1,T2)来编译查询104四次,以产生它们的计算等待时间。而且CL计算器126仅仅需要执行这种计算一次,并且可以预先完成。另一方面,SL计算器128可以在每一个查询计划的计划选择阶段计算同步等待时间。然后,用于各种查询计划的信息值可以由信息值计算器122使用例如等式(1)来计算。在示例实施例中,如果所有要被路由的查询被提前注册并且复制管理器(未示出)被采用以确保对远端数据库108a、110a的更新在预定义的时间帧内被传播至在DSS 102端的它的复制数据库108b、110b,那么所有查询的信息值都可以被提前计算以供路由。
图6为图1中的系统可以从中选择的第二示例查询计划的框图,示出了当选择最优查询计划时查询计划的搜索空间的管理。例如,图1中的搜索空间管理器130可以被配置为执行分散及聚集(scatter-and-gather)算法或其它技术,以缩小在执行查询104时使用的数据库的可能组合的搜索空间。
在图6中,和图1-5一致的术语被用于表示四个远端数据库T1-T4以及相应的复制数据库R1-R4的使用。如图5中那样,在可能的查询计划组合的特定的搜索空间内,每一个复制数据库可以被更新和同步多次。例如,R1在例如R1’、R1”、R1”’处同步。类似地,R2在R2’、R2”、R2”’以及R2””处同步。R3在R3’、R3”处同步,并且R4在R4’、R4”处同步。
在图6中,为了示例和简明起见,假定如果查询评估仅仅使用复制数据库R1-R4,那么计算等待时间是2分钟,并且,如果查询评估涉及T1、T2、T3以及T4远端数据库,那么时间是4、6、8和10分钟。进一步,仍为了示例及简明起见,衰减率λCL和λSL都被设定为0.1。
在时间戳11处查询被提交,并且如图所示,当查询被提交时,最新的同步是在8分钟处被打上时间戳R3’的。如果将计算等待时间CL表示为“y”以及将同步等待时间SL表示为“x”,则上述等式(1)可以被执行为IV=BV(.9)x(.9)y。
在图6的执行中,选择当前最优方案。默认地,仅仅利用远端数据库T1-T4应当被使用的假设,可以选择第一个这样的最优方案。然后,对于具有信息值IV(opt)的这样的当前最优方案,于是可以限制等待更好的方案所能容忍的最长的计算等待时间。具体来说,这样的确定可以来自于以下假定,即如果同步等待时间将不会导致任何折扣,则在信息值变得少于IV(opt)之前会有最大的计算等待时间。这样边界限制了搜索空间。于是,如果对IV(opt)更好的方案被发现,则可以进一步靠近该边界。
在这种技术的特定例子中,分散及聚集技术被使用。在第一(分散)阶段,图6中,当查询被提交时,当前时间被认为是11。再一次假定默认的最优计划T1-T4,从上述假定可以看出计算等待时间是10,并且,由于仅有远端数据库T1-T4被使用,所以同步等待时间将也是10。这样,信息值被计算为IV(opt)=BV(.9)10(.9)10。从而,可以看出在IV(opt)必然减少之前可能发生的最长的计算等待时间是20(即,将指数相加10+10),所以如图所示,第一边界606被设置在时间11+20,或者时间31。
然后,在第二(聚集)阶段,可以使用复制数据库R1-R4计算查询计划组合。该聚集阶段利用同步等待时间被最早的同步表决定的观点(observation),所述同步表在图6中为R4(即,R4’)。也就是说,改变其它数据库的组合一般不会减少同步时间。例如,使用{T1,R2’,R3’,R4’}去评估查询不会减少同步等待时间,因为R4是最早被同步的并且拥有最过期的数据。
这样,如图6所示,复制数据库的当前次序可以被记录为R4’、R1’、R2’以及R3’。于是,可以通过在多个相继的查询计划的每一个中用其相应的远端数据库来取代每一个复制数据库来计算查询组合以及相关联的信息值IV。例如,首先在经排序的复制数据库的上下文中使用以上提到的R4’,第一查询计划可以被规定为R4’R1’R2’R3’,因此对于x=13,y=2;IV=BV*0.9^(13+2)。在这种情况下,图6中的第二边界b 608可以被设置为b=11+15=26。在下一个查询计划中,R4’被T4取代,导致查询计划T4 R1’R2’R3’,因此,对于x=10,y=4;IV=BV*0.9^(10+4),并且,因此第3个边界b 610是b=11+14=25,如图6所示。然后,用T4和T1取代R4’和R1’,T4 T1 R2’R3’的查询活动就可以被使用,使得对于x=10,y=6,产生边界b=25(以上已经示出),并且,类似地替换R4”、R1’以及R2’导致T4 T1 T2 R3’,因此,对于x=11,y=8,边界b再一次等于25。
这样,搜索空间又一次被缩小,该时间被限制成仅仅考虑在时间戳25的边界b 610之内的查询计划。当前时间线602仍旧在11,这很明显没有到达边界25,因此上述过程重复执行。具体来说,当前时间线被推进到在时间线604处的下一个同步点R4”,并且查询计划组合和相关联的信息值可以再一次以刚才所述的方式来计算。
具体来说,新次序基于下一个最早同步点R1’,因此新次序是R1’,R2’,R3’,R4”。对于x=9且y=3,这个次序导致信息值IV=BV*0.9^(9+3),因此新边界b 612被确定作为b=11+12=23。对于剩余的组合,可以使用新次序但如上所述地逐渐用相应的远端数据库取代每一个复制数据库,来进行类似的计算。
随着边界线向后移并且当前时间线向前移,搜索空间急剧地收缩。此外,可能要排除可能被观察为一定比已经考虑过的查询计划组合差的其它可能的方案。例如,组合{T1,R2’,R3’,R4’}可以被排除,因为它不会产生比{R1’,R2’,R3’,R4’}更好的方案。这种计划的排除在进一步收缩搜索空间上可能是有用的。
图7是示出了当选择图5和6中的查询计划时图1中系统的示例操作的流程图700。特别地,图7中,查询处理器112可以接收要被查询重写器118使用例如R1-R4的复制数据库的最早时间戳来重写的查询104(702)。然后,当前最优查询计划和相关联的信息值可以被确定(704)。例如,搜索空间管理器130可以确定查询提交时间,并且,基于仅仅使用远端数据库T1-T4的默认组合,信息值计算器122可以确定当前最优信息值。
当前最优IV可以被用于例如利用搜索空间管理器130对外部边界线的确定,在该边界线之外,没有查询计划组合会比当前最优方案更好(706)。新查询计划组合可以相对于最早同步时间(数据库)例如通过信息值计算器122来确定(708)。这样的查询计划组合可以再一次被信息值计算器122和搜索空间管理器130使用以确定新的(更近的)边界线(710)。
假定此新的边界线没有追溯到查询计划提交时间,那么可以由搜索空间管理器130基于下一个同步点来确定下一个有效查询提交时间(712)。如果此时搜索空间被充分减小(714),那么可以计算剩余组合(减去一定比当前最优方案差的任何不必要的组合)并且可以例如通过查询计划选择器132选择最优查询计划组合(716)。否则,该过程通过基于当前的最早同步时间来确定新的查询计划组合而继续(708)。
上述操作可以被信息值计算器122以及搜索空间管理器130使用如下所述的算法1来执行。
算法1
图8是示出了当最优化多个查询的工作负载时图1的系统中使用的染色体的示例组合的框图。如上所提到的,除了用于最大化针对个体查询的信息值的查询最优化之外,DSS 102还包括工作负载管理器116,该工作负载管理器被配置为产生最大化针对查询的整个工作负载的信息值的时间表。工作负载管理器116例如在这样的情况下可以是有帮助的,即,在一个查询的最优查询计划可能与其它查询的最优查询计划冲突的情况下。在这种情况下,工作负载管理器116可以最优化针对工作负载整体而不是仅仅针对个体查询的信息值。
多个查询的最优化(multi-query optimization)(即,时间安排(scheduling))一般包括图1中的组产生器134的操作,以确定可能的冲突的查询并且形成针对多个查询的最优化的工作负载。例如,对于每一个查询,组产生器134可以访问被查询计划产生器114确定的查询计划,并且可以沿着查询可能运行的时间轴来获得一个范围。如果超过两个的查询的范围重叠,那么组产生器134可以把它们编组为工作负载。
然后,序列管理器136可以产生工作负载执行序列和工作负载中的每个查询的个体计划,以便得到针对工作负载整体的最优信息值。如已经描述的那样,序列管理器136可以通过使用遗传算法管理器138来实现这样的选择过程。这样的遗传算法管理器可以将遗传算法实现为达尔文自然选择的计算机模拟,达尔文自然选择对各种不同世代进行迭代以向问题空间中的最佳解收敛。问题的可能解作为染色体而存在,如图8所示,这里该染色体可以被表示为针对为了获取最大的总信息值的工作负载的执行序列。
在图8中,亲本染色体802与第二亲本染色体804一起被示出,它们接着被组合以获取子染色体806。每一个染色体代表查询的工作负载的执行顺序。如图所示,亲本染色体802包括序列Q5、Q3、Q2、Q7、Q9、Q1、Q4、Q0、Q6及Q8。亲本染色体804包括序列Q3、Q7、Q8、Q0、Q6、Q2、Q1、Q4、Q5及Q9。
图9是示出了当最优化图8中的多个查询的工作负载时图1的系统的示例操作的流程图900。具体来说,如以上针对图1所提到的,遗传算法管理器138可以开始于用于形成第一代的染色体的随机集合(902),例如可以包括亲本染色体802、804。然后,可以评估该种群(population)(904),例如,通过染色体评估器140。例如,染色体评估器140可以使用每一个染色体的工作负载的组合的信息值,并且然后,将它们进行排列以选择最期望的子集。
然后,被选择的子集可以被打断成几对,例如染色体对802和804,它们被例如染色体组合器142重组成后一代的亲本(906)。这种重组以某一种模拟性别交叉的方式产生子(child),以致,例如,偶尔会发生前一代中不存在的突变。
如图8中所示的例子,如图所示,亲本染色体802、804可以利用对亲本染色体802的随机切口808以及随机切口810而被组合成子染色体806,如图所示,对亲本染色体802的随机切口808以及随机切口810提供了要被包括在子染色体806的开始部分的一段序列(包括Q2、Q7、Q9)。然后如图所示,通过不管另一个亲本染色体804里面的查询Q2、Q7、Q9片段,并且接着将其余的查询Q3、Q8、Q0、Q6、Q1、Q4及Q5包括在子染色体806的剩余部分内,可以完成子染色体的其它部分。可以意识到,许多其它技术可以被使用以执行该重组。
如果该遗传算法执行完毕(908),那么就可以选出最优工作负载序列(910)。在这个意义上,可以意识到许多因素或衡量标准可以被使用来确定该遗传算法是否完成了。例如,遗传算法管理器138可以被配置为在一定量的时间内或对于一定数量的世代执行遗传算法。在其它情形下,可以接收有效地结束遗传算法管理器138的迭代的外部因素,诸如,例如,最后期限逼近的信息,其强行结束该迭代。如果遗传算法没有执行完毕(908),那么该过程可以继续新一代染色体的评估(904),以选择亲本染色体的下一集合,用于其染色体对的重组(906)。
算法2示出了如上针对图1、8及9所描述的遗传算法管理器138的操作。在该算法中,变量t代表当前代,并且P(t)代表在该代的种群。
算法2
图10为示出了包括作为子操作的图7和图9的操作的图1的系统的示例操作的流程图1000。在图10中,例如通过查询处理器112来选择查询,以供处理(1002)。然后,最优化查询的信息值的查询计划可以例如使用图7中的操作来确定(1004)。对于查询及相关联的查询计划,计划时间范围可以例如通过组产生器134来确定(1006)。
如果另一个查询可用(1008),那么该操作继续(1002-1006),直到不再有查询可用或者直到确定可用查询中不再有查询可能与目前/已处理的查询重叠。此时,重叠的查询可以被确定以及例如通过组产生器134被编组为工作负载(1010)。然后,最优执行序列可以使用图9中的操作来确定(1012)。
以上的图1-10及相关描述描述和说明了DSS 102的许多不同的实现方式。当然,这样的实现方式仅仅是为了举例,并且另外的或替换的实现方式也可以被使用。
例如,以上描述提供了对以固定间隔周期地运行的预先注册的查询工作负载的讨论。然而DSS 102也可以处理在线到达的即席查询(ad hoc query)。
具体来说,有至少两种类型的在线到达的即席查询,例如,那些到达的要立即执行的,以及那些到达的要晚些时候按时间表执行的,这两种即席查询都可以根据以下所述内容来处理。
对于所提交的即席查询,执行查询计划选择任务,并且沿着查询可以在其上运行的时间轴得到一个范围。如果超过两个的查询的范围重叠,那么如上所述它们可以被编组为工作负载。所有查询的可能的执行计划可以被注册,并且当一个新的即席查询到达时,新查询的可能执行范围可以被与已注册查询的可能执行计划的范围(即,不是已注册查询的所选择的计划的范围)比较。然后,可能冲突的查询可以被选择并且被形成一个新的工作负载组,用于多个查询的最优化。
然后,可以为工作负载中的每一个查询重新产生工作负载执行序列和个体计划。如果冲突查询正在被处理,那么正在运行的查询可以被处理,例如通过取消正在运行的查询并且用新的工作负载组重新产生新计划,让正在运行的查询继续按时间表完成,或者暂停正在运行的查询并且利用新的工作负载组重新安排查询处理步骤的剩余部分。在后一种情况下,在所有被暂停的查询被重新开始之后,它们可以使用相同的查询计划。
DSS 102也可以被配置为处理正在处理的查询以及查询计划的可能的饿死(starvation)情况。在这种情形下,饿死与以下所认识到的情况有关,即,用于确定信息值的等式(1)支持立即的(immediate)查询执行以避免商业值/查询值的衰减或减少。这样,可能发生排队的查询可以继续实质上无限期地排队,因为这种查询可能不断地被拥有更高信息值的新查询所取代。特别是当系统100被处于高负荷时,这种饿死状态可能发生。这种饿死不会影响整体最优信息值的获取,但是可能仍然引起需要无限期地等待他们所期望的信息的用户的不满。
因此,作为防止这种饿死的一种示例方法,用于计算信息值IV的等式(1)可以被适配为包括时间值的函数,来增加已经排队一个时段的查询的信息值。这种时间值的函数被设计成与信息值将要被SL和CL打折相比更快地增加信息值,以便将该查询在队列中提前。
算法3示出了一个用于实现图10中操作的示例算法,包括刚才所描述的对即席在线到达查询以及饿死问题的考虑。
算法3
在算法3中,可以看出,对于每一个预先注册的查询,如(1-3行)所示,算法1(在算法3中被称为算法STQP)用于选择计划并且得出该查询可以运行的时间范围。然后,如(4-21行)所示,重叠的查询编组到一个工作负载W中。使用上述遗传算法,最优工作负载执行顺序可以被获得,其中,为了防止上述饿死问题,使用时间值函数来增加任何长队列(long-queued)查询的信息值,如(22-24行)所示。如果即席查询到达,则针对每一个即席查询,可以使用算法1(再一次被称为算法STQP)来选择计划和时间范围。然后可以确定即席查询所属的工作负载(26-32行)。在每一个工作负载中,计划可以被重新检查。如(33-38行)所示,一旦冲突的查询已正在处理,就可以使用三个策略(policy)。
这里描述的不同技术的实施可以在数字电子电路中或者在计算机硬件、固件、软件或它们的组合中执行。这些实施方案可以实现为由数据处理装置执行或控制数据处理装置的操作的计算机程序产品,所述计算机程序产品即有形地体现在信息载体中的计算机程序,该信息载体例如是在机器可读存储设备或传播信号中,该数据处理装置例如是可编程处理器、计算机或多个计算机。计算机程序,例如上述计算机程序,可以以任何形式的编程语言来编写,包括编译或解释语言,并且能以任何形式来部署,包括作为独立程序或作为模块、组件、子例程或其它适于在计算环境中使用的单元。计算机程序可以被部署为在一个计算机上或在一个位置或分布在多个位置的多个计算机上执行,并且通过通信网络互连。
方法步骤可以被一个或多个可编程处理器执行,该一个或多个可编程处理器通过操作输入数据并且产生输出来运行计算机程序以执行功能。方法步骤也可以由专用逻辑电路执行,并且装置可以被实施为专用逻辑电路,所述专用逻辑电路例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。
作为示例,适于执行计算机程序的处理器包括通用以及专用微处理器二者,以及任何种类的数字计算机的任意一个或多个处理器。一般来说,处理器将从只读存储器或随机存取存储器或者它们二者接收指令和数据。计算机的部件可以包括至少一个用于执行指令的处理器以及一个或多个用于存储指令和数据的存储设备。一般来说,计算机还可以包括一个或多个大容量存储设备,或者可操作地耦合以从一个或多个大容量存储设备接收数据或传输数据到所述一个或多个大容量存储设备,或者二者兼有,所述一个或多个大容量存储设备用于存储数据,例如,磁盘、磁光盘或光盘。适于体现计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,所述非易失性存储器包括例如半导体存储设备,例如EPROM、EEPROM以及快闪存储设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以被专用逻辑电路补充或者合并在专用逻辑电路中。
为了提供与用户的交互,实施方案可以在具有显示设备以及键盘和指向设备的计算机上实施,所述显示装置例如阴极射线管显示器(CRT)或液晶显示器(LCD)监视器,用于显示信息给用户,所述指向设备例如鼠标或跟踪球,通过所述键盘和指向装置,用户可以为计算机提供输入。其它类型的设备也可以被用于提供与用户的交互;例如,被提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入能以任何形式被接收,包括声音、语言或触摸输入。
实施方案可以在计算机系统中实施,该系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括前端组件,所述前端组件例如具有用户通过其可以与实施方案进行交互的图形用户界面或网络浏览器的客户端计算机,或者包括这种后端组件、中间件组件或前端组件的任意组合。组件可以通过任何形式或介质的数字数据通信例如通讯网络相互连接。通信网络的示例包括本地局域网络(LAN)以及广域网络(WAN),例如因特网。
尽管所描述的实施方案的某些特征已经如这里所描述地进行了说明,但是被本领域技术人员将想到许多修改、替换、改变以及等同物。因此,应当理解所附权利要求旨在覆盖落入实施例范围之内的所有这样的修改和改变。
机译: 用于向消费者传输实时或接近实时的价格和/或产品信息并通过无线或有线通信设备促进可选履行和可选的,自动的,实时或接近实时的反向拍卖的方法和系统
机译: 信息价值驱动的近实时决策支持
机译: 信息价值驱动的近实时决策支持