CN109885588B - 一种复杂事件检测方法及系统 - Google Patents
一种复杂事件检测方法及系统 Download PDFInfo
- Publication number
- CN109885588B CN109885588B CN201910064035.4A CN201910064035A CN109885588B CN 109885588 B CN109885588 B CN 109885588B CN 201910064035 A CN201910064035 A CN 201910064035A CN 109885588 B CN109885588 B CN 109885588B
- Authority
- CN
- China
- Prior art keywords
- event
- query
- detection result
- complex
- complex event
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了复杂事件检测方法及系统。其中,复杂事件检测方法包括:解析查询条件,得到查询事件表达式,每个查询事件表达式对应的检测结果存储在共享子序列列表中;接收复杂事件,查找出与复杂事件所有相关的查询事件表达式;将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;将调整顺序后的查询事件表达式转化树结构;从树结构中的叶子节点对应的出发,在共享子序列列表中查找与复杂事件相关的查询事件表达式的检测结果或查询事件表达式语义包含或语义互斥关系的检测结果,通过查询条件约束到达中间节点,直至到达根节点检测出符合查询条件的复杂事件。
Description
技术领域
本公开属于数据处理领域,尤其涉及一种复杂事件检测方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
现有的流程工业生产相对复杂,一般具有不确定性、多资源相互协调、数据信息量大、对管理控制的协调性要求比较高等特点。流程企业通过不断对生产计划、调度和生产控制三者之间的关系进行协调把控来提高运作效率。复杂事件检测实际上就是通过将各个生产环节的数据采集出来,通过过滤、聚合、规则约束等环节,逐步由简单事件聚合为复杂事件,并提炼出能反映流程工业中的异常状况和有用信息。
发明人发现,复杂事件检测面临以下一些问题:
(1)面对海量实时数据,复杂事件检测的模式匹配采取从一而终的完全匹配,处理速度比较低,大大浪费了计算资源和存储资源;在对复杂事件进行查询处理时,缺乏有效的规则来描述数据之间的关联和信息,虽然可以根据历史数据和领域专家预制查询模式,但由于实时数据量多复杂,不可能预设所有的查询模式。
(2)在复杂事件检测的过程中,用树结构层层检测会产生大量的中间结果,这些中间结果中有大量不符合条件的事件,影响存储和调用的效率;在复杂事件检测过程中,根据用户查询要求解析出查询事件模式,对于特定事件流和查询模式,查询结果中往往会有很多重复;一般来说,用户查询来检测复杂事件时,需要将复杂事表达式做解析,提取出关于事件的查询参数,并将参数写入查询语句,查询符合条件的事件。当用户查询量很大时,很多查询参数是重复的,会导致查询语句也是重复的,存储和调用会成为很大的问题。
发明内容
根据本公开的一个或多个实施例的一个方面,提供一种复杂事件检测方法,其能够在已有的检测结果的基础上能够构建新的复杂事件,实现事件递增,提高检测效率的效果。
本公开的一种复杂事件检测方法,包括:
解析查询条件,得到查询事件表达式,每个查询事件表达式对应的检测结果存储在共享子序列列表中;
接收复杂事件,查找出与复杂事件所有相关的查询事件表达式;
将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;
将调整顺序后的查询事件表达式转化树结构;
从树结构中的叶子节点对应的出发,在共享子序列列表中查找与复杂事件相关的查询事件表达式的检测结果或查询事件表达式语义包含或语义互斥关系的检测结果,通过查询条件约束到达中间节点,直至到达根节点检测出符合查询条件的复杂事件。
进一步的,从树结构中的叶子节点对应的出发,在共享子序列列表中查找是否存在与复杂事件相关的查询事件表达式的检测结果,若存在,则直接调取检测结果。
上述方案的优点在于:在复杂事件检测中,形成子序列的共享,利用已经检测出的部分创建新的结果加快了匹配过程,提高了检测效率。
进一步的,若共享子序列列表中查找不存在与复杂事件相关的查询事件表达式的检测结果,在共享子序列列表中继续查找是否存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,若存在,则根据相应检测结果推测出与复杂事件相关的查询事件表达式的检测结果。
上述方案的优点在于:在共享子序列列表中查看是否有与之存在语义包含关系或语义互斥关系的事件表达式,同样可以使用这些事件来快速推测出检测结果,加快匹配过程,提高检测效率。
进一步的,若在共享子序列列表中不存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,判定树结构中的父节点是否成立,若成立,则输出检测结果并将检测结果保存在至共享子序列列表中;否则,继续接收事件,直至树结构的根节点被激活。
上述方案的优点在于:保存在共享子序列列表的表达式涉及到的事件都是已经发生过的事件,直接调用就无需让接收的事件等待后续到来的事件进行匹配,节省了时间空间。对于共享子序列列表中不存在的结果,只能依靠树结构的语义关系,从叶子节点到中间节点再到根节点一步步地经过查询条件的筛选判断被激活,才能实现对复杂事件的检测。
进一步的,所述复杂事件由原始事件及事件操作符构成;所述树结构的叶子节点代表原始事件,中间节点代表事件操作符。
根据本公开的一个或多个实施例的另一个方面,提供一种复杂事件检测系统,其能够在已有的检测结果的基础上能够构建新的复杂事件,实现事件递增,提高检测效率的效果。
本公开的一种复杂事件检测系统,包括:
查询条件解析模块,其用于解析查询条件,得到查询事件表达式,每个查询事件表达式对应的检测结果存储在共享子序列列表中;
查询事件表达式查找模块,其用于接收复杂事件,查找出与复杂事件所有相关的查询事件表达式;
查询条件顺序调整模块,其用于将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;
树结构生成模块,其用于将调整顺序后的查询事件表达式转化树结构;
复杂事件检测模块,其用于从树结构中的叶子节点对应的出发,在共享子序列列表中查找与复杂事件相关的查询事件表达式的检测结果或查询事件表达式语义包含或语义互斥关系的检测结果,通过查询条件约束到达中间节点,直至到达根节点检测出符合查询条件的复杂事件。
进一步的,在所述复杂事件检测模块中,从树结构中的叶子节点对应的出发,在共享子序列列表中查找是否存在与复杂事件相关的查询事件表达式的检测结果,若存在,则直接调取检测结果。
上述方案的优点在于:在复杂事件检测中,形成子序列的共享,利用已经检测出的部分创建新的结果加快了匹配过程,提高了检测效率。
进一步的,在所述复杂事件检测模块中,若共享子序列列表中查找不存在与复杂事件相关的查询事件表达式的检测结果,在共享子序列列表中继续查找是否存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,若存在,则根据相应检测结果推测出与复杂事件相关的查询事件表达式的检测结果。
上述方案的优点在于:在共享子序列列表中查看是否有与之存在语义包含关系或语义互斥关系的事件表达式,同样可以使用这些事件来快速推测出检测结果,加快匹配过程,提高检测效率。
进一步的,在所述复杂事件检测模块中,若在共享子序列列表中不存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,判定树结构中的父节点是否成立,若成立,则输出检测结果并将检测结果保存在至共享子序列列表中;否则,继续接收事件,直至树结构的根节点被激活。
上述方案的优点在于:保存在共享子序列列表的表达式涉及到的事件都是已经发生过的事件,直接调用就无需让接收的事件等待后续到来的事件进行匹配,节省了时间和空间。对于共享子序列列表中不存在的结果,只能依靠树结构的语义关系,从叶子节点到中间节点再到根节点一步步地经过查询条件的筛选判断被激活,才能实现对复杂事件的检测。
进一步的,所述复杂事件由原始事件及事件操作符构成;所述树结构的叶子节点代表原始事件,中间节点代表事件操作符。
本公开的有益效果是:
(1)本公开在复杂事件检测中,形成子序列的共享,利用已经检测出的部分创建新的结果加快了匹配过程,提高了检测效率。
(2)为了减少中间结果对内存的占用,提高检测效率,本公开将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;将调整顺序后的查询事件表达式转化树结构,这样事件查询表达式的含义不变,但一些无用的中间结果可以尽早的过滤掉。
(3)由于保存在共享子序列列表的表达式涉及到的事件都是已经发生过的事件,本公开直接调用就无需让接收的事件等待后续到来的事件进行匹配,节省了时间和空间;对于共享子序列列表中不存在的结果,本公开依靠树结构的语义关系,从叶子节点到中间节点再到根节点一步步的经过查询约束的筛选判断被激活,最终实现对复杂事件的检测。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1是本公开实施例提供的复杂事件检测方法流程图。
图2是本公开实施例提供的事件模式SEQ(A,B,C,D,)的检测原理图。
图3是本公开实施例提供的不同策略对事件检测的影响。
图4是本公开实施例提供的复杂事件检测匹配率对比图。
图5是本公开实施例提供的复杂事件检测系统结构示意图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
术语解释:
复杂事件:由一些简单事件或其他复杂事件通过操作符复合而成的事件,它拥有特定的事件模式。
语义包含:表达的内容有相似性。在复杂事件中主要是针对一些操作符与事件构成的事件模式,如SEQ(E1,E2)与(E1∧E2)与(E1νE2)就存在语义包含关系,其中,E1和E2均为事件,SEQ(E1,E2)表示E1事件和E2事件的序列,当E2事件在E1事件之后发生时,该复杂事件发生。
在本实施例中,复杂事件由原始事件及事件操作符构成。
如图1所示,本实施例的一种复杂事件检测方法,包括:
步骤1:解析查询条件,得到查询事件表达式,每个查询事件表达式对应的检测结果存储在共享子序列列表中。
对复杂事件进行检测时,对于用户给定的要检测的事件模式,其中包括一些特定的事件流如流程工业中大部分情况下产生的事件信息等,往往都是稳定不变的,这使得检测结果中常常含有相同的子序列。例如在某时间窗口内发生了ABCD四种类型事件,检测的事件模式为SEQ(A,B,C,D,),并且要满足相应事件类型所对应的条件。如图2所示根据检测条件,可以得到结果序列R1,R2,R3,R4。由结果序列可以看出,结果序列之间有重复部分,即拥有公共子序列,如R1和R3的公共子序列为(b1,c2,d1),R2和R4的共享子序列是(b2,c2,d1)。在复杂事件检测中,可以利用已经检测出的部分创建新的结果,公共子序列只进行一次匹配,形成子序列的共享,加快匹配过程,提高检测效率。
将复杂事件的公共子序列进行保存使用形成共享子序列列表,这样的好处在于:实现复杂事件的递增检测,意思是新事件到达时,在已有的检测结果的基础上能够构建新的复杂事件,实现事件递增;不同的复杂事件可以共享匹配结果;这种共享的方式为优化策略提供了便利条件。
步骤2:接收复杂事件,查找出与复杂事件所有相关的查询事件表达式。
如事件模式Q1=SEQ(AND(A,B),C),Q2=OR(AND(A,B),C),在检测Q1的过程中,若先检测到AND(A,B),可以将它进行保存,当事件C到来时,根据需要检测的事件模式与事件C和共享子序列进行比较,然后使用,而无需再对事件A,B做处理,同样地,在检测Q2的过程中,也可以直接调用结果AND(A,B),从而达到提高检测效率的目的。
对于公共子序列的使用,还可以通过优化策略将其的使用范围扩大一些。这就需要根据事件操作之间的语义关系来进行扩展,其中事件操作符之间存在语义包含关系和语义互斥关系。
语义包含:如OR,AND,SEQ三者相互之间在语义上存在着包含关系。OR(A1,A2,…An-1,An)中可以包含AND(A1,A2,…An-1,An)这样一种情况,而AND(A1,A2,…An-1,An)中也包含SEQ(A1,A2,…An-1,An)这种情况。
语义互斥;即一个事件发生,另一个事件肯定不发生。如,AND(A1,A2)与NOT(A1,A2)存在语义互斥关系。
其中,A1,A2,…An-1,An均表示事件。
在进行复杂事件检测时,在共享子序列列表中查找是否存在与查询事件表达式完全相同的事件序列,若不存在,则查看是否有与之存在语义包含关系或语义互斥关系的事件表达式,同样可以使用它们来提高检测效率。
步骤3:将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序。
查询条件分为时序查询约束和谓词查询约束两类。时序查询约束用来描述事件在时间上应该满足的条件,谓词查询约束往往表示成由AND或OR连接成的事件模式,同样是对事件的过滤条件。
为了查询到满足用户条件的复杂事件,在检测中会产生大量的中间结果,而只有少数能被最终的复杂事件使用,而大部分的中间结果不满足后续的检测约束条件,如图2中,最终到达根节点的中间结果只有一个,其余的都在不断检测中被剔除。为了减少中间结果对内存的占用,提高检测效率,可以通过改变时间查询约束和谓词查询约束的位置将约束在树结构中上下移动来实现这一目的,如SEQ((A∧B),C)winthin 10s等价于SEQ((A∧B)winthin 10s,C)winthin 10s,将前者转换为后者,事件查询表达式的含义不变,但一些无用的中间结果可以尽早的过滤掉。
其中,SEQ((A∧B),C)winthin 10s表示A和B发生之后C事件才发生的序列,且三者均在10s范围内发生。
树结构由多个查询条件约束构成,首先要计算各种查询条件约束在事件检测中消耗的时间,用T表示,单位为ms,然后推算时间消耗与通过查询条件约束的概率。
表1相关变量定义
假设有n个属性约束条件,数据流通过各项约束的概率为P1,P2,…,Pn-1,Pn,则通过全部约束条件的概率是:
在匹配过程中,属性判定的时间消耗可以看作基本相同,因此Tw=T1=T2=…Tn,其中消耗时间的最小值是:
其中,T1、T2…Tn分别为通过各项查询条件约束的时间。
通过查询条件的概率为:
在没有查询条件约束时,即Pi=1,Tw=0,带入后得TU=n+2s,P=1/2。对于一组事件流,匹配最复杂的情况的时间消耗是:
由此可知,当存在多个查询条件约束时,优先通过概率低的查询条件约束会提高检测效率,因此在设置查询约束的位置时,在事件表达式语义不变的情况下,改变谓词位置,让通过概率低的事件先进行检测,减少大量中间结果,提高检测效率。
根据上述公式计算出了一次匹配所消耗的时间T,以及通过概率P。在利用树结构进行匹配时,需要从叶子节点到中间节点发送,每个中间节点Si消耗的时间总量为每次匹配消耗时间Ti与匹配数据量Numi的积,意思是Ti*Numi节点的通过概率为Pi,输出数据的数量是输入量与通过概率的乘积,即Numi*P。各个节点消耗时间之和为:
其中概率P始终小于1,并且T的值可看做基本稳定不变,显然,当Pi0<Pi1<…<Pin时,各节点的时间消耗总和是最小的,因此在不改变复杂事件表达式语义的条件下确定查询条件位置时,尽量将查询条件放置在先进行结合的树节点中。
步骤4:将调整顺序后的查询事件表达式转化树结构。
具体地,树结构的叶子节点代表原始事件,中间节点代表事件操作符。
步骤5:从树结构中的叶子节点对应的出发,在共享子序列列表中查找与复杂事件相关的查询事件表达式的检测结果或查询事件表达式语义包含或语义互斥关系的检测结果,通过查询条件约束到达中间节点,直至到达根节点检测出符合查询条件的复杂事件。
在具体实施中,从树结构中的叶子节点对应的出发,在共享子序列列表中查找是否存在与复杂事件相关的查询事件表达式的检测结果,若存在,则直接调取检测结果。
在复杂事件检测中,形成子序列的共享,利用已经检测出的部分创建新的结果加快了匹配过程,提高了检测效率。
若共享子序列列表中查找不存在与复杂事件相关的查询事件表达式的检测结果,在共享子序列列表中继续查找是否存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,若存在,则根据相应检测结果推测出与复杂事件相关的查询事件表达式的检测结果。
在共享子序列列表中查看是否有与之存在语义包含关系或语义互斥关系的事件表达式,同样可以使用这些事件来快速推测出检测结果,加快匹配过程,提高检测效率。
若在共享子序列列表中不存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,判定树结构中的父节点是否成立,若成立,则输出检测结果并将检测结果保存在至共享子序列列表中;否则,继续接收事件,直至树结构的根节点被激活。
保存在共享子序列列表的表达式涉及到的事件都是已经发生过的事件,直接调用就无需让接收的事件等待后续到来的事件进行匹配,节省了时间和空间。对于共享子序列列表中不存在的结果,只能依靠树结构的语义关系,从叶子节点到中间节点再到根节点一步步地经过查询条件的筛选判断被激活,才能实现对复杂事件的检测。
本实施例通过实验来验证前面提到的优化策略和基于语法树的复杂事件检测方法的准确性和有效性。实验环境搭建在VMware虚拟机中,宿主机的操作系统为Windows 7,CPU为Intel i7处理器,内存8G,虚拟机环境CPU为双核,内存1G,操作系统是Ubuntu12.04,虚拟机内装有Storm,Esper等软件。
在本实验中,为了更好的验证本实施例中提出的方法,将对比数据集运用了该算法在复杂事件检测中的情况。本实施例对传统的基于匹配树模型的复杂事件检测方法与本文中的方法做对照,同时设置对照的还有基于传统树模型的基础上只考虑共享公共子序列和只考虑查询条件约束放置位置对事件的影响。
在实施例中,每一种方法都要检测40种复杂事件。存在10种解析后复杂事件表达式中存在共享子序列关系的事件的A组采用传统树模型并结合共享公共子序列的策略作为检测方法;10种根据操作符语义提前将谓词约束和时间约束放置在最优位置并且不改变事件查询的条件,该条件设置在B组中,采用传统树模型与条件约束策略相结合的检测方法;C组采用基于树模型改进的检测方法;D组则是本实施例中提出的基于语法树的复杂事件检测方法。图3是对照实验的结果。
由图3可以看出,在同一平台下,本实施例所提出的方法在复杂事件检测过程中有明显的优势。虽然特意设置了公共子序列,但传统方法并没有利用这一优势,只能对每一个到来的事件重新进行匹配,而不去查询已经匹配好的结果。事件通过约束条件越低的约束前置,从一开始就能过滤掉了大批不符合条件的事件,为匹配节约的时间。
从图3中可以看出,D组的检测相应时间最少,这是将两种优化策略有机地结合使用的缘故,单一的进行两种中任何一种策略,都没有将它们共同使用的优势明显,这两种策略中,查询条件约束位置的改变是在树结构形成之前就使用的优化策略,共享公共子序列则是在匹配过程中,两者并不相矛盾或存在彼此占用内存的情况,因此能够优化树结构模型的检测。
实验还对匹配效率做了对比,加入SASE算法与C组、D组进行对比,更客观地检验基于语法树的检测方法的准确性。实验结果如图4。
SASE算法为一种基于查询规划的复杂事件处理方法,使用基于分区和堆栈的模式匹配方法在事件流上进行复杂事件处理。
由图4可以看出D组方法的优越性。加入共享公共子序列和改变查询约束的策略不仅在匹配时间短而且准确率也高。与传统的SASE算法相比,本文提出的基于语法树的复杂事件检测方法也存在优势,共享的子序列加快了检测效率,检测与共享同时进行,不断丰富共享子序列的内容,检测内容不断全面,因而事件匹配的成功率高于其他方法。
本实施例在复杂事件检测中,形成子序列的共享,利用已经检测出的部分创建新的结果加快了匹配过程,提高了检测效率。
为了减少中间结果对内存的占用,提高检测效率,本实施例将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;将调整顺序后的查询事件表达式转化树结构,这样事件查询表达式的含义不变,但一些无用的中间结果可以尽早的过滤掉。
由于保存在共享子序列列表的表达式涉及到的事件都是已经发生过的事件,本实施例直接调用就无需让接收的事件等待后续到来的事件进行匹配,节省了时间和空间;对于共享子序列列表中不存在的结果,本公开依靠树结构的语义关系,从叶子节点到中间节点再到根节点一步步的经过查询约束的筛选判断被激活,最终实现对复杂事件的检测。
图5是本实施例的一种复杂事件检测系统的结构示意图。
如图5所示,本实施例的一种复杂事件检测系统,包括:
(1)查询条件解析模块,其用于解析查询条件,得到查询事件表达式,每个查询事件表达式对应的检测结果存储在共享子序列列表中。
对复杂事件进行检测时,对于用户给定的要检测的事件模式,其中包括一些特定的事件流如流程工业中大部分情况下产生的事件信息等,往往都是稳定不变的,这使得检测结果中常常含有相同的子序列。例如在某时间窗口内发生了ABCD四种类型事件,检测的事件模式为SEQ(A,B,C,D,),并且要满足相应事件类型所对应的条件。如图2所示根据检测条件,可以得到结果序列R1,R2,R3,R4。由结果序列可以看出,结果序列之间有重复部分,即拥有公共子序列,如R1和R3的公共子序列为(b1,c2,d1),R2和R4的共享子序列是(b2,c2,d1)。在复杂事件检测中,可以利用已经检测出的部分创建新的结果,公共子序列只进行一次匹配,形成子序列的共享,加快匹配过程,提高检测效率。
将复杂事件的公共子序列进行保存使用形成共享子序列列表,这样的好处在于:实现复杂事件的递增检测,意思是新事件到达时,在已有的检测结果的基础上能够构建新的复杂事件,实现事件递增;不同的复杂事件可以共享匹配结果;这种共享的方式为优化策略提供了便利条件。
(2)查询事件表达式查找模块,其用于接收复杂事件,查找出与复杂事件所有相关的查询事件表达式。
如事件模式Q1=SEQ(AND(A,B),C),Q2=OR(AND(A,B),C),在检测Q1的过程中,若先检测到AND(A,B),可以将它进行保存,当事件C到来时,根据需要检测的事件模式与事件C和共享子序列进行比较,然后使用,而无需再对事件A,B做处理,同样地,在检测Q2的过程中,也可以直接调用结果AND(A,B),从而达到提高检测效率的目的。
对于公共子序列的使用,还可以通过优化策略将其的使用范围扩大一些。这就需要根据事件操作之间的语义关系来进行扩展,其中事件操作符之间存在语义包含关系和语义互斥关系。
语义包含:如OR,AND,SEQ三者相互之间在语义上存在着包含关系。OR(A1,A2,…An-1,An)中可以包含AND(A1,A2,…An-1,An)这样一种情况,而AND(A1,A2,…An-1,An)中也包含SEQ(A1,A2,…An-1,An)这种情况。
语义互斥;即一个事件发生,另一个事件肯定不发生。如,AND(A1,A2)与NOT(A1,A2)存在语义互斥关系。
在进行复杂事件检测时,在共享子序列列表中查找是否存在与查询事件表达式完全相同的事件序列,若不存在,则查看是否有与之存在语义包含关系或语义互斥关系的事件表达式,同样可以使用它们来提高检测效率。
(3)查询条件顺序调整模块,其用于将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序。
查询条件分为时序查询约束和谓词查询约束两类。时序查询约束用来描述事件在时间上应该满足的条件,谓词查询约束往往表示成由AND或OR连接成的事件模式,同样是对事件的过滤条件。
为了查询到满足用户条件的复杂事件,在检测中会产生大量的中间结果,而只有少数能被最终的复杂事件使用,而大部分的中间结果不满足后续的检测约束条件,如图2中,最终到达根节点的中间结果只有一个,其余的都在不断检测中被剔除。为了减少中间结果对内存的占用,提高检测效率,可以通过改变时间查询约束和谓词查询约束的位置将约束在树结构中上下移动来实现这一目的,如SEQ((A∧B),C)winthin 10s等价于SEQ((A∧B)winthin 10s,C)winthin 10s,将前者转换为后者,事件查询表达式的含义不变,但一些无用的中间结果可以尽早的过滤掉。其中,SEQ((A∧B),C)winthin 10s表示A和B发生之后C事件才发生的序列,且三者均在10s范围内发生。
(4)树结构生成模块,其用于将调整顺序后的查询事件表达式转化树结构。
具体地,树结构的叶子节点代表原始事件,中间节点代表事件操作符。
(5)复杂事件检测模块,其用于从树结构中的叶子节点对应的出发,在共享子序列列表中查找与复杂事件相关的查询事件表达式的检测结果或查询事件表达式语义包含或语义互斥关系的检测结果,通过查询条件约束到达中间节点,直至到达根节点检测出符合查询条件的复杂事件。
具体地,在所述复杂事件检测模块中,从树结构中的叶子节点对应的出发,在共享子序列列表中查找是否存在与复杂事件相关的查询事件表达式的检测结果,若存在,则直接调取检测结果。
上述方案的优点在于:在复杂事件检测中,形成子序列的共享,利用已经检测出的部分创建新的结果加快了匹配过程,提高了检测效率。
具体地,在所述复杂事件检测模块中,若共享子序列列表中查找不存在与复杂事件相关的查询事件表达式的检测结果,在共享子序列列表中继续查找是否存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,若存在,则根据相应检测结果推测出与复杂事件相关的查询事件表达式的检测结果。
上述方案的优点在于:在共享子序列列表中查看是否有与之存在语义包含关系或语义互斥关系的事件表达式,同样可以使用这些事件来快速推测出检测结果,加快匹配过程,提高检测效率。
具体地,在所述复杂事件检测模块中,若在共享子序列列表中不存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,判定树结构中的父节点是否成立,若成立,则输出检测结果并将检测结果保存在至共享子序列列表中;否则,继续接收事件,直至树结构的根节点被激活。
上述方案的优点在于:保存在共享子序列列表的表达式涉及到的事件都是已经发生过的事件,直接调用就无需让接收的事件等待后续到来的事件进行匹配,节省了时间和空间。对于共享子序列列表中不存在的结果,只能依靠树结构的语义关系,从叶子节点到中间节点再到根节点一步步地经过查询条件的筛选判断被激活,才能实现对复杂事件的检测。
本实施例在复杂事件检测中,形成子序列的共享,利用已经检测出的部分创建新的结果加快了匹配过程,提高了检测效率。
为了减少中间结果对内存的占用,提高检测效率,本实施例将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;将调整顺序后的查询事件表达式转化树结构,这样事件查询表达式的含义不变,但一些无用的中间结果可以尽早的过滤掉。
由于保存在共享子序列列表的表达式涉及到的事件都是已经发生过的事件,本实施例直接调用就无需让接收的事件等待后续到来的事件进行匹配,节省了时间和空间;对于共享子序列列表中不存在的结果,本公开依靠树结构的语义关系,从叶子节点到中间节点再到根节点一步步的经过查询约束的筛选判断被激活,最终实现对复杂事件的检测。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。
Claims (10)
1.一种复杂事件检测方法,其特征在于,包括:
解析查询条件,得到查询事件表达式,每个查询事件表达式对应的检测结果存储在共享子序列列表中;
接收复杂事件,查找出与复杂事件所有相关的查询事件表达式;
将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;
将调整顺序后的查询事件表达式转化树结构;
从树结构中的叶子节点对应的出发,在共享子序列列表中查找与复杂事件相关的查询事件表达式的检测结果或查询事件表达式语义包含或语义互斥关系的检测结果,通过查询条件约束到达中间节点,直至到达根节点检测出符合查询条件的复杂事件。
2.如权利要求1所述的一种复杂事件检测方法,其特征在于,从树结构中的叶子节点对应的出发,在共享子序列列表中查找是否存在与复杂事件相关的查询事件表达式的检测结果,若存在,则直接调取检测结果。
3.如权利要求2所述的一种复杂事件检测方法,其特征在于,若共享子序列列表中查找不存在与复杂事件相关的查询事件表达式的检测结果,在共享子序列列表中继续查找是否存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,若存在,则根据相应检测结果推测出与复杂事件相关的查询事件表达式的检测结果。
4.如权利要求3所述的一种复杂事件检测方法,其特征在于,若在共享子序列列表中不存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,判定树结构中的父节点是否成立,若成立,则输出检测结果并将检测结果保存在至共享子序列列表中;否则,继续接收事件,直至树结构的根节点被激活。
5.如权利要求1所述的一种复杂事件检测方法,其特征在于,所述复杂事件由原始事件及事件操作符构成;所述树结构的叶子节点代表原始事件,中间节点代表事件操作符。
6.一种复杂事件检测系统,其特征在于,包括:
查询条件解析模块,其用于解析查询条件,得到查询事件表达式,每个查询事件表达式对应的检测结果存储在共享子序列列表中;
查询事件表达式查找模块,其用于接收复杂事件,查找出与复杂事件所有相关的查询事件表达式;
查询条件顺序调整模块,其用于将查询事件表达式中事件通过概率低的查询条件前置,调整查询条件的顺序;
树结构生成模块,其用于将调整顺序后的查询事件表达式转化树结构;
复杂事件检测模块,其用于从树结构中的叶子节点对应的出发,在共享子序列列表中查找与复杂事件相关的查询事件表达式的检测结果或查询事件表达式语义包含或语义互斥关系的检测结果,通过查询条件约束到达中间节点,直至到达根节点检测出符合查询条件的复杂事件。
7.如权利要求6所述的一种复杂事件检测系统,其特征在于,在所述复杂事件检测模块中,从树结构中的叶子节点对应的出发,在共享子序列列表中查找是否存在与复杂事件相关的查询事件表达式的检测结果,若存在,则直接调取检测结果。
8.如权利要求7所述的一种复杂事件检测系统,其特征在于,在所述复杂事件检测模块中,若共享子序列列表中查找不存在与复杂事件相关的查询事件表达式的检测结果,在共享子序列列表中继续查找是否存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,若存在,则根据相应检测结果推测出与复杂事件相关的查询事件表达式的检测结果。
9.如权利要求8所述的一种复杂事件检测系统,其特征在于,在所述复杂事件检测模块中,若在共享子序列列表中不存在与复杂事件相关的查询事件表达式语义包含或语义互斥关系的检测结果,判定树结构中的父节点是否成立,若成立,则输出检测结果并将检测结果保存在至共享子序列列表中;否则,继续接收事件,直至树结构的根节点被激活。
10.如权利要求6所述的一种复杂事件检测系统,其特征在于,所述复杂事件由原始事件及事件操作符构成;所述树结构的叶子节点代表原始事件,中间节点代表事件操作符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064035.4A CN109885588B (zh) | 2019-01-23 | 2019-01-23 | 一种复杂事件检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064035.4A CN109885588B (zh) | 2019-01-23 | 2019-01-23 | 一种复杂事件检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109885588A CN109885588A (zh) | 2019-06-14 |
CN109885588B true CN109885588B (zh) | 2021-05-07 |
Family
ID=66926594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910064035.4A Active CN109885588B (zh) | 2019-01-23 | 2019-01-23 | 一种复杂事件检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109885588B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984860B (zh) * | 2020-07-30 | 2022-10-11 | 浙江邦盛科技股份有限公司 | 一种时序数据的事件上下文关联处理方法及系统 |
CN111984861B (zh) * | 2020-07-30 | 2022-10-11 | 浙江邦盛科技股份有限公司 | 一种时序数据的复杂事件处理方法及系统 |
CN112653749A (zh) * | 2020-12-18 | 2021-04-13 | 北京工商大学 | 用于物联网的基于边缘计算的复杂事件处理系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608658A (zh) * | 2017-08-08 | 2018-01-19 | 青岛科技大学 | 基于隐马尔可夫的故障树结构相似度匹配方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090319501A1 (en) * | 2008-06-24 | 2009-12-24 | Microsoft Corporation | Translation of streaming queries into sql queries |
CN102096658A (zh) * | 2011-02-21 | 2011-06-15 | 北京航空航天大学 | 一种基于树形复杂事件处理过程中算子内部处理系统 |
US20120317058A1 (en) * | 2011-06-13 | 2012-12-13 | Abhulimen Kingsley E | Design of computer based risk and safety management system of complex production and multifunctional process facilities-application to fpso's |
JP6299299B2 (ja) * | 2014-03-14 | 2018-03-28 | オムロン株式会社 | 事象検出装置および事象検出方法 |
CN106792981B (zh) * | 2016-12-23 | 2019-10-29 | 中山大学 | 一种无线传感器网络节点定位检测方法 |
CN108304517A (zh) * | 2018-01-23 | 2018-07-20 | 西南大学 | 基于复杂事件处理系统的高效嵌套查询方法 |
-
2019
- 2019-01-23 CN CN201910064035.4A patent/CN109885588B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608658A (zh) * | 2017-08-08 | 2018-01-19 | 青岛科技大学 | 基于隐马尔可夫的故障树结构相似度匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109885588A (zh) | 2019-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Alur et al. | Search-based program synthesis | |
CN109885588B (zh) | 一种复杂事件检测方法及系统 | |
US11055287B2 (en) | Eigenvalue-based data query | |
US7966315B2 (en) | Multi-query optimization | |
Baier et al. | Approximative symbolic model checking of continuous-time Markov chains | |
US9195693B2 (en) | Transaction prediction modeling method | |
US10769147B2 (en) | Batch data query method and apparatus | |
Kwiatkowska et al. | Stochastic games for verification of probabilistic timed automata | |
US8874495B2 (en) | Generating inferred triples by storing triples in a source table, and providing source table to inference engine/reasoner that fires inference rules in parallel | |
WO2022227566A1 (zh) | 一种数据库变更脚本的评估方法及装置 | |
CN101639861A (zh) | 一种基于有限状态自动机的字符串匹配方法及装置 | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
US8250106B2 (en) | Incremental inference | |
Zhang et al. | Recognizing patterns in streams with imprecise timestamps | |
WO2011106006A1 (en) | Optimization method and apparatus | |
CN105302915B (zh) | 基于内存计算的高性能数据处理系统 | |
Werner et al. | Automated composition and execution of hardware-accelerated operator graphs | |
Kumar et al. | Cost-based query optimization with heuristics | |
Dhama et al. | Dependability engineering of silent self-stabilizing systems | |
CN108763489A (zh) | 一种优化Spark SQL执行工作流的方法 | |
Wang et al. | A new scheme for cache optimization based on cluster computing framework spark | |
US9053150B2 (en) | PSM compiler optimizer and method for processing bulk DML | |
Zakharov | Program equivalence checking by two-tape automata | |
CN113032400B (zh) | 海量数据的高性能TopN查询方法、系统及介质 | |
Hou et al. | Analysis of Interrupt Behavior Based on Probabilistic Model Checking |
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 |