对物理上分支的流的高效逻辑合并的制作方法

文档序号:6495606阅读:171来源:国知局
对物理上分支的流的高效逻辑合并的制作方法【专利摘要】本文描述了用于产生与两个或多个物理上分支的输入流在逻辑上兼容的输出流的逻辑合并模块。本文还阐述了该逻辑合并模块的各代表性应用。【专利说明】对物理上分支的流的高效逻辑合并[0001]背景[0002]数据处理模块(诸如数据流管理系统)可在各种场景中接收并处理冗余数据流。出于在此阐明的原因,数据处理模块在执行该任务时可能面临各种挑战。[0003]概述[0004]在此阐明了用于对物理上分支的数据流进行逻辑合并的功能。在一个实现中,该功能通过从任何相应源接收输入流来操作。该功能随后使用逻辑合并模块来产生与这些输入流中的每一个在逻辑上兼容的输出流。[0005]根据另一个说明性方面,逻辑合并模块表示可被应用于实现数据流管理系统内的连续查询的运算符。此外,逻辑合并模块的一个或多个实例化可按任何方式与其他类型的运算符组合。[0006]根据又一说明性方面,该功能可提供用于处理不同的相应类型的输入场景的不同算法。不同算法利用可在不同场景中应用于数据流的不同约束。[0007]根据又一说明性方面,该功能可被应用在不同环境中以完成不同应用目标。例如,该功能可用于例如通过确保高可用性、快可用性来改进输出流的可用性。该功能还可用于例如通过提供查询跳转开始(jumpstart)、查询切换(cutover)等来促进对数据流的引入和移除。该功能还可向输出滞后数据流的源提供反馈信息,从而使该源能够向逻辑合并模块提供更及时的结果。[0008]上面的方法可以显现在各种类型的系统、组件,方法、计算机可读介质、数据结构、广品等等中O[0009]提供本【
发明内容】是为了以简化的形式介绍一些概念;这些概念将在以下【具体实施方式】中被进一步描述。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。[0010]附图简述[0011]图1示出用于使用逻辑合并模块来产生与物理分支输入流在逻辑上兼容的输出流的说明性功能。[0012]图2示出图1的逻辑合并模块的一个应用的概览。[0013]图3示出图1的逻辑合并模块的另一应用的概览。[0014]图4示出流的物理表示。[0015]图5示出以时间数据库(TDB)实例形式的输入流的逻辑表示。[0016]图6示出其中使用图1的逻辑合并模块将两个物理上分支的输入流变换成逻辑上兼容的输出流的示例。[0017]图7示出其中两个物理上分支的输入流被变换成三个替换输出流的示例;这些输出流具有不同的相应“闲谈(chattiness)”水平。[0018]图8是阐述图1的逻辑合并模块的操作的一种方式的概览的过程。[0019]图9示出了图1的逻辑合并模块的一种实现。[0020]图10是用于基于一组数据流的特征来选择算法(供图9的逻辑合并模块使用)的过程。[0021]图11是用于使用图9的逻辑合并模块来处理输入流内的元素的过程。[0022]图12示出可用于通过多个相应算法来维护状态信息的不同数据结构。[0023]图13-16示出用于使用图9的逻辑合并模块来处理输入流的不同算法。[0024]图17示出充当用于解释逻辑合并模块的各种应用的工具的、结合了该逻辑合并模块的功能。[0025]图18是阐述图17的逻辑合并模块的各种应用的过程。[0026]图19示出了可以被用来实现前面的附图中所示出的特征的任何方面的说明性计算功能。[0027]贯穿本公开和附图使用相同的附图标记来引用相同的组件和特征。100系列标号指的是最初在图1中找到的特征,200系列标号指的是最初在图2中找到的特征,300系列标号指的是最初在图3中找到的特征,以此类推。[0028]详细描述[0029]本发明是按如下方式来组织的。A部分了提供逻辑合并模块的概览,逻辑合并模块创建与两个或多个物理上分支的输入流在逻辑上兼容的输出流。B部分描述了A部分的逻辑合并模块的一个代表性实现。该实现可采用从一套可能的上下文专用算法中选择的一个算法。C部分描述了A部分的逻辑合并模块的各代表性应用。并且D部分描述了可以被用来实现A-C部分所描述的特征的任何方面的说明性计算功能。[0030]作为正文前的图文,一些附图是在一个或多个结构组件(不同地称为功能、模块、特征、元件等等)的上下文中来描述概念的。图中示出的各种组件可以任何方式由任何物理和有形机制来实现,例如由软件、硬件(如芯片实现的逻辑功能)、固件等,和/或它们的任何组合来实现。在一种情况下,附图中所示出的将各种组件分离为不同的单元可以反映在实际实现中使用对应的不同的物理和有形的组件。可另选地,或者另外,附图中所示出的任何单个组件都可以通过多个实际物理组件来实现。另选地或另外地,附图中的任何两个或更多分开组件的描绘可以反映单个实际物理组件所执行的不同功能。进而要讨论的图19提供了关于附图中示出的功能的一个说明性物理实现的附加细节。[0031]其他附图以流程图形式描述了概念。以此形式,某些操作被描述为构成以某一顺序执行的不同的框。这样的实现是说明性的而非限制性的。此处描述的某些框可被分组在一起并在单个操作中执行,某些框可被分成多个组件框,并且某些框可以按与此处所示出的不同的次序来执行(包括以并行方式执行这些框)。流程图中示出的框可以任何方式由任何物理和有形机制来实现,例如由软件、硬件(如芯片实现的逻辑功能)、固件等,和/或它们的任何组合来实现。[0032]至于术语,短语“被配置成”包含任何类型的物理和有形的功能可以被构建来执行已标识的操作的任何方式。功能可以被配置成使用例如软件、硬件(例如,芯片实现的逻辑功能)、固件等,和/或其任何组合来执行操作。[0033]术语“逻辑”包含用于执行任务的任何物理和有形的功能。例如,流程图中示出的每一个操作都对应于用于执行该操作的逻辑组件。操作可以使用例如软件、硬件(例如,芯片实现的逻辑功能)、固件等,和/或其任何组合来执行操作。在由计算系统实现时,逻辑组件表示作为计算系统的物理部分的、无论如何实现的电子组件。[0034]下列的说明可以将一个或多个特征标识为“可选”。这种类型的陈述不应该被解释为可以被视为可选的特征的穷尽的指示;也就是说,其他特征也可以被视为可选,虽然在文本中没有明确地标识。最后,术语“示例性”或“说明性”指的是可能多个实现中的一个实现。[0035]A.逻辑合并模块的概览[0036]图1示出用于使用逻辑合并模块102来创建与物理上分支的流在逻辑上兼容的输出流的功能100的概览(其中以下解释将参考图4和5来阐明“物理”和“逻辑”的概念)。更具体地,逻辑合并模块102从多个相应物理源接收两个或更多数字输入流。这些输入流在语义上传达相同信息,但(出于下面阐述的原因)可按不同物理方式来表达该信息。逻辑合并模块102动态地生成在逻辑上表示物理上分支的输入流中的每一个的输出流。换言之,该输出流提供一种统一方法以同这些输入流中的每一个兼容的方式来表达这些输入流的逻辑本质。任何类型的一个或多个消费实体可利用该输出流。[0037]任何实现环境104可使用逻辑合并模块102。在此处最突出表征的示例中,实现环境104对应于数据流管理系统(DSMS系统)。DSMS系统可应用逻辑合并模块102作为连续查询中的至少一个组件。(作为背景,连续查询是指数据库查询中的流传输对应物。代替对静态数据库的内容执行单个调查,连续查询在延长的时间段上操作以将一个或多个输入流动态地变换成一个或多个输出流。)更具体地,DSMS系统可将逻辑合并模块102作为原语运算符来对待。此外,DSMS系统可应用逻辑合并模块102本身,或与任何其他运算符组合。然而,将逻辑合并模块102应用于DSMS环境是代表性的而非限制;其他环境可利用逻辑合并模块102,诸如各种信号处理环境、纠错环境等。[0038]图2示出逻辑合并模块202的一个应用的概览。在这种情况下,多个单元(M1,M2,...Mn)将多个相应输入流馈送到逻辑合并模块202。例如,单元(M1,M2,...Mn)可表示向逻辑合并模块202提供测量数据(诸如而非限制,CPU和/或存储器利用测量数据、科学测量数据等)的计算机器(或单个机器上的各线程、或虚拟机实例等)。在另一种情况下,单元(M1,M2,...Mn)可表示有可能使用不同的相应查询计划来实现相同查询的不同计算机器(或线程、或虚拟机实例等)。单元(M1,M2,...Mn)相对于逻辑合并模块202可以是本地的或远程的。如果是远程的,则一个或多个网络(未示出)可将单元(M1,M2,...Mn)耦合到逻辑合并模块202。[0039]逻辑合并模块202可生成与这些输入流中的每一个在逻辑上兼容的输出流。逻辑合并模块202可执行该功能以满足一个或多个目标,诸如以提供高可用性、快可用性、查询优化等等。C部分提供与逻辑合并模块202的代表性应用有关的额外信息。[0040]图3示出一种可将逻辑合并模块302与其他运算符进行组合以在DSMS系统中实现连续查询的方式的概览。这些运算符可表示其他类型的运算符原语,包括执行聚集函数的聚集运算符,执行过滤函数的选择器运算符,执行排序操作的排序运算符,执行对两个或更多数据流的物理并集的并集运算符等等。作为补充或替换,逻辑合并模块302可与其他逻辑合并模块组合。[0041]例如,在一种情况下,馈送到逻辑合并模块302的这些输入流可表示由一个或多个其他运算符304所生成的输出流。作为补充或替换,由逻辑合并模块302所生成的输出流可被馈送到一个或多个其他运算符306。[0042]图4示出可被馈送到图1的逻辑合并模块102的流、或可由逻辑合并模块102输出的流的一种表示。这个或这些流包括一系列元素(%e2,...)。这些元素可提供有效载荷信息,连同管控从输入流所提取的信息被传播到输出流的方式的指令(下面将详细阐述)。输入流的前缀S⑴表示输入流的一部分,例如,S(I)=G1,e2,...ei。[0043]输入流的物理描述提供了其构成元素的字面记录以及这些构成元素的排列。两个或更多输入流可在语义上传达相同的信息,但可具有不同的物理表示。不同的因素可对这样的差别作出贡献,下面概述这些因素中的某些。[0044]对流中的无序有贡献的因素。源可经由网络或其他传输介质将它的遭受拥塞或其他传输延迟的数据流发送到逻辑合并模块102。这些延时可导致输入流中的元素变得无序。作为替换或补充,供应输入流的“上游(upstream)”处理模块(诸如,并运算符)可导致输入流的元素变得无序。一般而言,一个输入流变得无序的方式可与另一输入流变得无序的方式不同,因此在原本在逻辑上等价的输入流中引入了物理差别。[0045]修订版。作为替换或补充,源可在传输其数据流的过程中修改其数据流。例如,源可检测到破坏输入流的一部分的噪声。作为响应,该源可发出设法供应输入流中已被破坏的该部分的纠正版本的后续元素。一个源发出这样的修订版的方式可不同于另一源执行该功能的方式,从而导致原本在逻辑上等价的流中的物理差别。[0046]作为替换或补充,源可因推送出不完整信息的故意策略而修订其数据流。例如,源可与执行操作系统进程的计算机器相对应。该进程具有描述该进程操作的时间跨度的生存期。为了不招致等待时间,该源可发送传达该进程的开始时间而非结束时间的初始元素(因为最初可能不知道该结束时间)。一旦结束时间变得已知,该源就可发送供应该缺失的结束时间的元素。一个源所采用的修订策略可不同于另一源的修订策略,从而导致原本在逻辑上等价的流中的差别。[0047]在另一示例中,两个不同的源可按不同的相应方式来执行聚集操作。例如,保守聚集运算符可在发送最终计数值之前等待整个计数过程终止。然而,更激进的聚集运算符可在计数操作过程中发送一个或多个中间计数值。最后结果是相同的(反映最终计数),但这两个源所产生的流在物理上却是不同的(第二个流比第一个流更为“爱闲谈”)。[0048]不同的查询计划。作为替换或补充,两个不同的源可使用不同的查询计划来执行语义上等价的处理功能。这两个源产生在逻辑上表示相同输出、但可能以不同方式的输出流。例如,第一源可通过将数据流A与数据流B组合且随后将所得中间结果与数据流C组合来执行三路联结。第二源可首先将数据流B与数据流C组合,且随后将所得中间结果与数据流A组合。由于这些源使用不同的处理策略,因此第一源发出的流在物理上可不同于第二源发出的流。[0049]不同的计算资源。作为补充或替换,两个不同的源可在不同的计算机器上执行相同的查询。在任何给定时间,第一计算机器可服从与第二计算机器相比不同的资源需求,从而可能导致两个计算机器输出物理上不同的流。或者两个不同的源可只是具有不同的处理能力(例如,不同的处理和/或存储器能力),从而导致产生物理上不同的流。非确定性的其他源(诸如输入数据的不可预测到达)可导致输出物理上不同的输出流。[0050]上述描述的因素是作为示例而非限制被引述的。还有其他因素可对不同输入流之间的物理差别作出贡献。[0051]输入流(或输出流)可包括与不同类型的构成元素相关联的不同类型的指令。在一个说明性环境中,流包括插入元素、调整元素、以及稳定元素。插入(insert)元素,SPinsert(P,Vs,Ve)用生存期为interval(Vs,Ve)的有效载荷(payload)p将事件(event)添加到输出流。如所述的,可以让V6成为开放式(例如,+⑴)。出于简洁,在下文插入元素有时将被称为insertO。[0052]调整(adjust)元素,即adjust(p,Vs,Vold,Ve),将先前发出的事件(p,Vs,Vold)改变成(P,Vs,Ve)。如果Ve=Vs,则event(p,Vs,Vold)将被移除(例如,被取消)。例如,元素序列insert(A,6,20)—adjust(A,6,20,30)—adjust(A,6,30,25)等于单个兀素insert(A,6,25)。出于简洁,在下文调整元素有时将被称为adjustO。[0053]稳定(stable)元素,即stable(V。),使发生在时间V。之前的输出流的一部分固定。这意味着未来不存在具有Vs<Vc的insert(p,Vs,Ve)元素,也不存在具有Vtjld<Vc或Ve<V。的调整元素。换言之,stable(V。)元素可被看作使输出流的特定部分“冻结”。event(P,Vs,V。)在Vs<V。≤Ve的情况下被半冻结(HF)且在Ve<Vc的情况下被全冻结(FF)0如果(P,Vs,Ve)被全冻结,则未来的adjustO元素不能更改它,且因此该事件将出现在输出流的所有未来版本中。任何既没有被半冻结也没有被全冻结的输出流事件被称为未冻结(UF)。出于简洁,在下文稳定元素有时将被称为StableO。[0054]物理流(例如,输入流或输出流)的逻辑表示代表了该流的逻辑本质。更具体地,每一物理流(以及物理流的每一前缀)与捕捉该物理流本质的逻辑时间数据库(TDB)实例相对应。TDB实例包括一袋事件,这样的事件不具有事件顺序。在一个实现中,每一事件进而包括有效载荷以及有效性时间间隔。payload(p)与传达数据(诸如测量数据等)的关系元组相对应。有效性时间间隔表示事件活跃并且对输出作出贡献的时间段。更正式地说,有效性时间间隔相对于开始时间(Vs)和结束时间OQ来定义,其中结束时间可以是特定有限时间或开放式参数(例如,+-)o开始时间还可被认为是事件的时间戳。[0055]映射函数将流中的元素转换成TDB实例的各实例(例如,事件)。即,映射函数tdb(S,i)产生与流前缀S[i]对应的TDB实例。例如,图5示出物理流到TDB实例的这一映射的示例。即,第一物理流(输入I)提供第一时间序列的元素,而第二物理流(输入2)提供第二时间序列的事件。“a”元素,即a(value,start,end)是上述insertO元素的简写符号。也就是说,“a”元素添加具有value(值)为有效载荷且从持续时间从start(开始)到end(结束)的新事件“m”元素,即m(value,start,newEnd),是上述adjustO元素的简写符号。也就是说,“m”元素修改具有给定value和start的现有事件使其具有新的end时间。“f”元素,即f(time),是上述stableO元素的简写符号。也就是说,“f”元素最终确定其当前end早于time(时间)的每个事件(例如,冻结而不得进一步修改)。如可以看到的,第一物理流和第二物理流在物理上是不同的,因为它们具有不同系列的元素。但这两个输入流实现相同的目标,且由此在语义上(逻辑上)是等价的。图5的右面部分示出了在逻辑上描述输入流两者的双事件TDB实例。例如,TDB实例中的第一事件指示对于从时间实例6运行到时间实例12的有效性时间间隔,存在有效载荷A(或有效载荷A对流作出贡献),这是与物理流两者中这些系列的元素兼容的逻辑结论。随着新物理元素到达,对应的逻辑TDB可相应地演化(例如,每次元素被添加时转变成不同的一袋事件)。注意,任何两个物理流的前缀可能不总是逻辑等价的,但它们是兼容的,因为它们在将来仍可变得等价。[0056]给定上述对“物理”和“逻辑”概念的阐述,现在可更准确地表达逻辑合并模块102的操作和属性。逻辑合并模块102将物理输入流看作在逻辑上等价,这意味着这些流具有最终会是相同的逻辑TDB表示。逻辑合并模块102产生逻辑上等价于其输入流的输出流,意味着输出流具有最终将与输入流的TDB表示相同的TDB表示。[0057]更正式地说,流前缀(I1Lk1],...,IJkJj在存在有限序列Ei和Fi,I^i^η的情况下被认为是相互一致的,使得E1=I1[kjIF1=...=EiJi[kj:Fj=...=En:In[kn]:Fn(其中标记A:B表示A和B的拼接)。输入流在U1,...,IJ在其所有有限前缀相互一致的情况下是相互一致的。在对于输入前缀的扩展I[k]:E,存在与其等价的输出序列的扩展0[j]:F的情况下,输出流前缀0[j]被认为与输入流前缀I[k]兼容。在对于使I1LkJIE1,In[kn]:En等价的任一组扩展E1,...,En,存在等价于它们全部的输出序列扩展0[j]:F的情况下,流前缀0[j]与该组相互一致的输入流前缀I=U1Ek1],...,IJkn]}兼容。[0058]图6示出图1的逻辑合并模块102的操作的示例。在这种情况下,两个输入流(输入I和输入2)可被映射到第一输出流(输出I),或第二输出流(输出2),或第三输出流(输出3)。这些输出流是在逻辑上都与两个输入流等价的物理流(意味着它们具有与输入流相同的TDB)。但输出流按不同的物理方式产生该等价性。更具体的,第一输出流(输出I)表不聚集输出策略,因为它传播它遇到的来自输入流的每一改变。第二输出流(输出2)表不保守策略,因为它延迟输出元素直到它接收到元素是最终的保证。因此,第二输出流比第一输出流产生更少的元素,但第二输出流在比第一输出流稍后时间产生这些元素。第三输出流(输出3)表示第一输出流和第二输出流之间的中间策略。即,第三输出流输出它遇到的具有给定有效载荷和start的第一元素,但保存任何修改,直到确认它们是最终的。[0059]环境所采用的特定策略可表示竞争性考虑事项之间的折衷。例如,环境可能希望通过报告较少的改变来扼制输出流的“闲谈性”。但该决策可增加环境向其消费者提供结果的等待时间。[0060]图7示出图2的逻辑合并模块102的操作的另一示例。在这种情况下,逻辑合并模块102将两个输入流(输入1、输入2)映射到三个可能的输出流,其中在该情况下,输入和输出流两者都由它们的TDB来描述。对于TDB中的每一个,“last(最后)”在该示例中是指在stable(V)元素中已遇到的最新的值V。最右边的列表示每一元素的冻结状态,例如,UF表示未冻结、HF表示半冻结、以及FF表示全冻结。[0061]第一输出流(输出I)和第二输出流(输出2)两者都被认为在逻辑上与两个输入流兼容。更具体地,第一输出流表示应用仅输出必将出现在输出中的信息的保守传播策略。由此,调整第一输出流的结束时间是将是适当的。第二输出流表示应用更激进的策略,因为它包含与已被看到的所有输入事件对应的事件,即使那些事件未被冻结。由此,第二输出流将需要发出之后的元素,以完全移除输出流中的某些事件。[0062]作为对比,第三输出流与两个输入流不兼容,出于两个原因。第一,尽管事件(A,2,12)与第二输入流中的事件匹配,但它与第一输入流(指定结束时间将不少于14)的内容相矛盾。因为该事件在第三输出流中被全冻结,所以不存在可纠正它的后续流元素。第二,该第三输出流缺少事件(B,3,10),该事件(B,3,10)在输入流中被全冻结,但考虑到其稳定点而不能被添加到第三输出流中。[0063]因此,图7概括地突出了逻辑合并模块102面临的挑战之一。逻辑合并模块102的任务是确保在任何给点时间点,输出流能够跟上未来对输入流的添加。实现这一目标的方式将取决于多个考虑事项,包括,例如输入流内正被使用的元素的类型、施加于输入流的其他约束(如果有的话),等等。[0064]图8示出了概述逻辑合并模块102的上述操作的过程900。在框902,逻辑合并模块102从任何相应的源接收多个物理上分支的输入流。如上面解释的,这些源可与供应原始数据(诸如原始测量数据)的实体相对应。作为替换或补充,这些源可与执行处理并提供所得输出流的一个或多个运算符相对应。在框904,逻辑合并模块产生与这些输入流中的每一个在逻辑上兼容的输出流。如上所示,这意味着输出流具有最终将与输入流的TDB表示相同的TDB表不。[0065]B.逻辑合并模块的说明性实现[0066]图9示出了图1的逻辑合并模块102的一种实现。图9中示出的逻辑合并模块102实现从一套可能算法中选择的一个算法。每一算法进而被配置成处理服从一类约束的输入流集合。以此,这一部分将以描述可影响数据流集合的说明性约束类而开始。在一种情况下,假设输入流集合中所有成员都服从同类约束。然而,其他实现可将该特性放松到不同程度。[0067]在第一种情况下(情况R0),输入流仅包含insertO和stableO元素。换言之,输入流缺乏修改输入流中的先前元素的能力。此外,这些元素中的Vs时间是严格递增的。因此,流展示确定性顺序,而没有重复时间戳。可以得到与服从RO型约束有关的流的多个简化假设。例如,一旦时间进展到点t,逻辑合并模块102就可安全地假设它已看到具有Vs(t的所有有效载荷。[0068]在第二种情况下(情况Rl),输入流同样仅包含insertO和stableO元素。此外,Vs时间是非递减的。此外,现在可存在具有相等Vs时间的多个元素,但具有相等Vs时间的元素间的顺序是确定性的。例如,具有相等Vs时间的这些元素可基于有效载荷P内的ID信息来排序。[0069]在第三种情况下(情况R2),输入流同样仅包含insertO和stableO元素。然而,在该情况下,具有相等Vs时间的这些元素的顺序可跨输入流而不同。此外,对于任何流前缀S[i],有效载荷(P)和Vs时间的组合形成了用于在输出流的TDB表示中定位对应事件的键。更正式地说,组合(P,Vs)形成了tdb(S,i)的键。例如,这样的属性可能在P包括ID信息和读数(其中没有源在每时间段提供不止一个读数)的情况下出现。如下面将描述的,这一约束促进跨输入流来匹配对应事件。[0070]在第四种情况下(情况R3),输入流现在可包括所有类型的元素,包括adjustO元素。此外,该情况除了针对stableO元素以外对元素的顺序不施加约束。类似于情况R2,对于任何流前缀S[i],,组合(p,Vs)形成用于定位输出流中的对应元素的键。更正式地说,组合(P,Vs)形成了tdb(S,i)的键。[0071]在第五种情况下(情况R4),输入流可拥有第四种情况中的所有自由。另外,在该情况下,TDB是多重集合的,这意味着可存在具有相同有效载荷和生存期的不止一个事件。[0072]这些流类是代表性的,而非限制性的。取决于输入流的性质,其他环境可按不同方式对各组输入流的属性进行分类。[0073]情况确定模块902表示以确定可对输入流集合施加什么约束为目标,分析该输入流集合并且确定其特性的功能。情况确定模块902可按不同方式来作出这一确定。在一种情况下,情况确定模块902依赖于对使用逻辑合并模块102的处理环境的初步分析(例如,通过检查生成输入流的功能的特性)期间所提取的信息。这一初步分析可在编译时或在任何其他初步时刻执行。例如,考虑第一示例,其中处理环境包括接受无序输入流、缓冲这些流、并且将按时间排序的流输出到逻辑合并模块102的重排序或净化运算符。情况确定模块902可假设输入流在该情形中包括按时间排序的Vs时间(例如,由于存在上述类型的重排序或净化运算符)。情况RO适用于这些输入流。[0074]在另一种情况下,处理环境可采用向逻辑合并模块102输出具有重复时间戳的元素的多值运算符,其中那些元素按确定性方式来排列(例如,基于传感器ID信息等)。情况Rl适用于这些输入流。在另一种情况下,处理环境可采用向逻辑合并模块102输出具有重复时间戳的运算符,但那些元素不具有确定性顺序。情况R2适用于这些输入流。[0075]作为补充或替换,情况确定模块902可执行对输入流集合的特性的运行时分析。作为替换或补充,供应输入流的源可使用揭示输入流特性的信息来对输入流进行注释。例如,每一输入流可发布指示该流是否有序、是否具有adjustO元素、是否具有重复时间戳等信息。[0076]基于对应用情况(R0、Rl等)的确定,逻辑合并模块102可选择对应算法来处理输入流集合。即,对于情况R0,逻辑合并模块102选择RO算法;对于情况R1,逻辑合并模块102选择Rl算法,且以此类推。选择上下文专用算法来处理一组受约束的输入流可能有利于改进逻辑合并模块102的性能,诸如一算法可利用与该应用情况相关联的内置假设。或者,逻辑合并模块102可采用保守方式并且使用更通用的算法(诸如针对情况R3的算法)来处理具有变化约束水平的输入流集合(例如,服从R0、Rl、R2或R3的约束的各组输入流)。[0077]逻辑合并模块102本身可包括(或可被概念化成包括)执行相应功能的模块的集合。开始,元素解析模块904标识输入流内的各单独的元素。逻辑合并模块102随后在元素被接收到时,对输入流中的每一元素执行逐元素处理。逻辑合并模块102还可并行处理各组元素以加速处理。[0078]元素类型确定模块906标识每一元素的类型。在一个说明性实现中,一种元素类型是上述insertO元素;该元素例如通过在时间戳Vs处开始新有效性时间间隔来提供传播新输出信息的指令。另一种元素类型是上述adjustO元素;该元素例如通过供应在先元素的新Ve来调整由在先元素赋予的信息。另一种元素类型是上述stableO元素;该元素提供进展标记信息,该进展标记信息标记在此之前不能(例如使用insertO元素或adjustO元素)对输出流作出进一步改变的时间。[0079]元素处理模块908为每一元素确定是否将事件传播到输出流。例如,对于insertO元素,元素处理模块908可确定将插入事件添加到输出流是否适当。对于adjustO元素,元素处理模块908可确定将调整元素添加到输出流是否适当。并且对于stableO元素,元素处理模块908可确定将稳定元素添加到输出流是否适当。此外,对于某些算法,输入流中出现的特定元素可提示元素处理模块908对输出流作出其他调整。例如,对于R3和R4算法的情况(下面将描述),在接收到输入流中的stableO元素后,元素处理模块908在特定情形中可将调整元素传播到输出流;该操作被执行以确保输入流和输出流之间的逻辑兼容性。[0080]更一般地,例如通过产生具有与输入流的各TDB实例匹配的一TDB实例的输出流(其中,输入流的这些TDB实例被认为是等价的),元素处理模块908试图创建表达输入流中的每一个的逻辑本质的输出流。元素处理模块908基于到任何给点时间点为止已接收到的流元素来动态地执行这一分析。这一分析与各种复杂性抗争,包括:硬约束,例如当元素指定有限1时;开放式约束,例如当元素指定开放式1时;以及闭包相关的约束,例如当stableO使得输出流的一部分对于所标识的时间V。之前的进一步改变是不可变的。这些复杂性呈现两种一般的挑战。第一,要求元素处理模块908形成不直接与输入流集合已实施的约束中的任一个相矛盾的输出流,例如,其中这样的矛盾是显然的,而非假想的。第二,在任何给定实例下,要求元素处理模块908执行“如果怎么办(whatif)”分析,即,鉴于同迄今已接收到的流元素相关联的约束(和自由),通过形成考虑到可以想象将来可能接收的流元素的输出流。(这是因为逻辑合并模块102的通常目的是产生具有最终将变得与输入流的各TDB实例等价的一TDB实例的输出流)。[0081]状态管理模块910将状态信息存储在数据存储912内的一个或多个数据结构中。状态信息捕捉与输入流有关的信息,且在某些情况下,捕捉已被传播到输出流的信息。更具体地,取决于施加于输入流的约束,不同的算法维护不同类型的状态信息。例如,图12概述了算法R0、RUR2和R3可使用的数据结构。如可以看到的,随着约束从输入流中被移除,状态管理模块910增加其存储的状态信息量。图12中示出的数据结构将在解释针对情况R0-R4的算法的上下文中更详细地描述。[0082]图10示出概述上述情况确定模块902的操作的过程1000。在框1002,情况确定模块902分析输入流以确定其特性,且具体地,以确定一个或多个约束是否适用于输入流。在框1004,情况确定模块902选择与框1202中所评估的约束相关联的情况。在框1006,情况确定模块902指示逻辑合并模块102调用特定算法来处理框1004中所确定的该情况。[0083]图11示出概述图9中阐述的逻辑合并模块102的关于特定元素的操作的过程1100。在框1102,逻辑合并模块102确定考虑中的元素的类型(例如,inserto元素、adjustO元素、或stableO元素)。在框1104,逻辑合并模块102响应于考虑中的元素来确定向输出流传播什么类型的一个或多个元素。例如,逻辑合并模块102可以:(a)制止向输出流传播任何信息;(b)传播新输出信息,例如,使用insertO元素;(c)调整在先输出信息,例如,使用adjustO元素;或((1)提供进展标记信息(该进展标记信息部分地或完全地冻结输出流中的某些事件),例如,使用stableO元素。[0084]图13-16描述用于分别处理情况R0、RUR2和R4的说明性算法。这些图将参考图12中的对应数据结构来描述。此外,这些算法参考两个输入流的处理来描述;但这些算法可被应用于不止两个输入流的场景。[0085]针对情况RO的逻辑合并算法[0086]对于情况R0,输入流具有带有严格递增Vs值的元素,而没有adjustO元素。因此,不存在重复时间戳。在这种情况下,状态管理模块910仅维护两个信息片段。第一,状态管理模块910存储输入流中已遇到的最大Vs(MaxVs)。第二,状态管理模块910存储跨所有输入流看到的最大稳定时间戳(MaxStable)。[0087]图13示出用于处理情况RO的算法。在步骤1302,逻辑合并模块102初始化MaxVs和MaxStable的值。[0088]在步骤1304,逻辑合并模块102在所考虑的元素实际上是insertO元素的情况下,处理insertO元素。即,逻辑合并模块102在该元素的Vs大于占优势的MaxVs的情况TJfinsertO元素传播到输出流。此外,逻辑合并模块102更新该MaxVs值以便与该元素的Vs值相对应。否则(如果Vs不大于MaxVs),则逻辑合并模块102不将该元素传播到输出流。注意,符号“s”指示与特定输入流相对应的标识符(例如,整数)。[0089]在步骤1306,逻辑合并模块102在所考虑的元素实际上是stableO元素的情况下,处理stableO元素。即,逻辑合并模块102在其时间戳t(在以上示例中也被称为V。)大于MaxStable的情况下,输出stableO兀素。[0090]针对情况Rl的逻辑合并算法[0091]对于情况R1,输入流具有非递减入值的元素,但没有adjustO元素。这里,输入流可具有重复的Vs时间戳,但这样的元素以确定性顺序来呈现(在有效载荷的字段上被排序)。在这种情况下,状态管理模块910像之前(针对情况R0)—样维护MaxVs和MaxStable值。另外,状态管理模块910维护带有每一输入流的计数器值的阵列。特定输入流的计数器值反映该流上的其中Vs=MaxVs的元素的数量。[0092]图14示出用于处理情况Rl的算法。在步骤1402,逻辑合并模块102初始化MaxVs和MaxStable的值。逻辑合并模块102还初始化计数器阵列的值。[0093]在步骤1404,逻辑合并模块102在所考虑的元素实际上是insertO元素的情况下,处理insertO元素。即,逻辑合并模块102在insertO元素的Vs值大于MaxVs当前值的情况下,将计数器值的阵列重置为零,并且随后将MaxVs设置成等于Vs。在第8行,逻辑合并模块102确定流s上的insertO元素是否使s的计数器增加到超出跨所有流的最大计数器值;如果是,则逻辑合并模块102将insertO元素传播到输出流。换言之,逻辑合并模块102在插入元素表示共享相同Vs的一确定有序的可能元素组中的新成员的情况下,输出该插入元素。例如,假设每一流包括每一Vs的以固定顺序呈现的三个insertO元素(例如,对应于三个不同的传感器ID)。进一步假设,在分析的特定点,第二插入元素在特定流s中已被接收。在对于该Vs没有其他流已经接收到其相应第二元素的情况下,逻辑合并模块102将输出该insertO元素。[0094]在步骤1406,逻辑合并模块102在所考虑的元素实际上是stableO元素的情况下,处理stableO元素。逻辑合并模块102按与算法RO相同的方式来处理stableO元素。[0095]针对情况R2的逻辑合并算法[0096]对于情况R2,输入流具有非递减Vs值的元素,但没有adjustO元素。此外,输入流可具有重复的Vs时间戳;并且,对于该情况,这样的元素不需要按确定性顺序来呈现。在这种情况下,状态管理模块910像之前一样维护MaxVs和MaxStable值。另外,状态管理模块910维护具有有效载荷(P)作为键的查找表。对于特定有效载荷键(P),该表中的每一条目存储具有Vs=MaxVs的各元素。对这一数据结构的说明,见图12。[0097]图15示出用于处理R2情况的算法。在步骤1502,逻辑合并模块102初始化MaxVs和MaxStable的值。逻辑合并模块102还创建查找表。[0098]在步骤1504,逻辑合并模块102在所考虑的元素实际上是insertO元素的情况下,开始处理insertO元素。即,逻辑合并模块102首先查阅查找表(使用元素中被指定的有效载荷P作为键)。如果该表指示该有效载荷和Vs的特组合已经存在(因为已从某一其他流接收到它),则逻辑合并模块102不执行进一步动作。否则,逻辑合并模块102更新查找表并且输出该插入兀素。[0099]在框1506,逻辑合并模块102在它遇到使Vs增加到超出MaxVs的元素情况下清除查找表。逻辑合并模块102还将更新MaxV的值以便与Vs相对应。[0100]在步骤1508,逻辑合并模块102在所考虑的元素实际上是stableO元素的情况下,处理stableO元素。逻辑合并模块102按与之前相同的方式来处理stableO元素。[0101]针对情况R3的逻辑合并算法[0102]对于情况R3,输入流内的元素现在可包括任何类型的元素,这些元素包括insertO元素、adjustO元素、以及stableO元素。此外,这些元素可按任何时间顺序来呈现。作为其余约束,针对R3的算法假设Vs和有效载荷(P)的组合可用作键来确定输出流中的对应条目。更具体的,如图12中所示,状态管理模块910可维护通过键(Vs,Payload)来对条目进行索引的主数据结构。每一条目包括事件(e)(例如,Vs和Payload)以及小查找表,该小查找表包含对于每一输入流S,通过键s来索引的该流的当前\值。该查找表还包含具有键α的条目(OutVe),该条目(OutVe)提供输出Ve(与已传播到输出流的输出事件相关联)。[0103]图16示出用于处理情况R3的算法。在步骤1602,逻辑合并模块102初始化MaxVs和MaxStable的值。逻辑合并模块102还创建主数据结构。在一种情况下,逻辑合并模块102可创建红黑树来实现该主数据结构。[0104]在步骤1604,逻辑合并模块102在所考虑的元素实际上是insertO元素的情况下,开始处理insertO元素。即,逻辑合并模块102在该主数据结构中执行查找,以寻找具有与所考虑的insertO元素相关联的相同(Vs,Payload)的条目。如果这样的条目在该主数据结构中不存在,则逻辑合并模块102添加该条目并且产生输出。在与条目(Vs,Payload)相关联的查找表中,逻辑合并模块102为流s并且为已传播到输出流的输出添加Ve条目。然而,在Vs被确定为小于MaxStable(如第6行中评估的)小于的情况下,逻辑合并模块102不执行这一更新操作;这指示对应条目先前在该主数据结构中存在,但此后已被移除。[0105]在框1606,如果该主数据结构中已经存在对于该特定键(payload,Vs)的条目,则逻辑合并模块102按适当方式更新该条目的查找表。[0106]在框1608,逻辑合并模块102在所考虑的元素实际上是adjustO元素的情况下,处理adjustO元素。即,如果该主数据结构中已经存在对adjustO元素中所指定的特定键(payload,Vs)的条目,则逻辑合并模块102更新该条目的查找表。根据一个策略选择,框1608在任何情形中不涉及传播任何adjustO元素。[0107]在框1610,逻辑合并模块102在所考虑的元素实际上是stableO元素的情况下,处理stableO元素。如第18行所指示的,逻辑合并模块102返回但不执行任何动作,除非时间戳t大于MaxStable。如果满足该条件,则逻辑合并模块102首先在主数据结构中找出作为对stableO元素的传播结果而将变成半冻结的条目。即,存在具有Vs值小于stableO元素的时间戳的条目。对于每一这样的条目,逻辑合并模块102确定其中输入和输出之间存在失配的实例,其中兼容性违反将在stableO元素被传播到输入流的情况下发生。[0108]更具体地,在一个实现中,逻辑合并模块102考虑将发生兼容性违反的三种情形。在第一种情况下,流S中不存在对(Vs,Payload)的输入事件,但存在输出事件(由于某一其他输入流的贡献)。在第二种情况下,当前输出的事件将由于stableO元素e的传播而变为全冻结,但对应的输入不是全冻结的。在第三种情况下,输入事件将变为全冻结,但当前输出不是全冻结的。在所有这些情况下,根据一个可能的策略,逻辑合并模块102调整该输出,以使其匹配该输入(发生在第24-27行)。它通过向输出流传播适当的adjustO元素并且相应地更新主数据结构来执行这一操作。[0109]此外,在第28-29行,如果输入变成全冻结,则逻辑合并模块102从主数据结构中删除对应条目。最后,在第30-31行,逻辑合并模块更新MaxStable的值并且输出stableO元素。[0110]总之,框1610涉及修改输出流,以确保所考虑的stableO元素的传播不会导致各输入流和该输出流之间未来的逻辑不兼容性。逻辑合并模块102随后可安全地输出stableO兀素。[0111]针对情况R4的逻辑合并算法[0112]情况R4的数据流具有情况R3的所有相同自由。但现在数据流中多个元素可具有相同(Vs,Payload),但具有不同的Ve值。此外,输入流可包括重复条目。为解决该情景,情况R3的主数据结构可被修改以考虑不同Ve值的存在。考虑与主数据结构中的特定(payload,Vs)条目相关联的查找表。现在用基于已遇到的这些唯一Ve值来索引的小Ve数据结构,连同该输入流中(Vs,Payload)组合的计数来代替条目的单个值Ve(如在情况R3中提供的)。[0113]在R3算法的情况下,R4算法在输出stableO元素之前可(使用调整元素)修改输出流,以由此避免这些输入流和该输出流之间的未来不兼容性。然而,逻辑合并模块102现在将其修改基于更复杂的考虑事项。[0114]例如,根据第一个考虑事项,逻辑合并模块102试图确保对于特定(Vs,Payload),输出流包含不超过任何输入流中对于该(Vs,Payload)的最大事件数量的事件。该条件对于限制输出闲谈性是合乎需要的,尽管该条件不是强制的。[0115]根据第二个考虑事项,当传入stableO元素具有大于某一Vs的时间戳时(使得该Vs变得半冻结),逻辑合并模块102试图确保对于输入中正变为半冻结的每一(Vs,Payload)组合,存在与输入中有的完全一样多的具有(Vs,Payload)值的输出事件。为执行这一任务,逻辑合并模块102可产生新输出元素,或“取消”该(Vs,Payload)组合的在先输出元素。[0116]根据第三个考虑事项,对于特定(Vs,Payload),如果作为传入stableO元素的结果,某一Ve变得全冻结,则逻辑合并模块102在传播stableO元素之前,试图确保输出流包含相同数量的带有(Vs,Payload,Ve)的事件。如果对应Vs已被半冻结,则该过程只是涉及调整较早输出的具有相同(Vs,Payload)的事件的Ve。[0117]根据第四个考虑事项,当stableO时间戳移动到超出Ve数据结构中的最大Ve时,对于特定(Vs,Payload),逻辑合并模块102可从该数据结构中删除对应的(Vs,Payload)条目。[0118]如上所述,在特定情形中,逻辑合并模块102在确定向输出流传播元素时采取什么动作时遵从策略。不同环境可基于不同的相应考虑事项来采取不同策略。如上面阐述的,许多策略采用闲谈性(输出流中所传播的信息量)和等待时间(输入流中的信息被传播到输出流的及时性)之间的折衷。为产生低的等待时间,策略可选择一旦元素被接收就传播这些元素,即使它们包含不完整信息或可能需要稍后被修订。为降低闲谈性,策略可能希望将元素的传播扼制到各不同程度。[0119]例如,当在R3算法中处理adjustO元素时(例如在步骤1608),考虑逻辑合并模块102所采用的策略。逻辑合并模块102被配置成永不输出adjustO事件。逻辑合并模块102确保仅在它处理stableO元素时输出流与输入流兼容。[0120]但该策略可以用各种方式来修改。在另一种情况下,逻辑合并模块102可在输出流中反映每个adjustO元素。相比于上述策略,这一选择产生更“闲谈”的输出流。但这一选择还在下游消费者如此选择的情况下,允许下游消费者较早地接受并且处理这样的改变。在另一选项中,逻辑合并模块102可“跟上”特定输入流,例如,具有当前最大stableO时间戳的流(被称为领导流)。这一选择简化了该算法,并且在一个输入流往往在其他输入流之前时可能是适当的。然而,如果领导流频繁地改变,则该策略可在重新调整输出时招致大量开销。[0121]接下来,考虑逻辑合并模块102在R3算法内在第10行执行的处理。在该时刻,当处理特定Vs的第一insertO元素时,逻辑合并模块102立即将其传播到输出流。该策略确保输出作出最大响应。但该策略可按各种方式来修改,以适合其他策略目标。[0122]例如,在另一种情况下,逻辑合并模块102可仅在insertO元素是由具有最大stableO时间戳或具有最大数量的未冻结元素的输入流产生的情况下,输出该insertO元素。在另一种情况下,逻辑合并模块102可避免将元素作为输出来发送,直到它在某一输入流上变得半冻结。该策略确保逻辑合并模块102以较高的等待时间为代价来永不完全移除置于输出上的元素。在另一种情况下,逻辑合并模块102可通过在向输出发送元素之前,等待直到输入流的某一小部分已为每一Vs产生了该元素来采用混合选择。如果输入流在物理上不同,则该策略可降低产生之后需要被完全删除的虚假输出的概率。[0123]作为该部分中最后的主题,注意上述算法对于输入流中的缺失元素(例如,由输入流的破坏或任何其他现象所导致)是弹性的。例如,只要某一其他流向逻辑合并模块102递送某一流s中缺失的元素,针对R0、Rl和R2情况的算法就可在流s递送具有较高Vs的元素之前,输出这些缺失元素。只要使MaxStable增加到超出Vs(对于该元素)的流产生元素e,针对R3和R4情况的算法就输出该元素e。[0124]C.逻辑合并模块的说明性应用[0125]如在A部分所述的,不同环境可使用针对不同应用的逻辑合并模块102。这一部分阐述非穷尽的说明性应用集合。[0126]考虑图17。这里,任何类型的主机环境1702包括一个或多个逻辑合并模块,为引用方便而被称为单数逻辑合并模块1704。逻辑合并模块1704从多个相应单元(例如,单元1706、1708和1710)接收多个输入流。在一种情况下,单元(1706、1708、1710)可对应于各计算机器(或单个机器内的单独进程)。逻辑合并模块1704随后产生与这些输入流中的每一个在逻辑上兼容的一个输出流。[0127]高可用性。在第一个应用中,环境1702可使用逻辑合并模块1704来确保高可用性。例如,考虑其中连续查询依赖于长处理窗口来产生输出流的情况。因此,它将花费相应长的时间来在失败后重启这样的连续查询。为解决该问题,环境1702可在不同单元(1706、1708、1710)上安装该连续查询的冗余副本,其中每一副本向逻辑合并模块1704提供一个输入流。环境1702随后可应用逻辑合并模块1704来从无论哪个在特定时刻未失败的输入流拉取结果,从而适应η个输入流中多达η-1个已失败的情况。此外,一旦连续查询在被重启或新引入之后已被正确地“起动(spunup)”(按下面描述的方式),环境1702就可使用逻辑合并模块1704来并入新输入流。[0128]在另一应用中,单元(1706、1708、1710)可表示位于环境1702远程、经由任何类型的网络(诸如因特网)来递送它们的流的机器。在这种情况下,环境1702可依赖逻辑合并模块1704来降低网络拥塞的影响,网络拥塞可导致一个或多个流中的延迟或其他降级。如在以上情况中,逻辑合并模块1704可通过选择性地从展示满意性能的一个或多个输入流拉取元素来执行这一任务。[0129]快可用性。在另一应用中,环境1702可使用逻辑合并模块1704来确保快可用性,即通过使消费者能够尽快获取输出结果。为实现该目标,环境1702可在单元(1706、1708、1710)上安装不同(但语义上等价)的查询计划。环境1702随后可使用逻辑合并模块1704来从无论哪个或哪些在任何特定时间正提供最及时的结果的单元拉取结果。出于多个环境专用原因,不同的查询计划相比于其他查询计划而言可展示更满意的性能。例如,特定查询计划相比于另一查询计划而言可更好地适合处理特定类型的数据集。作为替换或补充,运行特定查询计划的单元可提供比其他单元更好的性能,例如,由于资源争用问题和/或以不同方式影响这些单元的其他处理延迟。[0130]注意,试图满足一个可用性准则(例如,高可用性)的环境也可满足另一可用性准贝IJ(例如,快可用性)。针对快可用性的上述策略也可用于查询优化,即,通过选择在任何给定实例下鉴于一个或多个性能目标而产生最期望结果的查询计划。[0131]计划快进。各种因素可导致一个查询计划滞后于其他查询计划。如果这发生,该环境1702无法对通过这一滞后查询计划所生成的输出流作出有效使用,使其工作实际上被浪费。为解决该情景,环境1702可包括相对于其他查询计划而言帮助将滞后查询计划带到最新的反馈模块1712。在操作上,逻辑合并模块1704可通知反馈模块1712—个或多个输出流没有提供有用结果,例如因为它们滞后于其他流的结果,且由此提供其他流已供应的陈旧信息。作为响应,反馈模块1712可将反馈信息发送给正执行一个或多个性能未达标准的计划的一个或多个单元。在一种情况下,反馈信息可通知该一个或多个单元指定时间t之前的操作是逻辑合并模块1704不需要的。作为补充或替换,反馈模块1712可传达与更满意的执行的计划的状态有关的信息。在接收到反馈信息后,这些单元可执行各种形式的纠正动作,诸如清除无用(陈旧)信息,并入更及时的状态信息,放弃无用处理操作,向前跳到更当前的处理操作等等。[0132]更具体地,“上游”运算符选择对反馈信息作出反应的方式可取决于它执行的特定函数的性质。在一个实现中,接收反馈信息的任何运算符进而可向查询处理流中更上游的一个或多个运算符传播该反馈信息。[0133]查询跳转开始。在另一应用中,环境1702可使用逻辑合并模块102来促进引入产生新输入流的新连续查询。例如,在图17中,假设引入新单元1714来运行连续查询的新实例。如上所述,在某些连续查询可提供可行结果供消费之前,它们通过在相对长的时间段上累积状态信息来操作。为解决该问题,例如,基于盘上存储的或由该查询的另一运行副本提供的检查点信息,环境1702可“播种”新引入的连续查询的查询状态。环境1702随后可应用逻辑合并模块1704,以无缝地合并新引入的流和其他正在进行的流,从而使得新引入的流的输出可尽快用于消费。[0134]查询切换。在另一应用中,环境1702可应用逻辑合并模块1704来有效地从一个查询实例“切换(cutover)”到新实例化的查询实例(表示相同查询计划或不同查询计划)。环境1702可执行这一任务以促进查询优化。例如,云计算环境可采用这样的切换机制,以基于工作负载条件来迁移正在执行的查询。[0135]更一般地,上面阐述的各种应用涉及对流的引入或移除。逻辑合并模块1704可包括用于促进这些任务的适当机制。例如,当作为逻辑合并模块1704的输入的流被移除时,逻辑合并模块可将该流标记为已离开。上述算法(针对情况R0-R4)最终将不再考虑已被移除的流。[0136]为了联结,联结流提供了时间戳t,使得保证为从t开始的每个点(B卩,输出中的具有Ve≥t的每个事件)产生可行输出。一旦MaxStable达到t,逻辑合并模块1704就可将流标记为“已联结”,因为从这一点以后,逻辑合并模块1704可容忍所有其他流的同时失败或移除。[0137]图18示出概述上述所选择的应用的过程1800。在框1802,逻辑合并模块1704从任何相应的源接收两个或更多流。在框1804,逻辑合并模块1704对输入流执行一个或多个应用专用操作。这样的应用可包括从这些输入流中选择以确保高可用性和/或快可用性,促进对流的引入或移除,通知反馈模块1712存在性能未达标准的流(此时,反馈模块1712可将反馈信息发送到适当的源)等等。[0138]D.代表性计算功能[0139]图19阐述了可以,被用来实现上文所描述的功能的任何方面的说明性计算功能1900。例如,计算功能1900可以被用来实现图1的逻辑合并模块102的任何方面。在一种情况下,计算功能1900可以对应于包括一个或多个处理设备的任何类型的计算设备。可任选地,计算设备可以是多个这样的计算设备的群集。[0140]计算功能1900可包括诸如RAM1902和R0M1904之类的易失性和非易失性存储器,以及一个或多个处理设备1906(例如,一个或多个CPU,和/或一个或多个GPU等等)。计算功能1900还可任选地包括诸如硬盘模块、光盘模块等等之类的各种介质设备1908。当处理设备1906执行由存储器(例如,RAM1902、R0M1904或在别处维护的指令时,计算功能1900可以执行上文所标识的各种操作。[0141]更一般地,指令和其它信息可以被存储在任何计算机可读介质1910上,计算机可读介质包括但不限于静态存储器存储设备、磁存储设备、光存储设备等。术语计算机可读介质还涵盖多个存储设备。在任何情况下,计算机可读介质1910都表示某种形式的物理和有形的实体。[0142]计算功能1900还包括用于接收各种输入(通过输入模块1914),以及用于提供各种输出(通过输出模块)的输入/输出模块1912。一种特定输出机制可包括呈现模块1916及相关联的图形用户界面(⑶I)1918。计算功能1900还可以包括用于通过一个或多个通信管道1922与其他设备交换数据的一个或多个网络接口1920。一条或多条通信总线1924将上述组件通信地耦合在一起。[0143]通信管道1922可以以任何方式来实现,例如,通过局域网、广域网(例如,因特网)等等,或其任何组合。通信管道1922可包括可由任何协议或协议的组合管理的硬连线的链路、无线链路、路由器、网关功能、名称服务器等等的任何组合。[0144]作为替代或除此之外,A-C部分中所述的任何功能可至少部分地由一个或多个硬件逻辑组件来执行。例如,但非限制,可被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(S0C)、复杂可编程逻辑器件(CPLD)等。[0145]最后,说明书在说明性挑战或问题的上下文中描述了各种概念。这种说明方式不构成其他人以此处所指定的方式理解和/或明确表达挑战或问题的许可。[0146]尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。【权利要求】1.一种由物理和有形计算功能实现的用于合并数据流的方法,包括:从相应源接收多个物理上分支的输入流;以及使用逻辑合并单元来产生与这些输入流中的每一个在逻辑上兼容的输出流。2.如权利要求1所述的方法,其特征在于,还包括对于每一输入流中的每一元素:评估所述元素的类型;确定响应于所述元素要采取的输出动作,所述输出动作选自以下各项:不对所述输出流提供贡献;向所述输出流提供新输出信息;调整所述输出流中的先前输出信息;以及向所述输出流提供进展标记信息;以及调整与所述逻辑合并模块相关联的状态。3.如权利要求2所述的方法,其特征在于,所述逻辑合并模块应用从多个算法中选择的一个算法以执行所述确定和所述调整,其中所述多个算法与关联于所述多个输入流的约束的各不同的相应水平相关联。4.如权利要求所述的方法,其特征在于,所述输入流源自多个相应单元,其中所述单元实现相同的连续查询。5.如权利要求4所述的方法,其特征`在于,所述多个相应单元使用不同的相应查询计划来执行所述连续查询。6.如权利要求4所述的方法,其特征在于,还包括向所述多个单元中的至少一个发送反馈信息,以使得所述多个单元中的该至少一个能够推进其操作。7.如权利要求1所述的方法,其特征在于,所述输出流由所述逻辑合并模块通过从在任何给定时间的至少一个非失败的输入流中进行选择来产生,以提供高可用性。8.如权利要求1所述的方法,其特征在于,所述输出流由所述逻辑合并模块通过从在任何给定时间的至少一个及时的输入流中进行选择来产生,以提供快可用性。9.一种由物理和有形计算功能实现的用于处理流的逻辑合并模块,包括:元素解析模块,用于解析多个物理上分支的输入流中的元素;元素类型确定模块,用于评估由所述元素解析模块所标识的每一元素的类型;元素处理模块,用于确定响应于已标识的每一元素来采取的输出动作,以产生输出流,所述输出动作选自以下各项:不对所述输出流提供贡献;向所述输出流提供新输出信息;调整所述输出流中的先前输出信息;以及向所述输出流提供进展标记信息;以及状态管理模块,用于调整与所述逻辑合并模块相关联的状态,由所述元素处理模块所产生的所述输出流与所述多个输入流中的每一个在逻辑上兼容。10.一种用于存储计算机可读指令的计算机可读介质,所述计算机可读指令在由一个或多个处理设备执行时提供一种逻辑合并模块,所述计算机可读指令包括:用于从执行相同的连续查询的相应源接收多个物理上分支的输入流的逻辑;以及用于使用逻辑合并运算符来产生具有与所述输入流中的每一个的时间数据库(TDB)表示在逻辑上等价的时间数据库表示的输出流的逻辑。【文档编号】G06F17/00GK103620584SQ201280029593【公开日】2014年3月5日申请日期:2012年6月13日优先权日:2011年6月17日【发明者】B·钱德拉穆里,D·E·梅耶,J·D·戈德斯汀,P·A·扎巴克申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1