CN107690616B - 受限的存储器环境中的流式传输联接 - Google Patents

受限的存储器环境中的流式传输联接 Download PDF

Info

Publication number
CN107690616B
CN107690616B CN201680032699.7A CN201680032699A CN107690616B CN 107690616 B CN107690616 B CN 107690616B CN 201680032699 A CN201680032699 A CN 201680032699A CN 107690616 B CN107690616 B CN 107690616B
Authority
CN
China
Prior art keywords
data
data stream
stream
determining
time
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
CN201680032699.7A
Other languages
English (en)
Other versions
CN107690616A (zh
Inventor
陈忠
L·诺维克
B·舒尔曼
C·A·斯兹珀斯基
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107690616A publication Critical patent/CN107690616A/zh
Application granted granted Critical
Publication of CN107690616B publication Critical patent/CN107690616B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

流式传输联接中可能消耗大量的存储器,因为来自一个流的事件在等待来自第二流的匹配事件时被保持在存储器中。通过分析联接条件以确定两个流中的事件之间时间差异的边界,可以减少存储器需求。当确定来自一个流的事件必须在来自另一流的匹配事件之前发生时,可以以有意延迟来摄取稍后到达的流数据。当确定不管从第一流接收的输入如何,当没有来自第二流的输入时,将不会产生输出,则从第一流拉取数据可以停止。可以采用多阶段的联接计划,使得可以以增大的有意延迟量来扫描不太繁忙的流。仅存储不匹配的数据。

Description

受限的存储器环境中的流式传输联接
背景技术
在传统计算中,单个中央处理单元(CPU)依次对单个数据流中的单个数据执行单个指令,一次执行一个操作。随着世界的数据处理需求的增加,要操作的数据量也迅速增加。
在流处理中,可以实时处理来自潜在的多个源的多个数据流。“流式传输”或流处理表示接收数据流,处理数据并且将其作为单个数据流流式传输回去。在联接多个数据流时可能消耗大量的存储器和/或其他资源,因为来自一个数据流的数据通常被保持在存储器或存储介质中,同时等待来自另一数据流的匹配事件到达。
发明内容
可以分析规定来自两个或更多个数据流的数据的许可联接(匹配数据)的一个或更多个联接条件以确定许可联接的时间段(与可联接数据相关联的时间之间的时间差异)。增加数据匹配时间段可能导致联接所需要的存储器或存储装置的量的减少,因为流数据不必被存储。如果许可边界的分析确定为了匹配,来自一个流的事件必须在来自另一流的匹配事件之前发生,则可以以有意延迟来摄取稍后到达的流数据。
当在运行时对联接条件的分析指示不管通过数据流中的一个(例如,第一数据流)接收的输入如何,将不会产生输出,除非并且直到从其他数据流(例如,第二数据流)接收到更多输入,则从第一流拉取数据可以停止,直到从第二数据流接收到更多的输入。可以采用具有多个许可联接时间段的多级联接计划。一个(例如,通常不太繁忙的)流可以以增加的有意延迟量(例如,在时间0,在时间0加1分钟,在时间0加5分钟,在时间0加10分钟,等等)被扫描。不是针对匹配间隔保持另一(例如,通常比较繁忙的)数据流的全部内容,而是在第二阶段期间,可以从第一数据流重新拉取在规定的时间段内不匹配的事件。
提供本发明内容以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
在附图中:
图1示出了根据本文中描述的主题的各方面的包括执行流式传输联接的系统的示例的系统100;
图2a示出了根据本文中公开的主题的各方面的用于执行流式传输联接的方法251的示例;
图2b示出了根据本文中公开的主题的各方面的用于执行流式传输联接的另一方法200的示例;
图2c图示了根据本文中公开的主题的各方面的用于执行流式传输联接的另一方法220的示例;
图2d图示了根据本文中公开的主题的各方面的用于执行流式传输联接的另一方法231的示例;以及
图3是根据本文中公开的主题的各方面的计算环境的示例的框图。
具体实施方式
概述
流处理中的常见情况是“联接”两个或更多个流。例如,两个数据流的联接通常生成成对的数据流:来自第一数据流的数据和来自第二数据流的数据,其中该对满足在联接中规定的条件。在计算联接时节省诸如存储器或存储装置等资源在传统数据库处理中非常有帮助,并且在流处理中可能甚至更有帮助。
描述了可以显著降低存储器和/或存储装置需求的流处理中的三种联接策略。流式传输联接中经常消耗大量存储器和/或存储装置的一个原因是,因为来自一个数据流的数据被保持在存储器或存储装置中,同时等待来自第二数据流的匹配事件到达。为了减轻这种情况,根据第一策略的各方面,可以分析联接条件以确定可联接数据的许可时间范围、或者换言之“匹配”(例如,满足联接条件)的两个数据流中的数据之间的时间差异。例如,如果确定许可时间范围的下边界确定为了匹配,来自一个数据流的数据必须在来自另一数据流的匹配数据之前发生,则稍后到达的流数据可以以有意延迟来摄取。有意延迟表示与时间X相关联的数据不从第二流被摄取,直到从第一流中摄取了具有时间X+T的数据,其中T是许可时间范围的下边界。通常在传统的流处理系统中,摄取尽可能快地发生。联接过程的存储器和 /或存储装置要求可以通过不将来自稍早到达的流的数据保持在存储器和/或存储装置中来减少。有趣的是,这种技术不会增加时延。
第二策略分析联接条件以确定何时联接运算符的内部状态是这样的:不管通过流中的一个(例如,第二数据流)接收到多少附加输入,将不会产生输出。当第一输入数据流的缓冲区为空时,这种情况通常会发生但不总是会发生。在这样的情况下,根据本主题的一些方面,不从第二输入数据流中寻找附加输入,因为其仅用于增加存储器和/或存储装置消耗。
在第三策略中,可以采用多阶段联接计划。可以典型地以一个或多个增加的有意延迟量(例如,在时间0,在时间0加1分钟,在时间0加5分钟,在时间0加10分钟,等等)来扫描第一数据流。根据本文中描述的主题的各方面,不是针对匹配间隔将任一数据流的全部内容保持在存储器中(如在一些已知的现有技术的联接计划中将需要的),仅保持在规定的时间段内不匹配的事件。当匹配事件之间的最大时间差远大于匹配事件之间的平均时间差(这是流联接中的一个非常普遍的情况)时,该策略特别适用。本文中描述的策略可以以任何组合进行组合。
受限的存储器环境中的流式传输联接
图1示出根据本文中描述的主题的各方面的执行流式传输联接的系统100的示例。系统100的全部或部分可以驻留在一个或多个计算机或计算设备上,诸如下面关于图3描述的计算机。系统100或其部分可以被提供作为独立系统或者作为插件或附件。
系统100或其部分可以包括从服务(例如,在云中)获得的信息,或者可以在云计算环境中操作。云计算环境可以是其中计算服务不是被拥有而是被按需提供的环境。例如,信息可以驻留在联网的云中的多个设备上,和/或数据可以存储在云中的多个设备上。
系统100可以包括一个或多个计算设备,诸如例如计算设备102。预期的计算设备包括但不限于台式计算机、平板计算机、膝上型计算机、笔记本计算机、个人数字助理、智能电话、蜂窝电话、手机、传感器等。诸如计算设备102等计算设备可以包括诸如处理器142等的一个或多个处理器、以及诸如存储器144等与一个或多个处理器通信的存储器。计算设备可以是在受限的存储器环境中操作的设备。受限的存储器环境是其中可用的存储器不足以处理在使用更传统的处理流式传输联接的技术时所面临的处理需求的环境。
系统100可以包括在被加载到存储器中时引起至少一个处理器执行归属于一个或多个程序模块的处理的任何一个或多个程序模块。系统100可以包括任何一个或多个程序模块,其包括执行流式传输联接的一个或多个程序模块,诸如流式传输联接模块106。系统100可以包括描述数据在其下可以被许可地联接的条件的一个或多个联接条件,在图1中表示为联接条件108。联接条件可以是查询。联接条件可能是查询的部分。查询可能是数据库查询。查询可以是非数据库查询。流式传输联接模块106可以接收两个或更多个数据流,诸如第一数据流(例如,数据流1112)和第二数据流(例如,数据流2114)。一个或多个附加数据流也可以被接收和联接,如图1中由数据流116 所示。数据流中的数据可以是事件数据、复杂事件数据、来自数据库的数据或任何类型的数据。流式传输数据可以是结构化数据、安全数据、传感器数据、测量数据(例如,来自温度感测设备的数据)、日志数据等。
流式传输联接模块106可以联接来自两个或更多个数据流的数据以产生输出流,诸如输出流110。来自数据流的数据可以是实时接收的实时数据。来自数据流的数据可以被记录为实时数据。来自第一数据流的数据可以源自第一数据源(例如,数据源1118)。来自第二数据流的数据可以源自第二数据源(例如,数据源2120),等等。数据源可以驻留在与流式传输联接模块106相同的计算设备上或者在不同的计算设备上。类似地,多于两个数据流的第一数据源和第二数据源可以驻留在相同的计算设备上,在不同的计算设备上,等等。来自两个或更多个数据流的数据可以根据由在联接条件数据储存库(未示出)中阐述的条件确定的联接条件来联接。流式传输联接模块106可以处理下面描述的流式传输联接策略中的一个或多个。
一个流式传输联接策略适用于时间联接。来自两个或更多个数据流的数据可以按照与数据相关联的时间被联接。与数据相关联的时间可以是数据被生成的时间。与数据相关联的时间可以是数据被接收的时间。与数据相关联的时间可以是数据被发送的时间。与数据相关联的时间可以是任何其他时间。在下面的示例中,数据与数据被生成时间相关地被联接。根据本文中描述的主题的一些方面,做出按时间顺序接收数据的假定。例如,事件可以加上时间戳,以反映事件被生成的时间。
流式传输联接模块106可以通过获取、访问、读取或者拉取数据来从数据流中获取数据。根据本主题的一些方面,流式传输联接模块 106可以拉取用于流式传输联接的数据,使得数据不被接收,直到由流式传输联接模块请求。流式传输联接模块106可以一次从第一数据流拉取数据。流式传输联接模块106可以在比从第一数据流拉取数据的时间更早或更晚的另一时间从第二数据流拉取数据。如果有两个以上的数据流,则其他数据流可以在不同的时间拉取。流式传输联接模块106可以生成基于与来自数据流的数据相关联的时间来将拉取请求发送到数据流的次序(顺序),从而确定接着将从哪个数据流拉取。流式传输联接模块106可以使用以下方法来确定接着要从哪个数据流拉取。如果与第一数据流中的第一数据单元、记录或事件相关联的时间大于与第二数据流中的第二数据单元、记录或事件相关联的时间,则流式传输联接模块106可以停止从第一数据流拉取数据直到与第一数据流的数据相关联的时间等于或大于在第二数据流中正在处理的数据,反之亦然。
例如,假定流式传输联接模块106被给予具有仅匹配具有相同时间戳的事件的条件的联接。流式传输联接模块可以从数据流1拉取数据。假定数据流1中的第一事件具有时间(t)+8的时间戳。流式传输联接模块然后可以从数据流2请求数据。假定数据流2中的第一事件具有t+0的时间戳。流式传输联接模块106可以存储具有稍后关联时间的第一数据流1(数据流1)的事件的时间戳(t+8),并且停止从数据流1拉取数据,直到从数据流2处理事件的时间戳达到或超过所存储的时间戳(t+8)。因此,在该示例中,不是存储来自数据流1 的8个事件直到时间戳为t+8或更大的数据流2中的事件到达,而是在存储器中存储仅一个值。
在上面的示例中,假定具有等价时间戳的数据被联接。也就是说,来自具有时间戳t+1的数据流1的数据与来自具有时间戳t+1的数据流2的数据联接。但是,情况并非总是如此。联接条件可以规定,具有落在规定的范围或时间段内的关联时间的数据可以被联接。可以分析联接条件以确定许可联接数据的时间范围。例如,联接条件可以规定来自数据流1的数据和来自数据流2的数据可以联接,只要与来自数据流2的数据相关联的时间以从联接条件生成的时间范围(诸如例如在10至20秒之间)超过与来自数据流1的数据相关联的时间。在这种情况下,流式传输联接模块可以以时间范围的下限(例如,10 秒)向从数据流1拉取数据中引入有意延迟,因此没有来自数据流1 的事件可以成功地匹配来自数据流2的事件,直到与来自数据流2的数据相关联的时间至少是在与来自数据流1的数据相关联的时间之前的下限(10秒)。当输入流是记录的数据流时,“延迟”可以表示跳到具有满足联接条件的关联时间的数据,而不是实际等待10秒。延迟也可以表示暂停拉取数据。
可以使用依赖于用于规定那些条件的语言的方法从联接条件中提取时间范围。根据本文中描述的主题的一些方面,联接条件使用二进制逻辑而不是二进制布尔表达式来规定。在这样的系统中,范围可以通过递归地执行的以下步骤序列来提取:
1)将联接条件转换为其析取范式。
2)如果条件中的最顶层运算符是AND,则从其两个变元中提取范围并且取它们的交集。
3)如果条件中的最顶层运算符是OR,则从其两个变元中提取范围,并且取它们的并集,以取结果的凸包。
4)如果条件中的最顶层运算符是NOT,则提取其变元的范围并且取它们的补集,以取结果的凸包。
5)如果条件中的最顶层运算符是比较运算符,则:
a.检查左侧的所有变元引用第一流的关联时间还是常数,以及右侧的所有变元引用第二流的关联时间还是常数,提取由该表达式暗示的关联时间之间的差的边界。
b.否则,返回完全开放的范围。
第二流式传输联接策略适用于仅在特定条件存在或达到特定阈值时才生成来自一个数据源的数据的情况下产生输出数据的联接。在某些情况下,可以在运行时分析联接条件。响应于确定不管由第一数据源生成的输入如何,都不从第二数据源生成输入,则不寻求来自第一数据源的输入。例如,联接条件可以规定来自数据流1的数据仅在来自数据流1的数据和来自数据流2的数据的关联时间和它们的用户名都匹配的情况下匹配来自数据流2的数据。当从一个数据流(例如,数据流1)摄取具有给定时间的大量记录,而从另一数据流(例如,数据流2)摄取具有匹配时间的少量记录时,可以暂停从一个数据流 (例如,数据流1)摄取数据,直到(a)另一数据流(例如,数据流 2)移动超过上述匹配时间或者(b)在该时间从另一数据流(例如,数据流2)摄取的数据单元的数目达到从一个数据流(例如,数据流1)摄取的数据单元的数目。
第三流式传输联接策略是其中至少两个时间段被应用于联接的多阶段方法。在一个(例如,通常较短的)时间段内,来自第一数据流的数据和来自第二数据流的数据在第一时间段内匹配。根据本文中描述的主题的一些方面,在第一(较短)时间段内与来自第一数据流的数据不匹配的来自第二数据流的任何数据被保留或保持(例如,在存储器中),并且当第一流以达到第二(较大)时间段的一个或多个增加的延迟被重新读取(例如,重新拉取)时被匹配。应当理解,提供的示例表示是说明性的而不是限制性的。
图2a示出了根据本文中描述的主题的各方面的用于执行流式传输联接的方法251的示例。在图2a中描述的方法可以通过诸如但不限于关于图1描述的系统来实践。尽管方法251描述了按照顺序执行的一系列操作,但是应当理解,方法251不受所描述顺序的限制。例如,一些操作可以以不同于所描述的顺序发生。另外,一个操作可以与另一操作同时发生。在一些情况下,并非所有描述的操作都被执行。在一些情况下,并非所有操作都被示出。
在操作272,可以分析一个或多个联接条件。在操作273,可以确定接着要从哪个数据流拉取。在操作274,可以从所选择的数据流拉取。在操作275,可以处理所拉取的数据。可以生成输出。
图2b示出了根据本文中描述的主题的各方面的用于执行流式传输联接的方法200的示例。在图2b中描述的方法可以通过诸如但不限于关于图1描述的系统来实践。尽管方法200描述了按照顺序执行的一系列操作,但是应当理解,方法200不受所描述顺序的限制。例如,一些操作可以以不同于所描述的顺序发生。另外,一个操作可以与另一操作同时发生。在一些情况下,并非所有描述的操作都被执行。在一些情况下,并非所有操作都被示出。
在操作202,可以分析一个或多个联接条件。至少一个联接条件的分析可以提供从其中可以生成用于匹配数据的许可时间差异的信息。在操作203,可以生成匹配(可联接)数据(例如,事件)之间的最小时间变化(例如,时间变化d)。也就是说,如上所述,联接条件可以规定与落入规定范围或时间段内的时间相关联的数据可以被联接。在操作203,可以分析联接条件以确定用于联接数据的时间范围。例如,联接条件可以规定来自数据流1的数据和来自数据流2 的数据可以被联接,只要与从数据流2拉取的数据相关联的时间超过与从数据流1拉取的数据相关联的时间3至5秒之间。最小时间变化 d是范围的下限:在本示例中,最小时间变化d是3秒,即时间段的下限。在与从第一数据流拉取的数据相关联的时间之后少于3分钟的时间相关联的数据将不匹配,因为该数据没有落在与从第一数据流拉取的数据相关联的时间之后的3到5分钟的范围内并且因此不会被联接。在与从第一数据流拉取的数据相关联的时间之后大于5分钟的时间相关联的数据将不匹配,因为该数据没有落在与从第一数据流拉取的数据相关联的时间之后的3到5分钟的范围内并且因此不会被联接。
在操作204,可以从第一数据源获取、访问、读取或拉取来自第一数据流的数据。在操作205,可以记录与被拉取的数据相关联的时间t。在操作206,可以从另一数据源(第二数据源)获取、访问、读取或拉取来自另一数据流(第二数据流)的数据。可以确定来自另一数据流T的数据的关联时间。如果数据满足匹配准则,则可以在操作 207产生输出,输出可以被显示、报告、发送给请求者等,并且处理可以在操作208处继续。如果数据不符合匹配准则,则将不产生输出并且操作可以在操作208处继续。在操作208确定与试图匹配的数据相关联的时间是落在可联接时间范围之内还是之外的结果确定读取的下一数据流是数据流1还是数据流2。结果可以通过评估表达式 T<t-d来确定。如果T<t-d为真,数据是可联接的,并且接着可以拉取来自第二数据流的更多数据。如果T<t-d为假,则数据不可联接,并且接着可以拉取来自第一数据流的更多数据。也就是说,如果与来自第二流的数据相关联的时间小于记录的时间与最小时间变化的差,则可以从第二数据流拉取数据。处理可以在操作206处继续,在该点处可以获取、访问、读取或拉取来自第二数据流的附加数据。响应于在操作208处确定与试图匹配和联接的数据相关联的时间落在可联接的时间段之外,可以从第一数据流获取、访问、读取或拉取附加数据,并且处理可以在操作204处继续。操作204到208可以继续,直到流处理终止。
假定例如来自数据流2的数据包括关于何时启动计算机的数据,并且来自数据流1的数据包括关于登录到计算机的数据。假定联接条件被写入,以便在计算机启动之后的5到10分钟内找到登录到计算机的所有用户。假定最后一次登录是在1:11。假定最后一次启动是在 1:05。如果最后一次重启发生在T=1:05,则1:05可以与1:06比较,即1:11-5(来自数据流1的数据t的记录的时间减去从联接条件的分析生成的最小变化时间d)来确定接着要拉取哪个数据流。由于1:05 小于1:06,因此可以从第二数据流访问、读取或拉取附加数据。匹配记录的时间1:11的登录是在1:11到1:16之间发生的登录。因此,如果最后一次登录是1:11,则可以匹配的最新重新启动将是1:06。因此,在接收到另一登录信息之前,不需要再读取更多的启动。
图2c图示了根据本文中描述的主题的各方面的用于执行流式传输联接的方法220的示例。在图2c中描述的方法可以通过诸如但不限于关于图1描述的系统来实践。尽管方法220描述了按照顺序执行的一系列操作,但是应当理解,方法220不受所描述顺序的限制。例如,一些操作可以以不同于所描述的顺序发生。另外,一个操作可以与另一操作同时发生。在一些情况下,并非所有描述的操作都被执行。在一些情况下,并非所有操作都被示出。
在操作222,可以分析一个或多个联接条件。响应于在操作224 处确定,不管通过数据流中的一个(例如,第一数据流)接收到的附加输入如何,不产生任何输出除非并且直到从另一数据流(例如,第二数据流)接收到更多的输入,从第一流获取、访问、读取或拉取数据可以停止,直到从另一(第二)数据流接收到更多输入。也就是说,响应于在操作224确定不能获取来自数据流1的更多潜在地可联接的输入数据直到接收到来自第二数据流的数据,处理可以在操作228处继续。作为潜在地可联接的数据的数据是具有至少一些匹配机会的数据。代替地,如果在操作224处确定从第一数据流(例如,数据流1) 可获得附加的仍然潜在地可联接的数据,则在操作226可以从第一数据流(例如,数据流1)获取、访问、读取或拉取附加数据。处理可以返回到操作224。响应于在操作228处确定来自第二数据流(例如,数据流2)的附加输入仍然是潜在地可联接的并且因此仍然潜在地生成输出,则在操作230可以从数据流2拉取附加数据。处理可以返回到操作228。响应于在操作228处确定不管从数据流2接收到什么附加输入,都不能生成输出直到接收到来自第一数据流的附加数据,处理可以返回到操作224。该处理可以继续,直到流处理过程结束。
描述了方法220的现实世界的示例。假定在检测到100华氏度的温度读数之前5分钟或之后5分钟之内发生计算机重新启动。通常会生成比重新启动更多的温度读数。但是,除非在前的5分钟内重新启动,否则获取温度读数没有意义。代替获取并且存储所有数据,直到发生重新启动,数据才被拉取。例如,假定第一数据流(数据流1) 代表温度,并且第二数据流(数据流2)代表重新启动。在操作224 处获取温度读数,但到目前为止,没有接收到重新启动,因此不能生成输出。附加的温度读数将不会生成输出,因此没有拉取更多的温度读数。代替地,试图从第二数据流(数据流2)拉取数据。如果获得数据并且匹配条件满足,则可以产生输出并且可以从数据流2拉取更多的数据。只要生成输出,该循环就会继续。当不能再生成输出时(在前的5分钟内没有重新启动),处理返回到操作224。该过程可以重复。
图2d图示了根据本文中描述的主题的各方面的用于执行流式传输联接的方法231的示例。在图2d中描述的方法可以通过诸如但不限于关于图1描述的系统来实践。尽管方法231描述了按照顺序执行的一系列操作,但是应当理解,方法231不受所描述顺序的限制。例如,一些操作可以以不同于所描述的顺序发生。另外,一个操作可以与另一操作同时发生。在一些情况下,并非所有描述的操作都被执行。在一些情况下,并非所有操作都被示出。
可以分析用于联接来自第一流的数据和来自第二流的数据的至少一个联接条件以生成至少第一时间间隔和第二时间间隔。根据本文中描述的主题的一些方面,第一时间间隔是两个时间间隔中较短的时间间隔,并且第二时间间隔是两个时间间隔中较长的时间间隔。在多阶段联接过程的第一阶段中,在操作232,可以获取来自第一数据流的数据(例如,访问、读取、拉取等)。在操作233,可以获取来自第二数据流的数据(例如,访问、读取、拉取等)。
在操作234,可以评估来自第一数据流的数据和来自第二数据流的数据,以使用第一时间段来确定数据是否匹配。例如,如果与匹配的数据相关联的时间落在多个时间段的第一时间间隔内,则数据匹配。根据本文中描述的主题的一些方面,第一间隔是较短的间隔。响应于确定来自第一流的数据和来自第二流的数据匹配,可以在操作 238处生成输出数据(联接结果)。响应于确定来自第一流的数据和来自第二流的数据不匹配,即,例如,其相关联的时间落在第一间隔之外,则可以在操作235处保持来自数据流2的不匹配的数据。
在联接过程的第二阶段,可以使用第二(例如,可能更长的)时间段来匹配来自第一数据流的不匹配的数据和来自第二数据流的不匹配的数据。在操作242,可以将来自流1的数据以有意识的延迟重新读取(重新拉取)。在操作236,可以评估从第一数据流重新读取的数据以及在操作235从第二数据流保持的数据以使用第二时间段确定数据是否匹配。例如,如果匹配的数据的关联时间落在多个时间段的第二规定间隔内,则数据匹配。根据本文中描述的主题的一些方面,第二间隔是较长的间隔。
响应于确定从第一流重新读取的数据和从第二流保持的数据匹配,可以在操作238处生成输出数据(联接结果)。处理可以在操作 232和233处继续。响应于确定来自第一流的数据和来自第二流的数据不匹配,即例如,其时间戳落在第二间隔之外,则可以在操作240 丢弃来自数据流2的不匹配的数据。处理可以在操作232和233处继续。应当理解,尽管在图2d中仅描绘了两个阶段,但是设想的主题不限于此。可以针对任何数目的阶段重复该过程或其部分。
现在描述真实世界的示例。假定来自第一数据流的数据表示向用户显示的广告。假定来自第二数据流的数据表示点击事件(即,用户点击广告)。假定所选择的第一时间段是五分钟。广告数据被获取。点击数据被获取。数据被评估,以查看是否匹配。在前五分钟内与广告显示匹配的任何点击事件都可以导致产生输出。为此,可以保持5 分钟的广告。如果有任何匹配,则产生输出。极有可能是数据不匹配。特别是,一些点击将不匹配。点击与广告不匹配的原因是广告发生在超过5分钟之前。不匹配的点击是在广告显示之后超过5分钟发生的点击。不匹配的点击次数预计会非常少。
不匹配的点击可以在以延迟(例如,一个小时的延迟)从数据流 1重新获取广告的情况下与广告相匹配。广告和点击可能仍然不匹配。例如,广告和点击可以不匹配,因为点击发生在广告被显示之后超过一个小时,或者因为没有保持对应的点击(例如,因为点击发生在广告被显示之后不到5分钟)。如果广告在5分钟之前被点击,则操作 234将处理该广告。操作236将仅拾取在5分钟和1小时之间发生的点击。被保持在存储器或存储装置中的数据量非常小(5分钟的广告和不匹配的点击)。传统的系统会保持一个小时的广告。假定所选择的第二时间段是三个小时。不匹配的数据(点击和广告)可以以3小时的延迟重新摄取,并且被联接以产生输出。
总之,本文描述了一种系统,该系统包括至少一个处理器、连接到至少一个处理器的存储器、以及被加载到存储器中的至少一个程序模块,至少一个程序模块包括流式传输联接模块,流式传输联接模块:分析的用于联接从第一数据流拉取的数据和从第二数据流拉取的数据的至少一个联接条件,并且基于至少一个联接条件的分析来生成基于与来自第一数据流的数据相关联的时间和与来自第二数据流的数据相关联的时间来将拉取请求发送到第一和第二数据流的次序或顺序。该系统可以包括从至少一个联接条件的分析来生成用于可联接数据的许可时间范围的至少一个程序模块。该系统可以包括生成许可时间范围的下边界的至少一个程序模块,下边界包括用于可联接数据的最小时间变化,从第一数据流拉取数据,和/或在存储器或其他地方记录与来自第一数据流的数据相关联的时间,并且然后从第二数据流拉取数据。
该系统可以包括通过确定与来自第二流的数据相关联的时间小于记录的时间与最小时间变化之间的差来确定从第二数据流拉取的数据潜在地与从第一数据流拉取的数据可联接的至少一个程序模块。该系统可以包括响应于确定从第二数据流拉取的数据与从第一数据流拉取的数据不可联接来从第一数据流拉取附加数据、和/或通过确定与来自第二流的数据相关联的时间不小于记录的时间与最小时间变化之间的差来确定从第二数据流拉取的数据与从第一数据流拉取的数据不可联接的至少一个程序模块。该系统可以包括从至少一个联接条件的分析来确定为了产生输出而需要来自第一数据流的数据和来自第二数据流的数据的至少一个程序模块。该系统可以包括响应于确定由于尚未拉取来自第二数据流的任何潜在地可联接的数据而不能产生任何输出来停止从第一数据流拉取数据并且开始从第二数据流拉取数据的至少一个程序模块。该系统可以包括响应于确定由于尚未拉取来自第一数据流的任何潜在地可联接的数据而不能产生任何输出来停止从第二数据流拉取数据并且开始从第一数据流拉取数据的至少一个程序模块。
本文中公开的系统可以包括从至少一个联接条件的分析来确定第一时间间隔和第二时间间隔并且响应于确定与来自第一数据流的数据相关的时间和与来自第二数据流的数据相关的时间的确落在第一时间间隔内来保持来自第二数据流的不匹配的数据的至少一个程序模块。该系统可以包括从至少一个联接条件的分析来确定第一时间间隔和第二时间间隔并且响应于确定与来自第一数据流的数据相关联的时间和与来自第二数据流的记录的数据相关联的时间落在第二时间间隔内来丢弃来自第二数据流的不匹配的数据的至少一个程序模块。
公开了一种方法,其包括由计算设备的处理器分析用于在流式传输处理系统中联接从第一数据流拉取的数据和从第二数据流拉取的数据的至少一个联接条件,并且基于至少一个联接条件的分析来生成基于与来自第一数据流的数据相关联的时间和与来自第二数据流的数据相关联的时间来将拉取请求发送到第一数据流和第二数据流的次序。该方法可以从至少一个联接条件的分析来生成用于可联接数据的许可时间范围,生成许可时间范围的下边界,下边界包括用于可联接数据的最小时间变化,从第一数据流拉取数据,在存储器或其他地方记录与来自第一数据流的数据相关联的时间,以及从第二数据流拉取数据。该方法可以通过确定与来自第二流的数据相关联的时间小于记录的时间与最小时间变化之间的差来确定从第二数据流拉取的数据潜在地与从第一数据流拉取的数据可联接。
该方法可以响应于确定从第二数据流拉取的数据与从第一数据流拉取的数据不可联接来从第一数据流拉取附加数据,并且通过确定与来自第二流的数据相关联的时间不小于记录的时间与最小时间变化之间的差来确定从第二数据流拉取的数据与从第一数据流拉取的数据不可联接。该方法可以从至少一个联接条件的分析来确定为了产生输出,需要来自第一数据流的数据和来自第二数据流的数据。该方法可以响应于确定由于尚未拉取来自第二数据流的任何潜在地可联接的数据而不能产生任何输出,停止从第一数据流拉取数据并且开始以有意延迟从第二数据流拉取数据。该方法可以响应于确定由于尚未拉取来自第一数据流的任何潜在地可联接的数据而不能产生任何输出,停止从第二数据流拉取数据并且从第一数据流拉取数据。该方法可以从至少一个联接条件的分析来确定第一时间间隔和第二时间间隔,并且响应于确定与来自第一数据流的数据相关联的时间和与来自第二数据流的数据相关联的时间落在第一时间间隔内,保持来自第二数据流的不匹配的数据。该方法可以从至少一个联接条件的分析来确定第一时间间隔和第二时间间隔,并且响应于确定与来自第一数据流的数据相关联的时间和与来自第二数据流的记录的数据相关联的时间落在第二时间间隔内,丢弃来自第二数据流的不匹配的数据。
公开了一种包括计算机可读指令的计算机可读存储介质,计算机可读指令在被执行时引起计算设备的至少一个处理器分析用于联接从第一数据流拉取的数据和从第二数据流拉取的数据的至少一个联接条件。另外的指令可以基于至少一个联接条件的分析来生成拉取请求基于与来自第一数据流的数据相关联的时间和与来自第二数据流的数据相关联的时间被发送到第一数据流和第二数据流的次序。另外的指令可以从至少一个联接条件的分析来确定第一时间间隔和第二时间间隔。另外的指令可以响应于确定与来自第一数据流的数据相关联的时间和与来自第二数据流的数据相关联的时间落在第一时间间隔内,保持来自第二数据流的不匹配的数据。另外的指令可以响应于确定与来自第一数据流的数据相关联的时间和与来自第二数据流的记录的数据相关联的时间落在第二时间间隔内,丢弃来自第二数据流的不匹配的数据。
合适的计算环境的示例
为了提供本文中公开的主题的各个方面的上下文,图3和以下讨论旨在提供其中可以实现本文中公开的主题的各种实施例的合适的计算环境510的简要概述。虽然本文中公开的主题是在由一个或多个计算机或其他计算设备执行的诸如程序模块等计算机可执行指令的一般上下文中描述的,但是本领域技术人员将认识到,本文中公开的主题的部分也可以结合其他程序模块和/或硬件和软件的组合来实现。通常,程序模块包括执行特定任务或实现特定数据类型的例程、程序、对象、物理制品、数据结构等。典型地,程序模块的功能可以根据需要在各种实施例中组合或分配。计算环境510仅是合适的操作环境的一个示例,并不旨在限制本文中公开的主题的使用范围或功能。
参考图3,描述了计算机512形式的计算设备。计算机512可以包括至少一个处理单元514、系统存储器516和系统总线518。至少一个处理单元514可以执行存储在诸如但不限于系统存储器516等存储器中的指令。处理单元514可以是各种可用处理器中的任何一种。例如,处理单元514可以是图形处理单元(GPU)。指令可以是用于实现由上面讨论的一个或多个部件或模块执行的功能的指令,或者是用于实现上述方法中的一个或多个的指令。双微处理器和其他多处理器架构也可以用作处理单元514。计算机512可以用在支持在显示屏幕上绘制图形的系统中。在另一示例中,计算设备的至少部分可以用在包括图形处理单元的系统中。系统存储器516可以包括易失性存储器520和非易失性存储器522。非易失性存储器522可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM) 或闪速存储器。易失性存储器520可以包括可以用作外部高速缓冲存储器的随机存取存储器(RAM)。系统总线518将包括系统存储器 516的系统物理制品耦合到处理单元514。系统总线518可以是多种类型中的任何一种,包括存储器总线、存储器控制器、外围总线、外部总线或本地总线,并且可以使用任何各种可用的总线架构。计算机 512可以包括由处理单元514通过系统总线518可访问的数据储存库。数据储存库可以包括用于图形绘制的可执行指令、3D模型、材料、纹理等。
计算机512通常包括各种计算机可读介质,诸如易失性和非易失性介质、可移除和不可移除介质。计算机可读介质可以以用于存储诸如计算机可读指令、数据结构,程序模块或其他数据等信息的任何方法或技术来实现。计算机可读介质包括计算机可读存储介质(也称为计算机存储介质)和通信介质。计算机存储介质包括物理(有形)介质,诸如但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CDROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置、或者可以存储所需数据并且可以由计算机512访问的其他磁存储设备。通信介质包括以下介质,诸如但不限于通信信号、调制载波、或者可以用于传达所需信息并且可以由计算机512访问的任何其他无形介质。
应当理解,图3描述了可以用作用户与计算机资源之间的媒介的软件。该软件可以包括操作系统528,其可以存储在磁盘存储装置524 上,并且可以分配计算机512的资源。磁盘存储装置524可以是通过诸如接口526等不可移除存储器接口连接到系统总线518的硬盘驱动器。系统应用530通过存储在系统存储器516中或者存储在磁盘存储装置524上的程序模块532和程序数据534来利用操作系统528对管理资源。可以理解,计算机可以被实现为具有各种操作系统或操作系统的组合。
用户可以通过一个或多个多输入设备536将命令或信息输入到计算机512中。输入设备536包括但不限于指示设备,诸如鼠标、跟踪球、触控笔、触摸板、键盘、麦克风、语音识别和手势识别系统等。这些和其他输入设备经由一个或多个接口端口538通过系统总线518连接到处理单元514。一个或多个接口端口538可以表示串行端口、并行端口、通用串行总线(USB)等。一个或多个输出设备540可以使用与输入设备相同类型的端口。提供输出适配器542以说明存在一些输出设备540,如需要特定适配器的监视器、扬声器和打印机。输出适配器542包括但不限于在输出设备540与系统总线518之间提供连接的视频和声卡。诸如一个或多个远程计算机544等其他设备和/ 或系统或设备可以提供输入和输出能力两者。
计算机512可以使用到一个或多个远程计算机(诸如一个或多个远程计算机544)的逻辑连接在联网环境中操作。远程计算机544可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括上面相对于计算机512描述的很多或全部元件,尽管在图3中仅示出了存储器存储设备546。一个或多个远程计算机544可以经由一个或多个通信连接550在逻辑上连接。网络接口 548包括诸如局域网(LAN)和广域网(WAN)等通信网络,但是也可以包括其他网络。一个或多个通信连接550是指用于将网络接口 548连接到总线518的硬件/软件。一个或多个通信连接550可以在计算机512内部或外部,并且包括内部和外部技术,诸如调制解调器(电话、电缆、DSL和无线)以及ISDN适配器、以太网卡等。
可以理解,所示出的网络连接仅仅是示例,并且可以使用在计算机之间建立通信链路的其他手段。本领域普通技术人员可以理解,计算机512或其他客户端设备可以被部署为计算机网络的部分。就这一点而言,本文中公开的主题可以涉及具有任意数目的存储器或存储单元的任何计算机系统、以及跨任何数目的存储单元或卷发生的任何数目的应用和过程。本文中公开的主题的各方面可以应用于具有部署在网络环境中的具有远程或本地存储装置的服务器计算机和客户端计算机的环境。本文中公开的主题的各方面还可以应用于具有编程语言功能、解释和执行能力的独立计算设备。
本文中描述的各种技术可以结合硬件或软件或者在适当的情况下结合两者来实现。因此,本文中描述的方法和装置或其某些方面或部分可以采取在有形介质(诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质)中实施的程序代码(即,指令)的形式,其中,当程序代码被加载到诸如计算机等机器中并且由其执行时,该机器变成用于实践本文中公开的主题的各方面的装置。如本文中使用的,术语“机器可读存储介质”应当被理解为排除提供(即,存储和 /或传送)任何形式的传播信号的任何机制。在可编程计算机上执行程序代码的情况下,计算设备通常将包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。可以利用例如通过使用数据处理API 等来创建和/或实现领域特定的编程模型方面的一个或多个程序可以以高级过程或面向对象的编程语言来实现,以与计算机系统通信。然而,如果需要的话,一个或多个程序可以以汇编语言或机器语言来实现。在任何情况下,语言都可以是编译或解释的语言,并且与硬件实现结合。
尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于上面描述的具体特征或动作。代替地,上面描述的具体特征和行为被公开作为实施权利要求的示例形式。

Claims (20)

1.一种用于流联接的系统,包括:
至少一个处理器;以及
存储器,连接到所述至少一个处理器;
所述至少一个处理器被配置为执行以下动作:
分析用于联接从第一数据流拉取的数据和从第二数据流拉取的数据的至少一个联接条件,所述至少一个联接条件指示所述第一数据流中的所述数据和所述第二数据流中的所述数据将如何被联接;
基于所述至少一个联接条件的所述分析,确定执行所述联接的许可时间范围,其中来自所述第一数据流和所述第二数据流的数据满足所述联接条件;以及
生成拉取请求被发送到所述第一数据流和所述第二数据流的次序,使得来自所述第一数据流和所述第二数据流的数据在所述许可时间范围内被联接,所述次序基于与来自所述第一数据流的所述数据相关联的时间和与来自所述第二数据流的所述数据相关联的时间。
2.根据权利要求1所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
生成所述许可时间范围的下边界,所述下边界包括针对可联接数据的最小时间变化;
从所述第一数据流拉取数据;
在所述存储器中记录与来自所述第一数据流的所述数据相关联的所述时间;以及
从所述第二数据流拉取数据。
3.根据权利要求2所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
通过确定与来自所述第二数据流的所述数据相关联的所述时间小于记录的所述时间与所述最小时间变化之间的差,确定从所述第二数据流拉取的所述数据潜在地与从所述第一数据流拉取的所述数据可联接。
4.根据权利要求2所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
响应于确定从所述第二数据流拉取的所述数据与从所述第一数据流拉取的所述数据不可联接,从所述第一数据流拉取附加数据;以及
通过确定与来自所述第二数据流的所述数据相关联的所述时间不小于记录的所述时间与所述最小时间变化之间的差,确定从所述第二数据流拉取的所述数据与从所述第一数据流拉取的所述数据不可联接。
5.根据权利要求1所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
从所述至少一个联接条件的所述分析来确定为了产生输出,需要来自所述第一数据流的数据和来自所述第二数据流的数据。
6.根据权利要求5所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
响应于确定由于尚未拉取来自所述第二数据流的潜在地可联接的数据而不能产生输出,停止从所述第一数据流拉取数据并且开始从所述第二数据流拉取数据。
7.根据权利要求5所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
响应于确定由于尚未拉取来自所述第一数据流的潜在地可联接的数据而不能产生输出,停止从所述第二数据流拉取数据并且开始从所述第一数据流拉取数据。
8.根据权利要求1所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
从所述至少一个联接条件的所述分析来确定第一时间间隔和第二时间间隔;以及
响应于确定与来自所述第一数据流的所述数据相关联的所述时间和与来自所述第二数据流的所述数据相关联的所述时间的确落在所述第一时间间隔内,保持来自所述第二数据流的不匹配的数据。
9.根据权利要求1所述的系统,其中所述至少一个处理器还被配置为执行以下动作:
从所述至少一个联接条件的所述分析来确定第一时间间隔和第二时间间隔;以及
响应于确定与来自所述第一数据流的所述数据相关联的所述时间和与来自所述第二数据流的记录的数据相关联的所述时间落在所述第二时间间隔内,丢弃来自所述第二数据流的不匹配的数据。
10.一种用于流联接的方法,包括:
由计算设备的处理器分析用于在流式传输处理系统中联接从第一数据流拉取的数据和从第二数据流拉取的数据的至少一个联接条件,所述至少一个联接条件指示所述第一数据流中的所述数据和所述第二数据流中的所述数据将如何被联接;
基于所述至少一个联接条件的所述分析,确定执行所述联接的许可时间范围,其中来自所述第一数据流和所述第二数据流的数据满足所述联接条件;以及
基于所述至少一个联接条件的分析来生成拉取请求被发送到所述第一数据流和所述第二数据流的次序,使得来自所述第一数据流和所述第二数据流的数据在所述许可时间范围内被联接,所述次序基于与来自所述第一数据流的所述数据相关联的时间和与来自所述第二数据流的所述数据相关联的时间。
11.根据权利要求10所述的方法,还包括:
生成所述许可时间范围的下边界,所述下边界包括针对可联接数据的最小时间变化;
从所述第一数据流拉取数据;
在存储器中记录与来自所述第一数据流的所述数据相关联的所述时间;以及
从所述第二数据流拉取数据。
12.根据权利要求11所述的方法,还包括:
通过确定与来自所述第二数据流的所述数据相关联的所述时间小于记录的所述时间与所述最小时间变化之间的差,确定从所述第二数据流拉取的所述数据潜在地与从所述第一数据流拉取的所述数据可联接。
13.根据权利要求11所述的方法,还包括:
响应于确定从所述第二数据流拉取的所述数据与从所述第一数据流拉取的所述数据不可联接,从所述第一数据流拉取附加数据;以及
通过确定与来自所述第二数据流的所述数据相关联的所述时间不小于记录的所述时间与所述最小时间变化之间的差,确定从所述第二数据流拉取的所述数据与从所述第一数据流拉取的所述数据不可联接。
14.根据权利要求10所述的方法,还包括:
从所述至少一个联接条件的所述分析来确定为了产生输出,需要来自所述第一数据流的数据和来自所述第二数据流的数据。
15.根据权利要求14所述的方法,还包括:
响应于确定由于尚未拉取来自所述第二数据流的潜在地可联接的数据而不能产生输出,停止从所述第一数据流拉取数据并且开始以有意延迟从所述第二数据流拉取数据。
16.根据权利要求14所述的方法,还包括:
响应于确定由于尚未拉取来自所述第一数据流的潜在地可联接的数据而不能产生输出,停止从所述第二数据流拉取数据并且从所述第一数据流拉取数据。
17.根据权利要求10所述的方法,还包括:
从所述至少一个联接条件的所述分析来确定第一时间间隔和第二时间间隔;以及
响应于确定与来自所述第一数据流的所述数据相关联的时间和与来自所述第二数据流的所述数据相关联的所述时间落在所述第一时间间隔内,保持来自所述第二数据流的不匹配的数据。
18.根据权利要求17所述的方法,还包括:
从所述至少一个联接条件的所述分析来确定第一时间间隔和第二时间间隔;以及
响应于确定与来自所述第一数据流的所述数据相关联的时间和与来自所述第二数据流的记录的数据相关联的所述时间落在所述第二时间间隔内,丢弃来自所述第二数据流的不匹配的数据。
19.一种用于流联接的设备,包括:
至少一个处理器和存储器;
所述至少一个处理器被配置为执行以下动作:
分析用于联接从第一数据流拉取的数据和从第二数据流拉取的数据的至少一个联接条件,所述至少一个联接条件指示所述第一数据流中的所述数据和所述第二数据流中的所述数据将如何被联接;
基于所述至少一个联接条件的所述分析,确定执行所述联接的许可时间范围,其中来自所述第一数据流和所述第二数据流的数据满足所述联接条件;以及
生成拉取请求被发送到所述第一数据流和所述第二数据流的次序,使得来自所述第一数据流和所述第二数据流的数据在所述许可时间范围内被联接,所述次序基于与来自所述第一数据流的所述数据相关联的时间和与来自所述第二数据流的所述数据相关联的时间。
20.根据权利要求19所述的设备,其中所述至少一个处理器还被配置为执行以下动作:
从所述至少一个联接条件的所述分析来确定第一时间间隔和第二时间间隔;
响应于确定与来自所述第一数据流的所述数据相关联的所述时间和与来自所述第二数据流的所述数据相关联的所述时间落在所述第一时间间隔内,保持来自所述第二数据流的不匹配的数据;以及
响应于确定与来自所述第一数据流的所述数据相关联的所述时间和与来自所述第二数据流的记录的数据相关联的所述时间落在所述第二时间间隔内,丢弃来自所述第二数据流的不匹配的数据。
CN201680032699.7A 2015-06-05 2016-06-03 受限的存储器环境中的流式传输联接 Active CN107690616B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/732,374 2015-06-05
US14/732,374 US9880769B2 (en) 2015-06-05 2015-06-05 Streaming joins in constrained memory environments
PCT/US2016/035610 WO2016196859A1 (en) 2015-06-05 2016-06-03 Streaming joins in constrained memory environments

Publications (2)

Publication Number Publication Date
CN107690616A CN107690616A (zh) 2018-02-13
CN107690616B true CN107690616B (zh) 2020-08-07

Family

ID=56194565

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680032699.7A Active CN107690616B (zh) 2015-06-05 2016-06-03 受限的存储器环境中的流式传输联接

Country Status (4)

Country Link
US (1) US9880769B2 (zh)
EP (1) EP3304352B1 (zh)
CN (1) CN107690616B (zh)
WO (1) WO2016196859A1 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016118627A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Managing meta-data in an object memory fabric
WO2016118620A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Object memory data flow triggers
US10148719B2 (en) 2015-06-05 2018-12-04 Microsoft Technology Licensing, Llc. Using anchors for reliable stream processing
US9971542B2 (en) * 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
WO2017100288A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Memory fabric operations and coherency using fault tolerant objects
CN108885604B (zh) 2015-12-08 2022-04-12 乌尔特拉塔有限责任公司 存储器结构软件实现方案
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
US10235063B2 (en) 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
US10257058B1 (en) 2018-04-27 2019-04-09 Banjo, Inc. Ingesting streaming signals
US10324948B1 (en) 2018-04-27 2019-06-18 Banjo, Inc. Normalizing ingested signals
US10313413B2 (en) 2017-08-28 2019-06-04 Banjo, Inc. Detecting events from ingested communication signals
US10581945B2 (en) 2017-08-28 2020-03-03 Banjo, Inc. Detecting an event from signal data
US20190251138A1 (en) 2018-02-09 2019-08-15 Banjo, Inc. Detecting events from features derived from multiple ingested signals
US11025693B2 (en) 2017-08-28 2021-06-01 Banjo, Inc. Event detection from signal data removing private information
US10324935B1 (en) 2018-02-09 2019-06-18 Banjo, Inc. Presenting event intelligence and trends tailored per geographic area granularity
US10313865B1 (en) 2018-04-27 2019-06-04 Banjo, Inc. Validating and supplementing emergency call information
US10261846B1 (en) 2018-02-09 2019-04-16 Banjo, Inc. Storing and verifying the integrity of event related data
US10585724B2 (en) 2018-04-13 2020-03-10 Banjo, Inc. Notifying entities of relevant events
US10970184B2 (en) 2018-02-09 2021-04-06 Banjo, Inc. Event detection removing private information
US10353934B1 (en) 2018-04-27 2019-07-16 Banjo, Inc. Detecting an event from signals in a listening area
US10904720B2 (en) 2018-04-27 2021-01-26 safeXai, Inc. Deriving signal location information and removing private information from it
US10327116B1 (en) 2018-04-27 2019-06-18 Banjo, Inc. Deriving signal location from signal content
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
US11113197B2 (en) * 2019-04-08 2021-09-07 Microsoft Technology Licensing, Llc Punctuation controlled temporal reference data lookup
US10582343B1 (en) 2019-07-29 2020-03-03 Banjo, Inc. Validating and supplementing emergency call information
CN113127511B (zh) * 2020-01-15 2023-09-15 百度在线网络技术(北京)有限公司 多数据流的数据拼接方法、装置、电子设备和存储介质
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
CN111680065B (zh) * 2020-05-25 2023-11-10 泰康保险集团股份有限公司 流式计算中迟滞数据的处理系统、设备以及方法
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
US11354444B2 (en) 2020-09-30 2022-06-07 EMC IP Holding Company LLC Access control for an ordered event stream storage system
US11513871B2 (en) 2020-09-30 2022-11-29 EMC IP Holding Company LLC Employing triggered retention in 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
US11954537B2 (en) 2021-04-22 2024-04-09 EMC IP Holding Company LLC Information-unit based scaling of 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
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101420603A (zh) * 2008-09-05 2009-04-29 中兴通讯股份有限公司 一种分片存储实现媒体分发、定位的方法及其流媒体系统
CN104661039A (zh) * 2013-11-25 2015-05-27 乐视网信息技术(北京)股份有限公司 一种媒体流传输方法、服务器、终端和系统

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2287111B (en) 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5625788A (en) 1994-03-01 1997-04-29 Intel Corporation Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto
US5889982A (en) 1995-07-01 1999-03-30 Intel Corporation Method and apparatus for generating event handler vectors based on both operating mode and event type
US6625150B1 (en) 1998-12-17 2003-09-23 Watchguard Technologies, Inc. Policy engine architecture
US6449618B1 (en) 1999-03-25 2002-09-10 Lucent Technologies Inc. Real-time event processing system with subscription model
US6516310B2 (en) 1999-12-07 2003-02-04 Sybase, Inc. System and methodology for join enumeration in a memory-constrained environment
US7174557B2 (en) 2000-06-07 2007-02-06 Microsoft Corporation Method and apparatus for event distribution and event handling in an enterprise
US6820121B1 (en) 2000-08-24 2004-11-16 International Business Machines Corporation Methods systems and computer program products for processing an event based on policy rules using hashing
US7251747B1 (en) 2001-09-20 2007-07-31 Ncr Corp. Method and system for transferring data using a volatile data transfer mechanism such as a pipe
US7010538B1 (en) * 2003-03-15 2006-03-07 Damian Black Method for distributed RDSMS
US7603488B1 (en) 2003-07-15 2009-10-13 Alereon, Inc. Systems and methods for efficient memory management
US7626988B2 (en) 2004-06-09 2009-12-01 Futurewei Technologies, Inc. Latency-based scheduling and dropping
GB0414625D0 (en) 2004-06-30 2004-08-04 Ibm Method and system for grouping events
US7483907B2 (en) 2004-12-29 2009-01-27 Alcatel-Lucent Usa Inc. Processing data-stream join aggregates using skimmed sketches
US8949181B2 (en) 2005-02-25 2015-02-03 Solarwinds Worldwide, Llc Real-time threshold state analysis
US7680830B1 (en) 2005-05-31 2010-03-16 Symantec Operating Corporation System and method for policy-based data lifecycle management
US20080005391A1 (en) 2006-06-05 2008-01-03 Bugra Gedik Method and apparatus for adaptive in-operator load shedding
WO2007147441A1 (en) 2006-06-22 2007-12-27 Freescale Semiconductor, Inc. Method and system of grouping interrupts from a time-dependent data storage means
US8219848B2 (en) 2007-04-10 2012-07-10 International Business Machines Corporation Mechanism for recovery from site failure in a stream processing system
US8392381B2 (en) 2007-05-08 2013-03-05 The University Of Vermont And State Agricultural College Systems and methods for reservoir sampling of streaming data and stream joins
US7738380B1 (en) 2007-07-02 2010-06-15 Sonicwall, Inc. Reassembly-free rewriting of out-of-order data payload
EP2073548A1 (en) * 2007-12-17 2009-06-24 Alcatel Lucent Method for synchronizing at least two streams
US8903802B2 (en) 2008-03-06 2014-12-02 Cisco Technology, Inc. Systems and methods for managing queries
US20100254462A1 (en) 2009-04-07 2010-10-07 Cisco Technology, Inc. Method for reducing memory usage with accelerated channel changes
US8949801B2 (en) 2009-05-13 2015-02-03 International Business Machines Corporation Failure recovery for stream processing applications
US8417690B2 (en) 2009-05-15 2013-04-09 International Business Machines Corporation Automatically avoiding unconstrained cartesian product joins
JP5200065B2 (ja) 2010-07-02 2013-05-15 富士フイルム株式会社 コンテンツ配信システム、方法およびプログラム
US8797867B1 (en) 2010-10-18 2014-08-05 Juniper Networks, Inc. Generating and enforcing a holistic quality of service policy in a network
US8943009B2 (en) 2011-11-20 2015-01-27 International Business Machines Corporation Method of adapting an event processing component having a plurality of event processing agents which carry out a plurality of rules complying with at least one correctness requirement to process a plurality of events
US8943120B2 (en) 2011-12-22 2015-01-27 International Business Machines Corporation Enhanced barrier operator within a streaming environment
US8949194B1 (en) 2012-03-30 2015-02-03 Emc Corporation Active records management
US9094459B2 (en) 2012-07-16 2015-07-28 International Business Machines Corporation Flow based overlay network
US10210175B2 (en) 2012-09-28 2019-02-19 Oracle International Corporation Techniques for lifecycle state management and in-database archiving
US9098587B2 (en) 2013-01-15 2015-08-04 Oracle International Corporation Variable duration non-event pattern matching
US9183175B2 (en) 2013-01-28 2015-11-10 International Business Machines Corporation Memory management in a streaming application
US9596182B2 (en) 2013-02-12 2017-03-14 Adara Networks, Inc. Controlling non-congestion controlled flows
US9654758B2 (en) * 2013-04-26 2017-05-16 Microsoft Technology Licensing, Llc Synchronizing external data to video playback
US9720989B2 (en) 2013-11-11 2017-08-01 Amazon Technologies, Inc. Dynamic partitioning techniques for data streams
EP3069275A4 (en) 2013-11-11 2017-04-26 Amazon Technologies, Inc. Data stream ingestion and persistence techniques

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101420603A (zh) * 2008-09-05 2009-04-29 中兴通讯股份有限公司 一种分片存储实现媒体分发、定位的方法及其流媒体系统
CN104661039A (zh) * 2013-11-25 2015-05-27 乐视网信息技术(北京)股份有限公司 一种媒体流传输方法、服务器、终端和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《GrubJoin:An Adaptive, Multiway, Windowed Stream Join with Time Correlation-Aware CPU Load Shedding》;Bugra Gedik 等;《TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》;20071031;第19卷(第10期);第1363-1380页 *

Also Published As

Publication number Publication date
EP3304352B1 (en) 2020-04-08
EP3304352A1 (en) 2018-04-11
WO2016196859A1 (en) 2016-12-08
US20160357476A1 (en) 2016-12-08
US9880769B2 (en) 2018-01-30
CN107690616A (zh) 2018-02-13

Similar Documents

Publication Publication Date Title
CN107690616B (zh) 受限的存储器环境中的流式传输联接
US10740196B2 (en) Event batching, output sequencing, and log based state storage in continuous query processing
US20230418814A1 (en) Dynamic asset monitoring and management using a continuous event processing platform
EP3953835B1 (en) Punctuation controlled temporal reference data lookup
EP3991044A1 (en) Diagnosing &amp; triaging performance issues in large-scale services
US9942272B2 (en) Handling out of order events
US9454375B2 (en) Parallel program analysis and branch prediction
US9355002B2 (en) Capturing trace information using annotated trace output
US10148719B2 (en) Using anchors for reliable stream processing
US10031901B2 (en) Narrative generation using pattern recognition
US11507585B2 (en) Heartbeat propagation in a distributed stream processing system
US20180262408A1 (en) Anchor shortening across streaming nodes
CN114780564A (zh) 数据处理方法、数据处理装置、电子设备和存储介质
CN111078418B (zh) 操作同步方法、装置、电子设备及计算机可读存储介质
CN111373377B (zh) 用于请求者和提供者之间的错误处理的方法和系统
US11023479B2 (en) Managing asynchronous analytics operation based on communication exchange
CN117271518A (zh) 多事务事实表的生成方法、装置、设备及存储介质
US10528565B2 (en) Logical level predictive caching in relational databases
CN113419922A (zh) 主机批量作业运行数据的处理方法及装置

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