![d4969526b916c66b347529070d701c9c.png](https://i-blog.csdnimg.cn/blog_migrate/52a3ff23fa6f03680d40a0a4f36ff63f.png)
作者原文《Sliding Sketches, a Framework using Time Zones for Data Streaming Processing in Sliding Windows》收录于 SIGKDD 2020。 数据流为一系列不断到达的数据项组成的序列,例如网络上数据包组成的数据流,或者社交网络中用户通信形成的图流。而滑动窗口模型则是数据流处理中的常用模型。其过滤掉数据流中旧的数据项,只保留最新的数据项。根据窗口定义方式,分为序列定义和时间定义两种。序列定义的长度为N的滑动窗口只包含最近N个数据项。时间定义的长度为N的滑动窗口包含最近N个时间单位内到达的数据项。
![e73dc11615ce9c7e50faf59ebb2bc5f4.png](https://i-blog.csdnimg.cn/blog_migrate/6836958199a9f306b6af824fd4435cca.png)
由于数据流的数据量十分巨大,同时更新速度极高,对其进行精确存储和查询会同时带来较大的存储代价和时间代价。对其进行摘要和近似查询是一种更加受欢迎的处理方式。目前已经有大量的摘要算法被提出,支持数据流上的多种近似查询。其中我们重点关注3种最常见的近似查询:存在性查询 (membership query), 即查询一个数据项是否存在于数据流中;频率查询(frequency query),查询一个数据项在数据流中出现的次数,即频率;高频项查询 (heavy hitter query),找出所有频率超出给定阈值的数据项。多种摘要算法,如Bloom filter, CM sketch,HeavyKeeper等为这些查询提供了支持。然而,这些算法摘要整个数据流,而不适用于滑动窗口模型。 对滑动窗口模型进行摘要有较大的挑战性。因为我们只进行摘要而不保存窗口内的具体数据项,因此当某个数据项过期(不再存在于滑动窗口中)时,我们也无从得知。我们无法精确地从摘要中删除过期项。我们必须设计算法来将窗口滑动带来变化近似地反馈在摘要中。之前已经有多篇论文对滑动窗口内的近似查询进行了研究,如 Forgetful Bloom filter 研究了滑动窗口内的存在性查询,ECM sketch 处理了滑动