CN103403699B - 估算流数据库应用中的负荷削减数据的***和方法 - Google Patents

估算流数据库应用中的负荷削减数据的***和方法 Download PDF

Info

Publication number
CN103403699B
CN103403699B CN201280009310.9A CN201280009310A CN103403699B CN 103403699 B CN103403699 B CN 103403699B CN 201280009310 A CN201280009310 A CN 201280009310A CN 103403699 B CN103403699 B CN 103403699B
Authority
CN
China
Prior art keywords
tuple
data
value
stream
load
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.)
Active
Application number
CN201280009310.9A
Other languages
English (en)
Other versions
CN103403699A (zh
Inventor
J.桑托苏奥索
E.L.巴斯尼斯
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 CN103403699A publication Critical patent/CN103403699A/zh
Application granted granted Critical
Publication of CN103403699B publication Critical patent/CN103403699B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了用于处理包含数据元组的数据流的技术,其中一些数据元组是负荷削减。负荷削减是指例如当接收的数据量变得过于庞大而难以管理时,选择性地丢弃一些数据元组的过程。当调用依赖于负荷削减元组的值(或计数)的操作时,可以使用负荷削减元组的值(或计数)来进行这类操作。例如,聚合操作可以返回与由流应用的节点处理的多个元组相关联的总数、平均、中值和/或方差。

Description

估算流数据库应用中的负荷削减数据的***和方法
技术领域
本发明的实施例针对数据处理。特别地,本发明的实施例针对数据处理流,其中所述流中的一些数据是负荷削减(loadshed)。
背景技术
当计算机数据库已经变得极其复杂时,置于数据库***上的计算需求已经快速增长。数据库***典型地被配置以将存储数据的过程与访问、操纵或使用数据库中存储的数据分开。更具体地,数据库使用其中数据首先被存储、随后被索引、然后被查询的模型。然而,该模型不能满足一些实时应用的性能需求。例如,数据库***能够接收和存储到来的数据的速率可以限制能够处理多少数据或在其它方面估算多少数据,这继而限制被配置以实时处理大量数据的数据库应用的功用。
为了解决该问题,基于流的计算和基于流的数据库计算正在作为用于数据库***的发展中的技术而出现。并且也有可用的产品,其允许用户创建在流数据到达数据文件之前处理和询问流数据的应用。使用该出现的技术,当入库数据(inbounddata)记录“在路上(inflight)”时,用户可以指定处理逻辑以应用于入库数据记录,可在几毫秒内得到结果。使用该类型的处理构建应用已经打开了新的编程范例,其将允许开发较宽种类的创新应用、***和处理、以及当前对应用编程者和数据库开发者的新的挑战。
数据流可以提供从源处理单元到目的地处理单元的连续数据元组(tuple)流。在一些情况下,当数据元组从源行进到目的地时,存在数据元组通过的几个处理单元。
在一些情况下,传送数据元组,从而在处理单元之一处的处理中发生瓶颈。
发明内容
本发明的一个实施例提供了一种在具有负荷削减的基于流的计算***中实现的方法。该方法可以包括接收由该基于流的计算***的流节点处理的多个到来的元组,并且处理所接收的多个到来的元组的一个或多个。当确定已经满足负荷削减元组(loadsheddedtuple)的至少一个条件时,在接收到时丢弃一个或多个元组。该方法还可包括调用至少部分地依赖于一个或多个被处理的元组和被丢弃的一个或多个元组的操作。
另一个实施例提供了一种存储应用的计算机可读存储介质,其当在具有负荷削减的基于流的计算***中的处理器上执行时,执行操作。该操作通常可以包括接收由该基于流的计算***的流节点处理的多个到来的元组,以及处理所接收的多个到来的元组的一个或多个。当确定已经满足负荷削减元组的至少一个条件时,一个或多个元组在接收时被丢弃。该操作还可包括调用至少部分地依赖于一个或多个被处理的元组和被丢弃的一个或多个元组的操作。
而本发明的又一个实施例提供了一种具有处理器以及存储应用程序的存储器的***,当该应用程序在所述处理器上执行时,在具有负荷削减的基于流的计算***中进行操作。该操作通常可以包括接收由该基于流的计算***的流节点处理的多个到来的元组,以及处理所接收的多个到来的元组的一个或多个。当确定已经满足负荷削减元组的至少一个条件时,在接收到时丢弃一个或多个元组。该操作还可包括调用至少部分地依赖于一个或多个被处理的元组和被丢弃的一个或多个元组的操作。
附图说明
为了使以上引用的方面所实现的方式可以被详细地理解,可以参照附图对以上简要概括的本发明的实施例进行更具体地描述,在附图中:
图1A-1B示出根据本发明的一个实施例的被配置以执行流数据库应用的计算基础架构;
图2示出根据本发明的一个实施例的计算节点;
图3示出根据本发明的一个实施例的管理***;
图4示出根据本发明的一个实施例的流节点;
图5示出根据本发明的一个实施例的调用需要负荷削减元组(loadshedtuple)的值的操作(operation)的方法;
图6是根据本发明的是一个实施例的调用需要负荷削减元组的位置的标点(punctuation)操作的方法。
具体实施方式
本发明的实施例提供了用于处理包含数据元组的数据流的技术,其中一些数据元组是负荷削减(loadshed)的。负荷削减是指例如当接收的数据量变得不堪重负而难以管理时、选择性地丢弃一些数据元组的过程。现有技术中已知各种负荷削减技术。例如轮叫调度(roundrobin)方法从每N个到来的元组中消除M个。更复杂的负荷削减方案试图估算到来的元组的重要性并且仅处理最重要的元组。
在处理和分析数据流时,考虑由负荷削减造成的数据丢失的影响。例如,一些流操作或处理单元可能需要来自流的元组(包括负荷削减元组)的值。这类流操作的例子包括聚合(aggregation)、连接(join)、分类以及历史分析。根据一个实施例,为了处理这类流操作,估算负荷削减元组的值,并且可以产生用于这种估算的值域(range)和置信区间(confidenceinterval)。随后,处理器基于被处理的元组的已知值以及负荷削减元组的估算值(包括所述值域和置信区间)执行流操作。
诸如标点操作的其它流操作向该流中***额外的数据(或元数据),并且依赖于负荷削减元组的位置来进行适当的执行。为了处理这些流操作,应用程序可以估算负荷削减元组的位置。该应用程序随后基于被处理的元组和负荷削减元组的估算的位置执行标点操作。
以下,参照本发明的实施例。然而,应该理解本发明不限于特定的描述的实施例。反之,以下特征和要素的任何组合,不论是否与不同的实施例相关,都被预计来实现和实践本发明。此外,尽管本发明的实施例可以取得超越其它可能的解决方案和/或超越现有技术的特别的优点,但是不论特定的优点是否通过给定的实施例取得都不对本发明进行限制。因此,以下的方面、特点、实施例和优点仅是说明性的,且除非明确在权利要求中描述,否则都不被认为是所附权利要求的要素或限制。同理,对“本发明”的引用不应被解释为对这里公开的任何发明性主题的一般化,且除非明确在权利要求中描述,否则不应该被认为是所附权利要求的要素或限制。
所属技术领域的技术人员知道,本发明的各个方面可以实现为***、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面连接的实施方式,这里可以统称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件的上下文中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其连接使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其连接使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置执行时,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
可以通过云计算基础架构向用户提供本发明的实施例。云计算通常指在网络上提供可改变大小(scalable)的计算资源。更正式地,云计算可被定义为计算能力,其提供计算资源及其下层的技术体系架构(例如服务器、存储器、网络),从而使能对可配置的计算资源的共享池的方便、经请求的访问,可以使用最少管理工作或服务提供商交互快速地提供和释放该计算资源。因此,云计算允许用户访问“云”中的虚拟计算资源(例如存储器、数据、应用甚至完全的虚拟化计算***),而不用考虑用于提供计算资源的下层的物理***(或那些***的位置)。
典型地,基于每次使用支付向用户提供云计算资源,其中仅对用户实际使用的计算资源对其收费(例如,用户消费的存储空间的量或被用户实例化的虚拟化***)。用户可以在任何时间、并跨越因特网从任何地方访问驻留在云中的任何资源。在本发明的上下文中,用户可以访问云中可用的应用或相关的数据。这样做允许用户从附接到与云连接的网络(例如因特网)的计算***访问该信息。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依赖于所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
图1A-1B示出根据本发明的一个实施例的被配置以执行流应用的计算基础架构100。如所示,计算基础架构100包括管理***105和多个计算节点1301-4,每个节点连接到通信网络120。而且,管理***105包括操作符图(operatorgraph)132和流管理器134。操作符图132代表从一个或多个源处理单元(processingelement)(PE)开始直到宿(sink)PE的流应用。数据元素流入流应用的源PE并被该PE处理。典型地,处理单元从该流接收数据元素的N-元组,并且向该流发出数据元素的N-元组(除了该流终止处的宿PE)。当然,由处理单元接收的N-元组不需要是同样的下游发出的N-元组。并且处理单元可以被配置以接收或发出除了N-元组以外的格式的数据(例如,处理单元可以交换标记为XML文档的数据)。另外,每个处理单元可被配置以对接收的元组执行任何形式的数据处理功能,包括例如向数据库表格写或进行诸如数据连接、分割、读取等的其他数据库操、以及进行其它数据分析功能或操作。
流管理器134可被配置以监控计算节点1301-4上运行的流应用以及改变操作符图132的结构。例如,流管理器134可以将处理单元(PE)从一个计算节点130移动到例如另一个计算节点,从而管理计算基础架构100中的计算节点130的处理负荷。此外,流管理器134可以通过***、移除、融合(fuse)、去融合或其它方面更改计算节点1301-4上运行的处理单元(或者什么样的数据-元组流到处理单元)来控制该流应用。
图1B示出包括计算节点1301-4上运行的十个处理单元(标为PE1-PE10)的示例操作符图。虽然处理单元可以作为独立运行的进程(具有其自己的处理ID(PID)和存储空间)而执行,多个处理单元可以被融合以作为单个进程(具有PID和存储空间)而运行。在两个(或更多)处理单元独立运行的情况下,使用网络套接字(例如,TCP/IP套接字)可以发生进程间通信。然而,当进程被融合在一起时,融合的处理单元可以使用更快速的通信技术来在处理单元(和每个处理单元中的操作符)中传送N-元组(或其它数据)。
如所示,操作符图在源PE135(标为PE1)处开始、并在宿PE1401-2(标为PE6和PE10)处结束。计算节点1301包括源PE1以及PE2和PE3。源PE1发出由PE2和PE3接收的元组。例如,PE1可以分割在元组中接收的数据元素,并将一些数据元素传送给PE2,另一些传送给PE3。流到PE2的数据导致元组被发送到计算节点1302上的PE4。并且由PE4发出的数据元组流到宿PE61401。类似地,从PE3流到PE5的数据元组也到达宿PE61401。因此,除了作为这个示例操作符图的宿之外,PE6可以被配置以进行连接操作,该操作组合从PE4和PE5接收的元组。该示例操作符图还示出从PE3流到在计算节点1303上的PE7的数据元组,其本身示出流到PE8且回环到PE7的数据元组。从PE8发出的数据元组流到计算节点1304上的PE9,其发出由宿PE101402处理的元组。
图2是根据本发明的一个实施例的图1A-1B的计算节点130的更详细的图。如所示,计算节点130非限制性地包括中央处理单元(CPU)205、网络接口215、互连220、存储器(memory,或内存)225以及存储装置(storage)230。计算节点130还可包括用于将I/O设备212(例如键盘、显示器和鼠标设备)连接到计算节点130的I/O设备接口210。
CPU205检索(retrieve)并执行存储器225中存储的编程指令。类似地,CPU205存储并检索驻留在存储器225中的应用数据。互连220被用于在CPU205、I/O设备接口210、存储装置230、网络接口215以及存储器225之间传输编程指令和应用数据。CPU205被包括以作为单个CPU、多个CPU、具有多个处理核的单个CPU等的代表。并且存储器225通常被包括以作为随机访问存储器的代表。存储装置230、诸如硬盘驱动、固态器件(SSD)或闪存存储器驱动可以存储非易失性数据。
在该示例中,存储器225包括融合的处理单元(PE)235、流节点245、负荷削减度量250。当操作符不能赶上到来的数据量时,流节点245(或流节点245上的PE)可以被配置以开始负荷削减。在这种情况下,负荷削减度量可以提供用于操作符的阈值集,诸如给定时间帧内的X数量的元组、或相对于多少元组被发送给其它操作符的、在给定时间帧内的X数量的元组。作为另一示例,流节点245可以观察到来的数据元组,并且基于数据自身,削减数据元组,例如负荷削减度量250可以规定具有值域等内的某些值或某个值的某些属性。负荷削减还可以是依赖于时间的,其中流节点245处理在某时间间隔期间接收的元组,并且然后削减在那之后到来的元组。作为又一示例,流节点245可以在到来的元组不提供新的值时负荷削减数据元组(loadsheddatatuples)。即,在一些情况下,操作符可能在被配置为寻找元组值的变化(例如,超过由负载削减度量205规定的某幅值的变化)的进程之前已经看到具有相同(或类似)信息的元组。流节点245包括操作符240的聚集(collection)。每个操作符240可以提供小块可执行代码,该代码被配置以处理流入处理单元(例如PE235)的数据,以及向该PE中的其它操作符240以及向该流应用中的其它PE发出数据。这类PE可以在同样的计算节点130上,或在经由数据通信网络120访问的其它计算节点上。流连接数据255代表计算节点130上的各个PE之间的连接(例如,TCP/IP套接字连接),以及也经由TCP/IP套接字(或其它进程间数据通信机制)通过在流应用中的上行和/或下游PE到其它计算节点130的连接。
缓冲的流数据260代表用于从上行处理单元(或从流应用的数据源)流入计算节点105的数据的存储空间。例如,缓冲的流数据可以包括等待由处理单元(诸如PE235)处理的数据元组。缓冲的流数据260还可以存储由PE235进行的数据处理的结果,该结果将被发送给下游处理单元(或在下游处理单元处的负载削减)。
图3是根据本发明的一个实施例的图1的管理***105的更详细的图。如所示,管理***105非限制性地包括中央处理单元(CPU)305、网络接口315、互连320、存储器(memory,或内存)325以及存储装置(storage)330。客户端***130还可包括将I/O设备312(例如键盘、显示器和鼠标设备)连接到管理***105的I/O设备接口310。
类似于图2的CPU205,CPU305被配置以检索(retrieve)并执行存储器325和存储装置330中存储的编程指令。类似地,CPU305被配置以存储并检索驻留在存储器325和存储装置330中的应用数据。互连320被配置以在CPU305、I/O设备接口310、存储单元330、网络接口315以及存储器325之间移动诸如编程指令和应用数据的数据。类似于CPU205,CPU305被包括以作为单个CPU、多个CPU、具有多个处理核的单个CPU等的代表。存储器325通常被包括以作为随机访问存储器的代表。网络接口315被配置以经由通信网络120传输数据。尽管被示出为单个单元,存储装置330可以是固定和/或可移除存储设备,诸如固定的盘驱动、可移除的存储卡、光学存储器、SSD或闪存设备、网络附接的存储器(NAS)、或与存储器区域-网络(SAN)设备的连接的组合。
如所示,存储器325存储流管理器134。存储装置330包括操作符图132。操作符图132代表从一个或多个源处理单元(PE)开始直到一个或多个宿PE的流应用。在一个实施例中,流管理器134监控运行在计算节点1301-4上的流应用、并且如需要改变操作符图132的结构。例如,流管理器134可以将处理单元(PE)从一个计算节点130移动到另一个计算节点,例如以管理在计算基础架构100中的计算节点130的处理负荷。另外,流管理器134可以通过***、移除、融合、去融合或另外更改计算节点1301-4上运行的处理单元(或什么数据-元组流到处理单元)来控制流应用。
此外,流管理器134可以被配置以选择负荷削减机制以及确定要对哪个数据进行负荷削减,以及负荷削减发生在哪个处理单元处。负荷削减可以发生在源PE135处、在宿PE140或任何其它处理单元处。在一个实施例中,使用每N个元组中负荷削减M的轮叫调度负荷削减机制。在另一个实施例中,更复杂的负荷削减技术估算到来元组的重要性,并负荷削减更不重要的元组。
可选地,处理元组的每个节点可以在处理到来的数据元组的流以及发出流出的数据元组的流的同时,确定对哪个元组进行负荷削减。例如,给定的节点可以在当到来的速率超过该节点处的处理能力时,确定负荷削减元组。当然,流管理器134可以被用于根据各种条件来配置各个处理节点上的负荷削减的参数。
图4示出根据一个实施例的流节点245。如所示,该流节点包括处理单元430,诸如图1B的处理单元PE1-PE10,其被配置以处理来自数据流的元组。流节点245通常被配置以从该流接收数据(元组)用于由处理单元430处理。
流节点245还包括负荷削减模块440。负荷削减模型可以被配置以执行负荷削减操作。该负荷削减模块440从数据流接收到来的元组410。对于每个到来的元组410,负荷削减模块440确定是要处理到来的元组还是要负荷削减到来的元组。如果给定的元组没有被负荷削减模块440负荷削减,则处理单元430执行流节点245的特定处理活动,并且输出作为被处理的元组420。提供被处理的元组420作为负荷流节点245的输出。即,流节点245被配置以向流应用的其它流节点发出下游传送的元组。对于每个负荷削减元组460,负荷削减模块440可以使用值估算器450来估算并输出负荷削减元组的值。除了估算的值之外,值估算器450还可以提供用于负荷削减元组的估算的值的值域和置信区间,并保持多少元组已经由流节点245进行了负荷削减的计数。如以下更详细地解释的,当处理单元430调用需要负荷削减元组的值的操作时,这些值域和置信区间是有用的。
如注意到的,流节点245的处理单元430可以对一个(或多个)到来的数据元组进行各种不同的操作。例如,可以使用聚合操作符来经由给定的窗口化条件(windowingcondition)来聚合来自多个元组的数据。在一个实施例中,窗口化条件是基于时间的,但是窗口化条件也可以是基于元组的(即,基于元组的计数)。当没有负荷削减时,产生到来的元组410的值的计数和测量值。在过去了给定量的时间或处理了给定数量的元组之后,获得了窗口化操作的结果。例如,可以计算出所有元组的值的总和或所述元组的中值(meanvalue)。
负荷削减元祖使聚合操作(以及其它操作)复杂,这是因为已经被负荷削减的元组的值应该需要被表现在聚合操作中从而返回有意义的结果。即,当进行聚合(或类似操作)时,负荷削减元组460不应被忽略。因此,在一个实施例中,流节点被配置以估算或另外预测已经被负荷削减的元组的值。如需要,处理节点还可以保持这类元组的数量的计数(或创建这类元组的数量的估算)。除了聚合操作之外,本方法还可以被用于需要窗口化条件中的数据的其它操作,诸如连接和分类操作。连接是通过给定的操作符连接两个流。在流概念中的连接查看正由连接操作符保持的信息的窗口,并根据连接条件来连接这些流。因此当元组被削减时,数据的某个(些)连接将由于该数据不在该窗口中而不存在。在这种情况下,值估算器450可以尝试并预测什么元组应该已经被连接。同理,分类操作符对数据的其窗口中存在的不论任何元组进行分类,且值估算器450可以试图预测负荷削减元组的值。可以在当分类的顺序中的位置很重要(例如,在窗口期间前十个数据元组被查看)的情况下使用这种做法。
因此,在聚合操作将要基于来到操作符中的元组的数量而发生的情况下,则可以设定该操作符的特性为包括正被忽略的元组的数量(尽可能被估算的)。如果负荷削减元组的实际计数不可得,则可以进行预测性的分析,来估算如果没有元组被负荷削减了而是到达了操作符的话、应该已被处理的元组的数量。这种类型的分析可以被能够窗口化(windowcapable)的任何操作符、即连接操作符、分类操作符等使用。
可以由负荷削减元组中断各种其它处理操作。即,在一些情况下,当流环境的其它方面被估算时,用户可能不想忽略负荷削减。例如,处理单元可以保持内置历史。该历史提供什么元组到达给定的操作符用于处理的指示。在给定流节点处的处理单元可能当处理当前的一个(或多个)元组时、需要利用发送到操作符的历史数据的比较。在这种情况下,处理单元可以被配置以考虑如果没有发生负荷削减,将会已经有多少数据到达操作符——或如需要地估算负荷削减元组的历史值。
又一个示例包括在平衡且分布工作负荷的流应用的各个方面中考虑负荷削减元组(或其估算)或元组值的估算(例如聚合操作)。例如,如注意到的,流管理器可以被配置以复制流应用中的处理单元。削减数据元组当在工作和操作符的布置中试图为预测性时,将曲解数据并且使记忆估算和处理器需求模糊。因此,在一个实施例中,负荷削减模块440可能向流管理器提供负荷削减元组的计数(或估算)从而允许该信息被用于管理更宽广的流应用。
图5是根据本发明的一个实施例、调用要求负荷削减元组460的值的操作240的方法500的流程图。在步骤510中,处理单元430调用要求负荷削减元组460的值的操作240。该操作240可以是聚合操作、连接操作、分类操作或要求在流节点245处接收的数据元组的任何其它操作。
在步骤520,值估算器450估算负荷削减元组460的值。在一个实施例中,估算的值是负荷削减元组的平均值(averagevalue)。例如,可以从由流节点实际处理的元组确定平均。在这种情况下,值估算器可以将平均值乘以负荷削减元组的数量(或这类元组的计数的估计)。另外,该平均可以使用随机元素改变,从而提供数学分布,诸如正态分布(例如基于处理的元组的值的方差和均方差)。在两种情况的任一种情况下,在步骤530中,值估算器450提供负荷削减元组的值的值域和置信区间。值域和置信区间的概念、以及用于计算这些值的各种技术在统计学领域是公知的且不在这里描述。如本领域的技术人员将认识到,值估算器包括用于估算负荷削减元组的值的模块、和用于提供负荷削减元组的估算值的值域和置信空间的模块两者。
在步骤540中,处理单元430基于处理的元组420和负荷削减元组460的估算的值以及负荷削减元组的值的值域和置信区间执行操作240。操作240的结果还被提供有值域和置信空间。该结果被提供作为步骤550中的操作240的输出。
应注意,在一个实施例中,采用统计学方法来估算负荷削减元组460中的值的预测的准确度。如果负荷削减没有生效,则将以已经完全准确地知道这些值。因此,一个实施例的特征在于,具有均值和均方差的值的估算取代如果没有负荷削减则本来是准确的值。
对于一些操作240,传送通过给定流节点245的到来元组410的历史是相关的。例如,“标点”操作可以依赖于元组被接收的顺序。更具体地,标点操作在数据流中的特定点处添加元数据或其它信息。例如,可以在每1000个元组之后***标点操作。这类的操作可以是每次该节点已经处理了1000个元组时的通知开发者或管理员的触发,或者可以指明调试断点。在这些情况下,负荷削减是成问题的,这是因为没有留下作为负荷削减460且没有被处理的到来元组410记录。因此,在一个实施例中,处理单元430可以通过考虑如果没有发生负荷削减、将本来有多少元组到达处理单元430来调整操作240中涉及的历史元组。
图6是根据一个实施例、调用要求负荷削减元组460的位置的标点操作的方法600的流程图。在步骤610中,处理单元430调用标点操作。如注意到的,标点操作依赖于由流节点接收的元组的顺序(或数量)。例如,标点操作可以被配置以在处理X个元组后***数据(或元数据)。在步骤620中,值估算器450估算负荷削减元组460的数量。因此,标点操作将标点***元组的流中。随后,该标点在下游流处理中被用来提供数据中的某种逻辑中断。可以以许多方式使用该逻辑中断。其可以被程序员用来触发任何类型的事件。作为逻辑中断的标点可以被用于程序员的目的。标点操作可以依赖于窗口化特性,从而在这么多的元组之后,标点可以被添加到该流。如果***负荷削减大量的元组,则可以基于发生的负荷削减的估算来在数据流的点处***标点。
在步骤630,处理单元430基于被处理的元组420和估算的负荷削减活动来***相关的标点(元组数据或元数据)。在步骤640,处理单元430提供标点操作的结果。
应注意,关于历史值,统计学和预测性的方法被用来估算负荷削减元组460的数量(或相对位置)。如果负荷削减没有生效、则本来会以完全准确度知道这些位置。因此,一个实施例的特征在于,具有小于完全准确度的位置的估算被用于取代如果没有负荷削减则本来会知道的值。
尽管上述针对本发明的实施例,但是在不偏离本发明的基本范围内可以想到本发明的其它和更多的实施例,且本发明的范围由以下的权利要求确定。

Claims (14)

1.一种在具有负荷削减的基于流的计算***中实现的方法,该方法包括:
接收由该基于流的计算***的流节点处理的多个到来的元组;
处理所接收的多个到来的元组的一个或多个;
当确定已经满足负荷削减元组的至少一个条件时,在接收到时丢弃一个或多个元组;以及
调用至少部分地依赖于一个或多个被处理的元组和被丢弃的一个或多个元组的操作,
其中调用的操作是标点操作,所述方法还包括
确定至少一个被处理的元组相对于被处理的多个到来的元组的其它元组的序数位置;
确定至少一个被丢弃的元组相对于被处理的多个到来的元组的其它元组的序数位置;
返回确定的序数位置作为标点操作的结果;以及
基于确定的序数位置将标点数据***数据流以由下游操作符使用。
2.根据权利要求1所述的方法,其中调用的操作使得窗口条件在下游操作符上完成且下游操作符发出结果。
3.根据权利要求1或2所述的方法,其中调用的操作估算一个或多个被丢弃的元组的值以由下游操作符使用,其中所述下游操作符是聚合操作、连接操作、短操作和标点操作之一。
4.根据权利要求3所述的方法,其中一个或多个被丢弃的元组的估算的值包括从估算的值确定的均值、中值或方差值之一。
5.根据权利要求3所述的方法,还包括确定估算的值的值域和估算的值的置信度中的至少一者。
6.根据权利要求3所述的方法,其中估算的值提供一个或多个被丢弃的元组的计数。
7.根据权利要求1所述的方法,还包括存储被丢弃元组的计数。
8.一种处理包含数据元组的数据流的***,包括:
处理器;以及
存储应用程序的存储器,该应用程序当在所述处理器上执行时,在具有负荷削减的基于流的计算***中进行操作,该过程包括:
接收由该基于流的计算***的流节点处理的多个到来的元组;
处理所接收的多个到来的元组的一个或多个;
当确定已经满足负荷削减元组的至少一个条件时,在接收到时丢弃一个或多个元组;以及
调用至少部分地依赖于一个或多个被处理的元组和被丢弃的一个或多个元组的操作,
其中调用的操作是标点操作,所述过程还包括
确定至少一个被处理的元组相对于被处理的多个到来的元组的其它元组的序数位置;
确定至少一个被丢弃的元组相对于被处理的多个到来的元组的其它元组的序数位置;
返回确定的序数位置作为标点操作的结果;
基于确定的序数位置将标点数据***数据流以由下游操作符使用。
9.根据权利要求8所述的***,其中调用的操作使得窗口条件在下游操作符上完成且下游操作符发出结果。
10.根据权利要求8或9所述的***,其中调用的操作估算一个或多个被丢弃的元组的值以由下游操作符使用,其中所述下游操作符是聚合操作、连接操作、短操作和标点操作之一。
11.根据权利要求10所述的***,其中一个或多个被丢弃的元组的估算的值包括从估算的值确定的均值、中值或方差值之一。
12.根据权利要求10所述的***,其中所述调用的操作还包括确定估算的值的值域和估算的值的置信度中的至少一者。
13.根据权利要求10所述的***,其中估算的值提供一个或多个被丢弃的元组的计数。
14.根据权利要求8所述的***,其中所述调用的操作还包括存储被丢弃元组的计数。
CN201280009310.9A 2011-02-17 2012-01-24 估算流数据库应用中的负荷削减数据的***和方法 Active CN103403699B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/029,165 2011-02-17
US13/029,165 US8572274B2 (en) 2011-02-17 2011-02-17 Estimating load shed data in streaming database applications
PCT/IB2012/050329 WO2012110904A1 (en) 2011-02-17 2012-01-24 Estimating load shed data in streaming database applications

Publications (2)

Publication Number Publication Date
CN103403699A CN103403699A (zh) 2013-11-20
CN103403699B true CN103403699B (zh) 2016-06-08

Family

ID=46653694

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280009310.9A Active CN103403699B (zh) 2011-02-17 2012-01-24 估算流数据库应用中的负荷削减数据的***和方法

Country Status (3)

Country Link
US (2) US8572274B2 (zh)
CN (1) CN103403699B (zh)
WO (1) WO2012110904A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621058B2 (en) * 2010-10-28 2013-12-31 Hewlett-Packard Development Company, L.P. Providing cloud-based computing services
US8572274B2 (en) 2011-02-17 2013-10-29 International Business Machines Corporation Estimating load shed data in streaming database applications
KR20120122136A (ko) * 2011-04-28 2012-11-07 삼성전자주식회사 데이터 스트림 관리 시스템에서의 부하 경감을 조절하는 방법 및 장치
US8850269B2 (en) * 2011-12-22 2014-09-30 International Business Machines Corporation Unfusing a failing part of an operator graph
US9087082B2 (en) 2013-03-07 2015-07-21 International Business Machines Corporation Processing control in a streaming application
US9280549B2 (en) 2013-03-14 2016-03-08 International Business Machines Corporation Compressing tuples in a streaming application
US9002846B2 (en) * 2013-03-15 2015-04-07 International Business Machines Corporation Ending tuple processing in a stream-based computing application
US9229965B2 (en) 2013-03-20 2016-01-05 International Business Machines Corporation Managing attributes in stream processing using a cache
US9218395B2 (en) 2013-03-20 2015-12-22 International Business Machines Corporation Managing attributes in stream processing
US9147010B2 (en) 2013-04-17 2015-09-29 International Business Machines Corporation Reconfiguring an operator graph based on attribute usage
US9152689B2 (en) 2013-06-25 2015-10-06 International Business Machines Corporation Managing passthru connections on an operator graph
US9372780B2 (en) * 2013-06-28 2016-06-21 International Business Machines Corporation Breakpoint continuation for stream computing
IN2013MU04013A (zh) * 2013-12-23 2015-08-07 Tata Consultancy Services Ltd
US9313110B2 (en) 2014-01-22 2016-04-12 International Business Machines Corporation Managing processing branches in an operator graph
US9734038B2 (en) * 2014-09-30 2017-08-15 International Business Machines Corporation Path-specific break points for stream computing
CA3177882A1 (en) * 2014-10-08 2016-04-14 Splunk Inc. Real-time reporting based on instrumentation of software
US10592500B2 (en) 2015-01-27 2020-03-17 International Business Machines Corporation Eviction stream for data joins
US10025824B2 (en) 2015-05-27 2018-07-17 International Business Machines Corporation Filter optimizer for data streams
US9747189B2 (en) 2015-11-12 2017-08-29 International Business Machines Corporation Breakpoint for predicted tuple processing time in a streaming environment
US10282277B2 (en) * 2015-12-01 2019-05-07 International Business Machines Corporation Streams: intelligent operator subset for debug
US11144290B2 (en) * 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003273333A1 (en) * 2002-09-18 2004-04-08 Netezza Corporation Field oriented pipeline architecture for a programmable data streaming processor
US7610397B2 (en) * 2005-02-28 2009-10-27 International Business Machines Corporation Method and apparatus for adaptive load shedding
US8572274B2 (en) 2011-02-17 2013-10-29 International Business Machines Corporation Estimating load shed data in streaming database applications

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Load Shedding for Aggregation Queries over Data Streams;Brian Babcock et al;《Proceedings of the 20th International Conference on Data Engineering(ICDE’04)》;20040402;第2页第2段,第2节第1段,附图1 *
Loadstar: Load Shedding in Data Stream Mining;Yun Chi et al;《Proceedings of the 31st VLDB Conference》;20051231;1302-1305 *
基于滑动窗口的数据流连接聚集查询降载策略;康伟 等;《计算机工程》;20091120;第35卷(第22期);50-52、55 *
多数据流上共享窗口连接查询的降载策略;闫莺 等;《计算机研究与发展》;20041016;第41卷(第10期);1836-1841 *
数据流***连接降载研究;陈军 等;《计算机工程与应用》;20080901;第44卷(第25期);16-19 *

Also Published As

Publication number Publication date
US8572274B2 (en) 2013-10-29
WO2012110904A1 (en) 2012-08-23
CN103403699A (zh) 2013-11-20
US20130080655A1 (en) 2013-03-28
US8756335B2 (en) 2014-06-17
US20120215934A1 (en) 2012-08-23

Similar Documents

Publication Publication Date Title
CN103403699B (zh) 估算流数据库应用中的负荷削减数据的***和方法
US11861405B2 (en) Multi-cluster container orchestration
US8843423B2 (en) Missing value imputation for predictive models
EP3259681B1 (en) Method and device for deciding where to execute subqueries of an analytics continuous query
US8965895B2 (en) Relationship discovery in business analytics
US20160171047A1 (en) Dynamic creation and configuration of partitioned index through analytics based on existing data population
US10303678B2 (en) Application resiliency management using a database driver
US20240250996A1 (en) System and method for algorithm crowdsourcing, monetization, and exchange
US11281510B2 (en) Intelligent scaling in microservice-based distributed systems
EP3679473B1 (en) A system and method for stream processing
CN115335821B (zh) 卸载统计收集
US11683391B2 (en) Predicting microservices required for incoming requests
US11238037B2 (en) Data segment-based indexing
US20130145004A1 (en) Provisioning using presence detection
US11023485B2 (en) Cube construction for an OLAP system
CN113722141A (zh) 数据任务的延迟原因确定方法、装置、电子设备及介质
US20200192720A1 (en) Accelerating memory access in a network using thread progress based arbitration
US20180181914A1 (en) Algorithm monetization and exchange platform
US11194716B2 (en) Intelligent cache preloading
US11741076B2 (en) Adaptive snapshot controller
US11775516B2 (en) Machine-learning-based, adaptive updating of quantitative data in database system
WO2023185675A1 (en) Proactive auto-scaling
US20240004723A1 (en) Workflow optimization and re-distribution

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant