知识卡片

流处理的四种主要用途:CEP、流分析、物化视图、流上搜索

普通读书笔记卡

内容

处理一个事件流通常落在四种用途里。复合事件处理(CEP)源自20世纪90年代,专门用来在流中搜索特定的事件模式(类似正则表达式在字符串里找模式),常用高层声明式语言描述规则,一旦匹配就发出一个”复合事件”——它把数据库里”数据持久、查询临时”的关系倒转了过来:查询长期存储,数据流过它们。流分析和CEP的边界模糊,但更关注大量事件上的聚合统计(速率、滚动平均、同比环比)而非特定事件序列,常在固定时间区间(窗口)内计算,有时借助布隆过滤器、HyperLogLog等概率算法在牺牲精确度换取更省内存——这不代表流处理天生不精确,概率算法只是一种可选的优化。维护物化视图这个用途和[[变更数据捕获的实现方式与日志压缩机制]]是同一件事的另一种描述——用变更流不断更新缓存、搜索索引等衍生数据系统,与面向分析的窗口场景不同,构建物化视图往往需要一路延伸到”时间起点”的完整历史(除非被日志压缩丢弃的过时事件)。在流上搜索则是把CEP的思路用在单个事件的复杂匹配上(比如媒体监测服务用预先构建的查询持续匹配新闻流),传统搜索是先建索引再跑查询,这里反过来是查询常驻、文档流过查询,为了应对海量查询,也可以反过来给查询本身建索引来收窄匹配范围。

参考来源

- 位置:《数据密集型应用系统设计》第十一章《流处理》"复合事件处理""流分析""维护物化视图""在流上搜索"(源文件:_epub-src/ch11_split_002.html) - 结论依据:原文分别描述CEP的模式匹配与查询数据关系倒转、流分析的聚合统计与概率算法应用、维护物化视图与CDC的关联及其对完整历史窗口的需求、流上搜索的查询常驻与索引反转四种用途,直接支撑本卡片的分类总结。 - 原始内容:CEP允许你指定规则以在流中搜索某些事件模式……查询是长期存储的,来自输入流的事件不断流过它们……使用近似算法有时让人们觉得流处理系统总是有损的和不精确的,但这是错误看法……传统的搜索引擎首先索引文件,然后在索引上跑查询。相比之下,搜索一个数据流则反了过来。