《对物理上分支的流的高效逻辑合并.pdf》由会员分享,可在线阅读,更多相关《对物理上分支的流的高效逻辑合并.pdf(34页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103620584 A (43)申请公布日 2014.03.05 CN 103620584 A (21)申请号 201280029593.3 (22)申请日 2012.06.13 13/162,973 2011.06.17 US G06F 17/00(2006.01) G06F 9/06(2006.01) (71)申请人 微软公司 地址 美国华盛顿州 (72)发明人 B钱德拉穆里 DE梅耶 JD戈德斯汀 PA扎巴克 (74)专利代理机构 上海专利商标事务所有限公 司 31100 代理人 范玮 (54) 发明名称 对物理上分支的流的高效逻辑合并 (57) 摘要 本文描述。
2、了用于产生与两个或多个物理上分 支的输入流在逻辑上兼容的输出流的逻辑合并模 块。本文还阐述了该逻辑合并模块的各代表性应 用。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2013.12.16 (86)PCT国际申请的申请数据 PCT/US2012/042105 2012.06.13 (87)PCT国际申请的公布数据 WO2012/174023 EN 2012.12.20 (51)Int.Cl. 权利要求书 2 页 说明书 16 页 附图 15 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书16页 附图15页 (10)申请公布号 CN 103。
3、620584 A CN 103620584 A 1/2 页 2 1. 一种由物理和有形计算功能实现的用于合并数据流的方法, 包括 : 从相应源接收多个物理上分支的输入流 ; 以及 使用逻辑合并单元来产生与这些输入流中的每一个在逻辑上兼容的输出流。 2. 如权利要求 1 所述的方法, 其特征在于, 还包括对于每一输入流中的每一元素 : 评估所述元素的类型 ; 确定响应于所述元素要采取的输出动作, 所述输出动作选自以下各项 : 不对所述输出流提供贡献 ; 向所述输出流提供新输出信息 ; 调整所述输出流中的先前输出信息 ; 以及 向所述输出流提供进展标记信息 ; 以及 调整与所述逻辑合并模块相关联的。
4、状态。 3. 如权利要求 2 所述的方法, 其特征在于, 所述逻辑合并模块应用从多个算法中选择 的一个算法以执行所述确定和所述调整, 其中所述多个算法与关联于所述多个输入流的约 束的各不同的相应水平相关联。 4. 如权利要求所述的方法, 其特征在于, 所述输入流源自多个相应单元, 其中所述单元 实现相同的连续查询。 5. 如权利要求 4 所述的方法, 其特征在于, 所述多个相应单元使用不同的相应查询计 划来执行所述连续查询。 6. 如权利要求 4 所述的方法, 其特征在于, 还包括向所述多个单元中的至少一个发送 反馈信息, 以使得所述多个单元中的该至少一个能够推进其操作。 7. 如权利要求 1。
5、 所述的方法, 其特征在于, 所述输出流由所述逻辑合并模块通过从在 任何给定时间的至少一个非失败的输入流中进行选择来产生, 以提供高可用性。 8. 如权利要求 1 所述的方法, 其特征在于, 所述输出流由所述逻辑合并模块通过从在 任何给定时间的至少一个及时的输入流中进行选择来产生, 以提供快可用性。 9. 一种由物理和有形计算功能实现的用于处理流的逻辑合并模块, 包括 : 元素解析模块, 用于解析多个物理上分支的输入流中的元素 ; 元素类型确定模块, 用于评估由所述元素解析模块所标识的每一元素的类型 ; 元素处理模块, 用于确定响应于已标识的每一元素来采取的输出动作, 以产生输出流, 所述输出。
6、动作选自以下各项 : 不对所述输出流提供贡献 ; 向所述输出流提供新输出信息 ; 调整所述输出流中的先前输出信息 ; 以及 向所述输出流提供进展标记信息 ; 以及 状态管理模块, 用于调整与所述逻辑合并模块相关联的状态, 由所述元素处理模块所产生的所述输出流与所述多个输入流中的每一个在逻辑上兼 容。 10. 一种用于存储计算机可读指令的计算机可读介质, 所述计算机可读指令在由一个 或多个处理设备执行时提供一种逻辑合并模块, 所述计算机可读指令包括 : 用于从执行相同的连续查询的相应源接收多个物理上分支的输入流的逻辑 ; 以及 权 利 要 求 书 CN 103620584 A 2 2/2 页 3。
7、 用于使用逻辑合并运算符来产生具有与所述输入流中的每一个的时间数据库 (TDB) 表 示在逻辑上等价的时间数据库表示的输出流的逻辑。 权 利 要 求 书 CN 103620584 A 3 1/16 页 4 对物理上分支的流的高效逻辑合并 0001 背景 0002 数据处理模块 (诸如数据流管理系统) 可在各种场景中接收并处理冗余数据流。出 于在此阐明的原因, 数据处理模块在执行该任务时可能面临各种挑战。 0003 概述 0004 在此阐明了用于对物理上分支的数据流进行逻辑合并的功能。在一个实现中, 该 功能通过从任何相应源接收输入流来操作。 该功能随后使用逻辑合并模块来产生与这些输 入流中的每。
8、一个在逻辑上兼容的输出流。 0005 根据另一个说明性方面, 逻辑合并模块表示可被应用于实现数据流管理系统内的 连续查询的运算符。此外, 逻辑合并模块的一个或多个实例化可按任何方式与其他类型的 运算符组合。 0006 根据又一说明性方面, 该功能可提供用于处理不同的相应类型的输入场景的不同 算法。不同算法利用可在不同场景中应用于数据流的不同约束。 0007 根据又一说明性方面, 该功能可被应用在不同环境中以完成不同应用目标。 例如, 该功能可用于例如通过确保高可用性、 快可用性来改进输出流的可用性。该功能还可用于 例如通过提供查询跳转开始 (jumpstart) 、 查询切换 (cutover。
9、) 等来促进对数据流的引入 和移除。该功能还可向输出滞后数据流的源提供反馈信息, 从而使该源能够向逻辑合并模 块提供更及时的结果。 0008 上面的方法可以显现在各种类型的系统、 组件, 方法、 计算机可读介质、 数据结构、 产品等等中。 0009 提供本发明内容是为了以简化的形式介绍一些概念 ; 这些概念将在以下具体实施 方式中被进一步描述。本概述并不旨在标识所要求保护主题的关键特征或必要特征, 也不 旨在用于限制所要求保护主题的范围。 0010 附图简述 0011 图 1 示出用于使用逻辑合并模块来产生与物理分支输入流在逻辑上兼容的输出 流的说明性功能。 0012 图 2 示出图 1 的逻。
10、辑合并模块的一个应用的概览。 0013 图 3 示出图 1 的逻辑合并模块的另一应用的概览。 0014 图 4 示出流的物理表示。 0015 图 5 示出以时间数据库 (TDB) 实例形式的输入流的逻辑表示。 0016 图6示出其中使用图1的逻辑合并模块将两个物理上分支的输入流变换成逻辑上 兼容的输出流的示例。 0017 图 7 示出其中两个物理上分支的输入流被变换成三个替换输出流的示例 ; 这些输 出流具有不同的相应 “闲谈 (chattiness) ” 水平。 0018 图 8 是阐述图 1 的逻辑合并模块的操作的一种方式的概览的过程。 0019 图 9 示出了图 1 的逻辑合并模块的一种。
11、实现。 0020 图 10 是用于基于一组数据流的特征来选择算法 (供图 9 的逻辑合并模块使用) 的 说 明 书 CN 103620584 A 4 2/16 页 5 过程。 0021 图 11 是用于使用图 9 的逻辑合并模块来处理输入流内的元素的过程。 0022 图 12 示出可用于通过多个相应算法来维护状态信息的不同数据结构。 0023 图 13-16 示出用于使用图 9 的逻辑合并模块来处理输入流的不同算法。 0024 图 17 示出充当用于解释逻辑合并模块的各种应用的工具的、 结合了该逻辑合并 模块的功能。 0025 图 18 是阐述图 17 的逻辑合并模块的各种应用的过程。 002。
12、6 图 19 示出了可以被用来实现前面的附图中所示出的特征的任何方面的说明性计 算功能。 0027 贯穿本公开和附图使用相同的附图标记来引用相同的组件和特征。100 系列标号 指的是最初在图 1 中找到的特征, 200 系列标号指的是最初在图 2 中找到的特征, 300 系列 标号指的是最初在图 3 中找到的特征, 以此类推。 0028 详细描述 0029 本发明是按如下方式来组织的。 A部分了提供逻辑合并模块的概览, 逻辑合并模块 创建与两个或多个物理上分支的输入流在逻辑上兼容的输出流。B 部分描述了 A 部分的逻 辑合并模块的一个代表性实现。 该实现可采用从一套可能的上下文专用算法中选择的。
13、一个 算法。C 部分描述了 A 部分的逻辑合并模块的各代表性应用。并且 D 部分描述了可以被用 来实现 A-C 部分所描述的特征的任何方面的说明性计算功能。 0030 作为正文前的图文, 一些附图是在一个或多个结构组件 (不同地称为功能、 模块、 特征、 元件等等) 的上下文中来描述概念的。图中示出的各种组件可以任何方式由任何物理 和有形机制来实现, 例如由软件、 硬件 (如芯片实现的逻辑功能) 、 固件等, 和/或它们的任何 组合来实现。在一种情况下, 附图中所示出的将各种组件分离为不同的单元可以反映在实 际实现中使用对应的不同的物理和有形的组件。 可另选地, 或者另外, 附图中所示出的任何。
14、 单个组件都可以通过多个实际物理组件来实现。另选地或另外地, 附图中的任何两个或更 多分开组件的描绘可以反映单个实际物理组件所执行的不同功能。进而要讨论的图 19 提 供了关于附图中示出的功能的一个说明性物理实现的附加细节。 0031 其他附图以流程图形式描述了概念。以此形式, 某些操作被描述为构成以某一顺 序执行的不同的框。这样的实现是说明性的而非限制性的。此处描述的某些框可被分组在 一起并在单个操作中执行, 某些框可被分成多个组件框, 并且某些框可以按与此处所示出 的不同的次序来执行 (包括以并行方式执行这些框) 。流程图中示出的框可以任何方式由任 何物理和有形机制来实现, 例如由软件、 。
15、硬件 (如芯片实现的逻辑功能) 、 固件等, 和/或它们 的任何组合来实现。 0032 至于术语, 短语 “被配置成” 包含任何类型的物理和有形的功能可以被构建来执行 已标识的操作的任何方式。功能可以被配置成使用例如软件、 硬件 (例如, 芯片实现的逻辑 功能) 、 固件等, 和 / 或其任何组合来执行操作。 0033 术语 “逻辑” 包含用于执行任务的任何物理和有形的功能。例如, 流程图中示出的 每一个操作都对应于用于执行该操作的逻辑组件。操作可以使用例如软件、 硬件 (例如, 芯 片实现的逻辑功能) 、 固件等, 和 / 或其任何组合来执行操作。在由计算系统实现时, 逻辑组 件表示作为计算。
16、系统的物理部分的、 无论如何实现的电子组件。 说 明 书 CN 103620584 A 5 3/16 页 6 0034 下列的说明可以将一个或多个特征标识为 “可选” 。 这种类型的陈述不应该被解释 为可以被视为可选的特征的穷尽的指示 ; 也就是说, 其他特征也可以被视为可选, 虽然在文 本中没有明确地标识。最后, 术语 “示例性” 或 “说明性” 指的是可能多个实现中的一个实 现。 0035 A. 逻辑合并模块的概览 0036 图1示出用于使用逻辑合并模块102来创建与物理上分支的流在逻辑上兼容的输 出流的功能 100 的概览 (其中以下解释将参考图 4 和 5 来阐明 “物理” 和 “逻辑。
17、” 的概念) 。 更具体地, 逻辑合并模块 102 从多个相应物理源接收两个或更多数字输入流。这些输入流 在语义上传达相同信息, 但 (出于下面阐述的原因) 可按不同物理方式来表达该信息。逻辑 合并模块 102 动态地生成在逻辑上表示物理上分支的输入流中的每一个的输出流。换言 之, 该输出流提供一种统一方法以同这些输入流中的每一个兼容的方式来表达这些输入流 的逻辑本质。任何类型的一个或多个消费实体可利用该输出流。 0037 任何实现环境 104 可使用逻辑合并模块 102。在此处最突出表征的示例中, 实现 环境 104 对应于数据流管理系统 (DSMS 系统) 。DSMS 系统可应用逻辑合并模。
18、块 102 作为连 续查询中的至少一个组件。 (作为背景, 连续查询是指数据库查询中的流传输对应物。代替 对静态数据库的内容执行单个调查, 连续查询在延长的时间段上操作以将一个或多个输入 流动态地变换成一个或多个输出流。 ) 更具体地, DSMS 系统可将逻辑合并模块 102 作为原语 运算符来对待。此外, DSMS 系统可应用逻辑合并模块 102 本身, 或与任何其他运算符组合。 然而, 将逻辑合并模块 102 应用于 DSMS 环境是代表性的而非限制 ; 其他环境可利用逻辑合 并模块 102, 诸如各种信号处理环境、 纠错环境等。 0038 图 2 示出逻辑合并模块 202 的一个应用的概。
19、览。在这种情况下, 多个单元 (M1,M2,.Mn) 将多个相应输入流馈送到逻辑合并模块 202。例如, 单元 (M1,M2,.Mn) 可表 示向逻辑合并模块 202 提供测量数据 (诸如而非限制, CPU 和 / 或存储器利用测量数据、 科 学测量数据等) 的计算机器 (或单个机器上的各线程、 或虚拟机实例等) 。在另一种情况下, 单元 (M1,M2,.Mn) 可表示有可能使用不同的相应查询计划来实现相同查询的不同计算机 器 (或线程、 或虚拟机实例等) 。单元 (M1,M2,.Mn) 相对于逻辑合并模块 202 可以是本地的 或远程的。如果是远程的, 则一个或多个网络 (未示出) 可将单元。
20、 (M1,M2,.Mn) 耦合到逻辑 合并模块 202。 0039 逻辑合并模块 202 可生成与这些输入流中的每一个在逻辑上兼容的输出流。逻辑 合并模块 202 可执行该功能以满足一个或多个目标, 诸如以提供高可用性、 快可用性、 查询 优化等等。C 部分提供与逻辑合并模块 202 的代表性应用有关的额外信息。 0040 图 3 示出一种可将逻辑合并模块 302 与其他运算符进行组合以在 DSMS 系统中实 现连续查询的方式的概览。这些运算符可表示其他类型的运算符原语, 包括执行聚集函数 的聚集运算符, 执行过滤函数的选择器运算符, 执行排序操作的排序运算符, 执行对两个或 更多数据流的物理。
21、并集的并集运算符等等。作为补充或替换, 逻辑合并模块 302 可与其他 逻辑合并模块组合。 0041 例如, 在一种情况下, 馈送到逻辑合并模块 302 的这些输入流可表示由一个或多 个其他运算符 304 所生成的输出流。作为补充或替换, 由逻辑合并模块 302 所生成的输出 流可被馈送到一个或多个其他运算符 306。 说 明 书 CN 103620584 A 6 4/16 页 7 0042 图4示出可被馈送到图1的逻辑合并模块102的流、 或可由逻辑合并模块102输出 的流的一种表示。 这个或这些流包括一系列元素 (e1,e2,.) 。 这些元素可提供有效载荷信 息, 连同管控从输入流所提取。
22、的信息被传播到输出流的方式的指令 (下面将详细阐述) 。输 入流的前缀 S(i) 表示输入流的一部分, 例如, S(i)=e1,e2,.ei。 0043 输入流的物理描述提供了其构成元素的字面记录以及这些构成元素的排列。 两个 或更多输入流可在语义上传达相同的信息, 但可具有不同的物理表示。不同的因素可对这 样的差别作出贡献, 下面概述这些因素中的某些。 0044 对流中的无序有贡献的因素。 源可经由网络或其他传输介质将它的遭受拥塞或其 他传输延迟的数据流发送到逻辑合并模块102。 这些延时可导致输入流中的元素变得无序。 作为替换或补充, 供应输入流的 “上游 (upstream) ” 处理模。
23、块 (诸如, 并运算符) 可导致输入 流的元素变得无序。一般而言, 一个输入流变得无序的方式可与另一输入流变得无序的方 式不同, 因此在原本在逻辑上等价的输入流中引入了物理差别。 0045 修订版。作为替换或补充, 源可在传输其数据流的过程中修改其数据流。例如, 源 可检测到破坏输入流的一部分的噪声。作为响应, 该源可发出设法供应输入流中已被破坏 的该部分的纠正版本的后续元素。 一个源发出这样的修订版的方式可不同于另一源执行该 功能的方式, 从而导致原本在逻辑上等价的流中的物理差别。 0046 作为替换或补充, 源可因推送出不完整信息的故意策略而修订其数据流。 例如, 源 可与执行操作系统进程。
24、的计算机器相对应。 该进程具有描述该进程操作的时间跨度的生存 期。 为了不招致等待时间, 该源可发送传达该进程的开始时间而非结束时间的初始元素 (因 为最初可能不知道该结束时间) 。一旦结束时间变得已知, 该源就可发送供应该缺失的结束 时间的元素。一个源所采用的修订策略可不同于另一源的修订策略, 从而导致原本在逻辑 上等价的流中的差别。 0047 在另一示例中, 两个不同的源可按不同的相应方式来执行聚集操作。 例如, 保守聚 集运算符可在发送最终计数值之前等待整个计数过程终止。然而, 更激进的聚集运算符可 在计数操作过程中发送一个或多个中间计数值。最后结果是相同的 (反映最终计数) , 但这 。
25、两个源所产生的流在物理上却是不同的 (第二个流比第一个流更为 “爱闲谈” ) 。 0048 不同的查询计划。作为替换或补充, 两个不同的源可使用不同的查询计划来执行 语义上等价的处理功能。这两个源产生在逻辑上表示相同输出、 但可能以不同方式的输出 流。例如, 第一源可通过将数据流 A 与数据流 B 组合且随后将所得中间结果与数据流 C 组 合来执行三路联结。第二源可首先将数据流 B 与数据流 C 组合, 且随后将所得中间结果与 数据流 A 组合。由于这些源使用不同的处理策略, 因此第一源发出的流在物理上可不同于 第二源发出的流。 0049 不同的计算资源。作为补充或替换, 两个不同的源可在不同。
26、的计算机器上执行相 同的查询。 在任何给定时间, 第一计算机器可服从与第二计算机器相比不同的资源需求, 从 而可能导致两个计算机器输出物理上不同的流。 或者两个不同的源可只是具有不同的处理 能力 (例如, 不同的处理和 / 或存储器能力) , 从而导致产生物理上不同的流。非确定性的其 他源 (诸如输入数据的不可预测到达) 可导致输出物理上不同的输出流。 0050 上述描述的因素是作为示例而非限制被引述的。 还有其他因素可对不同输入流之 间的物理差别作出贡献。 说 明 书 CN 103620584 A 7 5/16 页 8 0051 输入流 (或输出流) 可包括与不同类型的构成元素相关联的不同类。
27、型的指令。在 一个说明性环境中, 流包括插入元素、 调整元素、 以及稳定元素。插入 (insert) 元素, 即 insert(p,Vs,Ve) 用生存期为 interval(Vs,Ve) 的有效载荷 (payload) p 将事件 (event) 添 加到输出流。如所述的, 可以让 Ve成为开放式 (例如, + ) 。出于简洁, 在下文插入元素有 时将被称为 insert()。 0052 调整 (adjust) 元素, 即 adjust(p,Vs,Vold,Ve), 将先前发出的事件 (p,Vs,Vold) 改变 成 (p,Vs,Ve)。如果 Ve=Vs, 则 event(p,Vs,Vold。
28、) 将被移除 (例如, 被取消) 。例如, 元素序列 in sert(A,6,20)adjust(A,6,20,30)adjust(A,6,30,25)等于单个元素insert(A,6,25)。 出于简洁, 在下文调整元素有时将被称为 adjust()。 0053 稳定 (stable)元素, 即 stable(Vc), 使发生在时间 Vc之前的输出流的一部分固 定。这意味着未来不存在具有 Vs Vc的 insert(p,Vs,Ve) 元素, 也不存在具有 Vold Vc 或 Ve Vc的调整元素。换言之, stable(Vc) 元素可被看作使输出流的特定部分 “冻结” 。 event(p,V。
29、s,Vc) 在 Vs Vc Ve的情况下被半冻结 (HF)且在 Ve Vc的情况下被全冻结 (FF) 。如果 (p,Vs,Ve) 被全冻结, 则未来的 adjust() 元素不能更改它, 且因此该事件将出现 在输出流的所有未来版本中。 任何既没有被半冻结也没有被全冻结的输出流事件被称为未 冻结 (UF) 。出于简洁, 在下文稳定元素有时将被称为 stable()。 0054 物理流 (例如, 输入流或输出流) 的逻辑表示代表了该流的逻辑本质。更具体地, 每 一物理流 (以及物理流的每一前缀) 与捕捉该物理流本质的逻辑时间数据库 (TDB) 实例相对 应。TDB 实例包括一袋事件, 这样的事件不。
30、具有事件顺序。在一个实现中, 每一事件进而包 括有效载荷以及有效性时间间隔。payload(p) 与传达数据 (诸如测量数据等) 的关系元组 相对应。有效性时间间隔表示事件活跃并且对输出作出贡献的时间段。更正式地说, 有效 性时间间隔相对于开始时间(Vs)和结束时间(Ve)来定义, 其中结束时间可以是特定有限时 间或开放式参数 (例如, + ) 。开始时间还可被认为是事件的时间戳。 0055 映射函数将流中的元素转换成 TDB 实例的各实例 (例如, 事件) 。即, 映射函数 tdb(S,i) 产生与流前缀 Si 对应的 TDB 实例。例如, 图 5 示出物理流到 TDB 实例的这一映 射的示。
31、例。即, 第一物理流 (输入 1) 提供第一时间序列的元素, 而第二物理流 (输入 2) 提供 第二时间序列的事件。“a” 元素, 即a(value,start,end)是上述insert()元素的简写符号。 也就是说,“a” 元素添加具有 value(值) 为有效载荷且从持续时间从 start(开始) 到 end (结束) 的新事件 “m” 元素, 即 m(value,start,newEnd), 是上述 adjust() 元素的简写符号。 也就是说,“m” 元素修改具有给定 value 和 start 的现有事件使其具有新的 end 时间。 “f” 元素, 即 f(time), 是上述 s。
32、table() 元素的简写符号。也就是说,“f” 元素最终确定其当前 end 早于 time(时间) 的每个事件 (例如, 冻结而不得进一步修改) 。如可以看到的, 第一物 理流和第二物理流在物理上是不同的, 因为它们具有不同系列的元素。但这两个输入流实 现相同的目标, 且由此在语义上 (逻辑上) 是等价的。图 5 的右面部分示出了在逻辑上描述 输入流两者的双事件 TDB 实例。例如, TDB 实例中的第一事件指示对于从时间实例 6 运行 到时间实例 12 的有效性时间间隔, 存在有效载荷 A(或有效载荷 A 对流作出贡献) , 这是与 物理流两者中这些系列的元素兼容的逻辑结论。随着新物理元素。
33、到达, 对应的逻辑 TDB 可 相应地演化 (例如, 每次元素被添加时转变成不同的一袋事件) 。注意, 任何两个物理流的前 缀可能不总是逻辑等价的, 但它们是兼容的, 因为它们在将来仍可变得等价。 说 明 书 CN 103620584 A 8 6/16 页 9 0056 给定上述对 “物理” 和 “逻辑” 概念的阐述, 现在可更准确地表达逻辑合并模块 102 的操作和属性。逻辑合并模块 102 将物理输入流看作在逻辑上等价, 这意味着这些流具有 最终会是相同的逻辑 TDB 表示。逻辑合并模块 102 产生逻辑上等价于其输入流的输出流, 意味着输出流具有最终将与输入流的 TDB 表示相同的 TD。
34、B 表示。 0057 更正式地说, 流前缀 I1k1,.,Inkn 在存在有限序列 Ei和 Fi, 1 i n 的情况下被认为是相互一致的, 使得 E1: I1kl:F1 . Ei: Iiki : Fi . En: Inkn : Fn(其中标记 A:B 表示 A 和 B 的拼接) 。输入流在 I1,.,In 在其所有有限前缀 相互一致的情况下是相互一致的。在对于输入前缀的扩展 Ik:E, 存在与其等价的输出序 列的扩展 Oj:F 的情况下, 输出流前缀 Oj 被认为与输入流前缀 Ik 兼容。在对于使 I1k1:E1,.,Inkn:En等价的任一组扩展 E1,.,En, 存在等价于它们全部的输出。
35、序列扩 展 Oj:F 的情况下, 流前缀 Oj 与该组相互一致的输入流前缀 I=I1k1,.,Inkn 兼 容。 0058 图 6 示出图 1 的逻辑合并模块 102 的操作的示例。在这种情况下, 两个输入流 (输 入 1 和输入 2) 可被映射到第一输出流 (输出 1) , 或第二输出流 (输出 2) , 或第三输出流 (输 出 3) 。这些输出流是在逻辑上都与两个输入流等价的物理流 (意味着它们具有与输入流相 同的 TDB) 。但输出流按不同的物理方式产生该等价性。更具体的, 第一输出流 (输出 1) 表 示聚集输出策略, 因为它传播它遇到的来自输入流的每一改变。第二输出流 (输出 2) 。
36、表示 保守策略, 因为它延迟输出元素直到它接收到元素是最终的保证。 因此, 第二输出流比第一 输出流产生更少的元素, 但第二输出流在比第一输出流稍后时间产生这些元素。第三输出 流 (输出 3) 表示第一输出流和第二输出流之间的中间策略。即, 第三输出流输出它遇到的 具有给定有效载荷和 start 的第一元素, 但保存任何修改, 直到确认它们是最终的。 0059 环境所采用的特定策略可表示竞争性考虑事项之间的折衷。例如, 环境可能希望 通过报告较少的改变来扼制输出流的 “闲谈性” 。 但该决策可增加环境向其消费者提供结果 的等待时间。 0060 图 7 示出图 2 的逻辑合并模块 102 的操作。
37、的另一示例。在这种情况下, 逻辑合并 模块102将两个输入流 (输入1、 输入2) 映射到三个可能的输出流, 其中在该情况下, 输入和 输出流两者都由它们的 TDB 来描述。对于 TDB 中的每一个,“last(最后) ” 在该示例中是指 在 stable(V) 元素中已遇到的最新的值 V。最右边的列表示每一元素的冻结状态, 例如, UF 表示未冻结、 HF 表示半冻结、 以及 FF 表示全冻结。 0061 第一输出流 (输出 1) 和第二输出流 (输出 2) 两者都被认为在逻辑上与两个输入流 兼容。 更具体地, 第一输出流表示应用仅输出必将出现在输出中的信息的保守传播策略。 由 此, 调整第。
38、一输出流的结束时间是将是适当的。 第二输出流表示应用更激进的策略, 因为它 包含与已被看到的所有输入事件对应的事件, 即使那些事件未被冻结。 由此, 第二输出流将 需要发出之后的元素, 以完全移除输出流中的某些事件。 0062 作为对比, 第三输出流与两个输入流不兼容, 出于两个原因。第一, 尽管事件 (A,2,12) 与第二输入流中的事件匹配, 但它与第一输入流 (指定结束时间将不少于 14) 的 内容相矛盾。 因为该事件在第三输出流中被全冻结, 所以不存在可纠正它的后续流元素。 第 二, 该第三输出流缺少事件 (B,3,10), 该事件 (B,3,10) 在输入流中被全冻结, 但考虑到其 。
39、稳定点而不能被添加到第三输出流中。 说 明 书 CN 103620584 A 9 7/16 页 10 0063 因此, 图 7 概括地突出了逻辑合并模块 102 面临的挑战之一。逻辑合并模块 102 的任务是确保在任何给点时间点, 输出流能够跟上未来对输入流的添加。实现这一目标的 方式将取决于多个考虑事项, 包括, 例如输入流内正被使用的元素的类型、 施加于输入流的 其他约束 (如果有的话) , 等等。 0064 图 8 示出了概述逻辑合并模块 102 的上述操作的过程 900。在框 902, 逻辑合并模 块 102 从任何相应的源接收多个物理上分支的输入流。如上面解释的, 这些源可与供应原 。
40、始数据 (诸如原始测量数据) 的实体相对应。作为替换或补充, 这些源可与执行处理并提供 所得输出流的一个或多个运算符相对应。 在框904, 逻辑合并模块产生与这些输入流中的每 一个在逻辑上兼容的输出流。如上所示, 这意味着输出流具有最终将与输入流的 TDB 表示 相同的 TDB 表示。 0065 B. 逻辑合并模块的说明性实现 0066 图 9 示出了图 1 的逻辑合并模块 102 的一种实现。图 9 中示出的逻辑合并模块 102 实现从一套可能算法中选择的一个算法。每一算法进而被配置成处理服从一类约束的 输入流集合。以此, 这一部分将以描述可影响数据流集合的说明性约束类而开始。在一种 情况下。
41、, 假设输入流集合中所有成员都服从同类约束。 然而, 其他实现可将该特性放松到不 同程度。 0067 在第一种情况下 (情况R0) , 输入流仅包含insert()和stable()元素。 换言之, 输 入流缺乏修改输入流中的先前元素的能力。此外, 这些元素中的 Vs时间是严格递增的。因 此, 流展示确定性顺序, 而没有重复时间戳。可以得到与服从 R0 型约束有关的流的多个简 化假设。 例如, 一旦时间进展到点t, 逻辑合并模块102就可安全地假设它已看到具有Vst 的所有有效载荷。 0068 在第二种情况下 (情况R1) , 输入流同样仅包含insert()和stable()元素。 此外, 。
42、Vs时间是非递减的。此外, 现在可存在具有相等 Vs时间的多个元素, 但具有相等 Vs时间的 元素间的顺序是确定性的。 例如, 具有相等Vs时间的这些元素可基于有效载荷p内的ID信 息来排序。 0069 在第三种情况下 (情况R2) , 输入流同样仅包含insert()和stable()元素。 然而, 在该情况下, 具有相等 Vs时间的这些元素的顺序可跨输入流而不同。此外, 对于任何流前 缀 Si, 有效载荷 (p) 和 Vs时间的组合形成了用于在输出流的 TDB 表示中定位对应事件的 键。更正式地说, 组合 (p,Vs) 形成了 tdb(S,i) 的键。例如, 这样的属性可能在 p 包括 I。
43、D 信 息和读数 (其中没有源在每时间段提供不止一个读数) 的情况下出现。如下面将描述的, 这 一约束促进跨输入流来匹配对应事件。 0070 在第四种情况下 (情况 R3) , 输入流现在可包括所有类型的元素, 包括 adjust() 元 素。此外, 该情况除了针对 stable() 元素以外对元素的顺序不施加约束。类似于情况 R2, 对于任何流前缀 Si,, 组合 (p,Vs) 形成用于定位输出流中的对应元素的键。更正式地说, 组合 (p,Vs) 形成了 tdb(S,i) 的键。 0071 在第五种情况下 (情况R4) , 输入流可拥有第四种情况中的所有自由。 另外, 在该情 况下, TDB。
44、 是多重集合的, 这意味着可存在具有相同有效载荷和生存期的不止一个事件。 0072 这些流类是代表性的, 而非限制性的。 取决于输入流的性质, 其他环境可按不同方 式对各组输入流的属性进行分类。 说 明 书 CN 103620584 A 10 8/16 页 11 0073 情况确定模块 902 表示以确定可对输入流集合施加什么约束为目标, 分析该输入 流集合并且确定其特性的功能。情况确定模块 902 可按不同方式来作出这一确定。在一种 情况下, 情况确定模块 902 依赖于对使用逻辑合并模块 102 的处理环境的初步分析 (例如, 通过检查生成输入流的功能的特性) 期间所提取的信息。这一初步分。
45、析可在编译时或在任 何其他初步时刻执行。例如, 考虑第一示例, 其中处理环境包括接受无序输入流、 缓冲这些 流、 并且将按时间排序的流输出到逻辑合并模块 102 的重排序或净化运算符。情况确定模 块 902 可假设输入流在该情形中包括按时间排序的 Vs时间 (例如, 由于存在上述类型的重 排序或净化运算符) 。情况 R0 适用于这些输入流。 0074 在另一种情况下, 处理环境可采用向逻辑合并模块 102 输出具有重复时间戳的元 素的多值运算符, 其中那些元素按确定性方式来排列 (例如, 基于传感器 ID 信息等) 。情况 R1 适用于这些输入流。在另一种情况下, 处理环境可采用向逻辑合并模块。
46、 102 输出具有重 复时间戳的运算符, 但那些元素不具有确定性顺序。情况 R2 适用于这些输入流。 0075 作为补充或替换, 情况确定模块 902 可执行对输入流集合的特性的运行时分析。 作为替换或补充, 供应输入流的源可使用揭示输入流特性的信息来对输入流进行注释。例 如, 每一输入流可发布指示该流是否有序、 是否具有 adjust() 元素、 是否具有重复时间戳 等信息。 0076 基于对应用情况 (R0、 R1 等) 的确定, 逻辑合并模块 102 可选择对应算法来处理输 入流集合。即, 对于情况 R0, 逻辑合并模块 102 选择 R0 算法 ; 对于情况 R1, 逻辑合并模块 10。
47、2 选择 R1 算法, 且以此类推。选择上下文专用算法来处理一组受约束的输入流可能有利 于改进逻辑合并模块 102 的性能, 诸如一算法可利用与该应用情况相关联的内置假设。或 者, 逻辑合并模块 102 可采用保守方式并且使用更通用的算法 (诸如针对情况 R3 的算法) 来 处理具有变化约束水平的输入流集合 (例如, 服从 R0、 R1、 R2 或 R3 的约束的各组输入流) 。 0077 逻辑合并模块 102 本身可包括 (或可被概念化成包括) 执行相应功能的模块的集 合。开始, 元素解析模块 904 标识输入流内的各单独的元素。逻辑合并模块 102 随后在元 素被接收到时, 对输入流中的每。
48、一元素执行逐元素处理。逻辑合并模块 102 还可并行处理 各组元素以加速处理。 0078 元素类型确定模块 906 标识每一元素的类型。在一个说明性实现中, 一种元素类 型是上述 insert() 元素 ; 该元素例如通过在时间戳 Vs处开始新有效性时间间隔来提供传 播新输出信息的指令。 另一种元素类型是上述adjust()元素 ; 该元素例如通过供应在先元 素的新Ve来调整由在先元素赋予的信息。 另一种元素类型是上述stable()元素 ; 该元素提 供进展标记信息, 该进展标记信息标记在此之前不能 (例如使用 insert() 元素或 adjust() 元素) 对输出流作出进一步改变的时间。
49、。 0079 元素处理模块 908 为每一元素确定是否将事件传播到输出流。例如, 对于 insert() 元素, 元素处理模块 908 可确定将插入事件添加到输出流是否适当。对于 adjust() 元素, 元素处理模块 908 可确定将调整元素添加到输出流是否适当。并且对于 stable() 元素, 元素处理模块 908 可确定将稳定元素添加到输出流是否适当。此外, 对于 某些算法, 输入流中出现的特定元素可提示元素处理模块 908 对输出流作出其他调整。例 如, 对于 R3 和 R4 算法的情况 (下面将描述) , 在接收到输入流中的 stable() 元素后, 元素处 理模块 908 在特定情形中可将调整元素传播到输出流 ; 该操作被执行以确保输入流和输出 说 明 书 CN 103620584 A 11 9/16 页 12 流之间。