CN110214318A - 多应用时间线上的流数据处理 - Google Patents
多应用时间线上的流数据处理 Download PDFInfo
- Publication number
- CN110214318A CN110214318A CN201780084279.8A CN201780084279A CN110214318A CN 110214318 A CN110214318 A CN 110214318A CN 201780084279 A CN201780084279 A CN 201780084279A CN 110214318 A CN110214318 A CN 110214318A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- time
- data item
- data flow
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
Abstract
适应特定类型的无序数据;即,在数据无序到达时要适应这种无序数据,因为数据是在可能具有不同应用时间线的系统中生成的。当数据到达时,该数据以特定分区键到达。例如,该分区键可以标识数据源。来自每个分区键的数据相对于来自同一分区键的所有其他数据保持有序。也就是说,与来自任何其他键的数据相比,允许来自一个键的数据具有一个不同的时间线。因此,当跨键全局查看时,数据可能不是有序的。相反,只要到达的数据的滞后在某个容忍滞后范围内,就可以容忍数据全局无序。如果数据到达,具有的时间超过最大容忍延迟,则系统应用某个策略来确定如何处理被延迟的数据。
Description
背景技术
计算系统和相关联的网络极大地改变了我们的世界,其引入了现在通常称为“信息时代”的概念。信息时代的一个特征是可以生成和发布针对数据集合的查询。例如,数据集合可以包括关系数据库,或者结构化或甚至非结构化数据的其他数据存储。现在,甚至可以针对根据时间来组织的数据流生成查询。流式数据的示例是时间戳事件流。
当处理数据流时,通常在假定流式数据以某种时间顺序的相似性到达的情况下发生处理。时间排序的假定有几个原因,主要是用于性能优化。但是,基于流数据处理中常用的用例,这样的假定通常是有根据的。理想情况是流式数据始终按顺序到达。然而,由于各种环境或系统原因(诸如网络延迟),数据可能无序到达。因此,无序数据到达是一种真实世界的场景,这样的场景需要适应但却不是最佳数据处理路径的一部分。
无序处理通常由流数据处理器以两种不同方式之一来处理。在一种传统方式中,使所有无序数据按数据进入系统的时间排序。这可以通过以下方式来进行:等待一段时间来按顺序对无序数据进行排序,将无序数据的(多个)时间戳调节为有序,或者丢弃一个或多个无序数据,使得剩余数据有序。一旦数据在系统内部,流引擎就可以对数据进行操作,知道数据安全有序并且针对该情况进行优化。在处理无序数据的第二种传统方式中,在系统内完成的所有处理都适应无序数据,并且由系统用户决定在无序数据到达发生时该做什么。
本文中要求保护的主题不限于解决在诸如上述那些环境中的任何缺点或仅在诸如上述那些环境中操作的实施例。相反,提供该背景仅用于说明可以实践本文中描述的一些实施例的一个示例性技术领域。
发明内容
本文中描述的至少一些实施例涉及适应特定种类的无序数据;即,在数据无序到达时要适应这种无序数据,因为数据是在可能具有不同应用时间线的系统中生成的。作为示例,数据可以来自不同的源,每个源具有它们自己的可能不同的应用时间。根据本文中描述的原理,当数据到达时,该数据以特定分区键到达。例如,该分区键可以标识数据源。本文中描述的原理确保来自每个分区键的每个数据相对于来自同一分区键的所有其他数据保持有序(该属性在下文中称为“键内有序”)。也就是说,与来自任何其他键的数据相比,允许来自一个键的数据具有一个不同的时间线。因此,当跨键全局查看时,数据可能不是有序的。
然而,根据本文中描述的原理,只要到达的数据的滞后在某个容忍滞后的范围内,就可以容忍数据是全局无序的。如果数据到达的时间超过最大容忍滞后,则该系统应用某个策略来确定如何处理被延迟的数据。该策略可以指定:丢弃数据,将数据的时间戳调节到容忍范围内,和/或应当重新排序数据以允许被延迟的数据全局按顺序放置(或者至少在容忍滞后的范围内全局按顺序放置)。
提供本发明内容部分是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式部分中进一步描述。本发明内容部分无意标识所要求保护的主题的关键特征或必要特征,也无意用于帮助确定所要求保护的主题的范围。
附图说明
为了描述可以获取本发明的上述和其他优点和特征的方式,将通过参考附图中所示的具体实施例来呈现上面简要描述的本发明的更具体的描述。应当理解,这些附图仅描绘了本发明的典型实施例,因此不应当被认为是对其范围的限制,本发明将通过使用附图的附加特征和细节进行描述和解释,在附图中:
图1示出了可以采用本文中描述的原理的示例计算机系统;
图2如下示出了查询环境,其中一个查询接收与多个分区键相关联的数据流;
图3示出了用于对流数据执行查询处理的方法的流程图;
图4示出了查询的示例结构,该查询包括入口、在入口处执行的多个操作、以及在出口处呈现的结果;
图5逻辑地示出了示例组合查询,其中每个单独的传感器实质上被分配它自己的查询;
图6更物理地示出了图5的组合查询,其示出了单个查询处理来自所有分区的所有数据;
图7示出了图6的查询,除了具有三个附加扩充,其中事先不知道分区集将进行何种计算;
图8示出了具有全局水印的示例查询;以及
图9示出了示例混合模式查询。
具体实施方式
本文中描述的至少一些实施例涉及适应特定种类的无序数据;即,在数据无序到达时要适应这种无序数据,因为数据是在可能具有不同应用时间线的系统中生成的。作为示例,数据可以来自不同的源,每个源具有它们自己的可能不同的应用时间。根据本文中描述的原理,当数据到达时,该数据以特定分区键到达。例如,该分区键可以标识数据源。本文中描述的原理确保来自每个分区键的每个数据相对于来自同一分区键的所有其他数据保持有序(该属性在下文中称为“键内有序”)。也就是说,与来自任何其他键的数据相比,允许来自一个键的数据具有一个不同的时间线。因此,当跨键全局查看时,数据可能不是有序的。
然而,根据本文中描述的原理,只要到达的数据的滞后在某个容忍滞后的范围内,就可以容忍数据是全局无序的。如果数据到达,具有的时间超过最大容忍延迟,则系统应用某个策略来确定如何处理被延迟的数据。该策略可以指定:丢弃数据,将数据的时间戳调节到容忍范围内,和/或应当重新排序数据以允许被延迟的数据全局按顺序放置(或者至少在容忍滞后的范围内全局按顺序放置)。
计算系统现在越来越多地采用各种各样的形式。例如,计算系统可以是手持设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统、数据中心、或甚至传统上没有被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜、手表、腕带等)。在本说明书和权利要求书中,术语“计算系统”被广义地定义为包括具有至少一个物理有形处理器以及能够在其上具有可以由处理器执行的计算机可执行指令的物理和有形存储器的任何设备或系统(或其组合)。存储器可以采用任何形式,并且可以取决于计算系统的性质和形式。计算系统可以分布在网络环境上,并且可以包括多个组成计算系统。
由于本文中描述的原理(并且特别地是对数据流的查询)可以由计算系统执行,因此将首先参考图1描述计算系统。然后,下文中将参考后续图2和图3描述查询操作的原理。然后,将参考图4至图9描述示例性查询。
如图1所示,在最基本配置中,计算系统100通常包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,其可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”在本文中也可以用于指代非易失性大容量存储装置,诸如物理存储介质。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。
计算系统100上具有通常被称为“可执行组件”的多个结构。例如,计算系统100的存储器104被示出为包括可执行组件106。术语“可执行组件”是计算领域的普通技术人员很好理解的结构的名称,其可以是软件、硬件或其组合的结构。例如,当以软件实现时,本领域普通技术人员可以理解,可执行组件的结构可以包括可以在计算系统上执行的软件对象、例程、方法,而无论这样的可执行组件是否存在于计算系统的堆中,或者无论该可执行组件是否存在于计算机可读存储介质上。
在这样的情况下,本领域普通技术人员将认识到,可执行组件的结构存在于计算机可读介质上,使得在由计算系统的一个或多个处理器(例如,由处理器线程)解释时,引起计算系统执行功能。这样的结构可以是由处理器直接计算机可读的(如果可执行组件是二进制的,则就是这种情况)。或者,该结构可以被构造为可解释和/或编译(无论是在单个阶段还是在多个阶段中),以便生成由处理器直接可解释的这样的二进制文件。当使用术语“可执行组件”时,对可执行组件的示例结构的这种理解完全在计算领域的普通技术人员的理解之内。
术语“可执行组件”以被本领域普通技术人员很好地理解为包括专门或近似专门地用硬件实现的结构,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路。因此,术语“可执行组件”是用于计算领域的普通技术人员很好地理解的结构的术语,无论该结构是以软件、硬件还是组合的方式实现。在本说明书中,也可以使用术语“组件”。如在本说明书和在该情况下所使用的,该术语(无论该术语是否用一个或多个修饰符修饰)也旨在与术语“可执行组件”同义或者是特定类型的这种“可执行组件”,并且因此也具有计算领域的普通技术人员很好理解的结构。
在以下描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这些动作以软件实现,(执行动作的相关联的计算系统的)一个或多个处理器响应于已经执行构成可执行组件的计算机可执行指令来引导计算系统的操作。例如,这样的计算机可执行指令可以在形成计算机程序产品的一个或多个计算机可读介质上实施。这种操作的示例涉及数据的操纵。
计算机可执行指令(和所操纵的数据)可以被存储在计算系统100的存储器104中。计算系统100还可以包含通信信道108,该通信信道108允许计算系统100通过例如网络110与其他计算系统通信。
尽管不是所有计算系统都需要用户界面,但在一些实施例中,计算系统100包括用户界面112,用于在与用户交互时使用。用户界面112可以包括输出机构112A以及输入机构112B。本文中描述的原理不限于精确的输出机构112A或输入机构112B,因为这将取决于设备的性质。然而,输出机构112A例如可以包括扬声器、显示器、触觉输出、全息图、虚拟现实等。输入机构112B的示例例如可以包括麦克风、触摸屏、全息图、虚拟现实、相机、键盘、其他指示器输入的鼠标、任何类型的传感器等。
如下面更详细讨论的,本文中描述的实施例可以包括或利用包括计算机硬件(诸如举例而言,一个或多个处理器和系统存储器)的专用或通用计算系统。本文中描述的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以被通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,实施例可以包括至少两种截然不同的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或者可以用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置并且可以由通用或专用计算系统访问的任何其他物理和有形存储介质。
“网络”被定义为能够在计算系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当通过网络或另一通信连接(硬连线、无线或者硬连线或无线的组合)向计算系统传输或提供信息时,计算系统将该连接正确地视为传输介质。传输介质可以包括可以用于以计算机可执行指令或数据结构的形式携带期望的程序代码装置并且可以由通用或专用计算系统访问的网络和/或数据链路。上述的组合也应当被包括在计算机可读介质的范围内。
此外,在到达各种计算系统组件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输介质自动传送到存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓存在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终被传送到计算系统RAM和/或计算系统处的较不易失性存储介质。因此,应当理解,可读介质可以被包括在也(甚至主要)利用传输介质的计算系统组件中。
计算机可执行指令包括例如当在处理器处执行时引起通用计算系统、专用计算系统或专用处理设备执行特定功能或功能组的指令和数据。替代地或另外地,计算机可执行指令可以将计算系统配置为执行某个功能或功能组。计算机可执行指令可以是例如二进制文件或者甚至在处理器直接执行之前经历某种转换(诸如编译)的指令,诸如中间格式指令,诸如汇编语言或甚至源代码。
本领域技术人员将理解,本发明可以在具有很多类型的计算系统配置的网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(诸如眼镜或手表)等。本发明也可以被实现在分布式系统环境中,其中通过网络链接(通过硬连线数据链路、无线数据链路或者通过硬连线和无线数据链路的组合)的本地和远程计算系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
本领域技术人员还将理解,本发明可以在云计算环境中实践。云计算环境可以是分布式的,但这不是必需的。在分布式的情况下,云计算环境可以在国际上在组织内分布和/或具有跨越多个组织而拥有的组件。在本说明书和以下权利要求中,“云计算”被定义为用于实现对可配置计算资源(例如,网络、服务器、存储器、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义并不局限于在适当部署时可以从这样的模型中获取的其他很多优点。
例如,云计算当前在市场中使用以便提供对可配置计算资源的共享池的普遍且方便的按需访问。此外,可配置计算资源的共享池可以经由虚拟化快速供应并且以低管理工作量或服务提供商交互而被发布,并且然后相应地进行缩放。
云计算模型可以由各种特性组成,诸如按需自助服务、广泛网络访问、资源池、快速弹性、可计量服务等。云计算模型还可以以各种服务模型的形式出现,例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。云计算模型还可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在本说明书和权利要求书中,“云计算环境”是其中采用云计算的环境。
本文中描述的实施例适应特定种类的无序数据;即,在数据无序到达时要适应这种无序数据,因为数据是在可能具有不同应用时间线的系统中生成的。作为示例,数据可以来自不同的源,每个源具有它们自己的可能不同的应用时间。根据本文中描述的原理,当数据到达时,该数据以特定分区键到达。例如,该分区键可以标识数据源。本文中描述的原理确保来自每个分区键的每个数据相对于来自同一分区键的所有其他数据保持有序(该属性在下文中称为“键内有序”)。也就是说,与来自任何其他键的数据相比,允许来自一个键的数据具有一个不同的时间线。因此,当跨键全局查看时,数据可能不是有序的。
然而,根据本文中描述的原理,只要到达的数据的滞后在某个容忍滞后的范围内,就可以容忍数据是全局无序的。如果数据到达,具有的时间超过最大容忍延迟,则系统应用某个策略来确定如何处理被延迟的数据。该策略可以指定:丢弃数据,将数据的时间戳调节到容忍范围内,和/或应当重新排序数据以允许被延迟的数据全局按顺序放置(或者至少在容忍滞后的范围内全局按顺序放置)。
下面的图2示出了查询环境200,其中查询210接收与多个分区键相关联的数据流。查询210可以是基于接收到的数据流对计算系统(诸如计算系统100)进行操作的组件(诸如组件106)。例如,数据项源201A生成如箭头201C所示的数据项流201B,并且与第一分区键201D相关联。数据项源202A生成如箭头202C所示的数据项流202B,并且与第二分区键202D相关联。数据项源203A生成如箭头203C所示的数据项流203B,并且与第三分区键203D相关联。数据项流201B、202B和203B中的每一个组合以形成由查询210接收的合并数据流205。省略号204表示将数据项流提供到合并数据流中的数据项源的数目可以是任何数目(一个或多个)的数据流,并且对于任何给定查询可以确实随时间变化。
图3示出了用于对流数据执行查询处理的方法300的流程图。方法300可以通过例如图2的查询210来执行。此外,用户可以使用计算系统100来生成查询。而且,查询210可以在计算系统100上操作。
方法300包括接收针对多个分区键的数据项的合并数据流(动作301)。例如,在图2中,合并数据流205包括与分区键201D相关联的数据流201B、与分区键202D相关联的数据流202B、以及与分区键203D相对应的数据流203B。该查询从接收到的数据流产生可处理数据流(动作310)。这是由箭头302和303表示的连续过程。
当产生可处理数据流(动作310)时,该查询确保对于每个键,针对该键的数据项在可处理数据流中在时间上有序(动作311)。换言之,该查询确保可处理数据流是键内有序的。这也是在接收到数据流(动作301)时的连续过程。
此外,查询确保可处理数据流中的每个数据项不滞后超过给定容限(动作320),这是在接收到合并数据流(动作301)时连续地执行。为此,当接收到每个数据项(动作321)时,该查询检查时间戳(动作322)。如果时间戳显示滞后小于当前给定容限(判定框323中的“否”),则将数据项提供给可处理数据流(动作324)。否则,如果时间戳显示滞后大于当前给定容限(判定框323中的“是”),则根据策略采取补救措施(动作325)。
这样的补救措施可以包括丢弃对应的数据项,使得对应的数据项不被包括在可处理数据流内。备选地,这样的补救措施可以包括将该数据项的时间戳快速转发为当前时间戳,或者快速转发为至少在滞后容限内。备选地,补救措施可以包括按顺序将对应的时间戳放置在可处理数据流中。
一旦产生了可处理数据流(动作310),就可以对可处理数据流执行查询操作(动作330)。箭头304表示该可处理数据流可能只是查询处理的第一阶段,可以生成第二阶段可处理数据流。在这样的后续阶段中,在产生后续可处理数据流时不需要执行动作320,因为所有数据项已经在全局上在容忍滞后的范围内。后续阶段可以是这样的可处理数据流,在该可处理数据流中,针对不同的一组键中的每个键的数据项被确保是有序的。备选地,后续阶段可以简单地是全局时间有序可处理流。
现在将提供一些示例。考虑一种情况,其中数据来自传感器集合Si(其中“i”是从1到该集合中传感器数目的所有整数的集合)。从所有数据测量同一真实世界参数(诸如温度)这个意义上来说,这样的数据是同质的。每个传感器Si相对于自身以时间顺序生成数据。换言之,对于每个值i,来自传感器Si的数据完全按顺序生成。在该示例中,每个传感器标识符是不同的分区键。
也就是说,由于多种原因,跨传感器的数据可能不是完全总的按顺序。这可能是由于传感器不是时间同步的。替代地或另外地,这可能是由于来自传感器的数据在到达之前行进的通道的影响。
关于传感器本身没有在时间上同步是导致无序数据的一个起因,对于此可能存在任何数目的原因。例如,一个传感器的内部时钟可能相对于其他传感器漂移。作为另一示例,与其他传感器的(多个)时区相比,一个传感器的内部时钟可以是关于不同时区的。后一种情况尤其可能是在例如从全球分布的移动电话或计算系统收集数据时发生。
关于来自传感器的数据信道的性质是导致无序数据的一个起因,对于此也可能存在任何数目的原因。与某些传感器的网络连接可能比其他传感器慢。针对特定传感器的网络连接甚至可能暂时消失,并且然后重新连接,在单次突发中重新连接时发送该传感器的所有数据。
本文中描述的原理解决了每个传感器因此具有自己的时间线的真实场景。考虑特定示例,其中查询从传感器1、传感器2和传感器3接收数据。仅出于讨论和示例的目的,考虑接收以下三个数据流的查询(每个数据流具有三个数据项,并且每个数据项具有值和时间戳):
传感器1:在时间100为5,在时间108为4,在时间109为8
传感器2:在时间1为6,在时间2为10,在时间3为11
传感器3:在时间4002为14,在时间4004为12,在时间4009为11
在该示例中,来自每个传感器的流在不同时间到达,一次一个传感器。然而,不同传感器的流可以具有以任何顺序到达的数据。例如,来自一个传感器的流具有的某个数据的时间戳可能在来自另一传感器的数据之前、并且具有的某个数据的时间戳可能在来自该另一传感器的数据之后。
如果数据以传感器2、传感器1、传感器3这样的顺序到达查询,则所有数据以时间顺序到达。回顾一下,数据到达查询的时间不需要与每个数据项相关联的时间有任何相关性。然而,如果数据按传感器1、传感器2、传感器3这样的顺序到达,则来自传感器2的数据现在无序。在这种情况下,如果预期数据会按顺序到达,则来自传感器2的数据被快速转发(例如,转发到时间109——这是观察到来自传感器1的最新数据的时间)或者来自传感器2的数据被丢弃,或者来自传感器1的数据的处理被阻止,直到肯定其他后期数据已经到达为止。另一方面,如果允许数据以任意顺序到达,则系统将来自传感器1的数据保存在存储器中,直到系统确定已经遇到针对该查询的所有相关数据,并且告诉该查询将会需要等待多长时间来完成这个事情。现在假定数据已经按照传感器3、传感器1、传感器2这样的顺序到达,并且注意到,上述问题是令人恼火的。
本文中描述的实施例可以被认为是将几个在其他方面相同的查询在逻辑上组合成单个查询,其中每个个体查询假定完全有序的数据。然而,在物理上,这个故事要复杂得多。将流式查询视为如图4所示的单个单元:
存在应用了强制数据排序的任何策略的入口点。如果要丢弃无序数据,这会发生在入口处。如果需要在固定周期T内保持处理以拾取和将无序到达的数据排序到T之后,这可以在入口处执行。接下来,存在构成查询的实际处理的查询算子。此时会进行任何选择、投影、聚合、加入或其他数据分析。最后,存在出口点,在出口点处查询的最终结果被发送给可能正在等待该结果的任何下游消费者。
因此,在逻辑上,组合查询看起来如图5所示。参考图5,每个个体传感器实质上被分配自己的查询。每个查询的入口点确保每个个体子流的数据是有序的,其中使用的策略与在单个统一查询中应用的策略相同。但是这些排序策略不会跨子流被应用。数据能够针对每个传感器通过该查询自行进行,而无需等待其他传感器,也不会被其他传感器的进度改变。
然而,在物理上,该查询可以如图6所示的出现。参考图6,单个查询处理来自所有分区的所有数据。该查询的指定方式与在单个分区上指定单个查询的方式完全相同。然而,逻辑上的效果是为每个分区彼此独立地产生数据。
首先,注意,仍然在每个分区(例如,每个传感器)的基础上完成进入。在一个实现中,这实际上是在单个物理算子中同时完成的,但图6将每个入口站点示出为是不同的,以强化每个分区单独应用其无序策略的概念。接下来,注意,在图6中,查询中的算子略有不同(由现在被加下划线的算子01到0n表示)。每个算子的确切实现都得到了扩充,以解释数据不再全局排序的事实。这种“扩充”可能是微不足道的,也可能是复杂的。从这一点开始,考虑术语“被分区的数据”是指已经分配了某个分区键的数据,其中任何给定分区键的所有数据都在时间上是有序的。
对于一些算子而言,实际上不需要增加来适应被分区的数据的前景。这些算子分为两类——独立于键的无状态操作、以及已经根据每个键完成的算子。过滤和投影以及所有不需要扩充的算子都是对分区键不敏感的无状态算子的示例。也就是说,这些算子不会修改分区键,并且因此不会违反键内时间排序不变。这些算子在数据到达时对数据起作用,并且不受时间排序的影响。已经按每个键完成的算子包括某些类型的时间操作。某些操作已经自然地在每个键的基础上进行操作,并且对跨键的任何时间顺序都不敏感。这些算子自然适合允许被分区的数据的框架。
在最坏的情况下,算子的分区感知版本基本上在逻辑上保持相同的状态并且执行与原始算子的N个副本相同的逻辑处理。即使在这种情况下,仍然可以进行很多物理优化。例如,算子可以利用单独的指针数组来保持单个数据结构,而不是保留所有数据结构的N个副本,其中单独的指针数组示出了每个分区在较大结构中的哪个位置处驻留。
然而,因为本文中描述的实施例不是涉及任意无序,而是仅跨键无序,很多算子能够保持其大部分现有存储器和速度优化,仅在分区之间的上下文切换具有一些影响的情况下必须被扩充。
例如,考虑聚合算子的情况。在大多数情况下,在聚合内完成的所有状态计算都是基于每个键完成的。唯一的变化是传入数据值属于不同分区的情况。不是根据需要为所有键推进时间并且构建聚合,而是处理可以对属于同一分区的键执行该操作。
考虑与之前相同的传感器数据。如果聚合算子在时间108看到来自传感器1的值4,则可能已经在存储器中为传感器2和传感器3计算了数据。在统一设置中,如果需要,该算子需要针对传感器2和传感器3两者推进时间,并且如果有任何变化,则计算并且返回聚合值。在分区设置中,仅传感器1的聚合受影响。
假定图6的先前逻辑图将具有三个附加扩充。事先不知道分区集将进行何种计算。这反映在图7中。该系统不需要知道在任何时间点可能的传感器集是什么。在查询开始时,可以是传感器1、传感器2和传感器3,但稍后可能会添加传感器4到传感器10,然后传感器3脱机一段时间,然后传感器5被阻止、但一小时后重新加入,然后传感器26上线。对于任何给定数据,该系统只是标识它所属的分区。它需要不属于已经看过数据的分区。
其次,如果被请求的话,则该系统确实允许查询作者跨分区建立关系。全局水印是一种能够指定以下内容的方式:“对于我看到的任何分区,时间必须被限制在具有最高时间的分区的时间T内”。图8示出了具有全局的示例查询水印。
在这样的上下文中,再次考虑以下传感器数据:
传感器1:在时间100为5,在时间108为4,在时间109为8
传感器2:在时间1为6,在时间2为10,在时间3为11
传感器3:在时间4002为14,在时间4004为12,在时间4009为11
如果该系统指定全球水印2000并且来自传感器3的数据首先到达,则根据指定的无序策略,传感器1和传感器2的数据要么被丢弃要么被调整到在该时间窗口内(即,2009)。
该系统还可以允许混合模式查询,其中部分查询被分区,但是在某些时候,该查询必须跨分区执行某个动作,因此必须统一。图9示出了这种混合模式查询的示例。参考图9,可能想要以被分区的模式执行查询的一部分,其中可以尝试通过聚合或过滤来减小状态大小,然后最终执行跨分区的某些逻辑。一个常见的示例是局部-全局聚合,其中聚合是跨多个分区计算的,但是在必须应用任何类型的全局重新排序之前,利用子聚合来减少状态。就存储器使用而言,全局重新排序可能是一项代价高昂的操作,因此分区,减少状态,并且然后重新排序是优化特定操作的一种良好的方法。
因此,总之,本文中描述的实施例构造了看起来像图9的查询,并且使用如同构造图4的查询一样的简单性和模型来实现。
在不脱离本发明的精神或基本特征的情况下,可以以其他具体形式来实施发明。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化都将被包含在其范围内。
Claims (10)
1.一种用于对流数据执行查询处理的方法,所述方法包括:
接收针对多个键中的每个键的多个数据项的数据流;
对于来自针对所述多个键中的每个键的所述数据流的数据项,确保在产生可处理数据流时,针对所述多个键中的对应键的所述数据项在时间上是有序的;以及
对于所述可处理数据流中的所述数据项中的每一个,确保所述数据项在所述可处理数据流中在时间上滞后不超过给定容限。
2.根据权利要求1所述的方法,其中确保所述数据项在时间上滞后不超过给定容限包括以下:对于接收到的所述数据流中被确定为在时间上滞后大于所述给定容限的至少一个数据项中的每一个:
丢弃对应的所述数据项,使得对应的所述数据项不被包括在所述可处理数据流内。
3.根据权利要求1所述的方法,其中确保所述数据项在时间上滞后不超过给定容限包括以下:对于接收到的所述数据流中被确定为在时间上滞后大于所述给定容限的至少一个数据项中的每一个:
快速转发对应的所述数据项的时间戳。
4.根据权利要求1所述的方法,其中确保所述数据项在时间上滞后不超过给定容限包括以下:对于接收到的所述数据流中被确定为在时间上滞后大于所述给定容限的至少一个数据项中的每一个:
按顺序将对应的时间戳放置在所述可处理数据流中。
5.根据权利要求4所述的方法,还包括:
对所述可处理数据流执行一个或多个查询操作。
6.根据权利要求5所述的方法,所述查询操作包括每键查询操作。
7.根据权利要求5所述的方法,所述查询操作包括每键聚合操作。
8.根据权利要求5所述的方法,所述查询操作包括跨键操作。
9.根据权利要求5所述的方法,所述多个键是第一多个键,所述可处理数据流是第一可处理数据流,所述一个或多个查询操作是第一一个或多个查询操作,所述方法还包括:
对于来自所述第一可处理数据流的数据项,确保在产生第二可处理数据流时,针对第二多个键中的对应键的所述数据项在时间上是有序的;以及
对所述第二可处理数据流执行一个或多个查询操作。
10.一种计算系统,包括:
一个或多个处理器;
一种或多种计算机可读介质,其上具有计算机可执行指令,所述计算机可执行指令被构造为使得在由一个或多个处理器执行时引起所述计算系统执行一种用于对流数据执行查询处理的方法,所述方法包括:
接收针对多个键中的每个键的多个数据项的数据流;
对于来自针对所述多个键中的每个键的所述数据流的数据项,确保在产生可处理数据流时,针对所述多个键中的对应键的所述数据项在时间上是有序的;以及
对于所述可处理数据流中的所述数据项中的每一个,确保所述数据项在所述可处理数据流中在时间上滞后不超过给定容限。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762452742P | 2017-01-31 | 2017-01-31 | |
US62/452,742 | 2017-01-31 | ||
US15/588,299 | 2017-05-05 | ||
US15/588,299 US10949427B2 (en) | 2017-01-31 | 2017-05-05 | Stream data processing on multiple application timelines |
PCT/US2017/068067 WO2018144158A1 (en) | 2017-01-31 | 2017-12-22 | Stream data processing on multiple application timelines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110214318A true CN110214318A (zh) | 2019-09-06 |
CN110214318B CN110214318B (zh) | 2023-01-10 |
Family
ID=62979967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780084279.8A Active CN110214318B (zh) | 2017-01-31 | 2017-12-22 | 多应用时间线上的流数据处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10949427B2 (zh) |
EP (1) | EP3577577B1 (zh) |
CN (1) | CN110214318B (zh) |
WO (1) | WO2018144158A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11998287B1 (en) * | 2019-03-18 | 2024-06-04 | Dopl Technologies Inc. | Platform for facilitating remote robotic medical procedures |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150120739A1 (en) * | 2013-10-31 | 2015-04-30 | International Business Machines Corporation | System, method, and program for performing aggregation process for each piece of received data |
US20150169683A1 (en) * | 2013-12-17 | 2015-06-18 | Microsoft Corporation | Analytical Data Processing Engine |
CN105144155A (zh) * | 2013-03-14 | 2015-12-09 | 微软技术许可有限责任公司 | 可视地表示多源数据的查询 |
US20160359910A1 (en) * | 2015-06-05 | 2016-12-08 | Microsoft Technology Licensing, Llc | Handling out of order events |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2006286320A1 (en) * | 2005-09-01 | 2007-03-08 | Astragroup As (A Norwegian Company) | Post- recording data analysis and retrieval |
US20090287456A1 (en) | 2008-05-13 | 2009-11-19 | Steve Tran | Distributed Sensor System |
US8060614B2 (en) | 2008-06-19 | 2011-11-15 | Microsoft Corporation | Streaming operator placement for distributed stream processing |
US8041530B2 (en) | 2008-10-28 | 2011-10-18 | General Electric Company | Method to efficiently synchronize multiple measurements across multiple sensor inputs |
GB0821049D0 (en) * | 2008-11-18 | 2008-12-24 | Durham Scient Crystals Ltd | Tracking device,system and method |
JP5395565B2 (ja) * | 2009-08-12 | 2014-01-22 | 株式会社日立製作所 | ストリームデータ処理方法及び装置 |
US8484243B2 (en) | 2010-05-05 | 2013-07-09 | Cisco Technology, Inc. | Order-independent stream query processing |
US20130166766A1 (en) | 2011-06-30 | 2013-06-27 | The Board Of Trustees Of The University Of Illinois | Streaming Service for Correlated Multi-Streaming |
EP2936341B1 (en) * | 2012-12-18 | 2016-09-14 | Telefonaktiebolaget LM Ericsson (publ) | Load shedding in a data stream management system |
US9348638B2 (en) | 2013-01-17 | 2016-05-24 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9015379B1 (en) | 2013-10-11 | 2015-04-21 | Ge Aviation Systems, Llc | Method of controlling data communication |
US9913248B2 (en) | 2014-09-22 | 2018-03-06 | Nokia Technologies Oy | Method and apparatus for aggregating data for transmission |
US10536357B2 (en) | 2015-06-05 | 2020-01-14 | Cisco Technology, Inc. | Late data detection in data center |
-
2017
- 2017-05-05 US US15/588,299 patent/US10949427B2/en active Active
- 2017-12-22 EP EP17829882.4A patent/EP3577577B1/en active Active
- 2017-12-22 CN CN201780084279.8A patent/CN110214318B/zh active Active
- 2017-12-22 WO PCT/US2017/068067 patent/WO2018144158A1/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105144155A (zh) * | 2013-03-14 | 2015-12-09 | 微软技术许可有限责任公司 | 可视地表示多源数据的查询 |
US20150120739A1 (en) * | 2013-10-31 | 2015-04-30 | International Business Machines Corporation | System, method, and program for performing aggregation process for each piece of received data |
CN104598299A (zh) * | 2013-10-31 | 2015-05-06 | 国际商业机器公司 | 用于对每条接收数据执行聚合处理的系统和方法 |
US20150169683A1 (en) * | 2013-12-17 | 2015-06-18 | Microsoft Corporation | Analytical Data Processing Engine |
US20160359910A1 (en) * | 2015-06-05 | 2016-12-08 | Microsoft Technology Licensing, Llc | Handling out of order events |
Also Published As
Publication number | Publication date |
---|---|
WO2018144158A1 (en) | 2018-08-09 |
EP3577577B1 (en) | 2021-10-27 |
US20180218048A1 (en) | 2018-08-02 |
CN110214318B (zh) | 2023-01-10 |
EP3577577A1 (en) | 2019-12-11 |
US10949427B2 (en) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3186946B1 (en) | Event stream transformations | |
Schultz-Møller et al. | Distributed complex event processing with query rewriting | |
CN107679192A (zh) | 多集群协同数据处理方法、系统、存储介质及设备 | |
Cheng et al. | Network-aware locality scheduling for distributed data operators in data centers | |
CN105474204A (zh) | 确定性的渐进式大数据分析 | |
Krause et al. | Implementing graph transformations in the bulk synchronous parallel model | |
CN104063507A (zh) | 一种图计算方法及引擎 | |
Fan et al. | Adaptive asynchronous parallelization of graph algorithms | |
WO2014117295A1 (en) | Performing an index operation in a mapreduce environment | |
CN103729257A (zh) | 一种分布式并行计算方法以及系统 | |
Ying et al. | Bluefog: Make decentralized algorithms practical for optimization and deep learning | |
Ounacer et al. | A new architecture for real time data stream processing | |
US20210297453A1 (en) | Pathfinding in two and three-dimensional spaces using an automated planning service | |
Kllapi et al. | Distributed query processing on the cloud: the optique point of view (short paper) | |
Panigati et al. | Data streams and data stream management systems and languages | |
CN110214318A (zh) | 多应用时间线上的流数据处理 | |
Balduini et al. | A Restful Interface for RDF Stream Processors. | |
Song et al. | Towards modeling large-scale data flows in a multidatacenter computing system with petri net | |
Lai et al. | {GLogS}: Interactive graph pattern matching query at large scale | |
Liu et al. | IncPregel: an incremental graph parallel computation model | |
Mutharaju | Distributed rule-based ontology reasoning | |
Simmhan et al. | Floe: A continuous dataflow framework for dynamic cloud applications | |
Sarker et al. | Atomizing E-Government Facilities Using Big Data Analytic | |
Gawande et al. | Improving network traffic in MapReduce for big data applications | |
Yang et al. | Developing a cloud intelligent and energy-saving information interface agent with web services |
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 |