高性能复杂事件处理---模式匹配

这篇论文探讨了基于SASE语言的高效率复杂事件处理算法,重点关注模式匹配的优化技术。文章介绍了基本查询计划,包括序列扫描、构造、选择、窗口、否定和转换操作符,并详细解释了序列扫描和构造的实现,以及如何优化这些过程,如使用Active Instance Stack (AIS) 和 Partitioned AIS (PAIS) 减少中间结果的数量。优化后的查询计划显著降低了中间结果,提高了处理性能。
摘要由CSDN通过智能技术生成

原论文:High-PerformanceComplex Event Processing over Streams

本篇论文的算法是基于SASE语言。对该语言不作详细介绍,这里只描述模式匹配的算法。

1.      基于查询计划的方法

1.1    基本查询计划

SASE中的查询计划由6个操作符的某个子集组成:

Ø  序列扫描(sequencescan)

Ø  序列构造(sequenceconstruction)

Ø  选择(selection)

Ø  窗口(window)

Ø  否定(negation)

Ø  转换(transformation)

考虑一个具体的例子,查询Q3:

在该查询中,A、B、C、D表示四种不同的事件类型。WHERE子句包含了3个谓词:(1)两个等值测试,attr1和attr2是A、B、C、D 共有的属性;(2)A类型事件属性attr3的一个简单谓词;(3)比较A和B类型事件的attr4属性的谓词。大写字母T表示指定的窗口大小。

图1显示了Q3的基本查询计划和一个事件流的例子。


图1 查询Q3的执行计划

在图1下方的事件流中,小写字母表示事件,对应的大写字母表示事件类型,每个事件底下的数字是事件的时间戳。圆角矩形表示查询计划中的操作符,从下往上,它们依次是:

序列扫描和构造(Sequence Scan and Construction,简写为SSC)

序列扫描和序列构造总是一起使用。对于使用了SEQ结构的查询来说,SSC处理SEQ的正组件,这些正组件组成了原SEQ中一个“子序列类型”。例如,Q3的子序列类型是(A,B,D),其中删除了“!C”。

SSC把事件流转换进入一个事件流序列中;每个事件序列表示唯一的SSC子序列类型匹配。在图1中,SSC的输出创建了7个事件序列。

SSC包含序列扫描操作符(SS->),它扫描事件流,检测子序列类型中对应的匹配序列;还包含序列构造操作符(SC<-),用来创建所有的事件序列。之后会详细介绍它们。

选择(Selection)

选择操作符通过使用所有的谓词,过滤每个事件序列,将满足条件的序列输出。图1中,选择操作符过滤出了7个输入事件序列中的3个。

窗口(Window)

窗口操作符把WITHIN子句的限制条件加到了模式匹配中。对于每个事件序列,它检查第一个和最后一个事件的时间戳的差值是否小于窗口大小T。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值