CN110168519A - 减少数据流应用程序中的流延迟 - Google Patents

减少数据流应用程序中的流延迟 Download PDF

Info

Publication number
CN110168519A
CN110168519A CN201780082576.9A CN201780082576A CN110168519A CN 110168519 A CN110168519 A CN 110168519A CN 201780082576 A CN201780082576 A CN 201780082576A CN 110168519 A CN110168519 A CN 110168519A
Authority
CN
China
Prior art keywords
data
tuple
lookup
streaming application
events
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780082576.9A
Other languages
English (en)
Other versions
CN110168519B (zh
Inventor
M·布兰森
J·桑托索索
E·L·巴斯尼斯
D·贝赫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN110168519A publication Critical patent/CN110168519A/zh
Application granted granted Critical
Publication of CN110168519B publication Critical patent/CN110168519B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

表征数据流应用程序的概要数据用于预测在数据流应用程序执行期间需要由处理元件检索的数据。响应于该预测,在需要它的处理元件的实际需求之前检索数据。预测可以至少部分地基于上游元组内容,并且可以包括其他历史数据检索模式。在一些实施例中,可以延迟预测数据的检索,以便及时检索数据。

Description

减少数据流应用程序中的流延迟
技术领域
本公开一般涉及流计算,并且具体地,涉及接收流数据并在接收到数据时处理数据的计算应用。
背景技术
在二十世纪下半页,开始出现一种被称为信息革命的现象。虽然信息革命是一个比任何一个事件或机器更广泛的历史发展,但没有任何一个设备比数字电子计算机更能代表信息革命。计算机系统的发展无疑是一场革命。每年,计算机系统增长更快,存储更多数据,并为用户提供更多应用程序。
现代计算机系统可用于支持各种应用,但一种常见用途是维护大型关系数据库,从中可获得信息。多个用户通常可以通过网络访问大型关系数据库,其中任何一个用户都可以向数据库查询信息,和/或更新数据库中的数据。
数据库系统通常被配置为将存储数据的过程,与访问、操纵或使用存储在数据库中的数据的过程分开。更具体地说,数据库系统使用一种模型,在该模型中,在随后的查询和分析之前,首先在存储器中存储和索引数据。通常,数据库系统可能不适合于执行实时处理和分析流数据。特别是,数据库系统可能无法有效地或实时地存储、索引和分析大量的流数据。
基于流的计算(也称为数据流)已被用于更有效地实时处理大量输入数据。在数据流应用程序中,数据通过称为“图”的“处理元件”的连接网络来移动,每个处理元件执行关于数据的一些功能。
基于流的计算在范例上工作,其中所有数据在通过操作符图移动时是活动的。根据该范例,图中的每个处理元件具有执行其手头功能所需的所有数据,并且可以足够快地这样做以维持通过图的高速数据流。然而,处理元件有时需要从外部访问数据,即,在存储器或远程数据库中,有时称为查找操作的事件。发生这种情况时,在检索必要数据时处理元件必须等待。这种等待可能会严重降低流应用程序的性能。通常,等待通过操作符图具有连锁效应,导致其他处理元件不必要地等待数据和/或数据在流应用程序的各种缓冲区中备份。
存在对用于管理大数据流的改进技术的需求,尤其是对于管理数据查找操作的改进数据流技术的需求。
发明内容
在数据流应用程序的当前和/或一个或多个先前执行实例期间从一个或多个先前时间间隔收集的概要数据用于预测在数据流应用程序的当前执行实例中将需要由处理元件检索的数据。响应于预测,在需要它的处理元件的实际需求之前检索数据。
在一个或多个实施例中,预测至少部分地基于上游元组内容。即,在主题处理元件上游的数据流图中遇到的元组内的特定值集合可以用于预测主题处理元件稍后对某些数据的需求,例如,当元组到达主题处理元件时。在一个或多个实施例中,预测至少部分地基于数据流应用程序的历史数据检索模式。这种历史模式可以包括以下的任何一个或全部:(a)通常检索数据元件的时间/周;(b)特定事件发生后的时间;(c)存在某些条件;或(d)与其他数据检索的相关性。在一个或多个实施例中,对所需数据的预测可以包括需要数据的预测时间,并且可以延迟被预测为需要的数据的检索,以便及时检索数据。
所需数据的预测不一定是完美的。如果预测为需要的数据实际上不需要,则数据流应用程序将继续正常执行,并且唯一的成本是检索未使用数据的小开销。如果实际上需要的数据但未被预测,则将根据现有技术中的处理元件的要求来检索数据。通过预测数据流应用程序中的一个或多个处理元件所需的至少一些数据,并且在数据的处理元件对数据的需求之前将数据检索到处理元件中,减少了处理元件的空闲或等待数据,提高了数据流应用程序的执行效率。
本发明的实施例,关于其结构和操作,可以参考附图最佳地理解,其中相同的附图标记表示相同的部分,并且其中:
附图说明
图1示出了根据各种实施例的被配置为执行流计算应用的计算基础设施;
图2是根据各种实施例的代表性通用计算机系统的主要硬件组件的高级框图,其可用于执行若干功能元件中的任何功能元件的角色;
图3是根据各种实施例的图1的计算节点的存储器中的某些软件组件的概念图示;
图4是根据各种实施例的流数据应用缓冲器中的一组元组的概念表示;
图5是根据各种实施例的图1的管理系统的存储器中的某些软件组件的概念图示;
图6是根据各种实施例的图1的编译器系统的存储器中的某些软件组件的概念图示;
图7示出了根据各种实施例的流计算应用的操作符图;
图8是根据各种实施例的数据库服务器计算机系统的存储器中的主要软件组件的概念图示;
图9是根据各种实施例的被改变以支持简档分析的数据流应用程序的改变元组的概念表示;
图10是根据各种实施例的在高级别示出收集数据流应用程序的简档数据的过程的流程图;
图11是根据各种实施例的示例性查找事件概要记录集的结构的概念图示;
图12是根据各种实施例的在高级别示出分析简档数据以产生一组查找事件概要记录的过程的流程图;
图13是根据各种实施例的在高级别示出生成或更新管理执行期间的查找操作的状态数据结构的过程的流程图;
图14是示出根据各种实施例的数据流应用程序的示例性处理元件的执行过程的流程图。
具体实施方式
流处理概述
基于流的计算和基于流的数据库计算正在成为数据库系统的开发技术。提供的产品允许用户创建在流数据到达数据库文件之前处理和查询流数据的应用程序。利用这种新兴技术,用户可以指定处理逻辑,以便在“飞行中”时应用于入站数据记录,结果可在非常短的时间内获得,通常只需几分之一秒。使用这种类型的处理构建应用程序开辟了一种新的编程范例,其会允许开发各种创新的应用程序、系统和流程,并为应用程序编程人员和数据库开发人员带来新的挑战。
在流计算应用中,流操作符彼此连接,使得数据从一个流操作符流向下一个流操作符(例如,通过TCP/IP套接字)。当流操作符接收数据时,它可以执行操作,例如分析逻辑,其可以通过添加或减去属性来改变元组,或者更新元组内的现有属性的值。分析逻辑完成后,然后将新元组发送到下一个流操作符。通过创建可执行文件(即处理元件)以及在多个节点上复制处理元件并在它们之间进行负载平衡来跨节点分布应用程序,从而实现可伸缩性。流计算应用程序中的流操作符可以融合在一起以形成可执行的处理元件。这样做允许处理元件共享公共处理空间,导致流操作符之间的通信比现有的使用进程间通信技术(例如,使用TCP/IP套接字)通信快得多。此外,可以从表示通过流计算应用程序的数据流的操作符图动态地插入或移除处理元件。特定流操作符与其他流操作符可以驻留或可以不驻留在相同的操作系统进程内。另外,相同操作符图中的流操作符可以托管在不同节点上,例如,在不同计算节点上或在计算节点的不同核上。
数据以“元组”的形式从一个流操作符流向另一个流操作符。元组是与实体相关联的一个或多个属性的序列。属性可以是各种不同类型中的任何一种,例如整数、浮点数、布尔值、字符串等。可以对属性进行排序。除了与实体相关联的属性之外,元组还可以包括元数据,即关于元组的数据。可以通过向其添加一个或多个附加属性或元数据来扩展元组。如这里所使用的“流”或“数据流”指的是元组序列。通常,流可以被认为是元组的伪无限序列。
流操作符和处理元件接收并输出元组。然而,与流操作符或处理元件接收的与特定实体相对应的输入元组通常不被认为是由流操作符或处理元件输出的相同元组,即使输出元组与输入元组对应于相同的实体或数据也是如此。输出元组无需以某种方式从输入元组来更改。
尽管如此,输出元组可以由流操作符或处理元件以某种方式改变。可以添加、删除或修改属性或元数据。例如,元组通常具有两个或更多属性。流操作符或处理元件可以接收具有多个属性的元组,并输出与输入元组相对应的元组。流操作符或处理元件可以仅改变属性之一,使得输出元组的除了一个属性之外的所有属性与输入元组的属性相同。
通常,即使输入元组未被处理元件改变,流操作符或处理元件输出的特定元组也可以不被认为是与对应的输入元组相同的元组。然而,为了简化本说明书和权利要求,除非上下文或明确声明另有说明,否则具有相同数据属性或与对应的输入元组关联相同的实体的输出元组在本文中将被称为相同的元组。
流计算应用程序处理需要高效且实时处理的大量数据。例如,流计算应用程序可以每秒连续摄取和分析数十万条消息,每天分析高达数千兆字节的数据。因此,可能需要流计算应用程序中的每个流操作符在几分之一秒内处理所接收的元组。除非流操作符位于相同的处理元件中,否则每次从一个流操作符向另一个流操作符发送元组时,必须使用进程间通信路径。进程间通信路径可以是流计算应用程序中的关键资源。根据各种实施例,可以节省一个或多个进程间通信路径上的可用带宽。有效利用进程间通信带宽可以加速处理。
图1示出了根据一些实施例的可以被配置为执行流计算应用的一个示例性计算基础设施100。计算基础设施100包括管理系统105和两个或更多个计算节点110A-110D(这里统称为特征110)-即主机-其使用一个或多个通信网络120彼此通信地耦合。通信网络120可以包括一个或多个服务器、网络或数据库,并且可以使用特定的通信协议在计算节点110之间传输数据。编译器系统102可以直接或通过通信网络120与管理系统105和计算节点110通信地耦合。另外,包含数据库140的数据库系统115可以通信地耦合到网络120,以与管理系统105和/或计算节点110通信。
通信网络120可以包括各种类型的物理通信信道或“链路”。链路可以是有线的、无线的、光学的或任何其他合适的介质。另外,通信网络120可以包括用于执行路由、交换和其他功能的各种网络硬件和软件,例如路由器、交换机或网桥。通信网络120可以专用于流计算应用程序或与其他应用程序和用户共享。通信网络120可以是任何大小。例如,通信网络120可以包括单个局域网或跨越大地理区域的广域网,例如因特网。链路可以提供不同级别的带宽或容量以便以特定速率传输数据。特定链路提供的带宽可以根据各种因素而变化,包括通信介质的类型以及特定网络硬件或软件是否正常运行或满负荷运行。此外,如果链接与其他应用程序和用户共享,则特定链接提供给流计算应用程序的带宽可能会有所不同。可用带宽可能会有所不同,具体取决于其他应用程序和用户对链接的负载。特定链接提供的带宽也可以根据时间因素而变化,例如一天中的时间、一周中的某一天、一个月中的某天或季度。
计算机系统硬件组件
图2是代表性通用计算机系统200的主要硬件组件的高级框图。在一个或多个实施例中,编译器系统102、管理系统105、计算节点110和数据库系统115各自
物理地体现为相应的一个或多个通用计算机系统,系统200是任何这种通用计算机系统的表示。
计算机系统200包括一个或多个通用可编程处理器(CPU)201,其执行指令并处理来自主存储器202的数据。主存储器202优选地是包括至少一个,通常是多个半导体集成电路芯片模块的、使用各种存储器技术中的任何一种的易失性随机存取存储器,其中数据从存储器加载或以其他方式由CPU 201处理。
一个或多个通信总线205提供用于在CPU 201,主存储器202和各种接口单元211、212、213之间传输数据的数据通信路径,其也可以被称为I/O处理器(IOP)或I/O适配器(IOA)。接口单元支持与各种存储器、I/O设备和/或网络的通信。例如,
存储器接口单元211支持一个或多个存储设备221-223的连接,提供可以根据需要加载到存储器中的数据的非易失性存储。这样的存储设备可以包括众所周知的旋转磁性硬盘驱动器存储设备、固态设备(SSD)、可移动存储卡、光存储器、闪存等等,并且还可以包括网络附加存储(NAS)、附加设备经由存储区域网络(SAN)和/或磁盘驱动器阵列和/或其他被配置为作为主机的单个大型存储设备出现的存储设备。存储器还可以包括可通过一个或多个网络访问的云存储设备。I/O设备接口单元212可以支持各种其他类型的I/O设备中的任何一种的附接,例如用户终端、显示器、键盘或其他输入设备、打印机等,可以理解为可以使用其他类型或者额外类型的I/O设备。网络接口适配器213可以支持到一个或多个外部网络的连接以与一个或多个其他数字设备通信,并且具体地到网络120以与图1中表示的设备通信。网络适配器213可以支持到单个网络的冗余连接,或者可以耦合到可以此通信或不可以彼此通信的单独网络。这种外部网络优选地包括因特网,并且可以包括一个或多个中间网络,例如局域网,通过它们实现与因特网的通信。
应当理解,图2旨在以高级描绘通用计算机系统200的代表性主要组件,各个组件可具有比图2中所示更大的复杂性,除了或附加可以存在于图2中所示以外的组件。,这些组件的数量、类型和配置可以变化,并且复杂的计算机系统通常将具有比图2中所示的组件更多的组件。这种额外复杂性或其他变化的几个特定示例是在此公开的,应该理解,这些仅是示例性的,并不一定是唯一的这几种变化。
尽管在图2中出于说明性目的而仅示出了单个CPU 201,但如本领域中已知的计算机系统200可包含多个CPU。尽管主存储器202在图2中示为单个单片实体,但是如本领域中已知的存储器202实际上可以是分布式和/或分级的。例如,存储器可以存在于多级高速缓存中,并且这些高速缓存可以进一步按功能划分,使得一个高速缓存保持指令而另一个高速缓存保存由单个处理器或多个处理器使用的非指令数据。存储器可以进一步是分布式的并与不同的CPU或CPU组相关联,如在各种所谓的非均匀存储器访问(NUMA)计算机体系结构中的任何一种中已知的那样。尽管通信总线205在图2中示为单个实体,但是事实上,各种系统组件之间的通信通常通过总线、接口等的复杂层次来实现,其中高速路径用于CPU 201和存储器202之间的通信,并且低速路径用于与I/O接口单元211-213通信。总线205可以以各种形式中的任何一种来布置,例如分层、星形或网络配置、多个分层总线、并行和冗余路径等中的点对点链路。例如,如在
NUMA架构中已知的那样,通信路径以节点为基础排列。总线可以使用例如工业标准PCI总线或任何其他适当的总线技术。虽然示出了多个I/O接口单元,其将总线205与运行到各种I/O设备的各种通信路径分开,但是替代地可以将一些或所有I/O设备直接连接到一个或多个系统总线。尽管图1将网络120表示为单个实体,但是在一个或多个实施例中,可以存在用于与一个或多个共享存储服务器通信的单独的网络或存储总线,并且这种通信可以由独立于通用网络适配器213的专用的一个或多个存储接口单元211驱动。
图2中描绘的计算机系统200可以包括多个附接终端,例如可能是多用户“主机”
计算机系统的典型。在计算机系统200专门用作计算节点110或其他服务器以代表远程客户端执行工作的情况下,计算机系统200可以仅包含有限数量的终端,或者甚至包括单个终端,例如,用作系统管理员等维护接口,或者在某些情况下根本没有终端,远程执行管理功能。此外,尽管这里描述的某些功能是在单个计算机系统中体现的出于说明性目的而描述的,但是这些功能中的一些或全部可以替代地使用彼此通信的计算机系统的分布式网络来实现,其中在此描述的不同功能或步骤在不同的计算机系统上执行。
尽管计算节点110、管理系统105、编译器系统102和数据库系统115在图1-2中作为独立系统表示,这些实体中的任何一个或全部可以实现为一个或多个逻辑分区计算机系统的对应逻辑分区。例如,CPU 201中的任何一个实际上可以是分配给相应逻辑分区的较大逻辑分区计算机系统的处理资源容量的对应部分;并且任何存储器202实际上可以是分配给相应逻辑分区的较大逻辑分区计算机系统的存储器容量的对应部分。
虽然已经以高级别描述和示出了各种系统组件,但是应该理解,典型的计算机系统包含许多未示出的其他组件,这些组件对于理解本发明不是必需的。
流计算组件
图3是根据各种实施例的更详细地示出计算节点110的存储器300中的某些软件组件的概念图示,其可以与图1的计算节点110A-110D之一相同。如图3所示,代表性计算节点存储器包括操作系统内核301、一个或多个处理元件311和缓冲器313。
操作系统内核301是可执行代码和状态数据,其提供各种低级软件功能,例如设备接口、存储器页面的管理、多个任务的管理和分派、应用程序的公共服务等,这是众所周知的。在本领域中。特别地,OS内核301优选地包括一个或多个网络适配器驱动器302,用于经由网络接口213处理与一个或多个网络(包括网络120)的通信。
一个或多个处理元件311的每个包括用于执行作为数据流计算应用的一部分的相应功能的代码和状态数据。流计算应用程序可以包括可以编译到“处理元件”容器311中的一个或多个流操作符312。存储器300可以包括两个或更多个处理元件311,每个处理元件具有一个或多个流操作符312。每个操作符312可以包括处理流入处理元件的元组并将元组输出到流计算应用程序中的在相同处理元件、在其他处理元件或者在或者在相同和其他处理元件中的其他流操作符312的一部分代码。处理元件311可以将元组传递到位于同一计算节点110上或可通过通信网络120访问的其他计算节点上的其他处理元件。例如,计算节点110A上的处理元件311可以将元组输出到在计算节点110B上的处理元件311。在一个实施例中,处理元件311被指定为仅由一个CPU执行,但是在其他实施例中,处理元件311的流操作符312可以包括可以在不同的相应CPU上执行的多个线程。
缓冲器313是存储器300的一部分,用于保持作为流计算应用程序的一部分被流传输的数据,并且特别地,用于保持数据元组。缓冲器313可以是单个实体,但是在一个或多个实施例中,存在多个缓冲器,包括本地缓冲器314(也称为窗口)、用于在数据流应用程序的各种实体之间传递消息的一个或多个TCPIP缓冲器315、以及一个或多个用于对相应的一个或多个线程的要处理的数据进行排队的线程端口316。
图4是根据各种实施例的流数据应用缓冲器313中的一组元组的概念表示。缓冲器314-316中的任何一个可以保持一个或多个元组。如图4所示,一组元组包含一个或多个元组401,每个元组在逻辑上被组织为多个字段或属性402-404。一组元组可以在概念上表示为表,其中每个元组401对应于表的相应行,并且元组的每个属性或字段对应于表的相应列。尽管在概念上表示为表,但是存储器中的一组元组的实际结构可以变化,并且在每个不同的缓冲器314-316中可以是不同的。该集合可能占用非连续的内存地址区域,元组的大小可能不同;某些属性可能仅存在于元组的子集中,依此类推。尽管在各种实施例中,数据流应用程序产生添加到数据库表中的元组,但是数据流应用程序内的元组401的结构和属性不一定与关系数据库的表中的元组的结构和属性相同。存储在缓冲器313中的元组401可以是单一类型的全部(即,都具有相同的属性和结构),或者可以是不同类型的元组。在一个或多个实施例中,取决于操作符图内的元组的当前状态,可以将元组分别分组在单独的集合中或不同的缓冲器中。例如,一组元组可以包括等待计算节点内的特定处理元件311处理的元组401,而另一组包括已经由特定处理元件处理的元组401。
在一个或多个实施例中,计算节点存储器300还可以包括跟踪数据流应用程序的操作的跟踪数据318,并且特别地跟踪通过操作符图的元组的进展。该跟踪数据可用于构建操作符图简档数据,以用于在操作符图内投影下游数据查找操作。
在一个或多个实施例中,处理元件311中的状态数据还包括查找掩码321和一个或多个触发参数数据集322。查找掩码321是位掩码或类似结构,指示对于一个或多个处理元件、操作符或其他代码部分,是否启用预期查找,其中一个或多个处理元件、操作符或其他代码部分响应于检测到先前的查找预测事件可以触发预期查找操作。触发参数数据集322包括一个或多个数据集,每个数据集对应于相应的处理元件、操作符或其他位置,其包含控制触发查找事件和随后的查找事件本身的参数。在此处更详细地描述了在执行数据流应用程序期间查找掩码321和触发参数数据集322的使用。
图5是根据各种实施例的更详细地示出图1的管理系统105的存储器500中的某些软件组件的概念图示。如图5所示,代表性管理系统存储器包括操作系统内核501、流管理器134、操作符图136,简档数据分析器523和操作符图简档数据525。
操作系统内核501是可执行代码和状态数据,其提供各种低级软件功能,例如设备接口、存储器页面的管理,多个任务的管理和分派,应用程序的公共服务等,这是众所周知的。在本领域中。特别地,OS内核501优选地包括一个或多个网络适配器驱动器502,用于经由网络接口213处理与一个或多个网络(包括网络120)的通信。
流管理器134管理数据流应用程序的操作,并且具体地,维护操作符图132。操作符图132是定义元组如何被路由到处理元件311以进行处理的数据结构。
在一个或多个实施例中,流管理器中的状态数据还包括查找掩码521和一个或多个触发参数数据集522。该状态数据类似于计算节点110的存储器300中的查找掩码321的本地副本以及触发参数数据集322的本地副本,但是流管理器将具有用于整个数据流应用程序的全局状态数据,而计算节点的存储器300中的该数据的本地副本通常仅保持适用于该计算节点内的处理元件的状态数据。在此处更详细地描述了在执行数据流应用程序期间查找掩码521和触发参数数据集522的使用。
简档数据分析器523是可执行代码和状态数据,其收集来自各种计算节点的跟踪数据并分析该数据以构建和维护操作符图简档数据525。操作符图简档数据525包括查找事件概要记录526和跟踪数据527。跟踪数据527是来自各种计算节点的跟踪数据318的所有或选择性部分的集合,并且由简档数据分析器用于生成查找事件概要记录526。查找事件概要记录是历史查找事件模式的表示。例如,对于各种先行查找预测事件中的每一个,查找事件概要记录可以概括相应的预测的随后发生的查找事件,并且可以可选地包括与相应的先前事件相关联的单个概率或多个概率和/或在各个先前事件和查找事件之间的时间延迟的度量。先前事件可以是特定类型的相应元组,其可以具有在特定处理元件处发生的特定属性值。示例性查找事件概要数据526在图11中示出并在本文中更详细地描述。
图6是根据各种实施例的更详细地示出图1的编译器系统102的存储器600中的某些软件组件的概念图示。如图6所示,代表性编译器系统存储器包括操作系统内核601、编译器136、以及以源模块611、中间代码模块612和目标代码模块613的形式的编译器输入和输出。
操作系统内核601是可执行代码和状态数据,其提供各种低级软件功能,例如设备接口、存储器页面的管理、多个任务的管理和分派、应用程序的公共服务等,这是众所周知的。在本领域中。特别地,OS内核601优选地包括一个或多个网络适配器驱动器602,用于经由网络接口213处理与一个或多个网络(包括网络120)的通信。
编译器136是可执行代码和数据结构,其将包括源代码或语句611的模块编译到目标代码613中,目标代码613包括在处理器上执行的机器指令。在一个实施例中,编译器136可以在将中间形式转换为目标代码之前将模块翻译成中间形式612。编译器136可以输出一组可部署组件,其可以包括一组处理元件和应用程序描述语言文件(ADL文件),该文件是描述流计算应用程序的配置文件。在一些实施例中,编译器136可以是作为解释器的一部分执行的即时编译器。在其他实施例中,编译器136可以是优化编译器。在各种实施例中,编译器136可以执行窥孔优化、局部优化、循环优化、过程间或整个程序优化、机器代码优化或减少执行目标代码所需的时间量的任何其他优化,以减少执行目标代码所需的内存量,或两者兼而有之。编译器136的输出可以由操作符图表表示,例如操作符图132。
编译器136还可以向应用程序管理员提供通过简档驱动的融合优化来优化性能的能力。融合操作符可以通过减少对传输的调用次数来提高性能。虽然融合流操作符可以在操作符之间提供比可用的使用进程间通信技术更快的通信,但是融合操作符的任何决定都需要平衡跨多个计算节点分布处理的益处以及更快的操作符间通信的益处。编译器136可以使融合过程自动化以确定如何最好地融合操作符以由一个或多个处理元件托管,同时遵守用户指定的约束。这可能是一个两步过程,包括在简档模式下编译应用程序并运行应用程序,然后在后续编译期间重新编译和使用优化器。但是,最终结果可能是编译器提供的具有优化的应用程序配置可部署应用程序。
编译器系统存储器600还包括公共运行时代码614。公共运行时代码可以是源代码、中间代码或目标代码中的任何一个。公共运行时代码614是公共代码,其包括在每个处理元件311的代码中以执行所有或许多处理元件共有的功能。公共运行时代码可以包括例如用于在各种处理元件之间传递消息、访问缓冲器313、报告错误或其他状态等的功能。在一个或多个实施例中,公共运行时代码包括用于收集跟踪数据流应用程序的操作的跟踪数据318的跟踪指令615,以及用于响应于查找预测事件而发起预期查找操作的预期查找指令616。通过执行跟踪指令615收集的跟踪数据318可以用于构建操作符图简档数据525。跟踪指令615和/或预期查找指令616可以是可选地包括的指令,即编译器136可选地包括在处理元件代码中的指令,取决于编译时给编译器的设置或指示。
图7示出了根据一些实施例的用于流计算应用的示例性操作符图700,其从一个或多个源702开始到一个或多个接收器704、706。从源到接收器的这种流程在本文中通常也可称为执行路径。另外,从一个处理元件到另一个处理元件的流程可以被称为各种上下文中的执行路径。尽管图7被抽象以示出连接的处理元件PE1-PE10,但是操作符图700可以包括相同或不同处理元件内的流操作符312(图3)之间的数据流。通常,处理元件,例如处理元件311(图3),从流接收元组以及将元组输出到流中(除了接收器-流终止的地方,或源-流开始的地方)。虽然操作符图700包括相对少量的组件,但是操作符图可以更复杂并且可以包括可以静态地或动态地链接在一起的许多单独的操作符图。
图7中所示的示例操作符图包括在计算节点110A-110D上运行的十个处理元件(标记为PE1-PE10)。处理元件可以包括融合在一起的一个或多个流操作符,以形成具有其自己的进程ID(PID)和存储空间的独立运行的进程。在两个(或更多个)处理元件独立运行的情况下,可以使用“传输”(例如,网络套接字,TCP/IP套接字或共享存储器)进行进程间通信。用于进程间通信的进程间通信路径可以是流计算应用程序中的关键资源。然而,当流操作符融合在一起时,融合流操作符可以使用更快速的通信技术来在每个处理元件中的流操作符之间传递元组。
操作符图700在源702处开始并在接收器704、706处结束。计算节点110A包括处理元件PE1、PE2和PE3。源702流入处理元件PE1,处理元件PE1又输出由PE2和PE3接收的元组。例如,PE1可以分割在元组中接收的数据属性,并将新元组中的一些数据属性传递给PE2,同时将另一个新元组中的其他数据属性传递给PE3。作为第二个例子,PE1可以将一些接收到的元组传递给PE2,同时将其他元组传递给PE3。流向PE2的元组由包含在PE2中的流操作符处理,然后将得到的元组输出到计算节点110B上的PE4。同样,PE4输出的元组流向操作符接收器PE6 704。类似地,从PE3流向PE5的元组也到达接收器PE6 704中的操作符。因此,除了作为该示例操作符图的接收器之外,PE6可以被配置为执行连接操作,组合从PE4和PE5接收的元组。该示例操作符图还示出了在计算节点110C上从PE3流向PE7的元组,其本身示出了流向PE8并循环回到PE7的元组。从计算节点110D上的PE8流到PE9的元组输出,其又输出要由接收器处理元件(例如PE10 706)中的操作符处理的元组。通常,接收器704,706在数据流应用程序外部(例如,到数据库,存储文件或其他目的地)输出数据(例如元组);但是,任何处理元件也可以在外部输出数据。
处理元件311(图3)可以被配置为以各种格式接收或输出元组,例如,处理元件或流操作符可以交换标记为XML文档的数据。此外,处理元件311内的每个流操作符312可以被配置为对所接收的元组执行任何形式的数据处理功能,包括例如写入数据库表或执行其他数据库操作,例如数据连接、分割、读取等,以及执行其他数据分析功能或操作。
流管理器134可以被配置为监视在计算节点(例如,计算节点110A-110D)上运行的流计算应用程序,以及改变操作符图的部署,例如操作符图132。例如,流管理器134可以将处理元件从一个计算节点110移动到另一个计算节点110,以管理计算基础设施100中的计算节点110A-110D的处理负载。此外,流管理器134可以通过插入、移除、融合,取消融合或以其他方式修改在计算节点110A-110D上运行的处理元件和流操作符(或者流向处理元件的元组)来控制流计算应用程序。
因为处理元件可以是融合流操作符的集合,所以将操作符图描述为特定流操作符之间的一个或多个执行路径同样是正确的,其可以包括到同一处理元件内的不同流操作符的执行路径。图7示出了为清楚起见处理元件之间的执行路径。
数据库组件
根据一个或多个实施例,由操作符图700输出的元组,无论是来自接收器704,706之一,还是来自某个其他处理元件,被输入到结构化关系数据库140的一个或多个表中。图8是根据各种实施例的用于访问结构化关系数据库140的图1的数据库服务器计算机系统115的存储器800中的主要软件组件的概念图示。如图8所示,数据库服务器计算机系统存储器包含操作系统内核801和结构化数据库140,结构化数据库140包括数据库管理器811、一个或多个数据库表821-823、以及一个或多个元数据结构824-832。
操作系统内核801是可执行代码和状态数据,其提供各种低级软件功能,例如设备接口、存储器页面的管理,多个任务的管理和分派,应用程序的公共服务等,这是在本领域中众所周知的。特别地,OS内核801优选地包括一个或多个网络适配器驱动器802,用于经由网络接口213处理与一个或多个网络(包括网络120)的通信。
数据库表和元数据820包括一个或多个表821-823(其中示出三个用于图8中的说明性目的,应理解该数字可以变化)。如在数据库领域中已知的,数据库表是逻辑上具有多个记录(也称为条目或元组)的表格形式的数据结构,每个记录具有至少一个,通常是多个字段(也称为属性)。表的“行”对应于记录,“列”对应于字段。虽然表821-823是逻辑上等同于表的数据结构,但是它们可以以数据库领域中已知的任何合适的结构来安排。数据库表821-823可以包含对计算机系统的用户有用的几乎任何类型的数据。
与数据库表相关联的是一个或多个辅助数据结构824-832,有时也称为元数据(其中九个在图8中表示,应理解这些结构的数量和类型可以变化)。辅助数据结构表征数据库的结构和其中的数据,并且在数据库管理中涉及的各种任务中是有用的,特别是在对数据库执行查询时。辅助数据结构的示例包括数据库索引824-827、直方图828-829和具体化查询表(MQT)830-831)。辅助数据结构还可以包括查询高速缓存832,其中存储关于先前执行的查询的数据(查询本身、查询执行计划或执行策略、来自执行的运行时统计等)。尽管图8中示出了特定数量和类型的辅助数据库结构,但是应当理解,这种结构的数量和类型可以变化,并非所有示出的结构都可以存在,和/或可以存在未示出的附加结构。
数据库管理器811包括可执行的计算机编程代码,其在数据库服务器系统115的CPU 201上执行以提供用于管理数据库140的基本功能。数据库管理器811理论上可以支持任意数量的数据库表,其可以是或者可能没有相关信息,尽管图8中仅示出了三个表。数据库管理器811优选地包含管理维护功能812,其自动执行某些功能以管理数据库和/或允许授权用户执行关于数据库的基本管理操作,例如定义和编辑数据库表定义,创建、编辑和删除数据库中的记录,查看数据库中的记录,定义数据库辅助数据结构,例如索引和具体化查询表、视图等。管理功能还可以包括数据库事务的日志,数据的恢复等。这些功能中的某些功能可能仅供系统管理员等使用,而其他功能可供客户使用。
数据库管理器811优选地还包括:查询引擎813,用于对数据库表821-823中的数据执行查询;以及查询优化器814,用于生成优化的查询执行计划,供查询引擎813在执行查询时使用。数据库管理器811还优选地包括具有一个或多个应用程序编程接口(API)的外部接口815,通过该外部接口,外部应用程序可以通过调用查询引擎813或通过其他手段访问数据库140中的数据。如本领域中已知的,数据库管理器811还可以包含各种更高级的数据库功能中的任何一种。数据库管理器可以是通用数据库管理系统,例如实现结构化查询语言(SQL)查询协议的系统,但是它可以替代地根据一些其他协议查询和构造数据和/或可以是定制设计的数据库管理系统。虽然数据库管理器811在这里被示出和描述为与操作系统内核801分开的实体,但是应该理解,在一些计算机体系结构中,各种数据库管理功能与操作系统集成在一起。
尽管在图8中示出了具有三个数据库表821-823和九个辅助结构824-832的一个数据库140,但是这样的实体的数量可以变化,并且可以更大。计算机系统或一组计算机系统可以包含多个数据库,每个数据库可以包含多个表,并且每个数据库可以具有与其相关联的多个索引、MQT、直方图、视图、波动率记录和/或未示出的其他辅助数据结构。或者,图8中表示的某些实体可能不存在于所有数据库中。另外,数据库140可以在逻辑上是存储在多个计算机系统上的较大分布式数据库的一部分。虽然数据库管理器811在图8中表示为数据库140的一部分,但是作为可执行代码的数据库管理器有时被认为是与“数据库”(即数据820)分离的实体。
除了操作系统801和数据库140之外,数据库系统800的存储器可以包括一个或多个用户应用程序804-805的全部或选择性部分。用户应用程序804-805是在CPU 201上执行的应用程序,并且可以访问数据库140中的数据以代表一个或多个用户执行任务。这样的用户应用程序可以包括例如销售交易、库存管理、人事记录、会计、代码开发和编译、邮件、日历或数千个用户应用程序中的任何一个,并且可以是基于web的(即,呈现网页到远程客户端以在客户端的浏览器中呈现)或提供其他形式的用户界面。其中一些应用程序可以以只读方式访问数据库数据,而其他应用程序可以更新数据。可能存在许多不同类型的读取或写入数据库访问任务,每个任务访问不同的数据或请求对数据的不同操作。例如,一个任务可以访问特定的已知记录中的数据,并可选地更新它,而另一个任务可以调用查询,其中数据库中的所有记录都与某些指定的搜索条件匹配,来自匹配记录的数据被返回,并可选地更新。此外,数据可以直接从数据库表811-813读取或写入数据库表811-813,或者可能需要操纵或组合用户提供的、从另一个数据库或某些其他来源获得的其他数据。应用程序804-805通常通过外部API 815利用对数据库管理器811的函数调用来访问数据库中的数据,并且特别地,对数据库中的数据执行查询,尽管在一些系统中可以直接从应用程序独立地访问数据库中的数据。尽管在图8中出于说明性目的示出了两个应用804-805,但是这些应用的数量可以变化。
在图3-8中概念上表示了包含在本文所述的各种系统或设备中任何的各个内存储器中的各种软件实体。然而,众所周知,计算机或其他数字设备的存储器通常不足以同时保存所有软件实体和其他数据,并且软件实体或其他数据的选择性部分通常根据需要从存储器加载到内存储器中。此外,在图3-8中各种软件实体作为独立实体或包含在其他实体中的而表示的。然而,应该理解,该表示仅用于说明目的,并且特定模块或数据实体可以是单独的实体,或者是公共模块或模块包的一部分。此外,尽管在图3-8的概念表示中示出了特定数量和类型的软件实体,可以理解,这种实体的实际数量可以变化,特别是在复杂的数据流和/或数据库环境中,这种实体的数量和复杂性通常要大得多。另外,虽然为了表示的完整性而在相应的单个系统内描绘了某些软件组件,但是并非所有程序、功能和数据都将存在于单个系统中,并且可能存在于同一计算机系统上的另一个分区中,或在不同的计算机系统中。例如,调用API以访问数据库的用户应用程序804-805可以在与某些维护功能不同的系统上,这些功能例如定义数据库、添加或删除元数据结构等。最后,将理解图3-8的概念表示并不意味着暗示任何特定的内存储器组织模型,并且托管数据流应用程序或数据库的计算机系统可以使用单个地址空间虚拟内存储器,或者可以采用重叠的多个虚拟地址空间。
数据流简档数据的集合
根据一个或多个实施例,收集表征数据流应用程序的操作的简档数据。然后,该简档数据用于通过操作符图中的处理元件与先前发生的事件/条件(先行查找预测事件)来关联外部数据检索(查找事件)的实例。特别地,根据一个或多个实施例,这些先行事件包括处理元件上游的元组内的特定数据,其导致外部数据检索。先行事件还可以包括外部状态变量的特定值,例如一天中的时间/星期几等。然后,可以使用这些先行事件来预测处理元件随后将需要检索数据。即,在数据流应用程序的后续执行期间,与稍后需要特定外部数据相关联的先前事件的发生将导致外部数据在需要它的处理元件的实际需求之前被检索。
在一个或多个实施例中,通过跟踪数据流应用程序的一个或多个执行实例的执行来获得简档数据,尽管可以使用其他或附加形式的简档数据,例如输入和输出数据或从源代码分析获得的数据。跟踪是一种众所周知的技术,其中在执行计算机程序期间发生预定义的可跟踪事件使计算机保存某些状态数据,该状态数据显示可追踪事件发生时计算机的状态。它通常在计算机程序代码开发期间使用,用于调试错误、确定常用代码路径、识别性能瓶颈等。
跟踪可以通过“检测”要跟踪的代码来完成,即,在各种代码位置放置跟踪指令(“检测”),当在计算机程序的执行期间遇到该代码位置时,使得期望的状态数据被保存。跟踪指令可以使数据无条件地保存(每次遇到指令时),或者有条件地基于某些状态值而保存。保存状态数据的确切机制可能会有所不同。跟踪检测可以是代码中的内联指令,也可以是对单独例程的调用,或者是触发中断的指令。
在一个或多个实施例中,跟踪指令615(检测器)包含在计算机136用于生成数据流程序的公共运行时代码614的至少一个版本中。实际上,可能存在多个版本的公共运行时代码,包括一个没有任何检测的代码。还可以有多种不同的可检测的版本用于收集不同类型的简档数据。通用运行时代码中的检测简化了开发数据流应用程序的过程,避免了每个不同数据流应用程序的开发人员创建自己的检测,并标准化简档数据的收集和分析。
公共运行时代码614通常包含其中发生可追踪事件的例程。具体地,在一个或多个实施例中,公共运行时代码614将包括用于在数据流应用程序中分配新元组的例程,用于将元组从一个处理元件发送到下一个处理元件,用于访问数据流外部的数据(其中可能包括查找事件),以及用于将元组输出到数据库。根据一个或多个实施例,在跟踪元组时可能感兴趣的附加例程可以包括用于拷贝或复制元组、用于删除元组、用于改变元组的定义(其字段,字段长度等)等等的例程。在一个或多个实施例中,这些事件中的任何一个或全部可能是导致跟踪数据的收集的可追踪事件,并且适当的检测被放置在执行操作的相应例程中。
在一个或多个实施例中,公共运行时代码614的检测版本通过添加用于跟踪分析中的附加数据来改变数据流应用程序中使用的元组的结构。图9是根据各种实施例的数据流应用程序的可变的元组901的概念表示,其被改变以支持跟踪数据的简档分析。参考图9,元组901包括包含元组类型903、唯一元组标识符904和可变数量的父对905的头部902,每个父对包括相应的父元组类型906和父元组标识符907。头部可能包含其他数据。元组还包含由数据流应用程序定义的具有可变数量的用户数据字段909-911的主体部分908,其中三个在图9中示出,应当理解,这样的用户数据字段的数量可以变化。元组类型903是具有公共定义结构的一组元组的名称,大致对应于包含多个元组(也称为记录或行)的数据库表的表名。元组标识符904和父对905是由公共运行时代码614的检测版本添加的附加字段。这些字段由数据流应用程序在内部用于跟踪分析和/或其他目的,并且不需要是对应用程序的用户可见的。
在公共运行时代码的检测版本中,创建新元组的任何例程自动分配上述字段并将类似于唯一序列号的唯一元组标识符904分配给新创建的元组。如果从现有元组(父元组)创建或复制新创建的元组,则将父元组的元组类型和唯一元组标识符被复制到新元组的父对905中分别作为父元组类型906和父元组标识符907。由于可能存在多个父链,因此直接父中的所有父对905也被复制到新创建的元组的相应父对905中。
图10是根据各种实施例的在高级别示出收集数据流应用程序的简档数据的过程的流程图。参考图10,由编译器136编译已检测的代码(块1001)。在块1001处表示的编译可以是静态编译或动态编译。如果静态编译,用户将在编译时通过指定使用公共运行时代码的适当检测版本,或者如果支持,通过特殊的编译器指令或选项来使用检测版本来直接编译。如果在运行时动态编译,则调用数据流应用程序的执行的用户指定包括公共运行时代码的任何检测版本的代码文件(例如,源代码或中间代码)。响应于适当的指令,编译器136编译数据流应用程序(静态地或动态地,视具体情况而定)以合并跟踪指令。
调用数据流应用程序以在启用跟踪的情况下执行,并指定任何可选的跟踪参数(块1002)。尽管在图10中将块1002表示为跟着块1001,但是应当理解,在某些动态编译环境中,可以在调用数据流应用程序以供执行之后进行编译。
在一个或多个实施例中,处于公共运行时代码中的检测指令不是特定于任何特定数据流应用程序,因此不特定于任何特定类型的元组或元组类型集。例如,将元组从一个处理元件发送到下一个处理元件的公共运行时例程可以包括跟踪指令,该跟踪指令在发送元组(任何类型)时触发。如果用户希望跟踪特定类型的元组或元组类型集,则当调用数据流应用程序时,用户将要跟踪的元组指定为可选的跟踪参数。当触发跟踪指令时,代码确定由相应的公共运行时例程操作的元组是否属于应该跟踪的类型,并相应地保存跟踪数据。可以使用其他运行时跟踪选项。例如,可能希望仅跟踪通过操作符图的可能的跟踪事件或路径中的一些。虽然通用跟踪指令可以存在于公共运行时代码中,使得可以跟踪通过操作符图的所有路径,但是用户可以指定要跟踪的特定路径或者限制要跟踪的事件。
因此,当在块1002处调用数据流应用程序以供执行时,用户可指定任何跟踪参数。出于性能原因,用户可以选择完全禁用跟踪。为了收集用于分析数据流应用程序的执行简档的跟踪数据并生成包括简档查找事件数据526的操作符图简档数据525,优选地启用跟踪并且每当查找事件发生时,保存用于一个或多个感兴趣的元组类型的跟踪数据。创建相应类型的元组,从一个处理元件发送到另一个处理元件,或输出到数据库。可以可选地跟踪附加事件。至少最初,通常预期所有查找事件将与对应元组的创建或传输一起被跟踪。但是,在先前已经归档了数据流应用程序之后,用户可能希望跟踪已知感兴趣的特定查找事件。
流管理器134通过在各种计算节点110中发起执行并初始化任何环境参数(包括管理跟踪的环境参数)来响应(块1003)。例如,可以设置跟踪启用标志,并且可以初始化位掩码或其他数据结构以控制对要跟踪的期望事件的跟踪,要收集的跟踪数据等等。
数据流应用程序在每个计算节点110和管理系统105中同时执行,在图10中表示为块1004A-D。为了清楚地表示,在块1004A中仅示出了每个节点或管理系统内的动作,应当理解,这些动作在块1004B-D中是类似的。在每个节点(或管理系统)内,数据流应用程序代码可能在多个并发线程中执行(以简化形式表示为块1005),直到遇到跟踪指令。跟踪指令导致检查是否启用了跟踪(块1006)。如果没有启用,则从块1006获取'N'分支,并且重新开始执行。如果启用了跟踪,则跟踪代码确定事件和当前状态数据是否与调用执行时指定的跟踪参数匹配(块1007)。例如,如果发生特定事件(例如查找操作、元组创建和/或元组从一个处理元件传输到另一个处理元件),则跟踪代码验证导致执行暂时停止的跟踪指令来自这些事件之一;如果指定了特定元组类型的跟踪,则跟踪代码将验证与跟踪事件关联的元组是否为指定类型;等等。如果事件/状态数据与指定的跟踪参数不匹配,则从块1007获取“N”分支,并且重新开始执行;否则,采用“Y”分支,并且跟踪代码确定要保存的跟踪数据的范围(块1008)。在跟踪中几乎任何数据都可以保存,但是在一个或多个实施例中,保存的跟踪数据包括与可跟踪事件以及操作符图中位于可跟踪事件时元组的位置相关联的元组的副本。然后将该数据保存在本地跟踪数据318中,或者,如果跟踪指令在管理节点中执行,则保存在管理节点跟踪数据527中(方块1009)。
在某些时候,在执行期间遇到退出条件,导致程序的执行结束,如到END块的流程线所示。这种退出条件可以是,例如,完成所有数据的处理、中断、错误条件或其他退出条件。
可以通过数据流应用程序的一个或多个执行实例期间跟踪和/或在单个执行期间的多个时间间隔来收集简档跟踪数据,并且随着了解更多关于数据流应用程序的行为或随着了解应用程序代码或其通常运行的数据的改变,其导致应用程序行为的更改,可以随时间改进或周期性地更新简档跟踪数据。
生成查找事件概要数据
根据一个或多个实施例,使用管理系统105中的简档数据分析器523来分析所收集的简档数据,以产生一组查找事件概要记录526。查找事件概要记录将先行查找预测事件(例如特定的元组类型和/或元组属性值和/或在操作符图内的特定位置处发生的其他状态变量以及随后发生的查找事件)关联起来,并且可以进一步指定后续查找事件将实际发生的概率或可能性的某种度量和/或发生先行查找预测事件和后续查找事件之间的时间延迟。
如本文所使用的,“查找事件”是对数据流应用程序的缓冲区和高速缓存之外的数据的检索,即从存储器或远程设备的检索,作为执行数据流应用程序的处理元件的当前对数据的需求的结果。这类似于在执行传统计算机程序期间的页面错误,但是比在其可以包括通过网络访问的数据的意义上更宽。查找事件必然需要相当长的时间来检索所需的数据,这可能会影响数据流应用程序的性能。由于流数据保存在各种缓冲区中,因此流数据元组本身可自动供处理元件使用,并且不会在查找事件中检索。查找事件可能是检索处理元件中处理元组所必需的其他数据所必需的。因此,查找事件与元组相关联,具体地,由触发查找事件的处理元件处理元组,尽管在查找事件中不需要检索关联的元组本身。
图11是根据各种实施例的示例性查找事件概要记录集526的结构的概念图示。这些记录将数据流应用程序中的先行查找预测事件与随后发生的查找操作相关联,并且在众多其他事件中,可以用于在执行数据流中遇到查找数据的实际需要之前,响应于预测到它的先行事件,触发查找操作的启动。
参考图11,查找事件概要数据526包含多个记录1101,每个记录对应于一对先行查找预测事件和结果查找操作。先行事件表示为指定类型的元组,并且可选地具有一个或多个指定的属性值,发生在操作符图中的指定位置,并且可选地在一个或多个指定的外部状态变量值下。查找事件概要数据中的每个记录1101包含指定操作符图中的位置,在该位置处发生先行事件(即,特定元组的存在)的触发位置字段1102;指定临时保存在操作符图内的相应位置以构成先行事件的元组类型的内部元组类型字段1103;指定在类型字段1103中指定的类型的内部元组的数量的内部元组计数字段1104,其在触发位置1102中指定的触发位置处的跟踪数据中找到;指定查找事件概要记录所对应的查找事件组中的查找事件的数量的多个查找事件字段1105。
在一个或多个实施例中,每个记录1101还包含指定将在其中发生查找操作的操作符图中的位置的查找位置字段1106,即,要向其加载查找数据的位置;以及定义结果查找事件的查找事件描述符1108。查找事件描述符可以包含定义由相应的先行事件产生的特定查找操作所需的任何数据,并且可以包括但不必限于:网络路径、设备路径、设备标识符或标识存储设备的类似物、网络位置、或从中检索查找数据的其他实体、文件名、地址、和/或指定要从中检索查找数据的实体内要查找的数据的位置的其他数据、要检索的数据的多个页面或其他量度、指定要加载查找数据的位置的地址或其他指示符的加载目标、以及定义查找操作可能需要的任何其他数据。
每个记录1101可以可选地进一步包含延迟参数1107,其共同指定关于查找事件的某些时间延迟,并且可以在适当的情况下用于在检测到先前查找预测事件之后的执行期间延迟数据查找操作的启动。延迟参数1107可以包括一个或多个值,其指定在先前事件发生与数据流应用程序对作为指定数据查找操作的主题的数据的需求之间经过的时间,以及指定的从数据查找操作开始到检索到的数据可用于数据流应用程序的延迟时间的一个或多个值。或者,延迟参数可以是组合值,其中这两个量被组合以表示检测查找预测事件和启动数据查找操作之间的延迟时间。如果单个值可以表示经过的平均时间、经过的最小时间、查找操作的某个预定部分经过的最小时间,或某些其他时间测量,延迟参数1107中的这些量的任何一个可以是单个值或多个值,例如,平均时间间隔和与该平均值的标准偏差。
在一个或多个实施例中,记录还包含一个或多个关键字段标识符1109(其中一个在图11中示出),每个指定字段1103中指定的内部元组类型内的关键字段,以及对应于每个关键字段标识符的关键字段细节1110的可变数字,每个特定指定相应的最小值1111,对应的最大值1112和对应的概率值1113。概率值1113表示假设先行查找预测事件发生,随后发生的查找事件将发生的概率,其中先行事件是在内部元组类型字段1103中指定的类型元组,在图形位置1102处,具有在由最小值1111和最大值1112指定的范围内的关键字段1109中关键字段值。概率值可以表示为0和1之间的浮点值。或者,概率值可以存储为在一对值中,概率值被推导为该对值的商。例如,该对值可以是两个整数,其表示多个后续查找事件的计数以及在主题图位置处找到的类型IT(并且可选地具有特定参数)的多个元组的计数。
在一个或多个其他实施例中,记录1101还可以包括一个或多个外部状态变量标识符1114(其中一个在图11中示出),其每个指定外部状态变量(即元组外部的变量),对应于每个外部状态变量的可变数量的外部状态变量细节1115,其每个特定地指定对应的最小值1116、对应的最大值1117和对应的概率值1118。概率值1118类似于概率值1113,并且表示在给定先行查找预测事件发生的情况下将发生随后发生的查找事件的概率,即,在图形位置1102处遇到内部元组类型字段1103中指定的类型元组,以及指定的外部状态变量1114具有在由最小值1116和最大值1117指定的范围内的值。概率值可以以上面关于概率值1113所述的任何方式表示。
在一个或多个备选实施例中,关键字段1109和关键字段细节1110和/或外部状态变量标识符1114和外部状态变量细节1115可以是可选的或不使用。可以为先行内部元组类型和图形位置指定单个概率值,即,单个概率值,而不管相应元组内的任何数据的值。在一个或多个另外的替代实施例中,不使用概率值,并且假设如果先前事件发生,则后续查找事件也必然发生。
可以以各种方式中的任何一种来分析通过跟踪收集的数据以产生查找事件概要记录526。概念上,分析相当于为每个随后发生的查找事件引起查找的元组,为经过操作符图的其父元组的每个位置,以及为在该位置处的每个内部元组(或父元组),确定该位置处(先前事件)的这种元组的数量和随后发生的查找事件的数量。另外,如果识别出一个或多个关键字段和/或外部状态变量,则这些数字按相应关键字段或外部状态变量中的值范围细分。另外,一旦识别出先前事件和随后的查找事件,就可以确定先行事件与查找事件的发生之间的一个或多个延迟度量(平均值,最小值等)。
图12是根据各种实施例的在高级别示出分析简档数据以产生一组查找事件概要记录526的过程的流程图。该分析由管理系统105中的简档数据分析器523执行或在其控制下执行。
参考图12,在各个节点中收集并存储在计算节点110的相应本地节点跟踪数据高速缓存318中的跟踪数据被发送到管理系统105以进行分析(块1201)。为了简化表示,管理系统中跟踪数据的收集显示为单个块。实际上可以在分析开始时将所有跟踪数据发送到管理系统,如图12所示。或者,进行分析时管理系统105中的简档数据分析器523可以从各个计算节点110以增量请求跟踪数据。后一种方法将一些筛选工作卸载到计算节点。例如,管理系统可以确定仅在特定位置发生的特定查找事件是感兴趣的,并且根据仅与那些查找事件有关的请求数据,从而减少分析期间网络带宽的消耗,并减少管理系统的扫描大量最终未使用的跟踪数据的负担。
根据数据流应用程序中的起始原因和查找数据的来源,识别跟踪数据中的查找事件并将其分类成组(块1202)。在一个或多个实施例中,这意味着通过代表相同的元组类型执行相同的处理元件并访问相同的外部数据源而生成的查找事件被分组在一起。相同的“外部数据源”并不一定意味着完全相同的数据,因为由于它在正常过程中将保持在某种缓存中,不可能重复查找完全相同的数据。例如,外部数据源可以是非常大的数据实体,例如外部数据库,其中由相应处理元件处理的元组的一个或多个属性用于确定访问来自外部数据源的哪些数据。其中,外部数据源可以是数据库140或其任何特定表821-823,或者可以是其其他一些数据库或表,或者可以是管理系统105、任何计算节点110或者编译器系统102,或者本地或通过网络120可访问的任何其他数据中的阵列或其他数据结构。正在处理的元组的一个或多个属性可以用于确定地址、键值、数组索引或用于识别由查找操作检索的较大外部数据源(数据库,数组或其他数据结构)中的特定数据的一些其他值。
在一个或多个可选实施例中,对查找事件组进行优先级排序并选择用于分析(块1203)。查找事件组可以根据对数据流应用程序的性能的不利影响的一些适当测量来区分优先级,这可以归因于相应类别的查找操作。例如,可以根据每个组中的查找操作的总数或者在每个组中执行查找操作所需的总累积时间,或者对性能的一些其他影响度量来对组进行优先级排序。选择一个或多个组进行分析。在一个实施例中,选择具有超过某个预定阈值的性能影响的所有组。在另一个实施例中,选择具有超过与平均性能效果的一些偏差的性能效果的组。在另一个实施例中,仅选择对性能具有最大影响的组。
根据对性能的不利影响的一些度量来分析查找事件组旨在避免对对性能影响很小或没有影响的查找事件类别的分析和随后的校正动作。例如,某些类型的查找事件可能很少发生,例如遇到某些错误情况时。尝试预测这种很少发生的查找事件可能会受到相当大的不准确性,并且这样做的开销可能超过任何性能益处。然而,在一个或多个实施例中,不执行可选块1203,并且分析所有查找事件组。
然后选择优先用于分析的那些组中的下一组作为待分析的当前组(块1204)。对于操作符图中的每个位置,分析跟踪数据以产生一组一个或多个查找事件概要记录1101,其对应于被选择用于分析的查找事件组。这在图12中表示为块1205-10。“位置”可以是数据流应用程序中的操作符图的任何子集,其中可以暂时保持元组并且跟踪它们。在一个或多个实施例中,“位置”是操作符图中的处理元件,并且在本文如此描述,应当理解,位置的粒度可以是计算节点、操作符或一些其他实体。
由于每个组对应于特定类别的查找事件,因此相应的查找事件必然代表特定元组类型在数据流应用程序中的特定处理元件处发生。简档数据分析器访问操作符图数据以确定操作符图中的前任处理元件,引起查找事件(或该元组类型的父代)的元组类型从该前任处理元件中到来(块1205)。即,它向后遍历操作符图。如果存在这样的前任处理元件(来自块1206的“Y”分支),则将其选择为用于分析的当前处理元件。为了简化描述,这里假设对于存在这种元组类型的每个处理元件,只有一个这样的前任处理元件,尽管事实上可能存在多个前任处理元件,在这种情况下依次分析每个这种处理元件。
概要数据分析器扫描追踪数据以识别当前处理元件中对应的元组类型(或其父元件)的所有出现(块1207);这些形成了一组当前的内部元组。为当前处理元件和查找事件组生成对应的查找事件概要记录1101(块1208)。查找事件概要记录的触发位置1102是当前处理元件;内部元组类型1103是当前处理元件中对应的元组类型(或其父元件),内部元组计数1104是在跟踪中找到的元组的数量;查找事件的数量1105是当前查找操作组中的查找操作的数量;查找位置1106是当前组中的查找发生的处理元件,并且查找事件描述符1108是包含当前组的查找的识别参数的描述符。内部元组的数量(字段1104)与查找事件的数量(字段1105)的比率产生近似概率,当在执行期间在触发位置遇到指定类型的元组时,将需要形成当前查找事件组的查找事件的该类别的后续查找事件。
在一个或多个实施例中,分析跟踪数据以确定一个或多个延迟参数1107,其被添加到查找事件概要记录1101(块1209)。在适当的情况下,延迟参数可以用于在执行期间检测到先行查找预测事件之后延迟查找事件的发起。理想地,在检测到先行查找预测事件之后的延迟恰好足以使查找数据在查找位置的处理元件需要之前立即变得可用。
这可以确定为先行查找事件(即,在适用的触发位置中跟踪的元组)的发生与查找操作的开始(表示需要数据)之间的时间间隔的函数,减去了执行查找操作所需的时间。在许多情况下,后一时间可能超过前一时间间隔,表明一旦检测到先前查找预测事件就应该开始数据查找操作。由于这些时间间隔不一定是均匀的,因此可以分析跟踪数据以确定典型或平均行为的某种度量,例如平均时间间隔和其标准偏差,以及先行事件和查找事件之间的间隔,以及数据查找所需的时间,可以单独测量。或者,可以从一些其他源获得平均查找操作时间的测量,例如性能监视统计。
在一个或多个实施例中,分析跟踪数据以识别元组中的特定属性值和/或外部状态变量值与该相同元组的后续查找事件之间的任何相关性(块1210)。如果在元组中的属性值与随后的查找事件之间发现相关性,则可以将关键字段1109和一个或多个关联的关键字段细节1110附加到在块1208处生成的查找事件概要记录。类似地,如果在外部状态变量值和后续查找事件之间发现相关性,外部状态变量标识符1114和一个或多个相关联的外部状态变量细节可以附加到查找事件概要记录。
具体地,期望知道对于相应内部元组类型的内部元组中的任何关键属性字段的任何值或者对于任何外部状态变量值,被执行的查找操作的当前组中的后续查找操作的概率与作为整体的相同元组类型的内部元组的集合(即,元组字段的数量1104与查找事件字段的数量1105的比率)基本上不同。关键字段和/或外部状态变量可以由流管理器的一些外部命令指定,或者可以由简档数据分析器523通过分析跟踪数据来确定。具体地,可以使用各种分析技术或工具中的任何一种来发现数据中的相关性。
如果识别出这样的关键字段或外部状态变量和对应的值范围,则将关键字段/外部状态变量保存为查找事件概要记录1101中的关键字段1109或外部状态变量ID 1114,并且每个值或者感兴趣的值的范围及其对应的查找事件概率被保存为相应的关键字段细节1110或外部状态变量细节1115,其具有相应的最小值1111或1116,相应的最大值1112或1117,以及相应的查找事件概率1113或1118。概率反映了给定在触发位置发生并且在相应范围内具有关键字段值(或在外部状态变量在相应范围内的条件下)的元组,对同一元组随后将需要当前的查找事件组的查找事件的概率。
在一个实施例中,仅对于对应查找事件概率明显大于作为整体的相同元组类型的内部元组集的查找事件概率的那些值在查找事件概要记录1101中保存关键字段1109或外部状态变量ID 1114(连同对应的关键字段细,节1110或外部状态变量细节1115)。在替换实施例中,对于那些对应的查找事件概率与做为整体的相同元组类型的内部元组集合的查找事件概率明显不同(无论大于或小于)的那些值,在查找事件概要记录1101中保存关键字段1109或外部状态变量ID 1114(连同对应的关键字段细节1110或外部状态变量细节1115)。在另一替换实施例中,如果做为整体的相同元组类型的内部元组集合的查找事件概率足够大,其指示当在触发位置遇到元组时应始终查找相应数据,可以跳过方块1210,并且关键字段1109或外部状态变量ID 1114(以及对应的关键字段细节1110或外部状态变量细节1115)不被附加到查找事件概要记录1101。
在延迟参数已经被计算(块1209)并且分析跟踪数据以获得特定属性/外部变量值与后续查找之间的相关性(块1210)之后,分析器返回块1205以确定图中的另一个前任位置。
如果在块1206处不存在前任处理元件,则已经遍历所有路径的操作符图回到创建相应元组,并且从块1206获取'N'分支,其指示已分析相应的查找事件组。在这种情况下,如果仍有待分析的任何更多选定的查找事件组,则从块1211获取'Y'分支,并且在块1204选择下一组。当如此分析所有组时,从块1211获取'N'分支,并且完成了对简档数据的分析。
应当理解,在以上描述和图12的图示中,为了便于理解,示出并描述了各种动作以顺序执行。但是,为了提高系统效率,可以通过将跟踪数据的多次扫描组合到单个扫描中来同时执行许多这些操作。还将理解,可以改变某些动作的顺序而不影响生成简档摘要记录的结果。最后,应当理解,用于分析查找事件和先行查找预测事件的简档数据形式可能有许多变化,并且这里描述的查找事件概要记录仅表示可以使用的简档数据的一些可能形式。简档记录可能具有其他或额外的字段;可以基于跟踪数据以外的数据或包含跟踪数据;可以以不同的方式表征数据流应用程序行为;等等。
执行期间的早期查找操作
根据一个或多个实施例,在由对应的查找事件概要记录标识的一个或多个触发位置处的每个插入相应的触发器。在执行期间遇到触发器或者是查找预测事件,或者根据在适用的查找事件概要记录中指定的参数和/或从其导出的数据来验证查找预测事件。响应于检测到查找预测事件,在对查找数据的实际需求之前执行查找操作,并且将查找数据提供给预测为需要它的处理元件可访问的缓冲器或高速缓存。如果延迟数据指示延迟是可行的,则查找操作可以延迟超出查找预测事件的第一指示,而不会导致预测需要查找数据的处理元件等待数据。
在一个或多个实施例中,在启动数据流应用程序时和/或此后不时,流管理器134访问查找事件概要记录526以在管理系统105中生成查找掩码521和一个或多个触发参数数据集522。查找掩码的本地副本是查找,然后将触发参数数据集发送到各种计算节点110。这些数据结构的本地副本旨在是在计算节点存储器300中维护并管理在计算节点110中的各种处理元件311的执行的状态数据结构。
图13是根据各种实施例的在高级别示出生成或更新管理执行期间的查找操作的状态数据结构的过程的流程图。参考图13,流管理器134检测用于初始化/更新状态数据的条件,该状态数据在数据流应用程序的执行期间管理预期查找操作(块1301)。条件可能是数据流应用程序的初始化。或者,可以不时地更新状态数据以考虑系统配置的变化,工作负载变化,性能调整等等。这可以根据固定的时间表,和/或当检测到可能指示需要它的某些事件时,例如系统配置的改变,来完成。流管理器本身不一定会检测到这种情况,但可能只是接收外部命令来重置或更新查找状态数据。
在检测到适当条件后,流管理器访问操作符图132以初始化查找掩码521(块1302)。初始化查找掩码,禁用所有处理元件或其他实体。在一个或多个实施例中并且如本文所述,查找掩码和查找事件概要记录都具有处理元件的粒度,即,对于每个处理元件存在单独的掩码位,并且对一个或更多处理元件存在单独的查找事件概要记录。然而,应该理解,掩码和/或查找事件概要记录的粒度可以是不同的。例如,处理元件中的每个操作符可以有单独的掩码位和/或至少一些操作符具有单独的查找事件概要记录。
如果尚未选择任何查找事件概要记录526(来自块1303的“Y”分支),则流管理器选择并检索下一个查找事件概要记录(块1304)。
流管理器134确定预测查找概率阈值以用于决定是否对当前查找事件概要记录执行预期查找(块1305)。如果预测的数据需求概率超过阈值,则应执行查找操作。在一个或多个实施例中,阈值可以根据多个动态因子而变化,因此在运行时确定。这些因素可能包括以下任何一个或全部:(a)当前活动级别,特别是在查找中使用的I/O通道上的I/O活动,其中较高的当前活动级别表示预期查找操作的更高的开销成本,因此阈值更高;(b)由查找检索的数据量,其再次与查找的开销成本相关,更大量的数据指示更高的阈值;(c)缓冲区中缓冲存储器的大小以接收查找的数据,较小的缓冲区大小表示由于缓冲区争用的可能性较大而导致的阈值较高;(d)执行查找操作的时间长度,查找时间越长表示未能查找实际需要的数据的成本越高,因此阈值越低。可以使用其他或其他因素。将观察到,由于这些动态因素,概率阈值对于不同的查找操作可能是不同的,并且对于相同的查找操作可能随着时间而变化。然而,在一个或多个替代实施例中,使用固定概率阈值,使得块1305不必要。
然后,流管理器确定对于所选查找事件概要记录1101是否满足查找概率阈值(块1306)。在这种情况下,记录的查找概率是查找事件1105的数量与内部元组1104的数量的比率,表示给定触发位置1102的相应的内部元组类型1103的内部元组的出现的情况下,随后的查找操作将是必要的的近似概率。如果该比率超过先前确定的查找概率阈值,则从块1306获取“Y”分支,并且创建对应的触发参数数据集(块1308)。
在块1308处创建的触发参数数据集是查找事件概要记录1101中的数据的缩略版本,其仅包含在运行时期间管理预期查找操作所需的内容。由于流管理器已经确定满足概率阈值,因此在块1308创建的触发参数数据集不必包含概率数据、关键字段或关键字段细节、外部状态变量Ids或外部状态变量细节。数据集的存在表明应该执行相应的预期查找操作。流管理器然后继续到块1310。
如果在块1306处,记录的查找概率不超过查找概率阈值,则从块1306获取“N”分支。在这种情况下,检查查找事件概要记录1101中的任何关键字段细节1110或外部状态变量细节1115以确定对应概率1110或1115是否超过阈值。超过查找概率阈值的这种概率指示尽管在触发位置1102处内部类型字段1103中指定的类型的随机元组的出现并不表示后续查找事件的足够高概率,但是如果关键字段和/或者外部状态变量具有在适用的关键字段细节1110或外部状态变量细节1115中指定的范围内的对应值,则后续查找事件的概率确实满足阈值,并且应该执行预期查找操作。因此,从块1307获取'Y'分支,并且创建对应的触发参数数据集(块1309)。
在一个实施例中,如果没有单个关键字段或外部状态变量细节满足查找概率阈值,则可以在块1306评估复合条件。例如,即使相应的不同关键字段或外部状态变量的两个单独条件不单独满足查找概率阈值,也可以根据个体概率数据(例如,先前事件的数量和所需的后续查找的数量的计数)对两个条件的逻辑AND的查找概率进行估计,并与查找概率阈值进行比较。
在块1309处创建的触发参数数据集类似于在块1308处创建的触发参数数据集,但是包含用于指定适用的关键字段和/或外部状态变量条件的附加数据。与在块1308处创建的触发参数数据集的情况一样,不必在触发参数数据集中指定实际概率,仅指定满足查找概率阈值的条件。可以存在多个条件,其可以被指定为多个逻辑OR,其中每个逻辑条件可以包括一个或多个逻辑AND条件。流管理器然后继续到块1310。
在块1310,然后对于在所选择的查找事件记录1101的触发位置字段1102中识别的位置启用查找掩码521中的对应掩码位。该掩码位使得能够在执行期间触发查找操作。
在一个或多个实施例中,流管理器还使用延迟参数1107来确定在触发位置1102
(先行查找预测事件)以及要执行的查找操作中的随后查找操作中遇到在内部元组字段1103中识别的类型的元组的时间之间是否存在足够的延迟时间间隔(方块1311)。即,假设在检测到触发位置处的元组时立即启动预期查找操作,则在到元组需要在字段1106中识别的查找位置中查找数据时,查找操作将完成。由于历史查找时间和流延迟时间将变化,延迟参数优选地提供足够的数据以使投影达到某种期望的置信度。例如,可以提供延迟时间和查找时间的平均值和标准偏差,使得如果一些查找操作的百分比(例如90%)按时完成,则延迟时间间隔被认为是“足够的”。如果认为延迟时间足够,则触发参数记录如此标记。该确定用于修剪已经针对下面的块1312-1319解释的某些过早触发参数数据集。流管理器返回到块1303以选择下一个记录。
如果在块1307处,关键字段细节或外部状态变量细节(或其组合)都没有指示查找概率超过查找概率阈值,则从块1307获取“N”分支。在这种情况下,查找掩码不会改变(即,对相应的触发位置保持禁用状态),并且不会创建相应的触发器参数数据集。结果,在执行期间,将不从当前触发位置1102执行查找。流管理器然后返回到块1303以考虑下一个查找事件记录。
当如此检查和处理所有查找事件记录时,从块1303获取'N'分支。流管理器然后修剪某些冗余或过早的触发参数数据集并禁用相应的掩码位,如块1312-1319所示。
执行修剪以通过减少查找操作的触发来提高执行效率。在要求查找数据之前,给定类型的内部元组通过多个处理元件的情况下,这些处理元件中的多个处理元件以及可能所有处理元件都可能具有满足查找概率阈值的相应查找事件记录,并因此启用触发器掩码中的相应位并创建触发参数数据集。如果没有修剪,结果将是在执行期间在多个处理元件中的每一个处触发预期查找(尽管其他机制,例如I/O操作队列,可以避免执行重复操作)。这有两个不良影响。首先,在某些情况下,当等待直到元组到达第一个下游的第二个处理元件时,可能会在第一个处理元件中提前触发查找操作,这可能会减少查找操作的数量(由于元组的更改/删除)和/或使查找的数据更新。其次,可以在相同数据的不同处理元件中多次触发查找。
流管理器检查触发参数数据集以进行可能的修剪。这可以以任何顺序完成,尽管一些命令(例如,向后遍历操作符图)可能更有效。如果还有任何未被选择用于修剪分析的触发参数数据集(来自块1312的'Y'分支),则流管理器选择下一个数据集(块1313)。
识别操作符图中的所选数据集的直接后继者处理元件(块1314)。“直接后继者”是接下来接收在所选数据集中识别的类型的内部元组的处理元件。通常,只有一个直接后继者,尽管可能有多个后继者,表示操作符图数据流中的分支。如果对于所有直接后继者,在相应处理元件中发生查找预测元组与后续查找事件之间的延迟时间间隔大于执行查找所需的时间(如先前在块1311所确定的),或者那里没有相应的触发参数数据集(指示特定路径的查找概率低),然后从块1315获取'Y'分支,并且修剪当前选择的触发参数数据集并且禁用触发掩码521中的相应掩码位(方块1316)。修剪是合适的,因为查找操作可以等待在后继处理元件中执行。在修剪之后,流管理器返回到块1312以选择下一个触发参数数据集。
如果在块1315,立即后继者没有足够的延迟时间间隔来执行查找操作,则采用“N”分支。在这种情况下,不修剪当前选择的数据集,因为至少早在对应于当前选择的数据集的处理元件时就应该执行查找。如果立即后继者的触发参数数据集不包含当前所选触发参数数据集的条件中包含的条件(即,包含不一定由当前触发参数数据集触发的新条件),则从块1317获取“N”分支,并且在块1312处选择下一个触发参数数据集。如果立即继承者的触发参数数据集包含包括在当前选择的触发参数数据集的条件中的条件,则从块1317获取'Y'分支,并修剪后继者的触发参数数据集,并禁用触发掩码521中的相应掩码位(方块1318)。这样做的原因是后继者执行的任何查找都将重复当前所选触发器参数数据集执行的查找。识别出被修剪的直接后继的所有下游后继,并且如果它们类似地包含当前选择的触发参数数据集的条件中包括的条件,则它们被类似地修剪并且触发掩码521中的相应掩码位也被禁用(块1319)。流管理器然后返回到块1312以选择下一个触发参数数据集。
因此当有必要审查和修剪所有触发参数数据集时,从块1312获取'N'分支。然后流管理器将触发掩码521的本地副本和触发参数数据集522发送到每个计算节点(块1320),其中它们分别作为本地触发掩码321和本地触发参数数据集322存储。本地副本仅包含接收计算节点所需的屏蔽位/数据集。然后生成/更新控制查找操作的状态数据结构的过程在运行时结束。
在初始化之后,数据流应用程序在每个处理元件中执行,因为数据(以元组的形式)到达处理元件,并使用本地触发掩码321和本地触发参数数据集322来识别用于触发预期的查找操作的适当条件。图14是示出数据流应用程序的示例性处理元件311的执行过程的流程图,其中根据各种实施例,处理元件可以在适当的情况下使用本地触发掩码321和本地触发参数数据集触发预期查找操作。
参考图14,遍历操作符图的元组到达示例性处理元件中以进行处理(块1401)。在进入处理元件时,执行的公共运行时代码614中的预期查找指令616检查本地触发掩码321(块1402)。虽然这种检查在图14中示出并且在本文中描述为在进入处理元件时执行,但是应该理解,它可以替代地在将始终执行的处理元件的代码中的退出处或任何位置处执行。
如果设置了相应的触发位,则从块1402获取“Y”分支,并且查找指令616访问本地触发参数数据集322以找到触发位置是当前处理元件的任何数据集(方块1403)。可能存在多于一个这样的数据集,即,从同一处理元件触发的多于一个查找操作。触发参数数据集指定触发的条件。如果满足任何条件,则从块1404获取'Y'分支,并且查找指令616使用触发参数数据集中的查找描述符数据和/或可用的附加数据(例如,来自元组)来启动查找操作(块1405)。这可以是,例如,通过对由查找描述符定义的存储器中的地址寻址,通过网络将请求发送到由查找描述符定义的数据定义的查找描述符的实体,或者以其他方式。如果没有满足条件,则从块1404获取'N'分支,并且绕过块1405。
然后,处理元件继续在元组上执行。在该示例性实施例中,处理元件调用操作符A、B和C,如块1406-1408所示。操作符可以顺序执行或并行执行,操作符的数量可以变化。当所有操作符都已完成执行时,元组的处理完成。
在上述各种实施例中,可能在实际需要出现之前对相同数据执行相同的查找操作多次。尽管关于图13描述了修剪可能导致冗余查找操作的冗余触发参数数据集的尝试,但是修剪不能总是保证不存在冗余查找。超出本公开范围的其他机制可以减少冗余查找操作的数量。例如,操作系统可以维护正在进行的存储访问操作的记录,从其可以防止对相同存储位置的冗余访问。在最坏的情况下,可能存在一些冗余查找操作,导致存储信道,网络带宽等的小的额外使用。
替代查找预测事件
在上述各种实施例中,查找预测事件是在操作符图中的指定位置中出现指定类型的元组。在某些情况下,单独出现元组是触发查找操作的充分条件。在其他情况下,除了元组的出现之外,一个或多个元组属性和/或外部状态变量必须满足指定条件以触发查找操作。
然而,在一个或多个替换实施例中,查找操作不需要由特定操作符图位置处的特定元组类型触发,而是由执行期间可能检测到的其他条件触发。例如,对数据需求的预测可以至少部分地基于数据流应用程序的历史数据检索模式。这种历史模式可以包括以下中的任何一个或全部:(a)通常检索数据元件的日/周中的时间;(b)特定事件发生后的时间;(c)存在某些条件;或(d)与其他数据检索的相关性。可以通过分析简档数据来检测这些历史数据模式中的任何一个或全部,并且可以使用适当的数据结构和/或触发机制来响应于先行查找预测事件来触发查找操作。
其他变化
尽管上面已经将一系列步骤描述为一个或多个优选和/或替代实施例,但是应当理解,用于减少由查找操作引起的数据流应用程序中的延迟的技术的许多变型是可能的。具体地,可以以不同的顺序执行一些步骤,可以使用不同的数据结构,和/或可以采用不同的硬件或软件资源来执行本文描述的功能。此外,尽管某些公式、阈值、逻辑条件等可能已被公开为一个或多个实施例,但应理解,这些公式、阈值、逻辑条件等及其变型仅是一些可能的实施例。,也可以使用其他技术。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。计算机可读存储介质的示例在图2中示为系统存储器202和数据存储设备225-227。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
除非与本发明不一致或以其他方式限定,用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方块以及流程图和/或框图中各方块的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方块中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方块中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方块中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方块可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方块中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方块实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方块、以及框图和/或流程图中的方块的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
尽管已经公开了本发明的特定实施例以及某些替代方案,但是本领域技术人员将认识到,可以在所附权利要求的范围内进行形式和细节上的附加变化。

Claims (20)

1.一种计算机执行的方法,包括:
使用查找预测概要数据来识别数据流应用程序执行期间发生的至少一个查找预测事件,每个查找预测事件预测将需要由所述数据流应用程序的相应处理元件检索的相应数据;
响应于在所述数据流应用程序的当前执行实例期间,检测到由所述使用查找预测概要数据识别的查找预测事件的发生以识别至少一个查找预测事件,在所述数据流应用程序的当前执行实例期间,启动对所述查找预测事件预测的所述相应数据的检索,该相应数据需要由所述数据流应用程序的相应处理元件检索,其中在相应处理元件确定需要相应的数据之前执行所述相应数据的启动检索。
2.如权利要求1所述的计算机执行的方法,其中所述查找预测概要数据包括通过从所述数据流应用程序的至少一个执行实例收集跟踪数据而获得的数据,以及分析所收集的跟踪数据以产生查找预测概要数据。
3.如权利要求2所述的计算机执行的方法,其中所述查找预测概要数据包括多个查找事件概要记录,每个查找事件概要记录对应于所述数据流应用程序内的相应元组和相应元组的相应位置,以及包含在所述数据流应用程序内的相应位置处由投影所述相应元组产生的查找操作的相应数据。
4.如权利要求3所述的计算机执行的方法,其中每个所述查找事件概要记录包含至少一个与投影的查找操作相关联的概率值。
5.如权利要求3所述的计算机执行的方法,其中每个所述查找事件概要记录包含用于确定在检测到对应的查找预测事件之后是否可以延迟查找操作的延迟数据。
6.如权利要求1所述的计算机执行的方法,其中所述查找预测事件包括在所述数据流应用程序的操作符图中的指定位置处检测到的指定类型的元组。
7.如权利要求6所述的计算机执行的方法,其中所述查找预测事件还包括指定范围内的属性值,该属性是在所述操作图中的所述指定位置处检测到的所述指定类型的元组的属性。
8.如权利要求6所述的计算机执行的方法,其中所述查找预测事件还包括至少一个外部状态变量的值。
9.如权利要求1所述的计算机执行的方法,还包括:
对于在所述数据流应用程序执行期间发生的至少一个查找预测事件中的每一个,确定在检测到对应的查找预测事件之后是否可以延迟相应的查找操作。
10.如权利要求9所述的计算机执行的方法,
其中,所述对于在所述数据流应用程序执行期间发生的至少一个查找预测事件中的每一个,确定在检测到对应的查找预测事件之后是否可以延迟相应的查找操作,在检测到所述相应的查找预测事件之后确定是否可以延迟所述相应的查找操作;
其中至少一些所述查找预测事件对应于第一查找操作;以及
其中,所述计算机执行的方法还包括:使用在检测到所述相应的查找预测事件之后,确定是否可以延迟所述相应的查找操作的确定,以选择对应于所述第一查找操作的至少一些查找预测事件中的至少一个,以引起第一查找操作的启动,并禁用对应于所述第一查找操作的至少一些查找预测事件中的至少一个,防止引起所述第一查找操作的启动。
11.一种非暂时性计算机可读介质,其上记录有具有多个计算机可执行指令的计算机程
序,其中所述计算机程序在由至少一个计算机系统执行时,使所述至少一个计算机
系统执行的动作包括:
使用查找预测概要数据来识别数据流应用程序执行期间发生的至少一个查找预测事件,每个查找预测事件预测将需要由所述数据流应用程序的相应处理元件检索的相应数据;
响应于在所述数据流应用程序的当前执行实例期间,检测到由所述使用查找预测概要数据识别的查找预测事件的发生以识别至少一个查找预测事件,在所述数据流应用程序的当前执行实例期间,启动对所述查找预测事件预测的所述相应数据的检索,该相应数据需要由所述数据流应用程序的相应处理元件检索,其中在相应处理元件确定需要相应的数据之前执行所述相应数据的启动检索。
12.如权利要求11所述的非暂时性计算机可读介质,其中所述查找预测概要数据包括通过从所述数据流应用程序的至少一个执行实例收集跟踪数据而获得的数据,以及分析所收集的跟踪数据以产生查找预测概要数据。
13.如权利要求12所述的非暂时性计算机可读介质,其中所述查找预测概要数据包括多个查找事件概要记录,每个查找事件概要记录对应于所述数据流应用程序内的相应元组和相应元组的相应位置,以及包含在所述数据流应用程序内的相应位置处由投影所述相应元组产生的查找操作的相应数据。
14.如权利要求11所述的非暂时性计算机可读介质,其中所述查找预测事件包括在所述数据流应用程序的操作符图中的指定位置处检测到的指定类型的元组。
15.如权利要求14所述的非暂时性计算机可读介质,其中所述查找预测事件还包括以下中的至少一个:(a)指定范围内的属性值,所述属性是在所述操作图中的所述指定位置处检测到的指定类型的元组的属性,以及(b)至少一个外部状态变量的值。
16.一种支持数据流应用程序的执行的数据处理装置,包括:
至少一个物理处理器;
至少一个物理存储器;
数据流应用程序,其体现为可在至少一个处理器上执行并且可存储在至少一个存储器中的指令,数据流应用程序实现具有多个处理元件的操作符图,所述多个处理元件对在所述多个处理元件的处理元件之间传输的数据元组进行操作;
预期查找功能,其体现为在所述至少一个处理器上可执行且可存储在所述至少一个存储器中的指令,其中所述预期查找功能检测在相应的先行处理元件中的相应元组的处理期间发生的至少一个查找预测事件,每个查找预测事件预测相应的数据,所述数据将需要由所述数据流应用程序的相应后续处理元件检索,所述后续处理元件在所述先行处理元件处理相应元组之后处理相应元组,并且响应于此,在相应的后续处理元件处理相应的元组之前,启动对查找预测事件预测的相应数据的检索,该相应数据需要由所述数据流应用程序的相应后续处理元件检索。
17.如权利要求16所述的数据处理装置,还包括:
一种简档数据分析功能,其体现为可在至少一个处理器上执行并且可存储在至少一个存储器中的指令,其中所述简档数据分析功能分析从所述数据流应用程序的至少一个执行实例收集的跟踪数据以产生查找预测概要数据,所述预期查找功能使用所述查找预测概要数据来识别至少一个查找预测事件。
18.如权利要求17所述的数据处理装置,其中所述查找预测概要数据包括多个查找事件概要记录,每个查找事件概要记录对应于相应元组和在所述数据流应用程序内的所述相应元组的相应位置,并且包含由所述数据流应用程序内的相应位置处的所述相应元组产生的投影查找操作的相应数据。
19.如权利要求16所述的数据处理装置,包括:
多个计算机系统,每个计算机系统具有相应的至少一个物理处理器和相应的物理存储器;以及
至少一个网络,支持所述多个计算机系统之间的数据通信;
其中所述多个计算机系统中的每个计算机系统包含所述数据流应用程序的至少一个相应节点。
20.如权利要求19所述的数据处理装置,
其中所述多个计算机系统包括支持流管理器的执行的管理系统;以及
其中所述流管理器生成标识查找预测事件的数据以供所述预期查找功能使用。
CN201780082576.9A 2017-01-13 2017-12-04 减少数据流应用程序中的流延迟 Active CN110168519B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/406,296 US10417239B2 (en) 2017-01-13 2017-01-13 Reducing flow delays in a data streaming application caused by lookup operations
US15/406,296 2017-01-13
PCT/EP2017/081297 WO2018130341A1 (en) 2017-01-13 2017-12-04 Reducing flow delays in a data streaming application

Publications (2)

Publication Number Publication Date
CN110168519A true CN110168519A (zh) 2019-08-23
CN110168519B CN110168519B (zh) 2023-05-26

Family

ID=60627614

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780082576.9A Active CN110168519B (zh) 2017-01-13 2017-12-04 减少数据流应用程序中的流延迟

Country Status (6)

Country Link
US (4) US10417239B2 (zh)
JP (1) JP6899064B2 (zh)
CN (1) CN110168519B (zh)
DE (1) DE112017006806T5 (zh)
GB (1) GB2572923B (zh)
WO (1) WO2018130341A1 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8555265B2 (en) 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US9836467B1 (en) 2016-10-31 2017-12-05 International Business Machines Company Altering in-flight streamed data from a relational database
US10417239B2 (en) 2017-01-13 2019-09-17 International Business Machines Corporation Reducing flow delays in a data streaming application caused by lookup operations
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10691489B2 (en) 2018-01-29 2020-06-23 International Business Machines Corporation Managing the processing of streamed data in a data streaming application using query information from a relational database
US11204926B2 (en) 2018-10-31 2021-12-21 International Business Machines Corporation Storing partial tuples from a streaming application in a database system
US11113270B2 (en) 2019-01-24 2021-09-07 EMC IP Holding Company LLC Storing a non-ordered associative array of pairs using an append-only storage medium
US11176149B2 (en) * 2019-08-13 2021-11-16 International Business Machines Corporation Predicted data provisioning for analytic workflows
US11604759B2 (en) 2020-05-01 2023-03-14 EMC IP Holding Company LLC Retention management for data streams
US11599546B2 (en) * 2020-05-01 2023-03-07 EMC IP Holding Company LLC Stream browser for data streams
US11340834B2 (en) 2020-05-22 2022-05-24 EMC IP Holding Company LLC Scaling of an ordered event stream
US11360992B2 (en) 2020-06-29 2022-06-14 EMC IP Holding Company LLC Watermarking of events of an ordered event stream
US11599420B2 (en) 2020-07-30 2023-03-07 EMC IP Holding Company LLC Ordered event stream event retention
US11340792B2 (en) 2020-07-30 2022-05-24 EMC IP Holding Company LLC Ordered event stream merging
US11403268B2 (en) * 2020-08-06 2022-08-02 Sap Se Predicting types of records based on amount values of records
US11513871B2 (en) 2020-09-30 2022-11-29 EMC IP Holding Company LLC Employing triggered retention in an ordered event stream storage system
US11354444B2 (en) 2020-09-30 2022-06-07 EMC IP Holding Company LLC Access control for an ordered event stream storage system
US11755555B2 (en) 2020-10-06 2023-09-12 EMC IP Holding Company LLC Storing an ordered associative array of pairs using an append-only storage medium
US11599293B2 (en) 2020-10-14 2023-03-07 EMC IP Holding Company LLC Consistent data stream replication and reconstruction in a streaming data storage platform
US11354054B2 (en) 2020-10-28 2022-06-07 EMC IP Holding Company LLC Compaction via an event reference in an ordered event stream storage system
US11347568B1 (en) 2020-12-18 2022-05-31 EMC IP Holding Company LLC Conditional appends in an ordered event stream storage system
US11816065B2 (en) 2021-01-11 2023-11-14 EMC IP Holding Company LLC Event level retention management for data streams
US11526297B2 (en) 2021-01-19 2022-12-13 EMC IP Holding Company LLC Framed event access in an ordered event stream storage system
US11740828B2 (en) 2021-04-06 2023-08-29 EMC IP Holding Company LLC Data expiration for stream storages
US12001881B2 (en) 2021-04-12 2024-06-04 EMC IP Holding Company LLC Event prioritization for an ordered event stream
US11513714B2 (en) 2021-04-22 2022-11-29 EMC IP Holding Company LLC Migration of legacy data into an ordered event stream
US11954537B2 (en) 2021-04-22 2024-04-09 EMC IP Holding Company LLC Information-unit based scaling of an ordered event stream
US11681460B2 (en) 2021-06-03 2023-06-20 EMC IP Holding Company LLC Scaling of an ordered event stream based on a writer group characteristic
US11735282B2 (en) 2021-07-22 2023-08-22 EMC IP Holding Company LLC Test data verification for an ordered event stream storage system
US11971850B2 (en) 2021-10-15 2024-04-30 EMC IP Holding Company LLC Demoted data retention via a tiered ordered event stream data storage system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013113575A1 (en) * 2012-02-01 2013-08-08 International Business Machines Corporation Deploying an executable with historical performance data
CN103345480A (zh) * 2013-06-19 2013-10-09 西北工业大学 一种基于规则合并的数据流预测方法
CN103635896A (zh) * 2011-05-04 2014-03-12 谷歌公司 预测用户导航事件
US20140136175A1 (en) * 2012-11-09 2014-05-15 International Business Machines Corporation Identifying and routing poison tuples in a streaming application
EP2823412A1 (en) * 2012-03-08 2015-01-14 Telefonaktiebolaget L M Ericsson (PUBL) Data stream management systems
US20150127671A1 (en) * 2013-11-01 2015-05-07 International Business Machines Corporation Managing a template in an operator graph

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3401130B2 (ja) 1995-11-17 2003-04-28 富士通株式会社 フライトストリプス管理方法及びシステム
US6353821B1 (en) 1999-12-23 2002-03-05 Bull Hn Information Systems Inc. Method and data processing system for detecting patterns in SQL to allow optimized use of multi-column indexes
US20070136254A1 (en) 2005-12-08 2007-06-14 Hyun-Hwa Choi System and method for processing integrated queries against input data stream and data stored in database using trigger
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
JP4804233B2 (ja) * 2006-06-09 2011-11-02 株式会社日立製作所 ストリームデータ処理方法
US7774336B2 (en) 2007-09-10 2010-08-10 International Business Machines Corporation Adaptively reordering joins during query execution
DE102007043262A1 (de) 2007-09-11 2009-03-12 Continental Automotive Gmbh Datenverarbeitungsvorrichtung für ein eingebettetes System
JP5198929B2 (ja) 2008-04-25 2013-05-15 株式会社日立製作所 ストリームデータ処理方法及び計算機システム
JPWO2009153945A1 (ja) 2008-06-19 2011-11-24 パナソニック株式会社 通信経路構築装置及びn−ツリー構築方法
JP5149840B2 (ja) 2009-03-03 2013-02-20 株式会社日立製作所 ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置
US8458650B2 (en) 2010-03-29 2013-06-04 International Business Machines Corporation Injecting a fault into a stream operator in a data stream processing application
US8639809B2 (en) 2010-08-20 2014-01-28 International Business Machines Corporation Predictive removal of runtime data using attribute characterizing
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US8959313B2 (en) 2011-07-26 2015-02-17 International Business Machines Corporation Using predictive determinism within a streaming environment
US9361342B2 (en) 2011-10-10 2016-06-07 Hewlett Packard Enterprise Development Lp Query to streaming data
WO2014030682A1 (ja) 2012-08-24 2014-02-27 旭硝子株式会社 強化ガラス
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
JP2014229044A (ja) 2013-05-22 2014-12-08 株式会社フィックスターズ データ処理装置のデータ取得を高速化するためのプログラム、記録媒体および装置
US9298485B2 (en) 2013-11-19 2016-03-29 International Business Machines Corporation Maintaining virtual machines for cloud-based operators in a streaming application in a ready state
JP2015158757A (ja) 2014-02-24 2015-09-03 三菱電機株式会社 データ活用装置
US10089362B2 (en) * 2014-08-13 2018-10-02 Software Ag Systems and/or methods for investigating event streams in complex event processing (CEP) applications
US10042891B2 (en) * 2015-05-08 2018-08-07 International Business Machines Corporation Windowing across operators in a streaming environment
EP3515427A4 (en) 2016-09-26 2020-10-14 Qingdao Primedicine Pharmaceutical Co., Ltd ALLOSTERIC N-METHYL-D-ASPARATE RECEPTOR MODULATORS AND METHOD OF USE
US9836467B1 (en) 2016-10-31 2017-12-05 International Business Machines Company Altering in-flight streamed data from a relational database
US10025826B2 (en) 2016-10-31 2018-07-17 International Business Machines Corporation Querying in-flight streamed data from a relational database
US10127283B2 (en) 2016-10-31 2018-11-13 International Business Machines Corporation Projecting effect of in-flight streamed data on a relational database
US10417239B2 (en) 2017-01-13 2019-09-17 International Business Machines Corporation Reducing flow delays in a data streaming application caused by lookup operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103635896A (zh) * 2011-05-04 2014-03-12 谷歌公司 预测用户导航事件
WO2013113575A1 (en) * 2012-02-01 2013-08-08 International Business Machines Corporation Deploying an executable with historical performance data
EP2823412A1 (en) * 2012-03-08 2015-01-14 Telefonaktiebolaget L M Ericsson (PUBL) Data stream management systems
US20140136175A1 (en) * 2012-11-09 2014-05-15 International Business Machines Corporation Identifying and routing poison tuples in a streaming application
CN103345480A (zh) * 2013-06-19 2013-10-09 西北工业大学 一种基于规则合并的数据流预测方法
US20150127671A1 (en) * 2013-11-01 2015-05-07 International Business Machines Corporation Managing a template in an operator graph

Also Published As

Publication number Publication date
DE112017006806T5 (de) 2019-10-02
WO2018130341A1 (en) 2018-07-19
US10417239B2 (en) 2019-09-17
US20190340180A1 (en) 2019-11-07
US11204928B2 (en) 2021-12-21
JP2020505667A (ja) 2020-02-20
GB201910680D0 (en) 2019-09-11
US20180203906A1 (en) 2018-07-19
US20180203904A1 (en) 2018-07-19
GB2572923A (en) 2019-10-16
CN110168519B (zh) 2023-05-26
JP6899064B2 (ja) 2021-07-07
US10515080B2 (en) 2019-12-24
US20200065309A1 (en) 2020-02-27
US11210298B2 (en) 2021-12-28
GB2572923B (en) 2022-05-04

Similar Documents

Publication Publication Date Title
CN110168519A (zh) 减少数据流应用程序中的流延迟
Giatrakos et al. Complex event recognition in the big data era: a survey
JP6985279B2 (ja) パターン分解を通してデータ変換を推論するためのシステムおよび方法
US11481253B2 (en) Managing the processing of streamed data in a data streaming application using query information from a relational database
US10318496B2 (en) Managing a database management system using a set of stream computing data
CN104903894B (zh) 用于分布式数据库查询引擎的系统和方法
US10049136B1 (en) Managing a stream computing environment using a projected database object
US10127283B2 (en) Projecting effect of in-flight streamed data on a relational database
US10885050B2 (en) Altering in-flight streamed data from a relational database
US10025826B2 (en) Querying in-flight streamed data from a relational database
Ziehn Complex event processing for the internet of things
Foroni Putting Data Quality in Context. How to generate more accurate analyses
Dilrukshi STHITHIKA cost-based query distribution with query re-writing distributed complex event processing systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant